WB-MDM3: Errata
ERRMODBUS001: Ответ устройства на адрес 0xFD
Подверженные устройства
Устройства WB-MDM3 с версией прошивки до 2.8.0.
Описание
Устройства Wiren Board с расширением "Быстрый Modbus" мешают работать сторонним устройствам на одной шине, если они используют специальные команды, начинающиеся с 0xFD.
Причины и подробное описание
В нашем расширении протокола "Быстрый Modbus" зарезервированный адрес 0xFD используется для специальных широковещательных команд. Если на шине мастер отправит какому-то стороннему устройству осмысленный пакет, начинающийся с 0xFD и командами, не использующимися в расширении протокола "Быстрый Modbus", то устройство Wiren Board отвечает MODBUS_ERR_ILLEGAL_FUNCTION, тем самым мешает обмену с другим устройством. Это происходит из-за ошибки в драйвере шины, при которой пакет с адресом 0xFD начинает обрабатываться как обычный стандартный Modbus пакет.
Пути обхода
Не использовать одну шину для устройств Wiren Board и сторонних устройств.
Запланированное исправление
Исправлено в версии прошивки 2.8.0.
ERRMODBUS002: Ошибка в ответе на сканирование командой 0x46
Подверженные устройства
Устройства WB-MDM3 с версией прошивки до 2.7.1.
Описание
Для работы с расширенными командами в быстром Modbus использовалась функция 0x60, которая оказалась в зарезервированном пространстве. Поэтому функция работы с расширенными командами была изменена на 0x46, но для сохранения обратной совместимости устройство может отвечать и на команду 0x60. Проблема была в том, что независимо от того, через какую команду было запрошено сканирование, устройство отвечало командой 0x60. Текущее исправление позволяет отвечать той же командой, которой был произведен запрос (0x46 или 0x60).
Возможные пути устранения
Обновить прошивку до версии 2.7.1.
Запланированное исправление
Исправлено в версии прошивки 2.7.1.
ERRMODBUS003: Неожиданное поведение при записи невалидных значений в некоторые регистры
Подверженные устройства
Устройства WB-MDM3 с версией прошивки до 2.9.2.
Описание
При записи значений из диапазона [256 ... 65535] в некоторые регистры происходит отсечение старших 8 битов числа и в итоге в прошивку попадает число по модулю 256. Выглядит это так, что при записи, например числа 257, происходит то же самое, что и при записи числа 1.
Одним из таких регистров является адрес устройства (регистр 128).
Отдельно стоит отметить, что в диапазоне значений, указанных в документации, все регистры работают ожидаемо. Проблема возникает при записи невалидных значений более 255.
Возможные пути устранения
Обновить прошивку до версии 2.9.2.
Запланированное исправление
Исправлено в версии прошивки 2.9.2.
ERRMODBUS004: Ошибка в ответах с битовыми полями
Подверженные устройства
Устройства WB-MDM3 с версией прошивки до 2.7.1.
Описание
Ответы с битовыми полями (запросы coil или discrete регистров, управление событиями) возвращали неправильные значения в старших битах.
Возможные пути устранения
Обновить прошивку до версии 2.7.1.
Запланированное исправление
Исправлено в версии прошивки 2.7.1.
ERRMODBUS006: Ответы на запросы с неверным битом четности
Подверженные устройства
Устройства WB-MDM3 с версией прошивки до 2.9.1.
Описание
Устройство отвечало на запросы, в которых указан неверный бит четности, хотя должно игнорировать такие запросы.
Возможные пути устранения
Обновить прошивку до версии 2.9.1.
Запланированное исправление
Исправлено в версии прошивки 2.9.1.
ERRMODBUS007: Потеря событий при одновременной передаче событий двумя устройствами на одной шине
Подверженные устройства
Устройства WB-MDM3 с версией прошивки до 2.12.0.
Описание
При одновременном наличии событий от двух устройств, находящимися на одной шине, одно из них может передать пакет событий не полностью.
Причины и подробное описание
В быстром Modbus передача событий устроена так. Мастер отправляет запрос событий. Все устройства с накопленными событиями участвуют в арбитраже. Устройство, выигравшее арбитраж, отвечает, а проигравшие молчат до следующего запроса.
После того, как событие сгенерировано, оно ждёт отправки. После того, как устройство сформировало кадр и положило его на шину, событие считается отправленным, и в следующем запросе мастера, в котором подтверждается приём пакета от этого устройства, устройство удаляет такие события из своей очереди. Это штатный механизм «подтверждения приёма событий».
Дефект состоял в том, что переход события из состояния «ожидает отправки» в состояние «отправлено» происходил у устройства слишком рано — фактически в момент получения запроса событий от мастера, до того как был известен результат арбитража. Если устройство выигрывало арбитраж, всё шло штатно. Если устройство проигрывало арбитраж, его пакет не уходил на шину вовсе, но внутри устройства события уже были помечены как отправленные. Когда мастер при последующих циклах опроса в очередной раз отправлял подтверждение, относящееся к этому устройству, оно срабатывало и на эти псевдо-отправленные события, и они удалялись из очереди устройства, никогда не доходив до мастера.
С точки зрения пользователя в веб-интерфейсе состояние регистров не изменится, публикации сообщения в MQTT-топик не произойдет, хотя сами регистры и их значения при этом остаются корректными - теряется именно уведомление об изменении.
Например, к контроллеру на одну шину подключены два реле. Одновременно замыкаются входы обоих реле. При этом состояние входов (выходов) одного реле в веб-интерфейсе отображается корректно, тогда как у второго часть событий потеряется. Состояние второго реле будет отображаться как до момента замыкания, несмотря на то, что физически переключение произошло.
Пути обхода
Временно сделать событийные регистры обычными - в шаблоне устройства установить значение поля sporadic в false. Таким образом, регистры будут опрашиваться с установленным временным интервалом, как и обычные регистры.
Запланированное исправление
Исправлено в версии прошивки 2.12.0.
ERRMODBUS008: Неожиданное поведение при приеме длинных кадров запросов
Подверженные устройства
Устройства WB-MDM3 с версией прошивки до 2.12.1.
Описание
При приеме кадра длиной более 265 байт (максимальная длина кадра Быстрого Modbus) устройство зависает и перезагружается, также в отдельных случаях возможна потеря настроек.
Причины и подробное описание
Алгоритм приема не учитывает возможность поступления некорректного удлиненного кадра запроса, из-за чего происходит переполнение буфера приема, данные в соседних с буфером ячейках памяти устройства портятся, что приводит к зависанию и перезапуску по watchdog-таймеру. В отдельных случаях при поступлении очень больших кадров данных (более ~500 байт) также портятся настройки, и после перезапуска устройство переходит на стандартные параметры связи (9600-8N2, адрес 1).
Пути обхода
- Не отправлять на устройство запросы длиной более максимальной допустимой, регламентированной спецификациями протоколов Modbus RTU и Быстрый Modbus (265 байт).
- Не подключать устройство к шине, на которой могут передаваться не-Modbus сообщения или сообщения с длиной более 265 байт.
Запланированное исправление
Исправлено в прошивке версии 2.12.1.
ERRMODBUS009: Неожиданное поведение при чтении регистров вблизи адреса 0xFFFF в режиме непрерывного чтения
Подверженные устройства
Устройства WB-MDM3 с версией прошивки до 2.12.1.
Описание
При включенном режиме непрерывного чтения при чтении регистров вблизи адреса 0xFFFF (с его достижением или переходом через него) устройство зависает и перезагружается.
Причины и подробное описание
Алгоритм непрерывного чтения не учитывает возможное переполнение счетчика адреса регистра (разрядность 16 бит), из-за чего при чтении регистра с адресом 0xFFFF счетчик переполняется и алгоритм зацикливается, что приводит к перезагрузке устройства по watchdog-таймеру.
Пути обхода
При включенном режиме непрерывного чтения не отправлять команды на чтение регистров с диапазоном адресов, включающим 0xFFFF. У всех устройств Wiren Board в принципе отсутствуют действующие регистры с адресом 0xFFFF.
Запланированное исправление
Исправлено в прошивке версии 2.12.1.
ERRMODBUS010: Некорректная валидация запроса и некорректная обработка неверных запросов
Подверженные устройства
Устройства WB-MDM3 с версией прошивки до 2.12.1.
Описание
В ряде случаев устройство может успешно или некорректно обрабатывать синтаксически неверные запросы, возвращать неверный код исключения или ограничивать максимальное количество регистров в запросе.
Причины и подробное описание
Алгоритм некорректно валидирует запрос и обрабатывает следующие случаи:
1) Запросы на чтение нулевого количества регистров успешно обрабатываются и возвращают ответ с нулевым количеством данных (только заголовок и CRC). Согласно спецификации Modbus, такой запрос должен возвращать исключение 0x03 (ILLEGAL_DATA_VALUE).
2) Единый лимит в 125 регистров для всех функций чтения и записи регистров - при превышении лимита устройство возвращает исключение 0x02 (ILLEGAL_DATA_ADDRESS). Согласно спецификации Modbus, для разных функций разные лимиты количества регистров (чтение битовых значений - 2000, чтение аналоговых регистров или регистров хранения - 125, запись coil-регистров - 1968, запись регистров хранения - 123). При превышении лимита устройство должно возвращать исключение 0x03 (ILLEGAL_DATA_VALUE).
3) Поле количества байт (Byte Count) в запросах множественной записи (коды функций 0x0F и 0x10) не проверяется, запросы обрабатываются без проверки. Согласно спецификации Modbus, в случае несоответствия поля Byte Count количеству регистров устройство должно возвращать исключение 0x03 (ILLEGAL_DATA_VALUE).
4) Функция записи одиночного coil-регистра не валидирует записываемое значение, в coil-регистр записывается старший бит из значения запроса. Согласно спецификации Modbus, устройство должно принимать только значения 0x0000 и 0xFF00, а для всех остальных значений возвращать исключение 0x03 (ILLEGAL_DATA_VALUE).
5) Структурно некорректные запросы с верным CRC (например, запросы с увеличенной длиной) обрабатываются в обычном режиме. Согласно общепринятой конвенции, устройство должно игнорировать такие запросы и не пытаться их обрабатывать.
6) Структурно корректные запросы, но увеличенной длины (от 257 до 265 байт) корректно обрабатываются. Согласно спецификации Modbus, кадры длиной более 256 байт не являются корректными Modbus-кадрами, а значит должны игнорироваться.
Пути обхода
Отправлять устройству только структурно корректные запросы, соответствующие спецификации Modbus.
Запланированное исправление
Исправлено в прошивке версии 2.12.1.
ERRMODBUS011: Некорректное поведение при отправке неверного запроса настройки событий Быстрого Modbus
Подверженные устройства
Устройства WB-MDM3 с версией прошивки до 2.12.1.
Описание
При обработке команды настройки событий Быстрого Modbus (EVENT_CTRL, cmd=0x46, sub_cmd=0x18) с некорректными полями длины возможны некорректная настройка уведомлений о событиях и ответ непредсказуемой длины.
Причины и подробное описание
Алгоритм при обработке команды настройки событий Быстрого Modbus не валидирует поле размера и поле длины внутреннего блока данных, из-за чего при некорректных значениях в полях длины устройство может обрабатывать данные за пределами фактически принятого кадра. В связи с этим могут наблюдаться следующие проблемы:
1) Некорректная настройка уведомлений о событиях, из-за чего могут спонтанно меняться приоритеты/маски событий
2) Ответ на команду настройки событий может быть непредсказуемой длины
Пути обхода
Отправлять только корректные команды Быстрого Modbus, соответствующие спецификации протокола.
Запланированное исправление
Исправлено в прошивке версии 2.12.1.
ERRMDM01: Сгорание диммера при работе с блоками питания светодиодных ламп
Подверженные устройства
Все модели MDM3.
Описание
При работе с некоторыми диммируемыми блоками питания светодиодных ламп (драйвер, источник тока для светильников) выходит из строя, часто со свето-шумовыми эффектами. Так же может наблюдаться сгорание соседних каналов или даже соседних диммеров MDM3 на дин-рейке.
Причины и подробное описание
Блоки питания светодиодных ламп имеют некоторую емкость и входное сопротивление (обычно резистор) для ограничения пусковых токов.
Величины емкостей и сопротивления не стандартизованы, в хороших драйверах пусковой ток невелик, в плохих - очень большой.
В димммере MDM3 большой пусковой ток возникает в следующих случаях:
- диммирование по переднему фронту емкостной нагрузки
- в прошивке v.2.1.0-v.2.2.0 - из-за неточного определения нуля синусоиды входного напряжения (исправлено в прошивке 2.2.1)
- в прошивках v.2.1.0-v.2.3.2 диммирование начинается сразу с нижнего порога (заданного в настройках). Исправлено в 2.3.3
- при срабатывании защиты по току (например, по причинам выше), "отпускание" защиты и соответственно открытие транзисторов происходит в случайный момент синусоиды входного напряжения, вызывая этим еще больший пусковой ток. Исправлено в 2.4.0: после срабатывания защиты выходы отключаются на 3 с, затем включаются штатным образом.
Далее от большого пускового тока происходит что-то из:
- сгорание внутренней схемы из-за наводок (в том числе из-за неудачной трассировки платы, силовые дорожки делают "петлю" на плате). Так же может наблюдаться сгорание соседних каналов или даже соседних устройств на дин-рейке.
- по защите закрываются транзисторы и при длинных проводах возникает скачок напряжения - сгорает защитный диод или один из транзисторов.
Запланированное исправление
Исправлено в прошивке 2.3.3. Добавился «плавный старт» — напряжение нарастает от нуля, даже если выставлен ненулевой начальный порог. За счёт этого значительно уменьшились пусковые токи.
Рекомендации
- Обновить прошивку устройства до версии 2.3.3
- Внимательно выбирать режим диммирования! Для диммируемых блоков питания только по заднему фронту.
- Перед закупкой освещения на весь дом проверьте совместную работу диммера и светильников. При сгорании диммера случай считается гарантийным.
ERRMDM02: Зависание устройства после полутора месяцев непрерывной работы
Подверженные устройства
Все модели MDM3 с прошивкой 2.2.3
Описание
После полутора месяцев непрерывной работы устройство перестает реагировать на отправленные команды, не обновляет значения в регистрах, но продолжает отвечать по Modbus.
Запланированное исправление
Исправлено в 2.2.4
ERRMDM03: Мерцание ламп при нестабильной частоте напряжения
Подверженные устройства
Все модели MDM3
Описание
Возможны пропуски детектирования периода напряжения. Если частота входного напряжения нестабильна, например, при питании от генератора, то лампы могут мерцать. Причина — детектор синуса, который имеет фильтр помех и пропускает только сигналы с периодом от 19.5 до 20.5 мс (от 48.78 Гц до 51.28 Гц).
Запланированное исправление
Исправление не планируется в ближайшее время
ERRMDM04: Повышенный износ внутренней энергонезависимой памяти
Подверженные устройства
Все модели MDM3 с прошивкой 2.2.3 и 2.2.4
Описание
Любое изменение настроек и яркости (даже при долгом нажатии, когда яркость меняется с шагом 1) происходит запись состояния каналов во внутреннюю EEPROM память. Количество циклов записи/стирания по документации более 1 млн, так что даже при такой частой записи это не опасно. Однако, скорость износа нерационально высока.
Запланированное исправление
Исправлено в 2.3.0
Интервал записи не чаще чем 1 раз в секунду.
ERRMDM05: Неверная интерполяция кривой диммирования на краях диапазона
Подверженные устройства
Все модели MDM3 с прошивкой до 2.3.2
Описание
Сырое значение ШИМ при яркости 1% могло отличаться от заданного в настройках значения минимальной яркости в большую сторону.
Запланированное исправление
Исправлено в 2.3.2
Значение ШИМ при яркости 1% в точности соответствует настройке.
ERRMDM06: Полное открытие ключей при малых значениях Raw Duty
Подверженные устройства
Все модели MDM3 с прошивкой до 2.3.2
Описание
При записи вручную в регистры Raw Duty (holding 90 - 92) значений меньше 220 (при заднем фронте) или 320 (при переднем фронте) силовые ключи фактически открывались на 100%.
Запланированное исправление
Исправлено в 2.3.3
Запись малых значений в Raw Duty не приводит к полному открытию ключей
ERRMDM07: Свечение светодиодных ламп при выключенном канале
Подверженные устройства
Все модели MDM3 до партии v2.7A включительно.
Описание
У некоторых светодиодных ламп наблюдается слабое свечение при полностью выключенном канале диммера.
Причины и подробное описание
Из-за емкости и остаточной проводимости силовых транзисторов и защитного диода возникает небольшой ток утечки, порядка 50-100 мкА. Этот ток вызывает у некоторых светодиодных ламп слабое свечение.
Пути обхода
- Использовать другие лампы.
- Подключить выводной резистор 1-2 МОм между выходом Out и нейтралью N.
Запланированное исправление
С партии v2.7B устанавливается резистор 1 МОм между N и Out.
В версии v2.8 будет стоять RC цепь.
ERRMDM08: Ошибки в обмене на скорости 115200 бит/с при 100 % яркости
Подверженные устройства
WB-MDM3 с прошивками 2.5.0 и 2.5.1.
Описание
Ошибки в обмене возникают, если одновременно выполнены условия:
- Скорость обмена 115200 бит/с .
- На клеммы L и N подано сетевое напряжение.
- Выбран режим диммирования по заднему фронту.
- Один или несколько каналов включены, а яркость на них установлена на 100 %.
Причины и подробное описание
Из-за неверной логики при 100% яркости внутренний цикл программы занимал все ресурсы МК, из-за чего обмен по modbus на больших скоростях происходил с ошибками.
Запланированное исправление
Исправлено в прошивке 2.5.2
ERRMDM09: Не работают счетчики замыканий для входов 4-6
Подверженные устройства
WB-MDM3 с прошивками от 2.6.0 до 2.6.5 включительно.
Описание
Из-за ошибки в прошивки диммера значения счетчиков замыканий для входов 4-6 (регистры 35, 36, 37) не увеличивались и всегда равнялись нулю.
Запланированное исправление
Исправлено в прошивке 2.6.6
ERRMDM10: Не обрабатывается срабатывание аппаратной защиты по току
Подверженные устройства
WB-MDM3 с прошивками от 2.5.3 до 2.6.3 включительно.
Описание
Из-за ошибки в прошивке отсутствует программная обработка срабатывания аппаратной защиты по току. Не выставляется значение регистра "Перегрузка по току".
При нормальной работе ошибка никак себя не проявляет. Но при возникновении КЗ или перегрузки по току происходит срабатывание защиты и аппаратное отключение нагрузки. Однако из-за отсутствия программной обработки нагрузка включается обратно с задержкой ~200 мс и без плавного старта, что может вызвать большие пусковые токи, циклическое срабатывание защиты и перегрев (в некоторых случаях - выход из строя) диммера.
Прошивки 2.5.3 - 2.6.3 включительно не рекомендуются к использованию.
Запланированное исправление
Исправлено в прошивке 2.6.4
ERRMDM11: Задержка при выключении канала, работающего в ключевом режиме
Подверженные устройства
WB-MDM3 с прошивкой 2.7.0
Описание
Из-за ошибки в прошивке выключение канала, работающего в ключевом режиме, происходит с задержкой, если в регистре яркости данного канала записано более 1%.
Это связано с тем, что в ключевом режиме продолжает работать "фейдер" и плавно уменьшает яркость канала при выключении. При этом фактически канал выключается, когда яркость дойдёт до 0 и всё это время продолжает работать на максимальной яркости.
Обойти данное поведение можно следующими путями:
- обновить прошивку до 2.7.1
- установить значение яркости канала, работающего в ключевом режиме, на 1%. Управлять каналом через coil-регистр, либо через регистр яркости, меняя его значение между 0 и 1
- установить в регистре "Скорость канала при уменьшении яркости" значение 0
Запланированное исправление
Исправлено в прошивке 2.7.1
ERRMDM12: Зависание устройства при определенных комбинациях настроек
Подверженные устройства
WB-MDM3 с прошивкой от 2.7.0 до 2.9.1 включительно
Описание
Из-за ошибки в прошивке, если записать значение нижнего порога диммирования больше, чем верхнего порога диммирования и включить канал, диммер зависал и перезагружался по watchdog. Такое же поведение при записи значения 0 в верхний и нижний пороги диммирования.
Пути обхода
Значение нижнего порога диммирования должно быть меньше, чем верхнего порога диммирования. Также эти значения не должны быть равными 0 одновременно. Менять значения следует при выключенном канале.
Запланированное исправление
Исправлено в прошивке 2.9.2
ERRMDM13: Значение яркости при первом включении диммера равно 0
Подверженные устройства
WB-MDM3 с прошивкой от 2.8.0 до 2.9.1 включительно
Описание
Из-за ошибки в прошивке, значение яркости по умолчанию было 0 вместо 50.
Запланированное исправление
Исправлено в прошивке 2.9.2
ERRMDM14: Нельзя записать значение таймаута безопасного режима более 255 с
Подверженные устройства
WB-MDM3 с прошивкой от 2.8.0 до 2.9.1 включительно
Описание
Из-за ошибки в прошивке, регистр 8 (таймаут потери связи при переходе в безопасный режим) принимает значения только от 1 до 255 вместо 1 - 65534.
Запланированное исправление
Исправлено в прошивке 2.9.2
ERRMDM15: Перегрев и выход из строя при повышенном напряжении
Подверженные устройства
Все WB-MDM3 до версии 2.11
Описание
В схеме параллельно MOSFET-ключам установлены защитные TVS-диоды. Их задача — защищать ключи от пробоя при воздействии кратковременных перенапряжений. Однако энергия, которую могут поглотить TVS, ограничена.
При длительных перенапряжениях в сети (длящихся более нескольких периодов) поглощенная энергия может превысить максимально допустимую. В этом случае TVS-диоды выходят из строя — они начинают неконтролируемо проводить ток даже при номинальном сетевом напряжении. Это вызывает перегрев элементов и в некоторых случаях приводит к расплавлению корпуса устройства.
Запланированное исправление
Будет исправлено в версии 2.11