WB-MSW v.4: Errata

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

ERRMODBUS001: Ответ устройства на адрес 0xFD

Подверженные устройства

Устройства WB-MSW v.4 с версией прошивки до 4.31.7.

Описание

Устройства Wiren Board с расширением "Быстрый Modbus" мешают работать сторонним устройствам на одной шине, если они используют специальные команды, начинающиеся с 0xFD.

Причины и подробное описание

В нашем расширении протокола "Быстрый Modbus" зарезервированный адрес 0xFD используется для специальных широковещательных команд. Если на шине мастер отправит какому-то стороннему устройству осмысленный пакет, начинающийся с 0xFD и командами, не использующимися в расширении протокола "Быстрый Modbus", то устройство Wiren Board отвечает MODBUS_ERR_ILLEGAL_FUNCTION, тем самым мешает обмену с другим устройством. Это происходит из-за ошибки в драйвере шины, при которой пакет с адресом 0xFD начинает обрабатываться как обычный стандартный Modbus пакет.

Пути обхода

Не использовать одну шину для устройств Wiren Board и сторонних устройств.

Запланированное исправление

Исправлено в версии прошивки 4.31.7.


ERRMODBUS002: Ошибка в ответе на сканирование командой 0x46

Подверженные устройства

Устройства WB-MSW v.4 с версией прошивки до 4.31.2.

Описание

Для работы с расширенными командами в быстром Modbus использовалась функция 0x60, которая оказалась в зарезервированном пространстве. Поэтому функция работы с расширенными командами была изменена на 0x46, но для сохранения обратной совместимости устройство может отвечать и на команду 0x60. Проблема была в том, что независимо от того, через какую команду было запрошено сканирование, устройство отвечало командой 0x60. Текущее исправление позволяет отвечать той же командой, которой был произведен запрос (0x46 или 0x60).

Возможные пути устранения

Обновить прошивку до версии 4.31.2.

Запланированное исправление

Исправлено в версии прошивки 4.31.2.


ERRMODBUS003: Неожиданное поведение при записи невалидных значений в некоторые регистры

Подверженные устройства

Устройства WB-MSW v.4 с версией прошивки до 4.31.14.

Описание

При записи значений из диапазона [256 ... 65535] в некоторые регистры происходит отсечение старших 8 битов числа и в итоге в прошивку попадает число по модулю 256. Выглядит это так, что при записи, например числа 257, происходит то же самое, что и при записи числа 1.

Одним из таких регистров является адрес устройства (регистр 128).

Отдельно стоит отметить, что в диапазоне значений, указанных в документации, все регистры работают ожидаемо. Проблема возникает при записи невалидных значений более 255.

Возможные пути устранения

Обновить прошивку до версии 4.31.14.

Запланированное исправление

Исправлено в версии прошивки 4.31.14.


ERRMODBUS004: Ошибка в ответах с битовыми полями

Подверженные устройства

Устройства WB-MSW v.4 с версией прошивки до 4.31.2.

Описание

Ответы с битовыми полями (запросы coil или discrete регистров, управление событиями) возвращали неправильные значения в старших битах.

Возможные пути устранения

Обновить прошивку до версии 4.31.2.

Запланированное исправление

Исправлено в версии прошивки 4.31.2.


ERRMODBUS005: Ошибка чтения разных coil-регистров за один запрос

Подверженные устройства

Устройства WB-MSW v.4 с версией прошивки до 4.31.5.

Описание

Если несколько разных coil-регистров расположены подряд по адресам (например, 2 и 3 в WB-MSW и WB-MWAC или 3 и 4 в WB-LED), то при чтении их одним запросом возвращались некорректные значения.

Возможные пути устранения

Обновить прошивку до версии 4.31.5.

Запланированное исправление

Исправлено в версии прошивки 4.31.5.


ERRMODBUS006: Ответы на запросы с неверным битом четности

Подверженные устройства

Устройства WB-MSW v.4 с версией прошивки до 4.31.10.

Описание

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

Возможные пути устранения

Обновить прошивку до версии 4.31.10.

Запланированное исправление

Исправлено в версии прошивки 4.31.10.


ERRMIR06: Проблемы при работе с ИК-приёмопередатчиком

Подверженные устройства

Все WB-MIR v2, WB-MSW с ИК с прошивкой до 4.29.7 включительно

Описание

В указанных прошивках наблюдается ряд проблем при использовании функционала ИК-приемопередатчика:

  1. При работе с банками ИК-команд (запись, редактирование) с поочередным использованием coil и holding регистров значения в них могли рассихронизироваться и ИК модуль мог «зависнуть» и более не отвечать на команды.
  2. При активной команде с одним банком можно установить в «1» coil регистры других банков.
  3. Значение в регистре воспроизведения команды сбрасывалось в «0» сразу после начала воспроизведения, а не по окончанию команды.
  4. При записи в ROM слишком длинной команды (больше максимальной длины) запись не производилась, однако при записи в RAM записывалось столько данных, сколько могло поместиться. Из-за этого могли быть сложности с запись длинных команд в ROM.

Причины и подробное описание

Ошибка в прошивке.

Запланированное исправление

Исправлено в версии прошивки 4.29.8, обновите прошивку устройства.

Пути обхода

Если вы не можете обновить прошивку устройства, то ошибку можно обойти:

  1. Использовать только один интерфейс: либо coil либо holding регистры для работы с банками ИК-команд.
  2. Сначала завершать работу с одним банком, затем начинать работу с другим (это должны быть разные modbus-запросы).
  3. Оценивать время выполнения команды и выполнять временную задержку на стороне клиента.
  4. Записать длинную команду можно так: выполнить запись в RAM, считать данные и записать из ROM через редактирование банка.

ERRMIR07: Большое время ответа на команду стирания всех ИК-банков

Подверженные устройства

Все WB-MIR v2, WB-MSW с ИК с прошивкой до 4.29.10 включительно

Описание

При записи "1" в coil-регистр 5000 (стирание всех ИК-команд из ROM памяти) ответ устройства приходит с большей задержкой, чем при записи других регистров. Время ответа может достигать ~250 мс для устройств на микроконтроллерах STM. Из-за этого возможно проблемы при работе с устройством через драйвер wb-mqtt-serial, т.к. стандартный таймаут для ответа устройства, указанный в шаблоне, 1 мс. Проявляется это как ошибки обмена после нажатия на кнопку (или записи в MQTT-топик) "Reset all ROM"/"Стереть все команды в ROM".

Причины и подробное описание

Ошибка в прошивке.

Запланированное исправление

Исправлено в версии прошивки 4.29.11, обновите прошивку устройства.

Пути обхода

Если вы не можете обновить прошивку устройства, то ошибку можно обойти следующими способами:

  • увеличить таймаут ответа устройства до 500 мс
  • не использовать регистр coil 5000, а стирать каждый банк памяти поочередно путём установки первых двух регистров в нули через редактирование банка
  • записывать новую команду в банк сразу, без предварительного стирания банка

ERRWB-MSWv30011: Влияние ИК-передатчика на показания датчиков движения и освещенности

Подверженные устройства

Устройства WB-MSW v.3, WB-MSW v.4 с версией прошивки до 4.29.7 включительно

Описание

При передаче ИК-команд показания датчиков освещенности и движения кратковременно увеличиваются.

Запланированное исправление

Исправлено в версии прошивки 4.29.8.

ERRWB-MSv20006: Переполнение показаний относительной влажности при околонулевой влажности воздуха

Подверженные устройства

Все устройства с датчиком SHT40 с прошивкой до 4.31.3 включительно:

  • WB-MS v.2 начиная с партии v4.3A/T (выпуск с 09.2022)
  • WB-MSW v.3 начиная с партии 4.19 (выпуск с 12.2021)
  • все WB-MSW v4

Описание

Датчик SHT40 может отдавать показания влажности, которые после пересчёта в проценты могут оказаться меньше нуля или больше 100%. Документация на датчик предписывает проверять значение влажности и приводить его к диапазону от 0 до 100%. Однако из-за ошибки в прошивке такой проверки не было. Из-за этого при околонулевой влажности воздуха значение в регистре относительной влажности могло быть около 650%.

Возможные пути устранения

  • обновить прошивку до 4.31.4
  • на стороне клиента принимать регистр относительной влажности как знаковый s16 и приводить значение регистра к диапазону от 0 до 100% при выходе за пределы диапазона.

Запланированное исправление

Проблема исправлена в прошивке 4.31.4. Значение в регистре относительной влажности теперь строго от 0 до 100%

ERRWB-MSWv30012: Ошибка при чтении нескольких диапазонов coil-регистров за один запрос

Подверженные устройства

Устройства WB-MSW v.3, WB-MSW v.4 с версией прошивки до 4.31.4 включительно

Описание

Из-за ошибки в библиотеке Modbus, если включен режим непрерывного чтения (записано 1 в регистр 114) и выполняется запрос на чтение coil-регистров, например, с адреса 0 по 11 за один запрос, то в ответе от устройства валидное значение будет иметь только первый coil-регистр в запросе. Значение остальных регистров будет равно 0 и не соответствовать действительности. При этом чтение coil-регистров по одному работает корректно.

При работе с контроллером Wiren Board это вызывало неожиданное поведение работы светодиодов: их можно было включить через web-интерфейс на вкладке «Устройства», но уже нельзя было выключить. Текущее состояние светодиодов отображалось некорректно.

Запланированное исправление

Исправлено в прошивке версии 4.31.5, обновите прошивку устройства.

ERRWB-MSWv30013: Неверное значение регистра пользовательской температурной компенсации после стирания EEPROM

Подверженные устройства

Проблеме потенциально подвержены все устройства, которые:

  • вышли с производства с прошивкой от 4.29.0 до 4.31.10 включительно;
  • были повторно проверены на производстве, подвергались стиранию EEPROM или настроек связи вручную, подвергались переустановке адреса на программаторе адресов.

Это ревизии:

  • MSW v3 LORA - v4.22I/L и далее (даты производства 04.2023 - 05.2023);
  • MSW v3 - v4.22I/5, v4.22I/6;
  • MSW v4 LORA - все ревизии;
  • MSW v4 - все, кроме отгруженных после 08.11.24.

Не подвержены проблеме: TH и M исполнения (партии xxx/TH и xxx/M)

Также проблеме подвержены все WB-MSW v.3 и WB-MSW v.4 с установленным CO2 датчиком, если выполнялось обновление прошивки на версии от 4.29.0 до 4.31.10 со сбросом EEPROM (wb-mcu-fw-updater ... --restore-defaults или wb-mcu-fw-flasher -e).

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

Список серийных номеров потенциально уязвимых устройств

Если серийный номер вашего WB-MSW попал в список, выполните одно из следующих действий:

  • запишите "0" в регистр 245 вручную: modbus_client -mrtu -pnone -s2 /dev/ttyRS485-1 -b9600 -a1 -t6 -r245 0 (подставьте нужный порт, адрес и скорость).
  • в шаблоне конфигурации устройства в разделе Параметры воздуха / Компенсация самонагрева (°C) укажите значение 0.

Описание

Из-за ошибки в прошивках от 4.29.0 до 4.31.10 включительно при старте устройства с пустой EEPROM и установленным CO2 датчиком (это может быть как первое включение устройства, так и включение после сброса EEPROM или настроек связи) через 4 секунды ошибочно запускался алгоритм миграции температурной компенсации, предназначенный для корректного обновления со старых версий. Из-за этого в регистре пользовательской температурной компенсации оказывалось значение -70 вместо значения 0 и датчик завышал показания на 0.7 градуса. Чтобы первое включение прошло корректно, нужно в первые 4 секунды работы прошивки записать какие-либо настройки связи (например, адрес, отличный от 1) и перезагрузить устройство. После этого при следующих включениях алгоритм уже не запускается и в регистре пользовательской компенсации будет значение 0.

Большинство произведенных устройств не подвержено проблеме, т.к. производственный стенд успевал за 4 секунды сделать первые проверки, записать адрес и перезагрузить устройство.

Однако, если устройство не проходило проверку с первого раза, повторная проверка уже занимала больше времени, что вызывало ложное срабатывание алгоритма и в итоге приводило к записи значения -70 в регистр пользовательской температурной компенсации. Также, если устройство оказывалось на программаторе адресов (если в заказе было указано задать определенный адрес) то производился сброс настроек связи, что вызывало ложное срабатывание алгоритма.

В итоге датчик завышал показания на 0.7 градуса. Необходимо вручную записать в регистр 245 значение 0.

Для того, чтобы убедиться, что температурная компенсация имеет верное значение, нужно прочитать регистр 245: там должен быть 0. Также можно в шаблоне конфигурации устройства в разделе Параметры воздуха / Компенсация самонагрева (°C) указать значение 0.

Запланированное исправление

Исправлено в прошивке версии 4.31.11. Стирание EEPROM с установкой прошивки 4.31.11 не портит регистр 245.

Однако подверженные проблеме устройства необходимо исправить вручную: записать значение 0 в регистр 245.

Также мы выполнили действия, чтобы такое не повторялась:

  • добавили в производственный стенд проверку значения регистра 245: там должен быть 0 после окончания всех проверок;
  • ускорили повторную проверку;
  • в прошивке полностью убрали алгоритм миграции для новых устройств (для которых не существовало старых прошивок).

ERRWB-MSv20007: Ошибка при обновлении прошивки устройства

Подверженные устройства

Некоторые устройства WB-MS и WB-MSW.

Описание

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

Запланированное исправление

В настоящее время причина проблемы не определена.

Пути обхода

Выполнить обновление актуальной версией прошивки через wb-mcu-fw-flasher, для этого: