Восстановление заводских настроек

From Wiren Board
Jump to navigation Jump to search

Общее

В этой статье описана процедура сброса настроек для устройств c Modbus RTU компании Wiren Board.

Сброс настроек устройств производится с помощью утилиты для прошивки wb-mcu-fw-flasher. Опции запуска утилиты и примеры использования можно прочитать в статье Загрузка прошивок на устройства Wiren Board.

Перед использованием утилиты на контроллере нужно остановить wb-mqtt-serial:

service wb-mqtt-serial stop

Сброс настроек связи по Modbus

Для сброса настроек связи по Modbus, нужно выполнить команду:

wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 17 -u

Где:

/dev/ttyRS485-1 — путь к порту на который подключено устройство.

-a 17 — modbus-адрес устройства. Допустимо представление как в десятичной, так и в шестнадцатеричной системе.

Пример выполнения команды:

root@wirenboard-A4DTZKTB:~# wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 17 -u
/dev/ttyRS485-1 opened successfully.
Send jump to bootloader command and wait 2 seconds...
Ok, device will jump to bootloader.
Send reset UART settings and modbus address command...
Ok.
Device is in Bootloader now! To flash FW run
wb-mcu-fw-flasher -d <port> -f <firmware.wbfw>

В результате настройки приемопередатчика устройства будут сброшены до заводских: скорость — 9600, чётность (parity) — N, количество стоп-бит — 2. Modbus-адрес устройства будет равен 0х0001. Пользовательские настройки сохраняются.

Сброс всех настроек

Для восстановления заводских настроек устройства нужно выполнить команду:

wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 17 -e

После этого пользовательские настройки и modbus-адрес устройства будут сброшены. Останется только информация в энергонезависимой памяти.

Восстановление доступа к устройствам

Для восстановления доступа к устройствам существует возможность сброса настроек приемопередатчика (UART) и modbus-адреса устройства по широковещательному адресу 0х0000. Для этого устройство должно быть единственным устройством на шине и находиться в режиме загрузчика.

Переход в режим загрузчика

Индикация режима загрузчика

Устройство переходит в режим загрузчика, если:

  • на устройстве имеется корректная прошивка, то первые 2 секунды после включения питания устройство работает в режиме загрузчика;
  • на устройстве нет корректной прошивки (например, был сбой при обновлении прошивки), то режим загрузчика активен постоянно;
  • при работе основной программы записать 1 в holding-регистр 129 (0x81) — в этом случае устройство перезагружается и остается в режиме загрузчика 120 секунд. Это можно сделать, запустив утилиту wb-mcu-fw-flasher с ключем -j.

В режиме загрузчика индикатор Status устройства мигает с периодом 1 секунда, а при записи прошивки мигание индикатора учащается.

Сброс настроек приемопередатчика

Для сброса настроек приемопередатчика и modbus-адреса устройства, воспользуемся первым условием из предыдущего пункта:

первые 2 секунды после включения питания устройство работает в режиме загрузчика

Следующую команду нужно выполнить за эти 2 секунды.

wb-mcu-fw-flasher  -d /dev/ttyRS485-1 -a0 -u

Если модуль питается от выхода V_Out контроллера, то обесточить модуль можно программно:

mosquitto_pub -t '/devices/wb-gpio/controls/V_OUT/on' -r -m 0 && sleep 3 && mosquitto_pub -t '/devices/wb-gpio/controls/V_OUT/on' -r -m 1 && sleep 1 && wb-mcu-fw-flasher  -d /dev/ttyRS485-1 -a0 -u

Пример правильного выполнения команды сброса настроек приемопередатчика:

root@wirenboard-A4DTZKTB:~# wb-mcu-fw-flasher  -d /dev/ttyRS485-1 -a0 -u
/dev/ttyRS485-1 opened successfully.
Send reset UART settings and modbus address command...
Ok.
Device is in Bootloader now! To flash FW run
wb-mcu-fw-flasher -d <port> -f <firmware.wbfw>

Настройки приемопередатчика устройства будут сброшены до заводских: скорость — 9600, чётность (parity) — N, количество стоп-бит — 2. Modbus-адрес устройства будет равен 0х0001.

Проверяем:

for i in {1..247}; do modbus_client -mrtu /dev/ttyRS485-1 --debug -a$i -t3 -r0x80 -s2 -pnone; done 2>/dev/null | grep Data:
        Data: 0x0001