я сделал такую конструкцию
С ней зависать перестало совсем. Если пропадает связь, то восстанавливается, бывает не с первой попытки, но восстанавливается. Тут у меня 2 ком порта задействованы сразу, можно раздельно прописать.Код HTML:CASE restart_STEP OF 0: IF a2.xError OR a3.xError OR a4.xError OR a5.xError OR A6.xError OR A7.xError OR A8.xError OR A9.xError THEN a4_error_count:=a4_error_count+1; IF a4_error_count>5 THEN restart_STEP:=restart_STEP+1; END_IF ELSE a4_error_count:=0; END_IF 1: Modbus_Master_COM_Port.xStop:=TRUE; Modbus_Master_COM_Port_1.xStop:=TRUE; TON_restart(IN:=TRUE,PT:=T#200MS); IF TON_restart.Q THEN a4.xReset:=TRUE; a7.xReset:=TRUE; a2.xReset:=TRUE; a3.xReset:=TRUE; a5.xReset:=TRUE; a6.xReset:=TRUE; a8.xReset:=TRUE; a9.xReset:=TRUE; TON_restart(IN:=FALSE); restart_STEP:=restart_STEP+1; END_IF 2: TON_restart(IN:=TRUE,PT:=T#200MS); IF TON_restart.Q THEN a4.xReset:=FALSE; a7.xReset:=FALSE; a2.xReset:=FALSE; a3.xReset:=FALSE; a5.xReset:=FALSE; a6.xReset:=FALSE; a8.xReset:=FALSE; a9.xReset:=FALSE; TON_restart(IN:=FALSE); restart_STEP:=restart_STEP+1; END_IF 3: TON_restart(IN:=TRUE,PT:=T#200MS); IF TON_restart.Q THEN Modbus_Master_COM_Port.xResetComPort:=TRUE; Modbus_Master_COM_Port_1.xResetComPort:=TRUE; TON_restart(IN:=FALSE); restart_STEP:=restart_STEP+1; END_IF 4: TON_restart(IN:=TRUE,PT:=T#200MS); IF TON_restart.Q THEN Modbus_Master_COM_Port.xResetComPort:=FALSE; Modbus_Master_COM_Port_1.xResetComPort:=FALSE; TON_restart(IN:=FALSE); restart_STEP:=restart_STEP+1; END_IF 5: TON_restart(IN:=TRUE,PT:=T#200MS); IF TON_restart.Q THEN Modbus_Master_COM_Port.xStop:=FALSE; Modbus_Master_COM_Port_1.xStop:=FALSE; TON_restart(IN:=FALSE); restart_STEP:=restart_STEP+1; END_IF 6: TON_restart(IN:=TRUE,PT:=T#200MS); IF TON_restart.Q THEN TON_restart(IN:=FALSE); restart_STEP:=0; END_IF END_CASE




Ответить с цитированием