Для повышения гибкости обработки принимаемой телеметрии в сервер ТМ встроен скриптовый обработчик классов ТС и ТИТ. В отличие от «дорасчетчика» скрипт запускается по факту приема телепараметра в момент перед занесением нового значения в сервер. Возможности скриптовой машины позволяют анализировать старое и новое значение, флаги и метки времени для реализации нетипичных алгоритмов. Также есть возможность доступа к другим телепараметрам.
Для ТС или ТИТ которым нужно сделать спец обработку с помощью скрипта нужно сделать общий класс, где и задать нужный скрипт. Необходимо учитывать, что работа скрипта значительно увеличивает время первичной обработки телеметрии, поэтому просим избегать применения алгоритмов с циклами.
Правила написания скрипта
- язык скрипта идентичен ЯРД
- доступ к обрабатываемому телепараметру производится через фиксированные имена переменных
Имя переменной
Назначение
Возможность изменять
Пример
Комментарий
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)