
Сообщение от
Flawon
VR (время "простоя") никак не должно влиять на ET, в программе оно должно приводить ET к моменту начала "простоя" ..
Привет! Это как "не должно", "но должно"?!
Если надо продлить работу таймера на время простоя, то я бы попробовал так:
Код:
T : TOF;
ET : INT;
T(IN:=IN, PT:=T#30s, Q=>Q); ; // Таймер управляется IN, Q показывает его состояние
IF T.Q THEN // Пока идет отсчет..
IF SP THEN // активный SP ...
T(IN:=TRUE); // удерживаем таймер активным и ..
IF Q THEN // при активном выходе Q
ET:=T.ET; Q:=FALSE; // Надо запомнить накопленное время и сбросить Q
END_IF
ELSE // При неактивном SP
IF NOT Q THEN // и не активном Q
T(IN:=FALSE); T(IN:=TRUE, PT:=T#30s-ET, Q=>Q); // Надо перезапустить таймер, но с учетом накопленного времени и воcстановить Q
END_IF
END_IF
END_IF