Задаяча такая: нужно контролировать различное время: открытие закрытие клапанов с выдачей ошибки и окончание времени различных технологических шагов.
Клапан это пользовательский тип:
Valve
simulation bool Симуляция
alarm bool Ошибка
manual bool Ручное управление
lock bool Блокировка
man_open bool Ручное открытие
aut_open bool Автоматическое открытие
input_open bool Обратный сигнал открытия
input_close bool Обратный сигнал закрытия
open bool Открытие
open_time time Время ожидания обратного сигнала открытия
close_time time Время ожидания обратного сигнала закрытия
Клапана прописаны в DB2. Например SV31.
Я хочу вызывать, например функциональный блок FB201, в который передать как параметр IN_OUT клапан SV31.
Блок должен обрадотать сигналы ручного и автоматического отрытия и сформировать аварийный сигнал, если клапан не открылся/закрылся за опредленное время:
Код: Выделить всё
FUNCTION_BLOCK FB 201
TITLE =
VERSION : 0.1
VAR_IN_OUT
Valve : "Valve";
END_VAR
VAR
TON_ON : "TON";
TON_OFF : "TON";
END_VAR
BEGIN
NETWORK
TITLE =
AN #Valve.lock;
A( ;
AN #Valve.manual;
A #Valve.aut_open;
O ;
A #Valve.manual;
A #Valve.man_open;
) ;
= #Valve.open;
NETWORK
TITLE =
A #Valve.open;
AN #Valve.input_open;
[color=#FF0000][i] call sfb4, #TON_ON[/i][/color]
END_FUNCTION_BLOCK