
Сообщение от
Cs-Cs
Да! Это оно! Единственное неудобство в том, что на момент ошибки xError становится TRUE, а при следующей попытке опроса сбрасывается на FALSE.
Я у себя в статье как раз это описал (ради этого стоит почитать) и показал, как сделал систему выдержки на паре таймеров.
Её суть такая, образно: "Одна ошибочка появилась - значит, глюк. О, а если пошли несколько ошибок подряд - то это точно отвал связи".
Все, разобрался. Набросал быстренько пока такой код. Работает. Спасибо!
Код:
pchvModbusErrorsComing: TOF;
pchvModbusConnectionError: TON;
modbusErrorTimeout: TIME:= T#1000MS;
modbusErrorSeriesTimeout: TIME:= T#3000MS;
fTrigPchvRestarted: F_TRIG;
pchvModbusErrorsComing(IN:= PChV1_M01.xError, PT:= modbusErrorTimeout);
pchvModbusConnectionError(IN:= pchvModbusErrorsComing.Q, PT:= modbusErrorSeriesTimeout);
fTrigPchvRestarted(CLK:= pchvModbusConnectionError.Q);
IF fTrigPchvRestarted.Q THEN
FrequencySetOutputValue:= FrequencySetStartupValue;
triggerFrequencySetOutputValue:= TRUE;
END_IF