ГНЦ ИФВЭ
ОУ У-70
Система Управления комплекса У-70  

Программирование на Верхнем Уровне СУ

Библиотеки алгоритмов СУ


int SvKern_Master
      (int narg, char *sarg[]
      ,int (*App_Ini)(int narg, char *sarg[])
      ,void (*App_End)(void)
      ,int (*App_Setup)(void)
      ,int (*App_Data)(
          int fl_cntr_active, int fl_cntr_ready, int fl_cntr_error,
          int fl_meas_active, int fl_meas_ready, int fl_meas_error)
      ,int fl_alarm
      );

Процедура-функция реализует все правила организации Локального Супервизора СУ, т.е. ПП, следящей за состоянием технологической подсистемы СУ (состояние Контроллера Оборудования, базы данных, сети, аппаратуры). Процедуру-функцию следует использовать как ядро при создании Локальных Супервизоров СУ, которые могут обладать и дополнительными свойствами - измерение физических параметров подсистемы, создание графических файлов, ведение статистики измерений и пр.

Эта процедура-функция используется как ядро при построении Главных Супервизоров установок ускорительного комплекса, каждый их которых следит за работой всех Локальных Супервизоров "своей" установки и готовит информацию об их состоянии пользователю. 

Эта процедура-функция организует выполнение только алгоритма слежения и диагностики. Остальные алгоритмы - инициализации и завершения работы, обработки измеренных данных и прочие - реализуются в специально создаваемых процедурах-функциях, которые передаются ядру в качестве параметров и вызываются ядром по мере необходимости:

narg, sarg - параметры функции main;
App_Ini - процедура-функция будет вызвана для инициализации работы ПП;
App_End - процедура-функция, завершающая работу ПП;
App_Setup - процедура-функция чтения каких-либо параметров из других задач СУ, вызывается перед каждой проверкой готовности данных в Контроллере Оборудования;
App_Data - процедура-функция, реализующая собственный алгоритм Супервизора (обработка измерений и пр.); 
данная процедура-функция будет вызвана при условии готовности данных в Контроллере Оборудования и при отсутствии каких-либо ошибок:
 
для записи измеренных данных в БД необходимо соблюдать правила СУ и для этого следует использовать процедуры PrgDBa_PDsave, PrgDBa_TDsave, PrgIni_StatPlane;
 
для создания графических файлов рекомендуется использовать процедуры библиотеки bmplib.a;
fl_alarm - установка семафора записи в файл-протокол:
 
fl_alarm=0 - открыть файл, если указан параметр "cmt" при вызове программы,
 
fl_alarm=1 - открыть файл без условий.

Ядро Супервизора содержит в качестве первых операторов вызовы процедур PrgIni_SigIgnSet и PrgIni_Start. Если процедура-функция App_Ini обнаружит ошибку со значением, не равным RC_ECOFF, то Ядро и, следовательно, Супервизор прекращает работу. Алгоритм работы Ядра циклический - чтение команды пользователя через каждые SV_WAIT_SEC секунд и выполнение команды, если команда обнаружена. Если команда не обнаружена, то проверяется готовность данных в Контроллере Оборудования. Если данные готовы и какие-либо ошибки не обнаружены, то выполняется собственный алгоритм данного Супервизора. В случае фиксирования какой-либо ошибки Ядро записывает код этой ошибки в семафор результата измерения MAIN-таблицы.

Супервизоры не поддерживают интерфейс с Диалоговой Программой, поэтому пользователь может управлять работой Супервизоров только посредством специальной ПП, называемой Менеджером Локальных Супервизоров СУ. Менеджер преобразует команды пользователя в коды, которые имеют для Супервизоров следующий смысл:

CMD_ENDWORK - завершить работу ПП;
CMD_PRGLOAD - если запись в файл-протокол запрещена, то разрешить, и наоборот;
CMD_NEWDATA - ПП должна перезагрузиться с диска;
CMD_PUTDATA - обнулить ошибки и счетчики работы.

Автор © Клименков Е.В.