41 lines
1.2 KiB
Smalltalk
41 lines
1.2 KiB
Smalltalk
(*
|
||
===============================================================================
|
||
Project : PLC_Library
|
||
Device : -
|
||
Path : Общие
|
||
Name : Status_Connect_Counter
|
||
Type : FUNCTION_BLOCK
|
||
===============================================================================
|
||
*)
|
||
|
||
FUNCTION_BLOCK Status_Connect_Counter
|
||
(*
|
||
Статус связи с СВУ по счетчику
|
||
*)
|
||
VAR_INPUT
|
||
Counter: WORD; (* Счетчик, инкрементируемый удаленным устройством (СВУ) *)
|
||
T_Error: TIME; (* Время отсутствия изменений счетчика для диагностики обрыва связи *)
|
||
END_VAR
|
||
VAR_OUTPUT
|
||
CounterIsChanged: BOOL; (* Флаг: счетчик изменился в текущем цикле *)
|
||
ERROR_CONNECT: BOOL; (* Флаг ошибки связи: счетчик не менялся дольше T_Error *)
|
||
END_VAR
|
||
VAR
|
||
CounterOld: WORD;
|
||
TON_SU: TON;
|
||
END_VAR
|
||
|
||
(*----- IMPLEMENTATION -----*)
|
||
TON_SU(IN:=(Counter = CounterOld), PT:=T_Error);
|
||
ERROR_CONNECT:=TON_SU.Q;
|
||
|
||
IF(Counter <> CounterOld) THEN
|
||
CounterIsChanged:=TRUE;
|
||
ELSE
|
||
CounterIsChanged:=FALSE;
|
||
END_IF
|
||
CounterOld:=Counter;
|
||
|
||
|
||
END_FUNCTION_BLOCK
|