Вопрос: контроллер настроен в режиме Modbus TCP Master. Необходимо реализовать опрос устройств на шине RS-485, подключенных к контроллеру через конвертер протоколов МКОН. Для каждого slave-устройства в проект добавлен компонент Modbus TCP Slave. Во всех компонентах указан и один и тот же IP-адрес и порт, и разные Unit ID, соответствующие адресам слэйвов на шине RS-485. Проблема в том, что в CODESYS каждый компонент Modbus TCP Slave создает отдельное подключение, а МКОН поддерживает только два одновременных подключения, то есть опросить больше двух слэйвов таким образом невозможно. Как можно решить эту проблему?
28-08-2020 11-13-04.png
Ответ: при работе с преобразователями протоколов Modbus TCP/Modbus RTU необходимо добавлять в проект только один компонент Modbus TCP Slave, а уже в него - нужное количество компонентов Modbus Slave COM Port. В этом случае контроллер установит с конвертером протоколов только одно соединение.
28-08-2020 11-08-11.png
См. видеопример.
Обратите внимание: в текущих версиях CODESYS присутствует баг, из-за которого при возникновении любой ошибки обмена с устройством Modbus Slave COM Port, добавленным в компонент Modbus TCP Slave, его опрос больше не производится.
Для решения проблемы необходимо реализовать сброс ошибок в коде:
Ошибка исправлена в CODESYS V3.5 SP17.Код:PROGRAM PLC_PRG VAR fbConfirmError: R_TRIG; fbConfirmError1: R_TRIG; fbConfirmError2: R_TRIG; END_VAR // Modbus_Slave_COM_Port, Modbus_Slave_COM_Port_1, Modbus_Slave_COM_Port_2 - имена компонентов из дерева проекта (см. скриншот выше) fbConfirmError(CLK := Modbus_Slave_COM_Port.xError, Q => Modbus_Slave_COM_Port.xConfirmError); fbConfirmError1(CLK := Modbus_Slave_COM_Port_1.xError, Q => Modbus_Slave_COM_Port_1.xConfirmError); fbConfirmError2(CLK := Modbus_Slave_COM_Port_2.xError, Q => Modbus_Slave_COM_Port_2.xConfirmError);
2021-09-02_15-07-04.png


