WB FAQ/modbus-modules-behind-gateway: различия между версиями

Материал из Wiren Board
(Скорректировал процедуру обновления прошивок)
Строка 1: Строка 1:
{{DISPLAYTITLE: Работа с Modbus-модулями, подключенными к шлюзам WB-MGE или WB-MIO-E по сети RS-485, с помощью утилиты modbus_client}}
{{DISPLAYTITLE: Работа с Modbus-модулями, подключенными к шлюзам WB-MGE или WB-MIO-E по сети RS-485, с помощью утилиты modbus_client}}


Утилита [[ Modbus-client | modbus_client]] для опроса устройств по протоколам Modbus RTU и Modbus TCP из командной строки не умеет работать с протоколом Modbus over TCP, который используется для коммуникации с модулем WB-MGE и WB-MIO-E по сети Ethernet. Для конфигурирования Modbus-устройств, подключенных к WB-MGE (WB-MIO-E) по сети RS-485 можно использовать [[Wb-mqtt-serial_templates#.D0.A1.D0.B5.D0.BA.D1.86.D0.B8.D1.8F_.D0.B8.D0.BD.D0.B8.D1.86.D0.B8.D0.B0.D0.BB.D0.B8.D0.B7.D0.B0.D1.86.D0.B8.D0.B8_.28setup-.D1.81.D0.B5.D0.BA.D1.86.D0.B8.D1.8F.29 | "setup"-секцию ]] интерфейса wb-mqtt-serial или создать виртуальный порт для работы утилиты [[ Modbus-client | modbus_client]] или обновления прошивки с помощью утилит [[wb-mcu-fw-updater | wb-mcu-fw-updater]] и [[Wb-mcu-fw-flasher | wb-mcu-fw-flasher ]]. Сделать это можно следующим образом.  
Утилита [[ Modbus-client | modbus_client]] для опроса устройств по протоколам Modbus RTU и Modbus TCP из командной строки не умеет работать с протоколом Modbus over TCP, который используется для коммуникации с модулем WB-MGE и WB-MIO-E по сети Ethernet.  


Остановить сервис wb-mqtt-serial:
Для конфигурирования Modbus-устройств, подключенных к WB-MGE (WB-MIO-E) по сети RS-485 можно:
  service wb-mqtt-serial stop  
* Использовать [[RS-485:Configuration_via_Web_Interface#Дополнительные параметры устройства|дополнительные параметры устройства]] в веб-интерфейсе контроллера
Установить утилиту socat (если она еще не установлена)
* Создать виртуальный порт для работы утилиты [[ Modbus-client | modbus_client]].
 
Чтобы создать виртуальный порт:
# Остановите сервис wb-mqtt-serial:
#:<syntaxhighlight lang="bash">
service wb-mqtt-serial stop
</syntaxhighlight>
# Установите утилиту socat
#:<syntaxhighlight lang="bash">
   apt-get install socat
   apt-get install socat
Предположим, что модуль WB-MGE (WB-MIO-E) имеет IP-адрес 192.168.0.7, тогда в одном терминале на контроллере нужно выполнить команду:
</syntaxhighlight>
 
# Запустите перенаправление. Предположим, что модуль 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.1.7:20108&
#:<syntaxhighlight lang="bash">
   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&
</syntaxhighlight>
#: в системе появится виртуальный порт <code>/dev/ttyRS485-5</code>, с которым можно работать как с локальным.


В системе появляется виртуальный порт /dev/ttyRS485-5, с которым можно работать как с локальным. Для этого нужно открыть второй терминал и, используя утилиту [[ Modbus-client | modbus_client]] и обычные адреса Modbus-устройств, читать и записывать значения в регистры устройств, подключенных к шлюзу по сети RS-485. При этом в первом терминале остается запущенной команда socat.  
Теперь открываете второй терминал и, с помощью утилиты [[ Modbus-client | modbus_client]] читаете и записываете значения в регистры устройств, подключенных к шлюзу по сети RS-485. В качестве адреса используете Modbus-адреса устройств. При этом в первом терминале остается запущенной команда socat.  


Для обновления прошивки модулей, подключенных за модулем WB-MGE или WB-MIO-E можно использовать аналогичным образом утилиты [[wb-mcu-fw-updater | wb-mcu-fw-updater]] или [[Wb-mcu-fw-flasher | wb-mcu-fw-flasher ]], указав порт /dev/ttyRS485-5. При этом шлюз должен быть настроен в режиме TCP Server/None (для WB-MGE v2, WB-MIO-E v2) или TCP Server (для WB-MGE v1, WB-MIO-E v1). Для обновления прошивок устройств, подключенных к шлюзу по интерфейсу RS-485, нужно чтобы сами модули и шлюз имели следующие настройки обмена по интерфейсу RS-485: скорость 9600 бит/с, биты данных 8, бит четности - нет, количество стоп-битов 2 (в процессе прошивки используются именно такие настройки). В противном случае обновление прошивки будет невозможно.
Чтобы обновить прошивку с помощью утилит [[wb-mcu-fw-updater | wb-mcu-fw-updater]] или [[Wb-mcu-fw-flasher | wb-mcu-fw-flasher]]:
# Используйте созданный socat порт, например, <code>/dev/ttyRS485-5</code>.
# Режим шлюза должен быть TCP Server/None (для WB-MGE v2, WB-MIO-E v2) или TCP Server (для WB-MGE v1, WB-MIO-E v1).
# Modbus-устройства и шлюз должны иметь одинаковые настройки обмена по интерфейсу RS-485: скорость 9600 бит/с, биты данных 8, бит четности - нет, количество стоп-битов 2.


== Информация по теме на форуме ==
Только при соблюдении всех условий обновление прошивки будет работать.
* Доступ к модулям, стоящим за шлюзом WB-MGE или WB-MIO-E
https://support.wirenboard.com/t/kak-smenit-proshivku-ili-skorost-u-modulya-wb-podklyuchyonnogo-k-tcp-portu/8480


https://support.wirenboard.com/t/wb-mio-e-nastrojka-podklyuchennogo-ustrojstva-modbus-client/8471
== Информация по теме на портале ==
* [https://support.wirenboard.com/t/kak-smenit-proshivku-ili-skorost-u-modulya-wb-podklyuchyonnogo-k-tcp-portu/8480 Как сменить прошивку или скорость у модуля Wiren Board, подключённого к TCP порту?]
* [https://support.wirenboard.com/t/wb-mio-e-nastrojka-podklyuchennogo-ustrojstva-modbus-client/8471 WB-MIO-E - настройка подключенного устройства modbus_client]

Версия 08:50, 15 февраля 2022


Утилита 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.

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

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