21.10. Функции работы с флагами телемеханики
А. Функция чтения флагов ТС, ТИТ, ТИИ
A=GETFLAGS(tm_type,к,кп,о,flag_mask)
где:
tm_type:
TM_STATUS - дляТС
TM_ANALOG - для ТИТ
ТM_ACCUM - для ТИИ
flag_mask:
UNRELIABLE_HDW - недостоверность аппаратная
UNRELIABLE_MANU - недостоверность ручная
REQUESTED - телепараметр запрошен
MANUALLY_SET - значение телепараметра установлено вручную
LEVEL_A - уставка 1 сработала (ТИТ), флаг 1 (ТС)
LEVEL_B - уставка 2 сработала (ТИТ), флаг 2 (ТС)
LEVEL_C - уставка 3 сработала (ТИТ), флаг 3 (ТС)
LEVEL_D - уставка 4 сработала (ТИТ), флаг 4 (ТС)
INVERTED - ТС инвертирован
RESCHANNEL - данные взяты от резервного телепараметра
TMCTRL_PRESENT - есть ТУ (ТС)
STATUS_CLASS_APS - АПС (ТС)
F_ABNORMAL - значение отличается от нормальной схемы
Значение flag_mask задается равным значению одной из указанных констант или сумме этих констант в любом сочетании
Значение A равно маске (сумме) взведённых флагов из заданной в flag_mask комбинации.
Б. Функция проверки взведённых флагов
А=GETFLAG(tm_type,к,кп,о,flag_mask).
Аналогична функции GETFLAGS, но возвращает 1, если взведён хотя бы один из флагов, иначе А = 0.
В. Функция установки и сброса состояния флагов.
А=SETFLAGS(tm_type,к,кп,о,flag_set_mask,flags_clr_mask).
Устанавливает флаги, задаваемые маской flag_set_mask и сбрасывает указанные в flags_clr_mask.
При успешном завершении функция возвращает значение А = 1.
ВНИМАНИЕ! Функция работает только в дорасчёте и не работает в выражениях.
Примеры:
A=GETFLAG(TM_STATUS,0,1,1,UNRELIABLE_HDW)
С=GETFLAGS(TM_ANALOG,0,1,1,UNRELIABLE_HDW+UNRELIABLE_MANU)
В=GETFLAG(TM_ANALOG,0,1,1,UNRELIABLE_HDW+UNRELIABLE_MANU)
SETFLAGS(TM_STATUS,0,1,1,UNRELIABLE_HDW,MANUALLY_SET)