Работа с Modbus-модулями, подключенными к шлюзам WB-MGE или WB-MIO-E по сети RS-485, с помощью утилиты modbus_client

Материал из Wiren Board


Утилита modbus_client для опроса устройств по протоколам Modbus RTU и Modbus TCP из командной строки не умеет работать с протоколом Modbus over TCP, который используется для коммуникации с модулем WB-MGE и WB-MIO-E по сети Ethernet.

Для конфигурирования Modbus-устройств, подключенных к WB-MGE (WB-MIO-E) по сети RS-485 можно:

Чтобы создать виртуальный порт:

  1. Остановите сервис wb-mqtt-serial:
    service wb-mqtt-serial stop
    
  2. Установите утилиту socat
      apt-get install socat
    
  3. Запустите перенаправление. Предположим, что модуль WB-MGE (WB-MIO-E) имеет IP-адрес 192.168.0.7, тогда в одном терминале на контроллере нужно выполнить команду:
      socat -d -d -d -x PTY,raw,ispeed=9600,ospeed=9600,parenb=0,cstopb=1,cs8,link=/dev/ttyRS485-5 tcp:192.168.0.7:20108&
    
    в системе появится виртуальный порт /dev/ttyRS485-5, с которым можно работать как с локальным.

Теперь открываете второй терминал и, с помощью утилиты modbus_client читаете и записываете значения в регистры устройств, подключенных к шлюзу по сети RS-485. В качестве адреса используете Modbus-адреса устройств. При этом в первом терминале остается запущенной команда socat.

Чтобы обновить прошивку с помощью утилит wb-mcu-fw-updater или wb-mcu-fw-flasher:

  1. Используйте созданный socat порт, например, /dev/ttyRS485-5.
  2. Режим шлюза должен быть TCP Server/None (для WB-MGE v2, WB-MIO-E v2) или TCP Server (для WB-MGE v1, WB-MIO-E v1).
  3. Modbus-устройства и шлюз должны иметь одинаковые настройки обмена по интерфейсу RS-485: скорость 9600 бит/с, биты данных 8, бит четности - нет, количество стоп-битов 2.

Только при соблюдении всех условий обновление прошивки будет работать.

Информация по теме на портале