Вот здесь было про звено запаздывания http://www.owen.ru/forum/showthread....l=1#post152225
Правда ФБ FT_TNхх из OSCAT работают с переменными REAL, по этому изменил тип на BOOL
Код:
FUNCTION_BLOCK DELAY_BOOL
VAR_INPUT
in : BOOL;
T : TIME;
END_VAR
VAR_OUTPUT
out : BOOL;
trig: BOOL;
END_VAR
VAR
LENGTH : INT := 32;
X : ARRAY[0..31] OF BOOL;
cnt : INT;
last : TIME;
tx: TIME;
init: BOOL;
END_VAR
tx:=TIME();
trig := FALSE;
IF NOT init THEN
x[cnt] := in;
init := TRUE;
last := tx;
ELSIF tx - last >= T / length THEN
IF cnt = length - 1 THEN cnt := 0; ELSE cnt := cnt + 1; END_IF;
Out := X[cnt];
x[cnt] := in;
last := tx;
trig := TRUE;
END_IF;
Захват-1.png