Тема: Проверка пересчёта входа 4–20 мА на WB-MAI2-mini/CC

Запрос инженерам Wiren Board

Тема: Проверка пересчёта входа 4–20 мА на WB-MAI2-mini/CC

Добрый день!

Прошу проверить корректность измерения и пересчёта входа 4–20 мА на модуле WB-MAI2-mini/CC.

Оборудование и программное окружение

Контроллер: Wiren Board 7
Имя хоста: wirenboard-AS7LPCZ4
Архитектура: armv7l
ОС: Debian GNU/Linux 11 (bullseye)
Ядро: 5.10.35-wb180
Релиз: stable~wb7+bullseye~20260814091500
Пакет загрузчика: wb-bootlet-wb7x 5.10.35-wb182-fs1.5.4-deb11-202512150209
Версия прошивки WB-MAI2-mini/CC: 4.33.2

Основные версии пакетов контроллера:

wb-configs                  3.50.2-wb100
wb-device-manager           1.25.4
wb-hwconf-manager           1.71.6
wb-mqtt-serial               2.248.1-wb107
wb-rules                     2.40.0-wb100
wb-mqtt-db                   2.9.3
wb-homeui-backend            2.208.1-wb102
wb-mqtt-homeui               2.208.1-wb102
wb-mcu-fw-flasher            1.6.1
wb-mcu-fw-updater             1.14.4

Полный вывод dpkg-query -W 'wb-*' готов предоставить дополнительно.

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

Modbus-адрес модуля: 189
Канал: вход 1
Режим входа: 4–20 мА
Пересчёт: 0…16
Измеренный мультиметром ток: 4.981 мА
Значение, возвращаемое модулем после пересчёта: 1.315

Для линейного пересчёта 4–20 мА → 0…16 при токе 4.981 мА ожидается значение примерно 0.981, поэтому наблюдается расхождение около 0.334. При изменении границ пересчёта расхождение увеличивается.

Данные чтения Modbus

Holding registers, адреса 8–13:
0x0002 0x0002 0x0000 0x0000 0x3e80 0x2710

Input registers, адреса 0–3:
0x1375 0x0000 0x0523 0x7fff

Прошу уточнить:

  1. Какое сырое значение тока и какое значение после пересчёта должны соответствовать 4.981 мА при настройке 4–20 мА → 0…16?

  2. Корректны ли выбранные типы Modbus-регистров, адреса и порядок слов для данной версии прошивки модуля?

  3. Может ли расхождение быть связано с ошибкой пересчёта в прошивке 4.33.2, конфигурацией wb-configs или обработкой значения пакетами wb-mqtt-serial/wb-device-manager?

Добрый день!

Спасибо за подробные данные, отвечаю по пунктам:

  1. При токе 4.981 мА и пересчёте 4–20 мА → 0…16 ожидаемые значения такие: сырой ток в input-регистре 0 — 4981 (регистр отдаёт ток в мкА), значение после пересчёта в input-регистре 2 — около 981, что в веб-интерфейсе отображается как 0.981. Формулы пересчёта с примерами приведены на странице. У вас регистр 0 показывает ровно 4981, то есть измерение тока корректно и совпадает с вашим мультиметром.

  2. Регистры выбраны верно: input 0/1 — ток каналов в мкА, input 2/3 — значение после пересчёта, holding 8/9 — режим входа (2 — датчик 4–20 мА), holding 10–13 — границы пересчёта. Настройки у вас записаны правильно: режим 4–20 мА, границы 0 и 16000 для первого канала. Карта регистров.

  3. Пакеты контроллера (wb-mqtt-serial, wb-configs) здесь не участвуют: пересчёт выполняется внутри самого модуля, драйвер только читает готовое значение из регистра 2. Судя по вашим данным, значение после пересчёта (1315) соответствует току 5.315 мА, хотя сам модуль в этот же момент измеряет 4.981 мА — то есть расхождение возникает именно в пересчёте прошивки. Это же объясняет, почему при расширении границ пересчёта расхождение растёт.

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

Можете, пожалуйста, замерить несколько контрольных точек: задайте на вход 3–4 разный ток (например, около 4, 8, 12 и 20 мА) и для каждого снимите одновременно значения input-регистров 0 и 2, как вы уже делали, вместе с показаниями мультиметра. Если есть возможность, повторите проверку на втором канале с тем же источником тока — это поможет понять, затронут ли только один канал.

Также прошу прислать серийный номер модуля.

Добрый день. Объёмистый отчет получится, его файлом (например в word или pdf) к Вам забросить нельзя будет?

Можно, либо таблицей Ексель, как вариант

Уже готова pdf. Надеюсь, что все сделал правильно.

Данные для анализа.pdf (183,3 КБ)

Спасибо за контрольные замеры.

Что видно по измерениям: ток во всех точках измеряется корректно (регистры 0/1 совпадают с уставками генератора), а пересчитанное значение модуль вычисляет неверно, причём одинаково на обоих каналах. Ошибка линейная: около +0.38 на 4 мА, ноль на 12 мА, около −0.38 на 20 мА. Все ваши точки точно описываются одной формулой: прошивка интерполирует заданную шкалу по токовому диапазону 3.6–20.4 мА вместо 4–20 мА. Это явно ошибка пересчета, передам ее разработчикам.

Как временное решение можно компенсировать ошибку сдвигом границ пересчёта. Для вашей шкалы 0…16 вместо 0 и 16 задайте −0.4 и 16.4. Тогда при 4 мА модуль выдаст 0.000, при 20 мА — 16.000, в вашей точке 4.981 мА — 0.981. Очевидно, это маскировка ошибки, нужно исправлять прошивку.

Еще подскажите, пожалуйста, проблема появилась после обновления прошивки? Как давно обнаружили?

Да, проблема обнаружилась сразу, появилась после обновления прошивки, до обновления стояла версия прошивки актуальная на осень 2025 года, этой функции там естественно не было.

Обновления установлено позавчера

Спасибо большое за информацию!

Как временное решение предлагаю пока подвигать границы, как предлагал выше.

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

Спасибо за вариант, ждём исправления прошивки.

Добрый день!

Коллеги исправили ошибку, доступно в версии 4.33.4.

Добрый день. Спасибо, вижу, к сожалению в ближайшем времени нет возможности проверить прошивку. Вполне возможно, что придется ждать стабильной версия. Ещё раз спасибо.