WB Modbus Devices Firmware Update: различия между версиями
Метка: ручная отмена |
м (→Выбор прошивки) |
||
(не показаны 73 промежуточные версии 6 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE:Обновление прошивок на устройствах Wiren Board}} | |||
== Общая информация == | |||
{{DISPLAYTITLE:Обновление | В наших modbus-устройствах реализован механизм загрузчика прошивок — bootloader. Он позволяет обновлять микропрограммы устройств и модулей Wiren Board по RS-485/Modbus RTU. | ||
== Общая информация == | |||
В modbus-устройствах | |||
В режиме загрузчика основные функции устройства отключаются, а коммуникационные параметры в режиме загрузчика фиксированы и не зависят от значений в памяти устройства: 9600 8N2. | |||
== Автоматическое обновление == | |||
[[Image: Wb-fw-mcu-updater example 1.png |300px|thumb|right| Пример работы wb-fw-mcu-updater ]] | |||
== Автоматическое обновление == | |||
[[Image: Wb-fw-mcu-updater example 1.png | | |||
Автоматическое обновление прошивки выполняется с помощью предустановленной на контроллеры 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 | веб-интерфейса]] (файл <code>/etc/wb-mqtt-serial.conf</code>), выполните: | |||
<syntaxhighlight lang="bash"> | |||
wb-mcu-fw-updater update-all | wb-mcu-fw-updater update-all | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Обновление | === Обновление определенного устройства === | ||
Чтобы обновить | Чтобы обновить определенное устройство: | ||
# | #. Узнайте [[Определение и изменение Modbus-адреса устройств Wirenboard | modbus-адрес]] устройства, которое хотите обновить. | ||
#. Запустите утилиту <code>wb-mcu-fw-updater</code> параметрами: ключ <code>update-fw</code>, а также порт и modbus-адрес. | |||
# | |||
Например, обновим прошивку устройства с modbus-адресом <code>70</code> и подключенного к порту <code>/dev/ttyRS485-1</code>: | Например, обновим прошивку устройства с modbus-адресом <code>70</code> и подключенного к порту <code>/dev/ttyRS485-1</code>: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Строка 58: | Строка 29: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Полный список параметров и примеры работы смотрите на [[Wb-mcu-fw-updater | странице утилиты]]. | Полный список параметров и примеры работы смотрите на [[Wb-mcu-fw-updater | странице утилиты]]. | ||
== Ручное обновление == | == Ручное обновление == | ||
Мы не рекомендуем этот способ, но если на объекте нет доступа в интернет или у вас устройство с ОС Windows — это единственный вариант. | |||
Ручное обновление можно сделать утилитой [[Wb-mcu-fw-flasher | wb-mcu-fw-flasher]], которую нужно предварительно установить. Способ установки отличается и зависит от используемой операционной системы. | |||
'''ВНИМАНИЕ:''' если вы выполняете команды на контроллере, то перед началом работы [[Modbus-client#Подготовка к работе | остановите драйвер wb-mqtt-serial]], а после окончания запустите снова. | |||
=== Выбор прошивки === | |||
Прошивки публикуются на сайте '''[http://fw-releases.wirenboard.com/?prefix=fw/ fw-releases.wirenboard.com]''' в виде файлов с расширением <code>.wbfw</code> и сгруппированы по версиям и сигнатурам (типам) устройств. | |||
=== Подготовка устройства === | Каждое Modbus-устройство Wiren Board имеет сигнатуру — наименование аппаратного типа устройства. Устройство будет прошито только если его сигнатура совпадет с сигнатурой в прошивке. | ||
Сигнатура устройства хранится в формате строки из двенадцати ASCII символов, по одному символу в регистре, и доступна начиная с адреса <code>290 (0x122)</code>. | |||
Узнать сигнатуру устройства в '''ОС Linux и на контроллере''' можно с помощью утилиты [[Modbus-client |modbus_client]]. | |||
Чтобы узнать сигнатуру устройства с адресом <code>10</code> и подключенного к порту <code>ttyRS485-1</code>, выполните команду: | |||
<syntaxhighlight lang="bash"> | |||
echo -e $(modbus_client -mrtu -pnone -s2 /dev/ttyRS485-1 -a 10 -t3 -r 290 -c 12 | grep Data | sed -e 's/.*Data://' -e 's/ 0x00/\\x/g') | |||
</syntaxhighlight> | |||
В результате будет выведена строка с сигнатурой, например '''mr6c'''. | |||
О том, как читать регистры из '''ОС Windows''' смотрите в статье [[Working with WB devices without a controller | Работа с устройствами Wiren Board без контроллера]] | |||
Теперь, имея сигнатуру вы можете скачать прошивку устройства: | |||
# Перейдите на сайт [http://fw-releases.wirenboard.com/?prefix=fw/ fw-releases.wirenboard.com]. | |||
# Выберите папку '''by-signature'''. | |||
# Найдите и откройте папку с нужной сигнатурой устройства. | |||
# Выберите одну из веток: | |||
#:*'''stable''' — стабильные версии прошивок. Чтобы скачать самую свежую, выберите файл <code>latest.wbfw</code>. | |||
#:*'''unstable''' — экспериментальные версии прошивок. | |||
=== Подготовка устройства === | |||
Прошивать устройства можно: | Прошивать устройства можно: | ||
* по modbus-адресу устройства. | * по modbus-адресу устройства. | ||
* по широковещательному адресу — <code>0</code>. | * по широковещательному адресу — <code>0</code>. | ||
Для прошивки нескольких устройств на шине нужно поочереди перевести их в режим загрузчика и прошить. | |||
Для прошивки нескольких устройств на шине нужно поочереди перевести их в | |||
=== Загрузка прошивки в устройство === | Устройство переходит в режим загрузчика, если: | ||
* на устройстве имеется корректная прошивка, то первые 2 секунды после включения питания устройство работает в режиме загрузчика; | |||
* на устройстве нет корректной прошивки (например, был сбой при обновлении прошивки), то режим загрузчика активен постоянно; | |||
* при работе основной программы записать 1 в holding-регистр 129 (0x81) — в этом случае устройство перезагружается и остается в режиме загрузчика 120 секунд. Это можно сделать, запустив утилиту <code>wb-mcu-fw-flasher</code> с ключем <code>-j</code>. | |||
В режиме загрузчика индикатор Status устройства мигает с периодом 1 секунда, а при записи прошивки мигание индикатора учащается. | |||
=== Загрузка прошивки в устройство === | |||
Для загрузки прошивки выполните шаги: | Для загрузки прошивки выполните шаги: | ||
# Подключите устройство по | # Подключите устройство по шине RS-485 к контроллеру или другому оборудованию, где установлена утилита прошивки. | ||
# Если вы прошиваете устройство с контроллера, то остановите драйвер [[Wb-mqtt-serial driver#Управление драйвером | wb-mqtt-serial]] или иное ПО, которое опрашивает устройство. | |||
# | # Загрузите файл прошивки на [[View controller files from your computer | контроллер]] или другое устройство, на котором установлена утилита прошивки. | ||
# Загрузите файл прошивки на [[View controller files from your computer | контроллер]] или другое устройство. | # Перейдите в папку с файлом прошивки и прошейте устройство командой: | ||
# Перейдите в папку с файлом прошивки и | #:* на контроллере или в ОС 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 ./mr6c__1.15.5_master_971fe50.wbfw | ||
</syntaxhighlight> | </syntaxhighlight> | ||
#:* | #:* в ОС 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 mr6c__1.15.5_master_971fe50.wbfw | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Здесь мы флагом <code>-j</code> переводим устройство, подключенное к порту <code>/dev/ttyRS485-1</code> (<code>COM1</code>) с адресом <code>25</code> в режим загрузчика и загружаем файл прошивки. | |||
Успешный процесс прошивки выглядит так: | Успешный процесс прошивки выглядит так: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Строка 114: | Строка 104: | ||
mr6c__1.15.5_master_971fe50.wbfw opened successfully, size 14720 bytes | mr6c__1.15.5_master_971fe50.wbfw opened successfully, size 14720 bytes | ||
Sending info block... OK | |||
Sending info block... OK | |||
Sending data block 108 of 108... OK. | |||
Sending data block 108 of 108... OK. | |||
All done! | All done! | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Если не сигнатура устройства и файла прошивки не совпали, то вы получите сообщение об ошибке: | |||
Если сигнатура устройства и файла прошивки не совпали, то вы получите сообщение об ошибке: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Sending info block... | Sending info block... | ||
Строка 130: | Строка 117: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Полезные ссылки == | |||
* [[Restore factory settings Wiren Board Modbus device | Сброс Modbus-устройства Wiren Board к заводским настройкам]] | |||
== Полезные ссылки == | |||
* [[Restore factory settings Wiren Board Modbus device | | |||
* [[Wiren Board Device Modbus Address | Modbus-адрес устройства Wiren Board]] | * [[Wiren Board Device Modbus Address | Modbus-адрес устройства Wiren Board]] | ||
Версия 20:45, 27 мая 2021
Общая информация
В наших modbus-устройствах реализован механизм загрузчика прошивок — bootloader. Он позволяет обновлять микропрограммы устройств и модулей Wiren Board по RS-485/Modbus RTU.
В режиме загрузчика основные функции устройства отключаются, а коммуникационные параметры в режиме загрузчика фиксированы и не зависят от значений в памяти устройства: 9600 8N2.
Автоматическое обновление
Автоматическое обновление прошивки выполняется с помощью предустановленной на контроллеры Wiren Board утилиты wb-mcu-fw-updater и позволяет установить свежую версию ПО сразу на все подключенные устройства или отдельно на каждое. Определение сигнатуры (модели) устройства, новой прошивки произойдет автоматически.
Для использования утилиты нужен доступ в интернет, если это не так — смотрите раздел про ручное обновление.
Вы можете использовать утилиту и без нашего контроллера, для этого вам понадобится Debian-подобная ОС Linux. Читайте инструкцию по установке в описании утилиты.
Обновление всех устройств на шине
Для обновления прошивки всех устройств, описанных в разделе Serial Devices Configuration веб-интерфейса (файл /etc/wb-mqtt-serial.conf
), выполните:
wb-mcu-fw-updater update-all
Обновление определенного устройства
Чтобы обновить определенное устройство:
- . Узнайте modbus-адрес устройства, которое хотите обновить.
- . Запустите утилиту
wb-mcu-fw-updater
параметрами: ключupdate-fw
, а также порт и modbus-адрес.
Например, обновим прошивку устройства с modbus-адресом 70
и подключенного к порту /dev/ttyRS485-1
:
wb-mcu-fw-updater update-fw /dev/ttyRS485-1 -a70
Полный список параметров и примеры работы смотрите на странице утилиты.
Ручное обновление
Мы не рекомендуем этот способ, но если на объекте нет доступа в интернет или у вас устройство с ОС Windows — это единственный вариант.
Ручное обновление можно сделать утилитой wb-mcu-fw-flasher, которую нужно предварительно установить. Способ установки отличается и зависит от используемой операционной системы.
ВНИМАНИЕ: если вы выполняете команды на контроллере, то перед началом работы остановите драйвер wb-mqtt-serial, а после окончания запустите снова.
Выбор прошивки
Прошивки публикуются на сайте fw-releases.wirenboard.com в виде файлов с расширением .wbfw
и сгруппированы по версиям и сигнатурам (типам) устройств.
Каждое Modbus-устройство Wiren Board имеет сигнатуру — наименование аппаратного типа устройства. Устройство будет прошито только если его сигнатура совпадет с сигнатурой в прошивке.
Сигнатура устройства хранится в формате строки из двенадцати ASCII символов, по одному символу в регистре, и доступна начиная с адреса 290 (0x122)
.
Узнать сигнатуру устройства в ОС Linux и на контроллере можно с помощью утилиты modbus_client.
Чтобы узнать сигнатуру устройства с адресом 10
и подключенного к порту ttyRS485-1
, выполните команду:
echo -e $(modbus_client -mrtu -pnone -s2 /dev/ttyRS485-1 -a 10 -t3 -r 290 -c 12 | grep Data | sed -e 's/.*Data://' -e 's/ 0x00/\\x/g')
В результате будет выведена строка с сигнатурой, например mr6c.
О том, как читать регистры из ОС Windows смотрите в статье Работа с устройствами Wiren Board без контроллера
Теперь, имея сигнатуру вы можете скачать прошивку устройства:
- Перейдите на сайт fw-releases.wirenboard.com.
- Выберите папку by-signature.
- Найдите и откройте папку с нужной сигнатурой устройства.
- Выберите одну из веток:
- stable — стабильные версии прошивок. Чтобы скачать самую свежую, выберите файл
latest.wbfw
. - unstable — экспериментальные версии прошивок.
- stable — стабильные версии прошивок. Чтобы скачать самую свежую, выберите файл
Подготовка устройства
Прошивать устройства можно:
- по modbus-адресу устройства.
- по широковещательному адресу —
0
.
Для прошивки нескольких устройств на шине нужно поочереди перевести их в режим загрузчика и прошить.
Устройство переходит в режим загрузчика, если:
- на устройстве имеется корректная прошивка, то первые 2 секунды после включения питания устройство работает в режиме загрузчика;
- на устройстве нет корректной прошивки (например, был сбой при обновлении прошивки), то режим загрузчика активен постоянно;
- при работе основной программы записать 1 в holding-регистр 129 (0x81) — в этом случае устройство перезагружается и остается в режиме загрузчика 120 секунд. Это можно сделать, запустив утилиту
wb-mcu-fw-flasher
с ключем-j
.
В режиме загрузчика индикатор Status устройства мигает с периодом 1 секунда, а при записи прошивки мигание индикатора учащается.
Загрузка прошивки в устройство
Для загрузки прошивки выполните шаги:
- Подключите устройство по шине RS-485 к контроллеру или другому оборудованию, где установлена утилита прошивки.
- Если вы прошиваете устройство с контроллера, то остановите драйвер wb-mqtt-serial или иное ПО, которое опрашивает устройство.
- Загрузите файл прошивки на контроллер или другое устройство, на котором установлена утилита прошивки.
- Перейдите в папку с файлом прошивки и прошейте устройство командой:
- на контроллере или в ОС Linux:
wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 25 -f ./mr6c__1.15.5_master_971fe50.wbfw
- в ОС Windows:
wb-mcu-fw-flasher_1.0.3.exe -j -d COM1 -a 25 -f mr6c__1.15.5_master_971fe50.wbfw
Здесь мы флагом -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