Сделал вот так. Формально оно работает, но... Наверное действительно это решение для периода аварийного отсутствия станка в сети, после чего оператору надо будет в меню СЛК отключать и включать станок.
Код:
MyTimer(IN:=TRUE, PT:=T#15S, Q=>xTimerFlag);
IF xTimerFlag = TRUE THEN
// Попробовать включить выключенные СЛЕЙВы
IF NOT Modbus_Slave_SI30_1.Enable THEN
Modbus_Slave_SI30_1.Enable := TRUE;
END_IF
MyTimer(IN := FALSE);
MyTimer(IN := TRUE, PT:=T#15S, Q=>xTimerFlag);
xTimerFlag := FALSE;
END_IF
.....
IF NOT Modbus_Master_COM_Port.xAllSlavesOk THEN
Modbus_Slave_SI30_1.Enable := NOT Modbus_Slave_SI30_1.xError;
Modbus_Slave_SI30_2.Enable := NOT Modbus_Slave_SI30_2.xError;
END_IF
Подскажите, как всё таки можно в цикле перебирать все слейвы?