16 877
правок
(→Обновление одного устройства: убрал про лору, что-то там нифига не работает.) |
|||
(не показано 19 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE:Обновление прошивки Modbus-устройств Wiren Board}} | {{DISPLAYTITLE:Обновление прошивки Modbus-устройств Wiren Board}} | ||
== Общая информация == | == Общая информация == | ||
В | {{YouTube | ||
|link= https://www.youtube.com/watch?v=d_olK15Xhkw | |||
|text= Обновление прошивок устройств (24:08) | |||
|start=1448 | |||
}} | |||
В modbus-устройствах Wiren Board есть [[Bootloader |загрузчик (bootloader)]], который позволяет обновлять прошивки по RS-485/Modbus RTU. В режиме загрузчика основные функции устройства отключаются, а коммуникационные параметры в режиме загрузчика фиксированы и не зависят от значений в памяти устройства: 9600 8N2. | |||
Сами прошивки | Сами прошивки выпускаются в формате релизов, которые привязаны к [[Wiren_Board_Software#releases| релизам программного обеспечения контроллера]], но имеют отличный от него цикл: | ||
* '''testing''' — сюда попадают прошивки после внутреннего тестирования, доступны для пользователей testing-релиза контроллера; | |||
* '''stable''' — через три недели после публикации в testing и при отсутствии сообщений об ошибках, прошивки считаются стабильными. В этот момент они становятся доступны и для пользователей stable-релиза контроллера. Если изменений в прошивке было много и они затрагивали основные функции устройства, то прошивка может немного задержаться в testing. | |||
Если | На странице каждого устройства есть ссылка на список изменений в прошивках, где прошивки в testing отмечены маркером «testing». Прошивка без отметки считается стабильной. | ||
Распределение прошивок по релизам позволяет избежать ситуации, когда свежая версия прошивки без продолжительного тестирования попадает в очень ответственную инсталляцию. Если для новой прошивки нужны новые функции в ПО контроллера, то либо они заедут в stable-релиз ПО вместе с прошивкой, либо прошивка задержится в testing до появления нужных функций в ПО. | |||
Для прошивки подключённых через шлюз WB-MGE или аналог устройств, используйте перенаправление socat, [[WB FAQ/modbus-modules-behind-gateway | инструкция]]. | |||
== Автоматическое обновление == | == Автоматическое обновление == | ||
Строка 12: | Строка 23: | ||
Автоматическое обновление прошивки выполняется с помощью предустановленной на контроллеры Wiren Board утилиты [[Wb-mcu-fw-updater | wb-mcu-fw-updater]] и позволяет установить свежую версию ПО сразу на все подключенные устройства или отдельно на каждое. Определение сигнатуры (модели) устройства, новой прошивки произойдет автоматически. | Автоматическое обновление прошивки выполняется с помощью предустановленной на контроллеры Wiren Board утилиты [[Wb-mcu-fw-updater | wb-mcu-fw-updater]] и позволяет установить свежую версию ПО сразу на все подключенные устройства или отдельно на каждое. Определение сигнатуры (модели) устройства, новой прошивки произойдет автоматически. | ||
Утилита работает только на нашем контроллере и ей нужен доступ в интернет. Если у вас нет интернета или нашего контроллера, смотрите раздел [[#manual|Ручное обновление]]. | Утилита работает только на нашем контроллере и ей нужен доступ в интернет. Если у вас нет интернета или нашего контроллера, смотрите раздел [[#manual|Ручное обновление]]. | ||
Обновление прошивок устройств, подключенных к шлюзам WB-MGE и WM-MIO-E, также выполняется [[WB_Modbus_Devices_Firmware_Update#%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D1%88%D0%B8%D0%B2%D0%BA%D0%B8_%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2,_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%BA_%D1%88%D0%BB%D1%8E%D0%B7%D0%B0%D0%BC_WB-MGE_%D0%B8_WB-MIO-E |вручную с отображением сетевого порта в локальный]]. | |||
=== Обновление всех устройств на шине === | === Обновление всех устройств на шине === | ||
Строка 41: | Строка 54: | ||
{{Anchor|manual}} | {{Anchor|manual}} | ||
=== Особенности === | === Особенности === | ||
Этот способ используется если: | |||
*на объекте нет доступа в интернет, | |||
*у вас нет контроллера, | |||
*вы обновляете прошивку устройств, [[WB_Modbus_Devices_Firmware_Update#Обновление_прошивки_устройств,_подключенных_к_шлюзам_WB-MGE_и_WB-MIO-E |подключенных за шлюзами WB-MGE и WB-MIO-E]]. | |||
Во всех остальных случаях используйте [[WB_Modbus_Devices_Firmware_Update#Автоматическое_обновление |автоматическое обновление]]. | |||
Ручное обновление можно сделать утилитой wb-mcu-fw-flasher, которую нужно предварительно установить. Способ установки отличается и зависит от используемой операционной системы | Ручное обновление можно сделать утилитой '''[[wb-mcu-fw-flasher#Установка утилиты | wb-mcu-fw-flasher]]''', которую нужно предварительно установить. Способ установки отличается и зависит от используемой операционной системы. | ||
=== Подготовка устройства === | === Подготовка устройства === | ||
Строка 126: | Строка 144: | ||
Здесь мы прошили находящееся в режиме загрузчика устройство с Modbus-адресом <code>25</code> и подключенное к порту <code>/dev/ttyRS485-1</code> (<code>COM1</code>) файлом <code>firmware.wbfw</code>. | Здесь мы прошили находящееся в режиме загрузчика устройство с Modbus-адресом <code>25</code> и подключенное к порту <code>/dev/ttyRS485-1</code> (<code>COM1</code>) файлом <code>firmware.wbfw</code>. | ||
==Обновление прошивки устройств, подключенных к шлюзам WB-MGE и WB-MIO-E== | |||
[[Image: superport-config.png |350px|thumb|right| Настройки шлюза для обновления прошивки]] | |||
Обновить прошивку устройства Wiren Board, подключенного к шлюзам [[WB-MGE_v.2_Modbus-Ethernet_Interface_Converter |WB-MGE]] и [[WB-MIO-E_v.2_Modbus_Interface_Converter |WB-MIO-E]] по RS-485, можно только в ручном режиме утилитой [[Wb-mcu-fw-flasher |wb-mcu-fw-flasher]]. Но сначала нужно отобразить сетевой порт в локальный утилитой [[Socat |socat]]. | |||
Шлюз должен быть настроен в режим TCP Server/None (для WB-MGE v2, WB-MIO-E v2) или TCP Server (для WB-MGE v1, WB-MIO-E v1). | |||
===Обновление на любой скорости соединения=== | |||
Настройки соединения могут быть любыми только если: | |||
*версия wb-mcu-fw-flasher не ниже '''1.3.0''' (доступно в [[testing |testing]]), | |||
*текущая версия прошивки устройства поддерживает '''131''' регистр (см. Журналы изменений на страницах устройств), | |||
*текущая версия загрузчика не ниже '''1.3.0'''. | |||
'''Иначе обновление можно выполнить только со [[WB_Modbus_Devices_Firmware_Update#Обновление_со_стандартными_настройками_соединения |стандартными настройками 9600N2.]]''' | |||
Ниже приведен пример со следующими исходными данными: | |||
*Шлюз WB-MGE (WB-MIO-E), настроенный на Modbus over TCP и имеющий IP-адрес 192.168.0.7, порт 23. | |||
*Modbus-устройство Wiren Board с адресом 14. | |||
*Соединение на скорости 115200 кбит/с. | |||
{{note|info|'''Внимание!''' В вашем случае настройки могут быть другими.}} | |||
#[[Firmware_Repository_For_Wiren_Board_Modbus_Devices |Приготовьте файл прошивки]] и установите утилиту socat, если ее нет: | |||
#:<syntaxhighlight lang="bash"> | |||
apt install socat | |||
</syntaxhighlight> | |||
#Дважды подключитесь к контроллеру по [[SSH |SSH]], у вас должно быть открыто два окна: первое для создания тоннеля socat, второе для отправки команд устройству. | |||
#Остановите [[Wb-mqtt-serial_driver |wb-mqtt-serial]]: | |||
#:<syntaxhighlight lang="bash"> | |||
systemctl stop wb-mqtt-serial | |||
</syntaxhighlight> | |||
#В первом окне запустите перенаправление утилитой 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-mcu-fw-flasher |wb-mcu-fw-flasher]], используя параметр <code>-J</code>. Укажите файл прошивки, который приготовили в начале: | |||
#:<syntaxhighlight lang="bash"> | |||
wb-mcu-fw-flasher -J -d /dev/ttyRS485-5 -a14 -f ./firmware.wbfw | |||
</syntaxhighlight> | |||
#Запустите wb-mqtt-serial | |||
#:<syntaxhighlight lang="bash"> | |||
systemctl start wb-mqtt-serial | |||
</syntaxhighlight> | |||
===Обновление со стандартными настройками соединения=== | |||
Инструкция используется для устройств в которых текущая версия загрузчика ниже '''1.3.0''' и/или текущая прошивка не поддерживает '''131''' регистр. | |||
В этом случае обновление можно выполнить только на скорости '''9600N2''', указав параметр <code>-j</code> для утилиты wb-mcu-fw-flasher. Если используются другие настройки соединения сначала нужно изменить их на стандартные. | |||
Рекомендуем также обновить загрузчик если его версия ниже '''1.3.0'''. Это позволит в дальнейшем обновлять прошивку на [[WB_Modbus_Devices_Firmware_Update#Обновление_на_любой_скорости_соединения |любой скорости соединения]]. | |||
Рассмотрим синтетический пример обновления прошивки устройств, в котором используются нестандартные настройки соединения: | |||
*Шлюз WB-MGE (WB-MIO-E), настроенный на Modbus over TCP и имеющий IP-адрес 192.168.0.7, порт 23. | |||
*К шлюзу подключено устройство WB-MDM3 с адресом 58. | |||
*В настройках устройства и шлюза выставлена скорость 115200 кбит/с. | |||
{{note|info| '''Внимание!''' В инструкции рассмотрен пример, в котором устройства работают на скорости '''115200 8N2'''. В вашем случае настройки соединения могут быть другими.}} | |||
Чтобы обновить прошивку: | |||
#Дважды подключитесь к контроллеру по [[SSH |SSH]], у вас должно быть открыто два окна: первое для создания тоннеля socat, второе для отправки команд устройству. | |||
#Остановите wb-mqtt-serial: | |||
#:<syntaxhighlight lang="bash"> | |||
systemctl stop wb-mqtt-serial | |||
</syntaxhighlight> | |||
#В первом окне запустите перенаправление: | |||
#:<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 включительно, вместо параметра b115200, используйте <code>ispeed=115200,ospeed=115200</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>. | |||
#В [[socat#Настройка шлюза для обновления прошивки | настройках шлюза]] установите скорость порта 9600 кбит/с. | |||
#В первом окне снова запустите перенаправление socat с новыми параметрами соединения: | |||
#:<syntaxhighlight lang="bash"> | |||
socat -d -d -d -x PTY,raw,b9600,parenb=0,cstopb=2,cs8,link=/dev/ttyRS485-5 tcp:192.168.0.7:23 | |||
</syntaxhighlight> | |||
#:если у вас стабильный релиз до wb-2207 включительно, вместо параметра b9600, используйте <code>ispeed=9600,ospeed=9600</code>. | |||
#Во втором окне запустите обновление прошивки устройства, например, утилитой wb-mcu-fw-flasher ([[WB_Modbus_Devices_Firmware_Update#Ручное_обновление|полная инструкция]]): | |||
#:<syntaxhighlight lang="bash"> | |||
wb-mcu-fw-flasher -j -d /dev/ttyRS485-5 -a25 -f ./firmware.wbfw | |||
</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>. | |||
#В настройках шлюза измените скорость порта с 9600 кбит/с на 115200 кбит/с. | |||
#Подключите шлюз к контроллеру по Ethernet. | |||
#Запустите wb-mqtt-serial | |||
#:<syntaxhighlight lang="bash"> | |||
systemctl start wb-mqtt-serial | |||
</syntaxhighlight> | |||
Если вам нужно прошить несколько устройств, то вы можете сперва изменить им скорость, перенастроить шлюз, а потом так же поочереди их прошить, вернуть им прежнюю скорость и снова перенастроить шлюз. | |||
===Настройка шлюза для обновления прошивки=== | |||
Самый простой способ изменить настройки шлюза — подключиться к его встроенному веб-интерфейсу. Для этого нужно: | |||
#подключить шлюз к компьютеру UTP кабелем напрямую или через роутер, | |||
#присвоить компьютеру статический IP-адрес в сети шлюза, например, 192.168.0.201, | |||
#открыть браузер и ввести IP-адрес шлюза, по умолчанию 192.168.0.7. | |||
== Полезные ссылки == | == Полезные ссылки == |