Обновление прошивки Modbus-устройств Wiren Board

Материал из Wiren Board

Общая информация

В наших modbus-устройствах реализован механизм загрузчика прошивок — bootloader. Он позволяет обновлять прошивки устройств и модулей Wiren Board по RS-485/Modbus RTU. В режиме загрузчика основные функции устройства отключаются, а коммуникационные параметры в режиме загрузчика фиксированы и не зависят от значений в памяти устройства: 9600 8N2.

Сами прошивки выпускаюся в формате релизов, которые привязаны к релизам программного обеспечения контроллера. Это позволяет избежать ситуации, когда свежая версия прошивки без продолжительного тестирования попадает в очень отвественную инсталляцию.

Если ваши устройства подключены через шлюз WB-MGE или аналог, то для прошивки подключите их напрямую к контроллеру или используйте перенаправление socat, инструкция.

Автоматическое обновление

Пример работы wb-fw-mcu-updater

При обновлении прошивки удаляются ИК-команды, сохранённые в устройствах WB-MSW и WB-MIR. Рекомендуем сохранить банки команд перед обновлением с помощью скрипта. Автоматическое обновление прошивки выполняется с помощью предустановленной на контроллеры Wiren Board утилиты wb-mcu-fw-updater и позволяет установить свежую версию ПО сразу на все подключенные устройства или отдельно на каждое. Определение сигнатуры (модели) устройства, новой прошивки произойдет автоматически.

Утилита работает только на нашем контроллере и ей нужен доступ в интернет. Если у вас нет интернета или нашего контроллера, смотрите раздел Ручное обновление.

Обновление всех устройств на шине

Вы можете обновить все устройства, настроенные в разделе Serial Devices Configuration веб-интерфейса

  1. Подключите устройства по шине RS-485 к контроллеру.
  2. Настройте подключенные устройства в веб-интерфейсе.
  3. Откройте консоль контроллера по SSH.
  4. Обновите все настроенные устройства командой:
    wb-mcu-fw-updater update-all
    

Обновление одного устройства

Чтобы обновить только одно устройство:

  1. Подключите устройство по шине RS-485 к контроллеру.
  2. Узнайте modbus-адрес устройства, которое хотите обновить.
  3. Откройте консоль контроллера по SSH.
  4. Запустите утилиту wb-mcu-fw-updater параметрами: ключ update-fw, а также порт и modbus-адрес.

Например, обновим прошивку устройства с modbus-адресом 70 и подключенного к порту /dev/ttyRS485-1:

wb-mcu-fw-updater update-fw /dev/ttyRS485-1 -a70

Полный список параметров и примеры работы смотрите на странице утилиты.

Ручное обновление

Особенности

Мы не рекомендуем этот способ, но если на объекте нет доступа в интернет, или у вас нет контроллера — это единственный вариант.

Ручное обновление можно сделать утилитой wb-mcu-fw-flasher, которую нужно предварительно установить. Способ установки отличается и зависит от используемой операционной системы и описан в документации.

Подготовка устройства

Прошивать устройства можно:

  • по modbus-адресу устройства.
  • по широковещательному адресу — 0.

Для прошивки нескольких устройств на шине нужно поочереди перевести их в режим загрузчика и прошить.

Загрузка прошивки в устройство

Для загрузки прошивки выполните шаги:

  1. Подключите устройство по шине RS-485 к контроллеру или другому оборудованию, где установлена утилита прошивки.
  2. Если вы выполняете команды на контроллере:
  3. Скачайте из репозитория файл прошивки для вашего устройства по инструкции.
  4. Загрузите файл прошивки на контроллер или другое устройство.
  5. Перейдите в папку с файлом прошивки и выполните команду:
    • на контроллере или компьютере с ОС Linux:
    wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a25 -f ./firmware.wbfw
    
    • на компьютере с ОС Windows:
    wb-mcu-fw-flasher_1.0.3.exe -j -d COM1 -a25 -f firmware.wbfw
    
  6. Если вы выполняли команду с контроллера — запустите драйвер 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.

Для этого вам понадобится сама утилита и файл прошивки:

  1. Подключите устройство по шине RS-485 к контроллеру или другому оборудованию, где установлена утилита прошивки.
  2. Если вы выполняете команды на контроллере:
  3. Скачайте из репозитория файл прошивки для вашего устройства.
  4. Загрузите файл прошивки на контроллер или другое устройство, на котором установлена утилита прошивки.
  5. Перейдите в папку с прошивкой и выполните команду:
    • на контроллере или компьютере с ОС 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.

Полезные ссылки