WB Modbus Devices Firmware Update: различия между версиями
(не показано 30 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE:Обновление прошивки Modbus-устройств Wiren Board}} | {{DISPLAYTITLE:Обновление прошивки Modbus-устройств Wiren Board}} | ||
== Общая информация == | == Общая информация == | ||
В наших modbus-устройствах реализован механизм загрузчика прошивок — bootloader. Он позволяет обновлять микропрограммы устройств и модулей Wiren Board по RS-485/Modbus RTU. | |||
В modbus-устройствах | |||
В режиме загрузчика основные функции устройства отключаются, а коммуникационные параметры в режиме загрузчика фиксированы и не зависят от значений в памяти устройства: 9600 8N2. | |||
Прошивки выпускаюся в формате релизов, которые привязаны к [[Wiren_Board_Firmware_Update#releases| релизам]] программного обеспечения контроллера. Это позволяет избежать ситуации, когда свежая версия прошивки без продолжительного тестирования попадает в очень отвественную инсталляцию, работающую на стабильном релизе контроллера. | |||
== Автоматическое обновление == | == Автоматическое обновление == | ||
Строка 23: | Строка 12: | ||
Автоматическое обновление прошивки выполняется с помощью предустановленной на контроллеры Wiren Board утилиты [[Wb-mcu-fw-updater | wb-mcu-fw-updater]] и позволяет установить свежую версию ПО сразу на все подключенные устройства или отдельно на каждое. Определение сигнатуры (модели) устройства, новой прошивки произойдет автоматически. | Автоматическое обновление прошивки выполняется с помощью предустановленной на контроллеры Wiren Board утилиты [[Wb-mcu-fw-updater | wb-mcu-fw-updater]] и позволяет установить свежую версию ПО сразу на все подключенные устройства или отдельно на каждое. Определение сигнатуры (модели) устройства, новой прошивки произойдет автоматически. | ||
Для использования утилиты нужен доступ в интернет, если это не так — смотрите раздел про ручное обновление. | |||
Вы можете использовать утилиту и без нашего контроллера, для этого вам понадобится Debian-подобная ОС Linux. Читайте инструкцию по установке в [[Wb-mcu-fw-updater | описании утилиты]]. | |||
=== Обновление всех устройств на шине === | === Обновление всех устройств на шине === | ||
Вы можете обновить все устройства, настроенные в разделе '''Serial Devices Configuration''' [[Wiren Board Web Interface | веб-интерфейса]] | Вы можете обновить все устройства, настроенные в разделе '''Serial Devices Configuration''' [[Wiren Board Web Interface | веб-интерфейса]] (файл <code>/etc/wb-mqtt-serial.conf</code>) | ||
# Подключите устройства по [[RS-485 | шине RS-485]] к контроллеру. | # Подключите устройства по [[RS-485 | шине RS-485]] к контроллеру. | ||
# [[RS-485:Configuration via Web Interface | Настройте подключенные устройства]] в веб-интерфейсе. | # [[RS-485:Configuration via Web Interface | Настройте подключенные устройства]] в веб-интерфейсе. | ||
Строка 37: | Строка 26: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Обновление | === Обновление определенного устройства === | ||
Чтобы обновить | Чтобы обновить определенное устройство: | ||
# Подключите устройство по шине RS-485 к контроллеру. | # Подключите устройство по шине RS-485 к контроллеру или компьютеру с ОС Linux. | ||
# Узнайте [[Wiren Board Device Modbus Address | modbus-адрес]] устройства, которое хотите обновить. | # Узнайте [[Wiren Board Device Modbus Address | modbus-адрес]] устройства, которое хотите обновить. | ||
# Откройте консоль контроллера по [[SSH]] | # Откройте консоль контроллера или компьютера с ОС Linux по [[SSH]] | ||
# Запустите утилиту <code>wb-mcu-fw-updater</code> параметрами: ключ <code>update-fw</code>, а также порт и modbus-адрес. | # Запустите утилиту <code>wb-mcu-fw-updater</code> параметрами: ключ <code>update-fw</code>, а также порт и modbus-адрес. | ||
Строка 52: | Строка 41: | ||
== Ручное обновление == | == Ручное обновление == | ||
Мы не рекомендуем этот способ, так как выбранная вами версия прошивки может неправильно работать с той версией wb-mqtt-serial, которая у вас установлена. Но если на объекте нет доступа в интернет, или у вас устройство с ОС Windows, это единственный вариант. | |||
Ручное обновление можно сделать утилитой [[Wb-mcu-fw-flasher | wb-mcu-fw-flasher]], которую нужно предварительно [[wb-mcu-fw-flasher#Установка утилиты | установить]]. Способ установки отличается и зависит от используемой операционной системы. | |||
'''ВНИМАНИЕ:''' если вы выполняете команды на контроллере, то перед началом работы [[Modbus-client#Подготовка к работе | остановите драйвер wb-mqtt-serial]], а после окончания запустите снова. | |||
=== Подготовка устройства === | === Подготовка устройства === | ||
Строка 75: | Строка 59: | ||
# Подключите устройство по [[RS-485 | шине RS-485]] к контроллеру или другому оборудованию, где установлена утилита прошивки. | # Подключите устройство по [[RS-485 | шине RS-485]] к контроллеру или другому оборудованию, где установлена утилита прошивки. | ||
{{Wbincludes:Prepare modbus_client}} | {{Wbincludes:Prepare modbus_client}} | ||
# | # [[Firmware Repository For Wiren Board Modbus Devices | Скачайте из репозитория]] файл прошивки для вашего устройства. | ||
# Загрузите файл прошивки на [[View controller files from your computer | контроллер]] или другое устройство. | # Загрузите файл прошивки на [[View controller files from your computer | контроллер]] или другое устройство, на котором установлена утилита прошивки. | ||
# Перейдите в папку с файлом прошивки и | # Перейдите в папку с файлом прошивки и прошейте устройство командой: | ||
#:* на контроллере или компьютере с ОС Linux: | #:* на контроллере или компьютере с ОС Linux: | ||
#:<syntaxhighlight lang="bash"> | #:<syntaxhighlight lang="bash"> | ||
wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 - | wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 25 -f ./firmware.wbfw | ||
</syntaxhighlight> | </syntaxhighlight> | ||
#:* на компьютере с ОС Windows: | #:* на компьютере с ОС Windows: | ||
#:<syntaxhighlight lang="bash"> | #:<syntaxhighlight lang="bash"> | ||
wb-mcu-fw-flasher_1.0.3.exe -j -d COM1 - | wb-mcu-fw-flasher_1.0.3.exe -j -d COM1 -a 25 -f firmware.wbfw | ||
</syntaxhighlight> | </syntaxhighlight> | ||
# Если вы выполняли команду с контроллера — запустите драйвер wb-mqtt-serial. | # Если вы выполняли команду с контроллера — [[Wb-mqtt-serial driver#Управление драйвером | запустите драйвер wb-mqtt-serial]]. | ||
Здесь мы флагом <code>-j</code> переводим устройство, подключенное к порту <code>/dev/ttyRS485-1</code> (<code>COM1</code>) с адресом <code>25</code> в режим загрузчика и загружаем файл прошивки. | |||
Успешный процесс прошивки выглядит так: | Успешный процесс прошивки выглядит так: | ||
Строка 112: | Строка 96: | ||
== Восстановление прошивки устройства == | == Восстановление прошивки устройства == | ||
Если во время обновления произошел сбой, то устройство перейдет в [[Wbincludes:Bootloader MOD | режим загрузчика]] и вы можете восстановить его прошивку. | Если во время обновления произошел сбой, то устройство перейдет в [[Wbincludes:Bootloader MOD | режим загрузчика]] и вы можете восстановить его прошивку. | ||
Строка 144: | Строка 127: | ||
Здесь мы прошили находящееся в режиме загрузчика устройство с 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>. | ||
== Полезные ссылки == | == Полезные ссылки == | ||
* [[Restore factory settings Wiren Board Modbus device | | * [[Restore factory settings Wiren Board Modbus device | Сброс Modbus-устройства Wiren Board к заводским настройкам]] | ||
* [[Wiren Board Device Modbus Address | Modbus-адрес устройства Wiren Board]] | * [[Wiren Board Device Modbus Address | Modbus-адрес устройства Wiren Board]] | ||
* [[wb-mcu-fw-updater | Утилита обновления и восстановления прошивок wb-mcu-fw-updater]] | * [[wb-mcu-fw-updater | Утилита обновления и восстановления прошивок wb-mcu-fw-updater]] | ||
* [[wb-mcu-fw-flasher | Сервисная утилита wb-mcu-fw-flasher]] | * [[wb-mcu-fw-flasher | Сервисная утилита wb-mcu-fw-flasher]] | ||
* [[Firmware Repository For Wiren Board Modbus Devices |Репозиторий прошивок для Modbus-устройств Wiren Board]] | * [[Firmware Repository For Wiren Board Modbus Devices |Репозиторий прошивок для Modbus-устройств Wiren Board]] |
Версия 10:58, 18 мая 2022
Общая информация
В наших modbus-устройствах реализован механизм загрузчика прошивок — bootloader. Он позволяет обновлять микропрограммы устройств и модулей Wiren Board по RS-485/Modbus RTU.
В режиме загрузчика основные функции устройства отключаются, а коммуникационные параметры в режиме загрузчика фиксированы и не зависят от значений в памяти устройства: 9600 8N2.
Прошивки выпускаюся в формате релизов, которые привязаны к релизам программного обеспечения контроллера. Это позволяет избежать ситуации, когда свежая версия прошивки без продолжительного тестирования попадает в очень отвественную инсталляцию, работающую на стабильном релизе контроллера.
Автоматическое обновление
При обновлении прошивки удаляются ИК-команды, сохранённые в устройствах WB-MSW и WB-MIR. Рекомендуем сохранить банки команд перед обновлением с помощью скрипта. Автоматическое обновление прошивки выполняется с помощью предустановленной на контроллеры Wiren Board утилиты wb-mcu-fw-updater и позволяет установить свежую версию ПО сразу на все подключенные устройства или отдельно на каждое. Определение сигнатуры (модели) устройства, новой прошивки произойдет автоматически.
Для использования утилиты нужен доступ в интернет, если это не так — смотрите раздел про ручное обновление.
Вы можете использовать утилиту и без нашего контроллера, для этого вам понадобится Debian-подобная ОС Linux. Читайте инструкцию по установке в описании утилиты.
Обновление всех устройств на шине
Вы можете обновить все устройства, настроенные в разделе Serial Devices Configuration веб-интерфейса (файл /etc/wb-mqtt-serial.conf
)
- Подключите устройства по шине RS-485 к контроллеру.
- Настройте подключенные устройства в веб-интерфейсе.
- Откройте консоль контроллера по SSH.
- Обновите все настроенные устройства командой:
wb-mcu-fw-updater update-all
Обновление определенного устройства
Чтобы обновить определенное устройство:
- Подключите устройство по шине RS-485 к контроллеру или компьютеру с ОС Linux.
- Узнайте modbus-адрес устройства, которое хотите обновить.
- Откройте консоль контроллера или компьютера с ОС Linux по SSH
- Запустите утилиту
wb-mcu-fw-updater
параметрами: ключupdate-fw
, а также порт и modbus-адрес.
Например, обновим прошивку устройства с modbus-адресом 70
и подключенного к порту /dev/ttyRS485-1
:
wb-mcu-fw-updater update-fw /dev/ttyRS485-1 -a70
Полный список параметров и примеры работы смотрите на странице утилиты.
Ручное обновление
Мы не рекомендуем этот способ, так как выбранная вами версия прошивки может неправильно работать с той версией wb-mqtt-serial, которая у вас установлена. Но если на объекте нет доступа в интернет, или у вас устройство с ОС Windows, это единственный вариант.
Ручное обновление можно сделать утилитой wb-mcu-fw-flasher, которую нужно предварительно установить. Способ установки отличается и зависит от используемой операционной системы.
ВНИМАНИЕ: если вы выполняете команды на контроллере, то перед началом работы остановите драйвер wb-mqtt-serial, а после окончания запустите снова.
Подготовка устройства
Прошивать устройства можно:
- по modbus-адресу устройства.
- по широковещательному адресу —
0
.
Для прошивки нескольких устройств на шине нужно поочереди перевести их в режим загрузчика и прошить.
Загрузка прошивки в устройство
Для загрузки прошивки выполните шаги:
- Подключите устройство по шине RS-485 к контроллеру или другому оборудованию, где установлена утилита прошивки.
- Если вы выполняете команды на контроллере:
- Откройте консоль контроллера по SSH.
- Остановите драйвер wb-mqtt-serial или иное ПО, которое опрашивает устройство.
- Скачайте из репозитория файл прошивки для вашего устройства.
- Загрузите файл прошивки на контроллер или другое устройство, на котором установлена утилита прошивки.
- Перейдите в папку с файлом прошивки и прошейте устройство командой:
- на контроллере или компьютере с ОС Linux:
wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 25 -f ./firmware.wbfw
- на компьютере с ОС Windows:
wb-mcu-fw-flasher_1.0.3.exe -j -d COM1 -a 25 -f firmware.wbfw
- Если вы выполняли команду с контроллера — запустите драйвер wb-mqtt-serial.
Здесь мы флагом -j
переводим устройство, подключенное к порту /dev/ttyRS485-1
(COM1
) с адресом 25
в режим загрузчика и загружаем файл прошивки.
Успешный процесс прошивки выглядит так:
~# wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 25 -f mr6c__1.15.5_master_971fe50.wbfw
/dev/ttyRS485-1 opened successfully.
Send jump to bootloader command and wait 2 seconds...
Ok, device will jump to bootloader.
mr6c__1.15.5_master_971fe50.wbfw opened successfully, size 14720 bytes
Sending info block... OK
Sending data block 108 of 108... OK.
All done!
Если сигнатура устройства и файла прошивки не совпали, то вы получите сообщение об ошибке:
Sending info block...
Error while sending info block: Slave device or server failure
Data format is invalid or firmware signature doesn't match the device
Восстановление прошивки устройства
Если во время обновления произошел сбой, то устройство перейдет в режим загрузчика и вы можете восстановить его прошивку.
Автоматически
Для автоматического восстановления прошивки одного или нескольких устройств можно использовать утилиту wb-mcu-fw-updater вы режимах recover и recover-all.
Чтобы восстановить устройство с адресом 10
и подключенное к порту /dev/ttyRS485-1
, выполните команду:
wb-mcu-fw-updater recover /dev/ttyRS485-1 -a 10
Подробнее о режимах recover и recover-all, читайте в документации.
Вручную
Если вы не можете воспользоваться wb-mcu-fw-updater, то вы восстановить прошивку устройств можно с помощью сервисной утилиты wb-mcu-fw-flasher. Также этот способ могут использовать пользователи компьютеров с ОС Windows.
Для этого вам понадобится сама утилита и файл прошивки:
- Подключите устройство по шине RS-485 к контроллеру или другому оборудованию, где установлена утилита прошивки.
- Если вы выполняете команды на контроллере:
- Откройте консоль контроллера по SSH.
- Остановите драйвер wb-mqtt-serial или иное ПО, которое опрашивает устройство.
- Скачайте из репозитория файл прошивки для вашего устройства.
- Загрузите файл прошивки на контроллер или другое устройство, на котором установлена утилита прошивки.
- Перейдите в папку с прошивкой и выполните команду:
- на контроллере или компьютере с ОС Linux:
wb-mcu-fw-flasher -d /dev/ttyRS485-1 -a 25 -f ./firmware.wbfw
- на компьютере с ОС Windows:
wb-mcu-fw-flasher_1.0.3.exe -d COM1 -a 25 -f firmware.wbfw
Здесь мы прошили находящееся в режиме загрузчика устройство с Modbus-адресом 25
и подключенное к порту /dev/ttyRS485-1
(COM1
) файлом firmware.wbfw
.