УТВЕРЖДАЮ

Главный конструктор ОАО УКБП

_____________ В.П.Деревянкин

"__"____________ 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 – между МПР и МКК.


Перечень сокращений


ГМД           -        Гибкий магнитный диск

ЖКП          -        Жидко-кристаллическая панель

КПП           -        Контрольно-проверочная программа

МВВ           -        Модуль ввода-вывода

МДК           -        Модуль дисплейного контроллера

МКК           -        Модуль контроллера клавиатуры

МПР           -        Модуль процессора

МФПУ       -        Многофункциональный пульт управления

ОЗУ            -        Оперативное запоминающее устройство

ОПО           -        Общее программное обеспечение

ПЗУ            -        Постоянное запоминающее устройство

ПО              -        Программное обеспечение

ППЗУ         -        Перепрограммируемое ПЗУ

СПО           -        Специальное программное обеспечение

ТК              -        Технологический компьютер


Лист регистрации изменений


Номера листов (страниц)

Всего

Листов

(стран.)

в докум.

доку-

мента

Входя-

щий № сопрово-дительного документа и дата

Подп.

Дата

Изм.

Изме-

Ненных

заменен-

ных

новых

аннули-

рованных