УТВЕРЖДАЮ
Главный конструктор ОАО УКБП
_____________ В.П.Деревянкин
"__"____________ 2000 г.
Многофункциональный пульт управления МФПУ
Специальное программное обеспечение модуля МПР
Демонстрационная программа
ОПИСАНИЕ ПРОГРАММЫ
Лист утверждения
КИВШ.00224-02 13-ЛУ
Начальник НИО-14
_____________ Ю.А.Куликов
"__"____________ 2000 г.
Ведущий программист
_____________ Д.Ю.Маврин
"__"____________ 2000 г
2000 г.
УТВЕРЖДЕН
КИВШ.00224-02 13-ЛУ
Многофункциональный пульт управления МФПУ
Специальное программное обеспечение модуля МПР
Демонстрационная программа
ОПИСАНИЕ ПРОГРАММЫ
КИВШ.00224-02 13
Листов 23
Литера
2000г.
Аннотация
В настоящем документе приводится описание версии 2 «Демонстрационной программы», выступающей в роли специального программного обеспечения модуля МПР пульта МФПУ.
Версия 2 включает в себя дополнительно к версии 1 программные компоненты взаимодействия с модулем МВВ. Кроме того изменены некоторые функции взаимодействия с МДК в соответствии с новой редакцией протокола взаимодействия, добавлены функции, обеспечивающие обмен с МДК в кадре «План полета».
Содержание
1 Общие сведения.................................................................................. 4
2 Функциональное назначение.............................................................. 4
3 Описание логической структуры....................................................... 5
3.1 Состав программного обеспечения............................................ 5
3.2 Описание функций доступа к расширенной памяти.................. 5
3.3 Описание функций вывода на ЖКП............................................ 7
3.4 Описание функций реализации кадра «Общие установки»....... 8
3.5 Описание функций реализации кадра “План полета”.............. 10
3.6 Описание функций работы с таймером.................................... 13
3.7 Описание функций обмена с МВВ............................................ 14
3.8 Описание функций инициализации МВВ................................. 16
3.9 Описание функций контроля МВВ........................................... 18
3.10 Описание головной функции программы............................... 19
4 Используемые технические средства............................................... 19
5 Вызов и загрузка.............................................................................. 19
5.1 Запуск готовой программы....................................................... 19
5.2 Корректировка и запуск откорректированной программы.... 20
6 Входные и выходные данные........................................................... 21
Перечень сокращений......................................................................... 22
Лист регистрации изменений.............................................................. 23
1 Общие сведения
Обозначение: КИВШ.00224-02
Полное наименование: Многофункциональный пульт управления МФПУ. Специальное программное обеспечение модуля МПР. Демонстрационная программа.
Краткое наименование: Демонстрационная программа.
Язык программирования: Си-плюс-плюс.
2 Функциональное назначение
Вторая версия «Демонстрационной программы» поставляется УКБП в МИЭА со вторым комплектом пульта МФПУ. На ее основе МИЭА может вести разработку оригинального специального программного обеспечения процессора МПР пульта МФПУ.
Программа предназначена для демонстрации:
- технологии разработки программного обеспечения процессора МПР ( формирование исходного текста, трансляция, загрузка в память МПР, запуск на выполнение );
- приемов программирования обмена информацией с МКК, МДК и технологическим оборудованием;
- приемов формирования базы данных МВВ, инициализации МВВ и обмена информации с ним;
- работы МФПУ с кадрами «Общие установки» и «План полета».
При входе в программу на ЖКП выводится изображение кадра «Общие установки». При этом происходит инициализация модуля МВВ под управлением оператора, работающего за терминалом технологического компьютера.
По окончании инициализации в поле «Максимальный крен» кадра «Общие установки» отображается информация из ячейки 2 двухпроцессорного ОЗУ. При соответствующей настройке МВВ значение в этой ячейке может приниматься по любой из КЛС.
По нажатию пользователем функциональных клавиш МФПУ изменяется режим отображения ( цвета, метры/футы и т.п., возврат в исходное состояние ). По нажатию пользователем клавиш-цифр вводится значение «максимального крена».
По нажатию клавиши <ПОЛТ> на ЖКП выводится кадр «План полета». В этом кадре реакция программы на нажатия клавиш МФПУ должна соответствовать протоколу взаимодействия МПР и МДК. Возврат в кадр «Общие установки» - по нажатию клавиши <СБ>.
3 Описание логической структуры
3.1 Состав программного обеспечения
Программа включает в себя:
1) головную функцию – диспетчер программы.
2) набор функций языка Си/Си-плюс-плюс, обеспечивающих доступ к расширенной памяти для взаимодействия с модулями МДК и МВВ;
3) набор функций вывода на ЖКП через МДК;
4) набор функций реализации кадра «Общие установки»;
5) набор функций реализации кадра «План полета»;
6) набор функций управления таймером;
7) набор функций обмена с МВВ;
8) набор функций инициализации МВВ;
9) набор функций контроля МВВ;
3.2 Описание головной функции программы
Головная функция содержится в файле demo.exe.
Имя: void main ()
Назначение: диспетчер программы
Действия:
- выводит сообщение о начале работы на ТК,
- инициализирует МДК,
- инициализирует МВВ,
- выводит на ЖКП кадр №36 и устанавливает его параметры в исходное состояние,
- отслеживает нажатия кнопок МФПУ и по ним запускает соответствующие функции управляющей программы,
- после каждого изменения обновляет картинку на ЖКП,
- по окончании работы останавливает МДК.
3.3 Описание функций доступа к расширенной памяти
Функции доступа к расширенной памяти содержатся в файле Ext.cpp
Имя: void init15 ( )
Назначение: инициализация постоянной части данных для Int15h.
Имя: uint CtenExtV ( ulong adr, void* znc, uint dlina )
Назначение: чтение массива данных длиной dlina байт из расширенной памяти.
Параметры: адрес чтения; адрес записи, длина посылки.
Возврат: код ошибки ( 0 – успех ).
Действия:
- устанавливает параметры Int15 на соответствующий сегмент памяти,
- производит чтение при помощи функции BIOS Int15.
Имя: uint CtenExt ( ulong adr, uint *znc )
Назначение: чтение 16-разрядного слова из расширенной памяти.
Параметры: адрес чтения; адрес записи.
Возврат: код ошибки ( 0 – успех ).
Действия: вызывает функцию CtenExtV с соответствующими параметрами.
Имя: uint CtenMdk ( ulong adr, uint *znc )
Назначение: чтение 16-разрядного слова из расширенной памяти МДК.
Параметры: битовый адрес чтения; адрес записи.
Возврат: код ошибки ( 0 – успех ).
Действия: вызывает функцию CtenExtV с соответствующими параметрами.
Имя: uint ZapisExtV ( ulong adr, void* znc, uint dlina )
Назначение: запись массива данных длиной dlina байт в расширенную память.
Параметры: адрес записи; адрес чтения, длина посылки.
Возврат: код ошибки ( 0 – успех ).
Действия:
- устанавливает параметры Int15 на соответствующий сегмент памяти,
- производит чтение при помощи функции BIOS Int15.
Имя: uint ZapisExt ( ulong adr, uint *znc )
Назначение: запись 16-разрядного слова в расширенную память.
Параметры: адрес записи; адрес чтения.
Возврат: код ошибки ( 0 – успех ).
Действия: вызывает функцию ZapisExtV с соответствующими параметрами.
Имя: uint ZapisMdk ( ulong adr, uint *znc )
Назначение: запись 16-разрядного слова в расширенную память МДК.
Параметры: битовый адрес записи; адрес чтения.
Возврат: код ошибки ( 0 – успех ).
Действия: вызывает функцию ZapisExtV с соответствующими параметрами.
Имя: ulong adrMdk ( ulong adr )
Назначение: изменение формата адреса МДК.
Параметры: адрес в битовом формате МДК,
Возврат: адрес в байтовом формате МПР.
Действия: переводит адрес из битового формата МДК в обычный байтовый путем сдвига и прибавления смещения.
3.4 Описание функций вывода на ЖКП через МДК
Функции вывода на ЖКП содержатся в файле Zki.cpp.
Для обращения к регистрам модуля МДК используются функции доступа к расширенной памяти, описанные в подразделе 3.1.
Имя: void checkZki ( void )
Назначение: обновление информации на ЖКП с проверкой готовности
Имя: void kadrZki ( int nKadr )
Назначение: вывод на ЖКП постоянной части нового кадра.
Параметр: номер кадра
Действия:
- устанавливает соответствующее значение в память МДК,
- обновляет картинку на ЖКП.
Имя: void puskZki ( )
Назначение: инициализация МДК.
Имя: void stopZki ( )
Назначение: останов МДК.
3.5 Описание функций реализации кадра «Общие установки»
Функции реализации кадра «Общие установки» содержатся в файле demo.cpp.
3.5.1 Функции ввода числа с отбражением на ЖКП
Имя: void wiwodTekZnc ( )
Назначение: передача числового значения МДК для вывода на ЖКП.
Действия: передает два байта – символа ( две младшие десятичные цифры числа ) из буфера в регистры МДК ( обновления картинки на ЖКП при этом не происходит ).
Имя: void kursor ( int x, int y, int rezRed )
Назначение: перемещение курсора по экрану МФПУ.
Параметры: новые координаты курсора, режим редактирования ( фон символа над курсором ).
Имя: void nacWwodKren ( )
Назначение: начало ввода числа
Действия:
- очищает буфер,
- устанавливает флаг ввода числа,
- переводит курсор в нужное знакоместо.
Имя: void konWwodKren ( )
Назначение: конец ввода числа
Действия:
- сбрасывает флаг ввода числа,
- переводит курсор за границы экрана.
В реальном СПО эта функция должна производить ввод нового значения в соответствующую ячейку памяти.
Имя: void zaboy ( )
Назначение: забой последнего введенного символа
Действия: вычищает из буфера последний символ.
Имя: void wwodKren ( int Kod )
Назначение: диспетчер ввода числа с клавиатуры
Параметр: ASCII-код последней нажатой кнопки
Действия:
- если не установлен флаг ввода числа – выход в main,
- если нажата кнопка <СБ>, <ВВ> или <СТ> - запуск соответсвующей функции,
- если нажата кнопка-цифра – занесение кода этой цифры в буфер, с анализом его переполнения.
Имя: void avtKren ( uint znac )
Назначение: вывод на ЖКП значения, полученного в виде числа
Параметр: число для выдачи
Действия:
- если установлен флаг ввода числа – выход,
- отбрасывание старших десятичных разрядов;
- преобразование числа в символьную строку с записью ее в буфер.
Эта функция используется для демонстрационной выдачи на ЖКП числа, полученного из КЛС через МВВ.
3.5.2 Функции изменения режима отображения
Имя: int invers ( ulong adr, uint mask )
Назначение: инверсия разрядов слова, определяющего режим отображения на ЖКП.
Параметры: адрес слова; маска разрядов, подлежащих инверсии.
Возврат: новое значение ячейки adr.
Действия:
- читает 32-разрядное слово из памяти МДК ( сначала младшее, затем старшее слово ),
- инвертирует заданные разряды,
- возвращает 32-разрядное слово в память МДК ( сначала старшее, затем младшее слово ).
Имя: void izmZvet ( )
Назначение: инверсия разрядов слова, определяющего режим отображения на ЖКП ( разряды цвета отображения ).
Имя: void ishodnoe ( )
Назначение: установка разрядов слова, определяющего режим отображения на ЖКП в исходное состояние.
Действия:
- записывает в буфер числового значения «15» с записью в память МДК ( обновления при этом не происходит ),
- устанавливает в ноль все разряды слова, определяющего режим отображения на ЖКП,
- уводит курсор за границы экрана.
3.6 Описание функций реализации кадра “План полета”
Исходные тексты подпрограмм имитации кадра «План полета» содержатся в файле «PLAN.CPP». Этот программный компонент первоначально представлял собой отдельную программу, поэтому его подпрограммы зачастую функционально дублируют ПК
Имя: void Pos(long unsigned adr)
Назначение: формирование данных для аэродрома посадки.
Параметры: начальный адрес МДК.
Действия: производит запись структуры описывающей аэродром посадки по заданному адресу МДК.
Имя: void Zap(unsigned long adr, int i)
Назначение: формирование данных для запасного аэродрома.
Параметры: начальный адрес МДК и номер запасного аэродрома.
Действия: производит запись одной из структур описывающей запасной аэродром по заданному адресу МДК.
Имя: void formpm(unsigned long adr, int i)
Назначение: формирование данных для пункта маршрута либо точки схемы взлета(посадки).
Параметры: начальный адрес МДК и номер пункта маршрута.
Действия: производит запись одной из структур описывающей пункт маршрута или точку схемы взлета(посадки) по заданному адресу МДК. В завизимости от режима «ЗПУ-S» формирует путевой угол или дальность.
Имя: void formplan(void)
Назначение: формирование данных для кадра «План полета».
Параметры: начальный адрес МДК и номер пункта маршрута.
Действия: производит расчет номера строки с ИПМ, КПМ, аэродромом посадки в зависимости от номера прокрутки (глобальная переменная N). Формирует данные для каждой строки кадра. В зависимости от текущего режима формирует надписи «На», «Возвр», «Развор», направление разворота, признаки мигания.
Имя: void InitVzl(void)
Назначение: формирование данных для аэродрома взлета.
Действия: производит запись структуры описывающей аэродром взлета по адресу МДК соответствующей первой строке.
Имя: void Edit(int n)
Назначение: редактирование наименования в заданной строке.
Параметры: номер редактируемой строки.
Действия: производит редактирование наименования пункта маршрута или точки или аэродрома, управление курсором
Имя: void ChMode(int i)
Назначение: смена режима.
Параметры: номер текущего режима.
Действия: производит смену номера режима при нажатии одной из клавиш КСЛ
Имя: void plan(void)
Назначение: имитация кадра «План полета».
Действия: производит начальную инициализацию, перехват нажатий клавиш, запуск соответствующих подпрограмм, изменение глобальных переменных. Иными словами является управляющей программой для имитации кадра «План полета».
3.7 Описание функций работы с таймером
Имя: void initTimer ()
Назначение: инициализация таймера
Действия: переадресовывает вектор таймера на функцию funTimer. Настраивает частоту прерываний.
Имя: void stopTimer ()
Назначение: остановка таймера
Действия: переадресовывает вектор таймера на соответствующую функцию DOS.
Имя: void interrupt funTimer (...)
Назначение: обработчик прерываний
Действия:
- с периодом 55 мс запускает обработчик таймера DOS;
- рассчитывает реальное время в миллисекундах;
- с периодом 1 с запускает функции:
avtKren ( otvMww ) - отображает полученное от МВВ значение крена;
StorozTmrMww () – непрерывный контроль МВВ
checkZki () – обновление информации на ЖКИ.
3.8 Описание функций обмена с МВВ
Функции обмена с МВВ содержатся в файле ObmenMww.cpp.
Для обращения к регистрам модуля МВВ используются функции доступа к расширенной памяти, описанные в подразделе 3.1.
Имя: uint OpenSf ( uint nSf )
Назначение: открытие семафора.
Параметр: номер семафора.
Возврат: код ошибки ( 0 – успех ).
Имя: uint CloseSf ( uint nSf )
Назначение: закрытие семафора.
Параметр: номер семафора.
Возврат: код ошибки ( 0 – успех ).
Имя: uint ZapisMwwInt ( uint nSf, uint adr, uint znc )
Назначение: запись в двухпроцессорное ОЗУ МВВ 16-разрядного значения.
Параметры: номер семафора, адрес ( смещение от начала двухпроцессорного ОЗУ), передаваемое значение.
Возврат: код ошибки ( 0 – успех ).
Имя: uint CtenMwwInt ( uint nSf, uint adr, uint* znc )
Назначение: чтение из двухпроцессорного ОЗУ МВВ 16-разрядного значения.
Параметры: номер семафора, адрес ( смещение от начала двухпроцессорного ОЗУ), адрес для записи принятого значения.
Возврат: код ошибки ( 0 – успех ).
Имя: uint ZapisMwwLng ( uint nSf, uint adr, ulong znc )
Назначение: запись в двухпроцессорное ОЗУ МВВ 32-разрядного значения.
Параметры: номер семафора, адрес ( смещение от начала двухпроцессорного ОЗУ), передаваемое значение.
Возврат: код ошибки ( 0 – успех ).
Имя: uint CtenMwwLng ( uint nSf, uint adr, ulong* znc )
Назначение: чтение из двухпроцессорного ОЗУ МВВ 32-разрядного значения.
Параметры: номер семафора, адрес ( смещение от начала двухпроцессорного ОЗУ), адрес для записи принятого значения.
Возврат: код ошибки ( 0 – успех ).
Имя: char* ImaRezimMww ( uint rezim )
Параметр: код режима работы МВВ.
Возврат: указатель на текстовую строку – имя соответствующего режима.
Имя: char* ImaErr ( uint err )
Параметр: код ошибки.
Возврат: указатель на текстовую строку – определение ошибки.
Имя: uint StorozTmrMww ()
Назначение: периодическое отслеживание значения программного сторожевого таймера МВВ.
Возврат: код ошибки ( 0 – успех ).
Действия:
- записывает значение в первую ячейку сторожевого таймера и сравнивает значение, записанное туда в предыдущем запуске с полученным из второй ячейки сторожевого таймера ( см. Протокол взаимодействия МПР и МВВ ), при несоответствии выводит сообщение на экран технологического компьютера,
- отслеживает значение в регистре состояния МВВ и при его изменении выводит сообщение на экран технологического компьютера;
- при невозможности обращения к регистрам МВВ выводит сообщение на экран технологического компьютера.
Имя: void interrupt ObrabotkaPrerMww (...)
Назначение: обработка прерываний от МВВ.
Действия: по прерываниям инкрементирует счетчик.
3.9 Описание функций инициализации МВВ
Функции обмена с МВВ содержатся в файле InitMww.cpp.
Для обращения к регистрам модуля МВВ используются функции, описанные в подразделах 3.1 и 3.7.
Имя: uint RezimMww ( uint trebRezim )
Назначение: изменение режима работы МВВ.
Параметр: требуемый режим работы МВВ.
Возврат: код ошибки ( 0 – успех ).
Действия:
- записывает в управляющее слово МВВ код требуемого режима работы МВВ,
- ожидает реакции МВВ в его слове состояния в течение 1 с. ,
- выводит на экран технологического компьютера сообщение об успешном или неуспешном переводе МВВ в новый режим работы.
Имя: uint OzidanieOtvetaMww ( uint trebRezim, uint timeout )
Назначение: ожидания перехода МВВ в требуемый режим работы.
Параметр: требуемый режим работы МВВ, время ожидания в миллисекундах.
Возврат: код ошибки ( 0 – успех ).
Действия:
- в течение заданного времени ожидает появления в слове состояния МВВ информации о требуемом режиме работы,
- выводит на экран технологического компьютера сообщение об успешном или неуспешном переводе МВВ в новый режим работы.
Имя: uint InitObmenMww ()
Назначение: инициализация МВВ согласно Протокола взаимодействия МПР и МВВ ( диспетчер инициализации ).
Возврат: код ошибки ( 0 – успех ).
Имя: uint FormBdMww ()
Назначение: передача базы данных МВВ.
Возврат: код ошибки ( 0 – успех ).
Действия:
- запрашивает на экране ТК источник базы данных ( файл, вручную ),
- записывает базу данных в память МВВ,
- переводит МВВ в режим инициализации.
Имя: uint ZaprosBdRucn ()
Назначение: ручной ввод базы данных МВВ.
Возврат: код ошибки ( 0 – успех ).
Действия: запрашивает у оператора на экране ТК значения для базы данных МВВ.
Имя: uint ZaprosGrSign ( struct TGrSign* gr )
Назначение: ручной ввод базы данных МВВ ( данных об одной группе сигналов ). Вызывается из функции ZaprosBdRucn.
Имя: ulong KonSum ( void* gr, uint len )
Назначение: подсчет контрольной суммы. Вызывается из функции ZaprosBdRucn.
3.10 Описание функций контроля МВВ
Функции контроля аппаратуры обмена МПР-МВВ и расширенного контроля МВВ содержатся в файлах KontMww.cpp и RasKont.cpp. Каждая из функций этих файлов обеспечивает выполнение одного из тестов аппаратуры МВВ согласно алгоритмам, приведенным в протоколе взаимодействия МПР и МВВ.
Имя: uint KontMww (void)
Назначение: диспетчер контроля аппаратуры обмена МПР-МВВ.
Возврат: код ошибки ( 0 – успех ).
Имя: uint RasKont (void)
Назначение: диспетчер расширенного контроля МВВ.
Возврат: код ошибки ( 0 – успех ).
4 Используемые технические средства
Для функционирования программы необходимо следующее оборудование:
- пульт МФПУ;
- персональный компьютер семейства IBM PC.
- жгут соединительный между МФПУ и компьютером, распаянный как «Нуль-модем».
5 Вызов и загрузка
5.1 Запуск готовой программы
Загрузочный файл программы находится в ППЗУ процессора МПР на виртуальном диске E: с именем DEMO.EXE. Для ее запуска необходимо произвести следующие действия:
- включить питание МФПУ и технологического компьютера;
- запустить на ТК программу SmartLink;
- в появившемся на экране ТК консольном окне ( черное с белыми буквами ) ввести “E:DEMO”.
5.2 Корректировка и запуск откорректированной программы
Исходные файлы программы находятся на гибком магнитном диске КИВШ.00224-02 90. Для внесения изменений в программу необходимо произвести следующие действия:
1) Скопировать исходные файлы (с расширениями .cpp и .h ) на жесткий диск технологического компьютера.
2) Войти в среду программирования на языке Си-плюс-плюс ( например Borland C++ 3.1 ), создать проект, открыть исходные файлы.
3) Внести в файлы требуемые корректировки.
4) Произвести трансляцию программы с получением файла DEMO.EXE.
5) Выйти из среды программирования и запустить программу SmartLink для связи с МФПУ.
6) Скопировать файл DEMO.EXE в память процессора ( на виртуальный диск в ОЗУ МПР ), для чего:
- в консольном окне ввести команды:
F:
TRANSFER DEMO.EXE
- нажать <Alt-D>
- в появившемся диалоговом окне ввести DEMO.EXE и нажать <Enter>.
7) Произвести запуск программы, для чего в консольном окне ввести «DEMO».
В случае возникновения затруднений с копированием информации в память МПР МФПУ обратитесь к руководству оператора программы SmartLink.
6 Входные и выходные данные
Обмен данными с процессорами МВВ, МКК и МДК осуществляется на основании протоколов взаимодействия:
- КИВШ.00225-01 91 – между МПР и МВВ,
- КИВШ.00226-02 91 – между МПР и МДК,
- КИВШ.00227-01 91 – между МПР и МКК.
Перечень сокращений
ГМД - Гибкий магнитный диск
ЖКП - Жидко-кристаллическая панель
КПП - Контрольно-проверочная программа
МВВ - Модуль ввода-вывода
МДК - Модуль дисплейного контроллера
МКК - Модуль контроллера клавиатуры
МПР - Модуль процессора
МФПУ - Многофункциональный пульт управления
ОЗУ - Оперативное запоминающее устройство
ОПО - Общее программное обеспечение
ПЗУ - Постоянное запоминающее устройство
ПО - Программное обеспечение
ППЗУ - Перепрограммируемое ПЗУ
СПО - Специальное программное обеспечение
ТК - Технологический компьютер
Лист регистрации изменений |
|||||||||
|
Номера листов (страниц) |
Всего Листов (стран.) в докум. |
№ доку- мента |
Входя- щий № сопрово-дительного документа и дата |
Подп. |
Дата |
|||
Изм. |
Изме- Ненных |
заменен- ных |
новых |
аннули- рованных |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|