Метка: новое перенаправление |
|
(не показано 16 промежуточных версий 3 участников) |
Строка 1: |
Строка 1: |
| #REDIRECT [[Socat]]
| | {{DISPLAYTITLE: Работа с Modbus-модулями, подключенными к шлюзам WB-MGE или WB-MIO-E по сети RS-485, с помощью утилиты modbus_client}} |
| {{DISPLAYTITLE: Работа с подключёнными к WB-MGE (WB-MIO-E) устройствами через socat}} | |
| __TOC__
| |
| == 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 можно: | | Утилита [[ 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-flasher | wb-mcu-fw-flasher ]]. Сделать это можно следующим образом. |
| * Использовать [[RS-485:Configuration_via_Web_Interface#Дополнительные параметры устройства|дополнительные параметры устройства]] в веб-интерфейсе контроллера
| |
| * Создать виртуальный порт для работы утилиты [[ Modbus-client | modbus_client]].
| |
|
| |
|
| Чтобы создать виртуальный порт:
| | Остановить сервис wb-mqtt-serial: |
| # Остановите сервис wb-mqtt-serial:
| | service wb-mqtt-serial stop |
| #:<syntaxhighlight lang="bash">
| | Установить утилиту socat (если она еще не установлена) |
| service wb-mqtt-serial stop | |
| </syntaxhighlight>
| |
| # Установите утилиту socat
| |
| #:<syntaxhighlight lang="bash">
| |
| apt-get install socat | | apt-get install socat |
| </syntaxhighlight>
| | Предположим, что модуль WB-MGE (WB-MIO-E) имеет IP-адрес 192.168.0.7, тогда в одном терминале на контроллере нужно выполнить команду: |
| # Запустите перенаправление. Предположим, что модуль WB-MGE (WB-MIO-E) имеет IP-адрес 192.168.0.7, тогда в одном терминале на контроллере нужно выполнить команду:
| |
| #:<syntaxhighlight lang="bash">
| |
| socat -d -d -d -x PTY,raw,b115200,parenb=0,cstopb=1,cs8,link=/dev/ttyRS485-5 tcp:192.168.0.7:20108&
| |
| </syntaxhighlight>
| |
| #: если у вас стабильный релиз до wb-2207 включительно, вместо параметра <code>b115200</code>, используйте <code>ispeed=9600,ospeed=9600</code>.
| |
| В системе появится виртуальный порт <code>/dev/ttyRS485-5</code>, с которым можно работать как с локальным.
| |
|
| |
|
| Теперь открываете второй терминал и, с помощью утилиты [[ Modbus-client | modbus_client]] читаете и записываете значения в регистры устройств, подключенных к шлюзу по сети RS-485. В качестве адреса используете Modbus-адреса устройств. При этом в первом терминале остается запущенной команда socat.
| | 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& |
|
| |
|
| Чтобы обновить прошивку с помощью утилит [[wb-mcu-fw-updater | wb-mcu-fw-updater]] или [[Wb-mcu-fw-flasher | wb-mcu-fw-flasher]]:
| | В системе появляется виртуальный порт /dev/ttyRS485-5, с которым можно работать как с локальным. Для этого нужно открыть второй терминал и, используя утилиту [[ Modbus-client | modbus_client]] и обычные адреса Modbus-устройств, читать и записывать значения в регистры устройств, подключенных к шлюзу по сети RS-485. При этом в первом терминале остается запущенной команда socat. Для обновления прошивки модулей, подключенных за модулем WB-MGE или WB-MIO-E можно использовать аналогичным образом утилиту [[Wb-mcu-fw-flasher | wb-mcu-fw-flasher ]], указав порт /dev/ttyRS485-5. |
| # Используйте созданный 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 |
| Если у вас есть физический доступ к шлюзу, то будет гораздо проще прошить устройства просто подключив их напрямую к контроллеру или ноутбуку.
| |
| | |
| Этот способ сложен и подразумевает базовые навыки работы в коммандной строке, знание синтаксиса утилиты socat и хорошее понимание работы наших устройств. Ниже мы рассмотрим синтетический пример, который может сильно отличаться от вашей ситуации.
| |
| | |
| Так как загрузчик наших устройств может работать только на скорости 9600 кбит/с, то и устройства за шлюзом должны работать на этой же скорости, как и сам шлюз.
| |
| | |
| Исходные данные:
| |
| # Eсть шлюз WB-MGE, настроенный на Modbus over TCP и имеющий IP-адрес 192.168.0.7, порт 23.
| |
| # К шлюзу подключено устройство WB-MDM3 с адресом 58
| |
| # У устройства и в настройках шлюза выставлена скорость 115200 кбит/с.
| |
| | |
| Инструкция:
| |
| # Дважды подключитесь к контроллеру по [[SSH]],у вас должно быть открыто два окна: первое для создания тоннеля socat, второе для отправки команд устройству.
| |
| # Остановите [[wb-mqtt-serial]].
| |
| # Настройте переадресацию socat:
| |
| #:<syntaxhighlight lang="bash">
| |
| socat -d -d -d -x PTY,raw,b115200,parenb=0,cstopb=2,cs8,link=/dev/ttyRS485-5 tcp:192.168.0.7:23&
| |
| </syntaxhighlight>
| |
| #: если у вас стабильный релиз до wb-2207 включительно, вместо параметра <code>b115200</code>, используйте <code>ispeed=9600,ospeed=9600</code>.
| |
| # Во втором окне измените скорость порта устройства на 9600 кбит/с:
| |
| #:<syntaxhighlight lang="bash">
| |
| modbus_client --debug -mrtu -b115200 -pnone -s2 /dev/ttyRS485-5 -a58 -t0x06 -r110 96
| |
| </syntaxhighlight>
| |
| # В первом окне разорвите соединение socat клавишами <kbd>Ctrl</kbd>+<kbd>C</kbd>.
| |
| # Подключите Ethernet кабель шлюза WB-MGE к ноутбуку, откройте браузер и введите IP-адрес шлюза.
| |
| # В веб-интерфейсе шлюза измените настройки порта с 115200 кбит/с на 9600 кбит/с
| |
| # Подключите шлюз к контроллеру по Ethernet.
| |
| # В первом окне снова создайте тоннель socat, не забудьте изменить скорость в параметрах:
| |
| #:<syntaxhighlight lang="bash">
| |
| socat -d -d -d -x PTY,raw,b115200,parenb=0,cstopb=2,cs8,link=/dev/ttyRS485-5 tcp:192.168.0.7:23&
| |
| </syntaxhighlight>
| |
| #: если у вас стабильный релиз до wb-2207 включительно, вместо параметра <code>b115200</code>, используйте <code>ispeed=9600,ospeed=9600</code>.
| |
| # Во втором окне прошейте устройство, например, утилитой wb-mcu-fw-updater:
| |
| #:<syntaxhighlight lang="bash">
| |
| wb-mcu-fw-updater update-fw /dev/ttyRS485-5 -a58
| |
| </syntaxhighlight>
| |
| # После окончания прошивки верните в устройстве старую скорость 115200 кбит/с:
| |
| #:<syntaxhighlight lang="bash">
| |
| modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-5 -a58 -t0x06 -r110 1152
| |
| </syntaxhighlight>
| |
| # В первом окне разорвите соединение socat клавишами <kbd>Ctrl</kbd>+<kbd>C</kbd>.
| |
| # Подключите Ethernet кабель шлюза WB-MGE к ноутбуку, откройте браузер и введите IP-адрес шлюза.
| |
| # В веб-интерфейсе шлюза измените настройки порта с 9600 кбит/с на 115200 кбит/с.
| |
| # Подключите шлюз к контроллеру по Ethernet.
| |
| # Запустите wb-mqtt-serial
| |
| | |
| Если вам нужно прошить несколько устройств, то вы можете сперва изменить им скорость, перенастроить шлюз, а потом так же поочереди их прошить, вернуть им прежнюю скорость и снова перенастроить шлюз.
| |
| | |
| == Информация по теме на портале ==
| |
| * [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]
| |
Утилита modbus_client для опроса устройств по протоколам Modbus RTU и Modbus TCP из командной строки не умеет работать с протоколом Modbus over TCP, который используется для коммуникации с модулем WB-MGE и WB-MIO-E по сети Ethernet. Для конфигурирования Modbus-устройств, подключенных к WB-MGE (WB-MIO-E) по сети RS-485 можно использовать "setup"-секцию интерфейса wb-mqtt-serial или создать виртуальный порт для работы утилиты modbus_client или обновления прошивки с помощью утилиты wb-mcu-fw-flasher . Сделать это можно следующим образом.
Остановить сервис wb-mqtt-serial:
service wb-mqtt-serial stop
Установить утилиту socat (если она еще не установлена)
apt-get install socat
Предположим, что модуль 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&
В системе появляется виртуальный порт /dev/ttyRS485-5, с которым можно работать как с локальным. Для этого нужно открыть второй терминал и, используя утилиту modbus_client и обычные адреса Modbus-устройств, читать и записывать значения в регистры устройств, подключенных к шлюзу по сети RS-485. При этом в первом терминале остается запущенной команда socat. Для обновления прошивки модулей, подключенных за модулем WB-MGE или WB-MIO-E можно использовать аналогичным образом утилиту wb-mcu-fw-flasher , указав порт /dev/ttyRS485-5.
Информация по теме на форуме
- Доступ к модулям, стоящим за шлюзом 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