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

10.3.1. Телеуправление из дорасчета

Для решения задач выдачи единичных и групповых команд телеуправления можно воспользоваться функциями дорасчета для работы с ТУ:
 
reg_telecontrol(ntag,команда,ch, rtu, point) где
-   ntag: номер действия (определается пользователем)
-   команда: 1 - включить, 0 - отключить
-    ch, rtu, point: Канал, КП, Объект связанного ТС
функция регистрирует номер и тип команды ТУ для обработки скирптом. Вызов возвращает 1 при успехе, 0 в случае ошибки. Максимальное количество принимаемых ТУ равно 256.
 
wait_telecontrol()
функция ждет прихода ТУ, зарегистрированного ранее, и возвращает номер действия. При ошибке (или если случается неожиданное событие) возращает большое число - заведомо большее, чем зарегистрированные номера действий.
 
wait_telecontrol(ms) - может принимать 1 аргумент, означающий число миллисекунд таймаута. при исчерпании таймаута также возвращается большое число.
 
exec_telecontrol(команда,ch, rtu, point) где
-    команда: 1 - включить, 0 - отключить
-    ch, rtu, point: канал, кп, объект связанного ТС
функция инициирует исполнение ТУ. Вызов возвращает 1 при успехе, 0 в случае ошибки. Есть вариант вызова с дополнительным агрументом
exec_telecontrol(команда,ch, rtu, point, wait_type) где wait_type: может принимать значения:
-       TC_NO_WAIT            (не ждать результата ТУ)
-       TC_WAIT_STATUS_CHANGE (ждать изменения связанного ТС)
-       TC_WAIT_RESP_AND_LOG  (ждать тоько ответа от аппаратуры - по умолчанию)
-       эти константы предопределены в структуре языка
для успешного исполнения команды в конфигурации связанного ТС должно быть установлено разрешение неинтерактивного ТУ.
 
пример программы обработки входящих ТУ
 
reg_telecontrol(1,1,1,1,1) //регистрация ТУ 1:1:1 включение на номер 1
reg_telecontrol(2,0,1,1,1) //регистрация ТУ 1:1:1 отключение на номер 2
 
 
wait_more:
r=wait_telecontrol(10000)
 
 
if r=1 then goto control_1_1_1_on  // результат =1 - переходим на действие для ТУ 1:1:1 вкл
if r=2 then goto control_1_1_1_off // результат =2 - переходим на действие для ТУ 1:1:1 откл
 
 
goto wait_more
 
control_1_1_1_on:
#tc1:1:1=1
exec_telecontrol(1,1,2,1) // выполнить другое ТУ (1:2:1)
exec_telecontrol(1,1,2,2)
exec_telecontrol(1,1,2,3)
exec_telecontrol(1,1,2,4)
goto wait_more
 
control_1_1_1_off:
#tc1:1:1=0
exec_telecontrol(0,1,2,1)
exec_telecontrol(0,1,2,2)
exec_telecontrol(0,1,2,3)
exec_telecontrol(0,1,2,4)
goto wait_more