Передача данных по протоколу ModBus

Последнее изменение: 04 октября 2022

Протокол MODBUS TCP обеспечивает обмен между устройствами в сети TCP/IP, используя модель ведущий-ведомый (master-slave), где контроллер ENLOGIC выступает в роли ведомого устройства (сервера).

В контроллерах ENLOGIC поддержаны три функции Modbus TCP slave:

0x03 - Read Holding Registers

Внутри контроллера каждый параметр ENLOGIC имеет размер 4 байта (2 регистра Modbus). При подготовке ответа на запрос мастера значение параметра "ужимается" до одного регистра (2 байта), т.е. вполне может произойти переполнение. В этом случае вместо значения передаётся 0xFFFF. Полноразмерное значение параметра можно получить, используя функцию 0x04.

Все значения в ответе передаются как short int (от -32767 до 32767), параметры типа Integer передаются без изменений, параметры типа Float умножаются на заданный множитель и обрезаются до целого числа, параметры типа Boolean передаются как 1 (true) или 0 (false). В регистрах, соответствующих несуществующим в конфигурации контроллера параметрам (а также параметрам вне разрешённого диапазона) и в регистрах, соответствующих недостоверным параметрам (с плохим качеством), передаются 0xFFFF.

В данном запросе адреса Modbus соответствуют МЭК-адресам параметров в конфигурации контроллера ENLOGIC.

Если адреса запрошенных параметров не попадают в допустимый диапазон, то возвращается исключение Modbus с кодом 2.

0x04 - Read Input Registers

В ответ на этот запрос отправляются значения параметров «как есть», без дополнительной обработки, при этом каждый параметр передаётся в двух регистрах Modbus. Адреса Modbus в данном запросе должны представлять собой МЭК-адреса параметров в конфигурации контроллера ENLOGIC, умноженные на 2. Например, для запроса трёх параметров, начиная с МЭК-адреса 21, запрос должен быть на шесть регистров, начиная с адреса 42.

В ответ в регистрах, соответствующих несуществующим в конфигурации контроллера параметрам (а также параметрам вне разрешённого диапазона) и в регистрах, соответствующих недостоверным параметрам (с плохим качеством), передаются 0xFFFFFFFF. Целочисленные параметры передаются как INT32, параметры с плавающей запятой – как FLOAT32, дискретные значения передаются следующим образом: TRUE - как 0x00000001, FALSE – как 0x00000000.

Если адреса запрошенных параметров не попадают в допустимый диапазон, то возвращается исключение Modbus с кодом 2.

0x06 - Write Single Register

В данном запросе адрес Modbus должен соответствовать МЭК-адресу параметра в конфигурации контроллера ENLOGIC, а само значение параметра должно быть передано в формате short int (от -32767 до 32767), при этом для записи параметров типа Float его значение должно быть умножено на заданный множитель и обрезано до целого числа.

Если адрес выходит за пределы разрешённого диапазона или отсутствует в конфигурации контроллера ENLOGIC, то возвращается исключение Modbus с кодом 2.

Настройки задачи Modbus TCP slave
Настройки задачи Modbus TCP slave и её текущее состояние отображаются с использование функционального блока ModbusTcpSlave (из раздела Специальные).

Настройки по умолчанию следующие:

  • ТСР-порт = 502
  • Максимум соединений = 5
  • Начальный адрес = 1
  • Конечный адрес = 32767
  • Множитель = 100

Контактная информация
E-mail: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.
Тел: +7 (499) 110-31-79
Тел: +7 (499) 495-49-10