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

Перенаправление на Socat
(Добавил про обновление через socat)
(Перенаправление на Socat)
Метка: новое перенаправление
 
(не показано 13 промежуточных версий 2 участников)
Строка 1: Строка 1:
#REDIRECT [[Socat]]
{{DISPLAYTITLE: Работа с подключёнными к WB-MGE (WB-MIO-E) устройствами через socat}}
{{DISPLAYTITLE: Работа с подключёнными к WB-MGE (WB-MIO-E) устройствами через socat}}
__TOC__
== modbus_client ==
== modbus_client ==
Утилита [[ Modbus-client | modbus_client]] для опроса устройств по протоколам Modbus RTU и Modbus TCP из командной строки не умеет работать с протоколом Modbus over TCP, который используется для коммуникации с модулем WB-MGE и WB-MIO-E по сети Ethernet.  
Утилита [[ Modbus-client | modbus_client]] для опроса устройств по протоколам Modbus RTU и Modbus TCP из командной строки не умеет работать с протоколом Modbus over TCP, который используется для коммуникации с модулем WB-MGE и WB-MIO-E по сети Ethernet.  
Строка 18: Строка 20:
# Запустите перенаправление. Предположим, что модуль WB-MGE (WB-MIO-E) имеет IP-адрес 192.168.0.7, тогда в одном терминале на контроллере нужно выполнить команду:
# Запустите перенаправление. Предположим, что модуль WB-MGE (WB-MIO-E) имеет IP-адрес 192.168.0.7, тогда в одном терминале на контроллере нужно выполнить команду:
#:<syntaxhighlight lang="bash">
#:<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&
   socat -d -d -d -x PTY,raw,b115200,parenb=0,cstopb=1,cs8,link=/dev/ttyRS485-5 tcp:192.168.0.7:20108&
</syntaxhighlight>
</syntaxhighlight>
#: в системе появится виртуальный порт <code>/dev/ttyRS485-5</code>, с которым можно работать как с локальным.  
#: если у вас стабильный релиз до wb-2207 включительно, вместо параметра <code>b115200</code>, используйте <code>ispeed=9600,ospeed=9600</code>.
В системе появится виртуальный порт <code>/dev/ttyRS485-5</code>, с которым можно работать как с локальным.  


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


== Обновление прошивки ==  
== Обновление прошивки ==  
{{note|info|Инструкция подразумевает базовые навыки работы в коммандной строке, знание синтаксиса socat и хорошее понимание работы наших устройств. Ниже мы рассмотрим синтетический пример, который может сильно отличаться от вашей ситуации.}}
Если у вас есть физический доступ к шлюзу, то будет гораздо проще прошить устройства просто подключив их напрямую к контроллеру или ноутбуку.
Так как загрузчик наших устройств может работать только на скорости 9600 кбит/с, то и устройства за шлюзом должны работать на этой же скорости, как и сам шлюз.


Допустим, у нас есть шлюз WB-MGE и подключенное к нему устройство WB-MDM3 с адресом 58 и работающее на скорости 115200 кбит/с:
Этот способ сложен и подразумевает базовые навыки работы в коммандной строке, знание синтаксиса утилиты socat и хорошее понимание работы наших устройств. Ниже мы рассмотрим синтетический пример, который может сильно отличаться от вашей ситуации.
 
Так как загрузчик наших устройств может работать только на скорости 9600 кбит/с, то и устройства за шлюзом должны работать на этой же скорости, как и сам шлюз.
 
Исходные данные:
# Eсть шлюз WB-MGE, настроенный на Modbus over TCP и имеющий IP-адрес 192.168.0.7, порт 23.
# К шлюзу подключено устройство WB-MDM3 с адресом 58
# У устройства и в настройках шлюза выставлена скорость 115200 кбит.
 
Инструкция:
# Дважды подключитесь к контроллеру по [[SSH]],у вас должно быть открыто два окна: первое для создания тоннеля socat, второе для отправки команд устройству.
# Дважды подключитесь к контроллеру по [[SSH]],у вас должно быть открыто два окна: первое для создания тоннеля socat, второе для отправки команд устройству.
# Остановите wb-mqtt-serial.
# Остановите [[wb-mqtt-serial]].
# Настройте переадресацию socat:
# Настройте переадресацию socat:
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
socat -d -d -d -x PTY,raw,ispeed=115200,ospeed=115200,parenb=0,cstopb=2,cs8,link=/dev/ttyRS485-5 tcp:192.168.0.7:23&
socat -d -d -d -x PTY,raw,b115200,parenb=0,cstopb=2,cs8,link=/dev/ttyRS485-5 tcp:192.168.0.7:23&
</syntaxhighlight>
</syntaxhighlight>
# Во втором окне измените скорость порта устройства на 9600:
#: если у вас стабильный релиз до wb-2207 включительно, вместо параметра <code>b115200</code>, используйте <code>ispeed=9600,ospeed=9600</code>.
# Во втором окне измените скорость порта устройства на 9600 кбит/с:
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-5 -a58 -t0x06 -r110 96
modbus_client --debug -mrtu -b115200 -pnone -s2 /dev/ttyRS485-5 -a58 -t0x06 -r110 96
</syntaxhighlight>
</syntaxhighlight>
# В первом окне разорвите соединение socat клавишами <kbd>Ctrl</kbd>+<kbd>C</kbd>.
# В первом окне разорвите соединение socat клавишами <kbd>Ctrl</kbd>+<kbd>C</kbd>.
# Подключите Ethernet кабель шлюза WB-MGE к ноутбуку, откройте браузер и введите IP-адрес шлюза, например, 192.168.0.7
# Подключите Ethernet кабель шлюза WB-MGE к ноутбуку, откройте браузер и введите IP-адрес шлюза.
# В веб-интерфейсе шлюза измените настройки порта с 115200 кбит/с на 9600 кбит/с
# В веб-интерфейсе шлюза измените настройки порта с 115200 кбит/с на 9600 кбит/с
# Подключите шлюз к контроллеру по Ethernet.
# Подключите шлюз к контроллеру по Ethernet.
# В первом окне снова создайте тоннель socat, не забудьте изменить скорость в параметрах:
# В первом окне снова создайте тоннель socat, не забудьте изменить скорость в параметрах:
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
socat -d -d -d -x PTY,raw,ispeed=9600,ospeed=9600,parenb=0,cstopb=2,cs8,link=/dev/ttyRS485-5 tcp:192.168.0.7:23&
socat -d -d -d -x PTY,raw,b115200,parenb=0,cstopb=2,cs8,link=/dev/ttyRS485-5 tcp:192.168.0.7:23&
</syntaxhighlight>
</syntaxhighlight>
#: если у вас стабильный релиз до wb-2207 включительно, вместо параметра <code>b115200</code>, используйте <code>ispeed=9600,ospeed=9600</code>.
# Во втором окне прошейте устройство, например, утилитой wb-mcu-fw-updater:
# Во втором окне прошейте устройство, например, утилитой wb-mcu-fw-updater:
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
Строка 60: Строка 73:
# После окончания прошивки верните в устройстве старую скорость 115200 кбит/с:
# После окончания прошивки верните в устройстве старую скорость 115200 кбит/с:
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-5 -a58 -t0x06 -r110 1152
modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-5 -a58 -t0x06 -r110 1152
</syntaxhighlight>
</syntaxhighlight>
# В первом окне разорвите соединение socat клавишами <kbd>Ctrl</kbd>+<kbd>C</kbd>.
# В первом окне разорвите соединение socat клавишами <kbd>Ctrl</kbd>+<kbd>C</kbd>.
# Подключите Ethernet кабель шлюза WB-MGE к ноутбуку, откройте браузер и введите IP-адрес шлюза, например, 192.168.0.7
# Подключите Ethernet кабель шлюза WB-MGE к ноутбуку, откройте браузер и введите IP-адрес шлюза.
# В веб-интерфейсе шлюза измените настройки порта с 9600 кбит/с на 115200 кбит/с
# В веб-интерфейсе шлюза измените настройки порта с 9600 кбит/с на 115200 кбит/с.
# Подключите шлюз к контроллеру по Ethernet.
# Запустите wb-mqtt-serial
# Запустите 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/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]
* [https://support.wirenboard.com/t/wb-mio-e-nastrojka-podklyuchennogo-ustrojstva-modbus-client/8471 WB-MIO-E - настройка подключенного устройства modbus_client]
translator, wb_editors
4313

правок