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

From Wiren Board
This is the approved revision of this page, as well as being the most recent.
Other languages:

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

Обновление прошивок устройств (24:08)

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

Сами прошивки выпускаются в формате релизов, которые привязаны к релизам программного обеспечения контроллера, но имеют отличный от него цикл:

  • testing — сюда попадают прошивки после внутреннего тестирования, доступны для пользователей testing-релиза контроллера;
  • stable — через три недели после публикации в testing и при отсутствии сообщений об ошибках, прошивки считаются стабильными. В этот момент они становятся доступны и для пользователей stable-релиза контроллера. Если изменений в прошивке было много и они затрагивали основные функции устройства, то прошивка может немного задержаться в testing.

На странице каждого устройства есть ссылка на список изменений в прошивках, где прошивки в testing отмечены маркером «testing». Прошивка без отметки считается стабильной.

Распределение прошивок по релизам позволяет избежать ситуации, когда свежая версия прошивки без продолжительного тестирования попадает в очень ответственную инсталляцию. Если для новой прошивки нужны новые функции в ПО контроллера, то либо они заедут в stable-релиз ПО вместе с прошивкой, либо прошивка задержится в testing до появления нужных функций в ПО.

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

Обновление из веб-интерфейса

Сообщение «Доступна новая версия прошивки или загрузчика»

Обновить прошивку и загрузчик устройства можно из веб-интерфейса. При наличии обновления в конфигураторе устройств появится соответствующее сообщение с кнопкой Обновить.

Во время обновления не отключайте питание и линию связи устройства, это приведет к ошибкам обновления.

Сообщение «Не удалось обновить прошивку»

Если появилось сообщение «Не удалось обновить прошивку», то:

  1. Выберите устройство на странице Настройки → Конфигурационные файлы → Настройка драйвера serial-устройств и нажмите Найти устройство.
  2. Выполните Поиск устройств в режиме загрузчика, выберите устройство из списка и нажмите Настроить как текущее. Подождите, пока устройство обновится.

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

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

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

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

Обновление прошивок устройств, подключенных к шлюзам WB-MGE и WM-MIO-E, также выполняется вручную с отображением сетевого порта в локальный.

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

Вы можете обновить все устройства, настроенные в разделе 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. Скачайте из репозитория файл прошивки для вашего устройства, для этого запустите утилиту прошивки с параметром --get-device-info и перейдите по ссылке в ответе, например (другие варианты в инструкции):
    # wb-mcu-fw-flasher -d /dev/ttyRS485-1 -a25 --get-device-info
    /dev/ttyRS485-1 opened successfully.
    Bootloader version: 1.4.3
    Firmware version: 1.21.1
    Firmware signature (fw-sig): mrwl3G
    Download firmwares: https://fw-releases.wirenboard.com/?prefix=fw/by-signature/mrwl3G/
    
  1. Загрузите файл прошивки на контроллер (инструкция) или другое устройство.
  2. Перейдите в папку с файлом прошивки и выполните команду:
    • на контроллере или компьютере с ОС 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
    
  3. Если вы выполняли команду с контроллера — запустите драйвер 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.

Обновление прошивки устройств, подключенных к шлюзам WB-MGE и WB-MIO-E

Обновить прошивку устройства Wiren Board, подключенного к шлюзам WB-MGE и WB-MIO-E по RS-485, можно только в ручном режиме утилитой wb-mcu-fw-flasher.

Шлюз должен быть настроен в режим TCP Server/None (для WB-MGE v2, WB-MIO-E v2) или TCP Server (для WB-MGE v1, WB-MIO-E v1).

Для примера использовалась следующая схема подключения и настройки шлюза:

  • Modbus-устройство с адресом 75 подключено к шлюзу WB-MIO-E по RS-485, настройки порта: скорость обмена 115200 бит/с, контроль четности N, число бит данных 8, количество стоп-бит 2;
  • шлюз подключен к контроллеру по Ethernet, настройки шлюза:
    • Work Mode: TCP Server/None;
    • IP-адрес: 192.168.1.7, порт 23.
  • компьютер и контроллер подключены к роутеру по Ethernet, доступ к консоли контроллера по SSH.

Внимание! В вашем случае настройки соединения и адрес устройства могут быть другими. Используйте ваши настройки при выполнении команд в консоли.

Подготовка к прошивке

  1. Установите на контроллер утилиты:
  2. Узнайте сигнатуру подключенного к шлюзу Modbus-устройства, для этого:
    1. Дважды подключитесь к контроллеру по SSH, у вас должно быть открыто два окна: первое для создания тоннеля socat, второе для отправки команд устройству.
    2. Остановите wb-mqtt-serial:
      systemctl stop wb-mqtt-serial
      
    3. В первом окне запустите перенаправление утилитой socat:
      socat -d -d -d -x PTY,raw,b115200,parenb=0,cstopb=2,cs8,link=/dev/ttyRS485-5 tcp:192.168.1.7:23
      
      В системе появится виртуальный порт /dev/ttyRS485-5, с которым можно работать как с локальным.
    4. Во втором окне выполните команду:
      # wb-mcu-fw-flasher -d /dev/ttyRS485-5 -b115200 -pN -s2 -a75 --get-device-info
      /dev/ttyRS485-5 opened successfully.
      Bootloader version: 1.4.2
      Firmware version: 1.21.2
      Firmware signature (fw-sig): mr6cpG
      Download firmwares: https://fw-releases.wirenboard.com/?prefix=fw/by-signature/mr6cpG/
      
      В ответе вы получите: версию загрузчика, версию прошивки, сигнатуру устройства, ссылку на прошивку.
    5. В первом окне разорвите соединение socat клавишами Ctrl+C.
    6. Запустите wb-mqtt-serial:
      systemctl start wb-mqtt-serial
      
  3. Скачайте последнюю версию прошивки используя сигнатуру или воспользуйтесь полученной ссылкой.
  4. Загрузите файл прошивки на контроллер.

Обновление на любой скорости соединения

Обновление прошивки Modbus-устройства за шлюзом WB-MIO-E. Команда для прошивки и успешный ответ, проверка версии прошивки. Программа MobaXterm.

Обновление на любой скорости соединения доступно, если:

  • версия wb-mcu-fw-flasher 1.3.0 и выше;
  • текущая версия прошивки устройства поддерживает 131 регистр (см. Журналы изменений на страницах устройств);
  • текущая версия загрузчика 1.3.0 и выше.

Иначе смотрите раздел обновление прошивки со стандартными настройками 9600N2.

Внимание! В вашем случае настройки соединения и адрес устройства могут быть другими. Используйте ваши настройки при выполнении команд в консоли.

  1. Подготовьте файл прошивки.
  2. Дважды подключитесь к контроллеру по SSH, у вас должно быть открыто два окна: первое для создания тоннеля socat, второе для отправки команд устройству.
  3. Остановите wb-mqtt-serial:
    systemctl stop wb-mqtt-serial
    
  4. В первом окне запустите перенаправление утилитой socat:
    socat -d -d -d -x PTY,raw,b115200,parenb=0,cstopb=2,cs8,link=/dev/ttyRS485-5 tcp:192.168.1.7:23
    
    В системе появится виртуальный порт /dev/ttyRS485-5, с которым можно работать как с локальным.
  5. Во втором окне запустите обновление прошивки устройства утилитой wb-mcu-fw-flasher, используя параметр -J. Укажите файл прошивки, который приготовили в начале:
    wb-mcu-fw-flasher -J -d /dev/ttyRS485-5 -a75 -f ./firmware.wbfw
    
    1. В первом окне разорвите соединение socat клавишами Ctrl+C.
    2. Запустите wb-mqtt-serial:
      systemctl start wb-mqtt-serial
      

Обновление со стандартными настройками соединения

Настройки шлюза для обновления прошивки

Инструкция используется, если:

  • текущая версия загрузчика устройства ниже 1.3.0;
  • текущая прошивка устройства не поддерживает 131 регистр.

В этом случае обновление можно выполнить только на скорости 9600N2, указав параметр -j для утилиты wb-mcu-fw-flasher. Если используются другие настройки соединения сначала нужно изменить их на стандартные.

Рассмотрим пример обновления прошивки устройства, с настройками соединения:

  • шлюз WB-MGE (WB-MIO-E), настроенный на Modbus over TCP и имеющий IP-адрес 192.168.0.7, порт 23.
  • к шлюзу подключено Modbus-устройство с адресом 58.
  • в настройках устройства и шлюза выставлена скорость 115200 бит/с.

Внимание! В вашем случае настройки соединения и адрес устройства могут быть другими. Используйте ваши настройки при выполнении команд в консоли.

  1. Подготовьте файл прошивки.
  2. Дважды подключитесь к контроллеру по SSH, у вас должно быть открыто два окна: первое для создания тоннеля socat, второе для отправки команд устройству.
  3. Остановите wb-mqtt-serial:
    systemctl stop wb-mqtt-serial
    
  4. В первом окне запустите перенаправление (если у вас стабильный релиз до wb-2207 включительно, вместо параметра b115200, используйте ispeed=115200,ospeed=115200):
    socat -d -d -d -x PTY,raw,b115200,parenb=0,cstopb=2,cs8,link=/dev/ttyRS485-5 tcp:192.168.0.7:23
    
    В системе появится виртуальный порт /dev/ttyRS485-5, с которым можно работать как с локальным.
  5. Во втором окне измените скорость порта устройства на 9600 бит/с:
    modbus_client --debug -mrtu -b115200 -pnone -s2 /dev/ttyRS485-5 -a58 -t0x06 -r110 96
    
  6. В первом окне разорвите соединение socat клавишами Ctrl+C.
  7. В настройках шлюза установите скорость порта 9600 бит/с. Настройки шлюза доступны только через его веб-интерфейс.
  8. В первом окне снова запустите перенаправление socat с новыми параметрами соединения:
    socat -d -d -d -x PTY,raw,b9600,parenb=0,cstopb=2,cs8,link=/dev/ttyRS485-5 tcp:192.168.0.7:23
    
  9. Во втором окне запустите обновление прошивки устройства, утилитой wb-mcu-fw-flasher, используя параметр -j. Укажите файл прошивки, который приготовили в начале:
    wb-mcu-fw-flasher -j -d /dev/ttyRS485-5 -a58 -f ./firmware.wbfw
    
  10. После окончания прошивки верните в устройстве старую скорость 115200 кбит/с:
    modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-5 -a58 -t0x06 -r110 1152
    
  11. В первом окне разорвите соединение socat клавишами Ctrl+C.
  12. В настройках шлюза измените скорость порта с 9600 бит/с на 115200 бит/с. Настройки шлюза доступны только через его веб-интерфейс.
  13. Запустите wb-mqtt-serial:
    systemctl start wb-mqtt-serial
    

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

Обновление загрузчика устройства

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

При обновлении загрузчика прошивка устройства стирается, поэтому после обновления загрузчика необходимо дополнительно обновить прошивку устройства. В этом случае для обновления прошивки используется команда без ключа -j или -J.

wb-mcu-fw-flasher -d /dev/ttyRS485-5 -a75 -f ./firmware.wbfw

Настройка шлюза для обновления прошивки

Самый простой способ изменить настройки шлюза — подключиться к его встроенному веб-интерфейсу. Для этого нужно:

  1. подключить шлюз к компьютеру UTP кабелем напрямую или через роутер;
  2. присвоить компьютеру статический IP-адрес в сети шлюза, например, 192.168.0.201;
  3. открыть браузер и ввести IP-адрес шлюза, по умолчанию 192.168.0.7.

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