Для линейного пересчёта 4–20 мА → 0…16 при токе 4.981 мА ожидается значение примерно 0.981, поэтому наблюдается расхождение около 0.334. При изменении границ пересчёта расхождение увеличивается.
Какое сырое значение тока и какое значение после пересчёта должны соответствовать 4.981 мА при настройке 4–20 мА → 0…16?
Корректны ли выбранные типы Modbus-регистров, адреса и порядок слов для данной версии прошивки модуля?
Может ли расхождение быть связано с ошибкой пересчёта в прошивке 4.33.2, конфигурацией wb-configs или обработкой значения пакетами wb-mqtt-serial/wb-device-manager?
При токе 4.981 мА и пересчёте 4–20 мА → 0…16 ожидаемые значения такие: сырой ток в input-регистре 0 — 4981 (регистр отдаёт ток в мкА), значение после пересчёта в input-регистре 2 — около 981, что в веб-интерфейсе отображается как 0.981. Формулы пересчёта с примерами приведены на странице. У вас регистр 0 показывает ровно 4981, то есть измерение тока корректно и совпадает с вашим мультиметром.
Регистры выбраны верно: input 0/1 — ток каналов в мкА, input 2/3 — значение после пересчёта, holding 8/9 — режим входа (2 — датчик 4–20 мА), holding 10–13 — границы пересчёта. Настройки у вас записаны правильно: режим 4–20 мА, границы 0 и 16000 для первого канала. Карта регистров.
Пакеты контроллера (wb-mqtt-serial, wb-configs) здесь не участвуют: пересчёт выполняется внутри самого модуля, драйвер только читает готовое значение из регистра 2. Судя по вашим данным, значение после пересчёта (1315) соответствует току 5.315 мА, хотя сам модуль в этот же момент измеряет 4.981 мА — то есть расхождение возникает именно в пересчёте прошивки. Это же объясняет, почему при расширении границ пересчёта расхождение растёт.
У вас установлена актуальная стабильная прошивка 4.33.2, и среди опубликованных известных ошибок устройства такой неисправности нет, поэтому обновление здесь не поможет. Возможно наткнулись на баг
Можете, пожалуйста, замерить несколько контрольных точек: задайте на вход 3–4 разный ток (например, около 4, 8, 12 и 20 мА) и для каждого снимите одновременно значения input-регистров 0 и 2, как вы уже делали, вместе с показаниями мультиметра. Если есть возможность, повторите проверку на втором канале с тем же источником тока — это поможет понять, затронут ли только один канал.
Что видно по измерениям: ток во всех точках измеряется корректно (регистры 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 года, этой функции там естественно не было.
Добрый день. Спасибо, вижу, к сожалению в ближайшем времени нет возможности проверить прошивку. Вполне возможно, что придется ждать стабильной версия. Ещё раз спасибо.