PHP код:
FUNCTION_BLOCK TP_P (* Таймер TP с паузой *)
VAR_INPUT
IN: BOOL; (* IN - запуск,можно снять TRUE после запуска), *)
Pause: BOOL; (* Pause - при FALSE считает время, при TRUE останавливает счёт, сохраняя время остановки, при подаче опять FALSE, продолжает счёт со времени остановки *)
PT: TIME;
END_VAR
VAR_OUTPUT
Q: BOOL;
ET: TIME;
END_VAR
VAR
clk: BOOL;
StartTime: TIME;
tx: TIME;
END_VAR
________________________________________________________________
tx:= TIME();
IF Pause THEN
StartTime:= tx - ET;
END_IF
IF IN AND NOT clk THEN
StartTime:= tx;
clk:= TRUE;
ELSIF ET=PT THEN
clk:= FALSE;
ET:= t#0s;
END_IF
IF clk AND ET<PT THEN
ET:= MIN(PT, tx - StartTime);
Q:=ET<PT AND NOT Pause;
END_IF