|
|
Программирование на Верхнем Уровне СУ
Библиотеки алгоритмов СУ
void PrgIni_Start
(int fl_open, int narg, char *sarg[]);
|
Процедура вызывается в качестве первого оператора в ПП
|
файла-протокола
для записи информации при отладке ПП:
|
|
|
fl_open=0 - не открывать файл,
|
|
|
fl_open=1 - открыть файл, если указан
параметр при вызове программы (см.ниже),
|
|
|
fl_open=2 - открыть файл без условий;
|
|
narg, sarg - параметры функции main.
|
Определяются следующие параметры из
списка sarg:
|
"PL=" - номер плоскости в таблице описания задач
"U70_APPLICATIONS";
|
|
"regime=" - указывает номер режима (для управляющей программы);
|
|
|
"regime/" - указывает номер
строки в таблицах для определения
списка связанных режимов процедурой
PrgConnectRegime_Get
(для управляющей программы);
|
|
"task=" - указывает номер задачи;
|
|
"sys=" - указывает номер подсистемы;
|
|
"direct=" - указывает плоскость координат: 1/2/3
(горизонтальная/ вертикальная/ горизонтальная и вертикальная);
|
|
"model" - означает работу ПП в режиме моделирования
(без обращения к таблицам БД в контроллере оборудования);
|
|
"cmt" - означает вывод в файл-протокол;
|
|
"regime=" - указывает номер режима (для управляющей программы);
|
|
"bmp=" - имя bitmap-файла.
|
Название программы и один из первых 5 (key )
перечисленных параметров будут идентифицировать каждую запись,
сделанную программой в файл-протокол:
PrgDB_ini (sarg[0], key ? sarg[key] : NULL);
Процедура делает запись в файл-протокол:
if (PrgDB_cmt())
PrgFile_WriteAlarm(
"PrgIni_Start: sys=%d direct=%d regime=%d task=%d debug=%d\n",
prg_n_system, prg_n_direct, prg_n_regime, prg_n_task, prg_debug);
|
void PrgIni_End (void);
|
Процедура вызывается в качестве
последнего оператора в ПП и производит запись в файл-протокол:
if (PrgDB_cmt())
PrgFile_WriteAlarm("**** End of process: pid=%d ****\n", getpid());
|
void PrgIni_SigIgnSet
(int (*App_Result)(unsigned short int), void (*App_End)(void));
|
Процедура служит для фиксирования процедур-функций программы, которые будут
вызваны специальной процедурой при получении сигнала SIGFPE Alpha-процессора. Эта
процедура аварийно завершает работу
программы и производит запись в файл-протокол:
if (PrgDB_cmt()) PrgFile_WriteAlarm("signal %d->exit", signum);
Поэтому обычное предназначение фиксируемых процедур-функций следующее:
|
int PrgConnectRegime_Get (int
narg, char *sarg[]);
|
Определяет номер базового
режима и список связанных режимов,
которые записаны пользователем с помощью Диалоговой Программы в таблицы
"U70_PD_CONNECT_BASE", "U70_PD_CONNECT_W", "U70_PD_CONNECT_A".
Номер строки для чтения одинаков для
этих таблиц и определяется в процедуре PrgIni_Start :
|
char prg_treg_list[PRG_NUM_REGIME2] - список
связанных режимов в рабочих и
наладочных циклах работы ЛУ-30 и У-1.5;
|
|
char prg_treg_base - номер базового режима;
|
|
int prg_treg_flag - семафор работы со
связанными режимами:
|
|
=0 |
нет связанных режимов;
|
|
=1 |
связанные режимы есть только в рабочих циклах;
|
|
=2 |
связанные режимы есть в рабочих и наладочных циклах.
|
Если связанных режимов нет, то
Результат записывается в файл-протокол.
Замечание.
В настоящее время наладочные циклы не рассматриваются
отдельно от рабочих - каждому рабочему
циклу соответствует один наладочный.
Поэтому число режимов, анализируемых во
вновь создаваемых ПП, определяется
константой PRG_NUM_REGIME1
вместо константы PRG_NUM_REGIME2 , равной
2*PRG_NUM_REGIME1, а формируемая данной процедурой
избыточная информация в них не используется.
|
int PrgApp_Define (int narg, char
*sarg[], struct prg_app_struct *app,
unsigned short int *type,
short int *arc,
char *file_bmp);
|
Определяет из параметров командной
строки вызова программы адрес описания
данной задачи, т.е. номер плоскости
таблицы "U70_APPLICATIONS", и записывает в
структуру app. Затем из описания задачи
определяет следующие параметры:
|
type - тип ПП;
|
|
arc - адрес в каталоге архива ("холодные"
копии), т.е. номер строки в таблице
"U70_REGIMES_NAMES";
|
|
file_bmp - название файла
графического формата.
|
Результат записывается в файл-протокол.
|
Автор © Клименков Е.В.
|
|
|
|