Сообщение от
werqas
Нужен блок, который начинает работу при подачи 1 на вход, начинает отсчет времени и подает все это время 1 на выход. После истечения заданного времени на выход подается 0 . Но нужно реализовать паузу. То есть когда подается 1 на вход "пауза" время останавливается и запоминается, на выход - 0. Когда снимем 1 с паузы, время должно продолжиться
petera если не против, просто немного изменил ваш код
Код:
FUNCTION_BLOCK TP_
VAR_INPUT
IN: BOOL;
Pause: BOOL;
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 AND NOT Pause THEN
StartTime:= tx;
clk:= TRUE;
ET:=T#0ms;
ELSIF NOT IN AND ET=PT THEN
clk:= FALSE;
END_IF
IF clk AND ET<PT THEN
ET:= MIN(PT, tx - StartTime);
Q:=ET<PT AND IN AND NOT Pause;
END_IF