НТК Интерфейс
ПО ОИК Диспетчер НТ. ПО сервер версия 3.Х.
          Руководство пользователя
×
Меню

10.1.6.1. Скриптовый обработчик классов

Для повышения гибкости обработки принимаемой телеметрии в сервер ТМ встроен скриптовый обработчик классов ТС и ТИТ. В отличие от «дорасчетчика» скрипт запускается по факту приема телепараметра в момент перед занесением нового значения в сервер. Возможности скриптовой машины позволяют анализировать старое и новое значение, флаги и метки времени для реализации нетипичных алгоритмов. Также есть возможность доступа к другим телепараметрам.
Для ТС или ТИТ которым нужно сделать спец обработку с помощью скрипта нужно сделать общий класс, где и задать нужный скрипт. Необходимо учитывать, что работа скрипта значительно увеличивает время первичной обработки телеметрии, поэтому просим избегать применения алгоритмов с циклами.
Правила написания скрипта
- язык скрипта идентичен ЯРД
- доступ к обрабатываемому телепараметру производится через фиксированные имена переменных
Имя переменной
Назначение
Возможность изменять
Пример
Комментарий
V$
Значение обрабатываемого ТС или ТИТ
да
V$=V$+10
 
Принятое значение будет увеличено на 10
CH$
RTU$
POINT$
Адрес обрабатываемого ТС или ТИТ
нет
#TT CH$:RTU$:POINT$+1= V$+10
Принятое значение будет увеличено на 10 и записано в следующий по адресу ТИТ
PV$
Предыдущее значение
нет
if v$ = pv$ then goto exit
Если нет изменений переходим по метке exit
F$
Флаги
да
if and(f$,F_UNACKED) <> 0 then goto exit
Если новый флаг взведен
PF$
Предыдущие флаги
нет
if and(pf$,F_UNACKED) = 0 then goto exit
Если старый флаг не взведен
TIMED$
Признак что параметр принят с меткой времени
нет
if timed$=0 then goto exit
Если параметр принят без времени
TMMS$
Принятая метка времени (мс)
нет
if timed$=0 then goto exit
#tt ch$+1:rtu$:point$=cms$-tmms$
exit:
Вычисляем задержку (время сервера-время ТМ) и складываем в ТИТ следующего канала
CMS$
Текущее время сервера (мс)
нет
См выше
 
MS$
Время обновления параметра
нет
Dif = ms$-pms$
if Dif > 1000 then goto exit
Если после последнего обновления параметра прошло более секунды
PMS$
Предыдущее время обновления
нет
См выше
 
FCHG$
Есть изменения флагов от старых значений
нет
if fchg$ <> 0 then goto exit
Если флаги не поменялись
IGNORE$
Игнорировать обработку параметра
да
if fchg$ <> 0 then ignore$ =1
Если флаги не поменялись – игнорировать обработку
AVG$
Текущее усредненное значение ТИТ
нет
 
 
S2$
PS2$
 
Расширенные флаги ТС (новые и предыдущие)
 
 
 
 
 Дополнительно для ТС можно получить адрес «связанного» ТС, который задается в конфигурации
L_CH$"        канал связанного ТС
L_RTU$"       N кп связанного ТС
L_POINT$       N объекта связанного ТС
Пример
if and(f$, UNRELIABLE_HDW) <> 0 then #TC l_ch$:l_rtu$:l_pt$=1
(если принятый параметр недостоверный – взводим связанный ТС в 1)