
Сообщение от
RadistDog
Доброго дня, извините, вклинюсь в разговор, так как вопрос на близкую тему.
У меня слейвов четыре. Кстати, все они нормально рестартовались после обрыва линии связи по указанному выше алгоритму. Это я видел и в КДС и по миганию соответствующих индикаторов на слейвах.
После того, как я изменил алгоритм обмена с модулями, надобность в таком рестарте почему-то отпала. Почему - не знаю, но мне это сейчас не важно, потом разберусь.
А вопрос мой в другом: - я хотел бы фиксировать в отдельные переменные ошибки связи, но при этом код типа Var1 := Modbus_Slave_COM_Port.xError; и Var2 := Modbus_Slave_COM_Port.byModbusError; не приводит к желаемой фиксации этих ошибок в Var1 и Var2. Почему?
наверно потому что при восстановлении связи ошибка пропадает попробуйте что-то типа счетчика переподключений поставить
Код:
IF Modbus_Slave_COM_Port.xError THEN
Blink_01(ENABLE:= TRUE, TIMELOW:= T#1S, TIMEHIGH:= T#10MS);
Modbus_Slave_COM_Port.xReset:= Blink_01.OUT;
IF Blink_01.OUT THEN
count:= count+1;
END_IF
END_IF
ну или присвоение перенести в другое место:
Код:
IF Modbus_Slave_COM_Port.xError THEN
Var1 := Modbus_Slave_COM_Port.xError
Blink_01(ENABLE:= TRUE, TIMELOW:= T#1S, TIMEHIGH:= T#10MS);
Modbus_Slave_COM_Port.xReset:= Blink_01.OUT;
END_IF
так по идее признак ошибки в переменной Var1 будет пока принудительно где-нибудь не обнулим