Недостоверные данные от WB-MAP12E

Здравствуйте. Установленный WB-MAP12E снимает параметры с 4-ех трехфазных линий через ТТ WB-CT309. Подключился к WB-MAP12E через преобразователь rs485 - usb. Пытаюсь снять эти параметры сторонним opc-сервером по модбасу. По напряжениям - ок, 220 ±. Данные по накопленной энергии - странные. Если я слежу за ними в течение часа - они идут верх (значение увеличивается). При интервале сутки и более значения могут уменьшиться. При пересчете по данным из таблицы регистров №4608, 8704, 12800, 16896 (суммарная активная прямая энергия по каналам 1…4 соотвественно) х10Е-5, кВт·ч х 2000 (коэф.WB-CT309) тоже недостоверные приросты энергии получаются. Может, я в настрояках тегов что то неверно указал?

Вы, надеюсь, считываете по 4 регистра, чтобы получить беззнаковое 64-х битное число?
4608, 4609, 4610, 4611 - общая активная энергия для первого канала
8704, 8705, 8706, 8707 - для второго канала…

не оч понимаю, о чем речь, но мне кажется - нет, считываю только один регистр :roll_eyes:. настройки тега - во вложении

Да, на скриншоте чтение одного регистра.
Данные о энергии у WB-MAP12E сохраняются как 64-х битное число. Один регистр modbus имеет разрядность 16 бит.
Т.е. чтобы получить значение u64 необходимо считать четыре регистра (16 х 4 = 64).

Посмотрите, какие варианты (там где у вас выпадающий список с “word” - word - это 16 битное беззнакокове число) есть у вашего софта.


Найдите там вариант с 64 битами (размер в регистрах должно стать 4 )

посмотрите подробности здесь - WB-MAP12E: измеряемые и вычисляемые величины — Wiren Board

Порядок байт, широкие регистры, вычисление значения

Некоторые измеряемые счётчиками значения занимают больше 16 бит — размера одного регистра Modbus. Такие значения записываются в нескольких расположенных подряд регистрах: 32-битные в двух регистрах, а 64-битные — в четырёх. Некоторое стороннее ПО, например, ioBroker, воспринимают Signed 32 little endian, как signed 32 big endian word swap. Если у вас не сходятся расчётные результаты с показаниям в вашем софте — смените там тип.

В таблицах ниже для таких регистров указаны типы u32, u64 (без знака), s32 и s64 (со знаком). В качестве адреса в таблице указан адрес первого из идущих подряд регистров.

Порядок регистров при декодировании может быть…

и далее по тексту

Добрый день!
Еще добавлю, что в карте регистров следует учитывать версию прошивки WB-MAP12E, указанную в столбце FW.

Спасибо. Тип данных сменил на int64, размер в регистрах соответственно =4. Посмотрите еще формат данных в выпадающем списке. little endian значит последнюю строку? 76543210

Не совсем понятно, как именно нумеруются байты в данном софте (где в этой цепочке младший/старший), но скорее всего так
![Изображение содержит таблицу и пояснения, касающиеся чтения Modbus-регистров устройства с адресами 0x2200, 0x2201 и 0x2202, а также расчетами для получения итогового значения энергии. (Captioned by AI)|690x433]

PS Подправил картинку - заметил опечатку.

1 Like

Добрый день!

Код функции для чтения Input - регистров рекомендую выбирать 4 - Read input Registers.
В данном случае формат – u64 little endian, значит обратный порядок представления разрядов.

Перед настройкой обмена с вашим сервером попробуйте сначала считать через утилиту «modbus_client».

Дмитрий, спасибо, я тоже думал получить значение переменной другим сервером и подогнать настройки моего. С модбас_клиентом не получилось установить связь, простите )))

vag, попробовал формат 67452301, значение переменной получилось минусовым. наверное все таки 01234567, подрынькаю еще :roll_eyes:
Еще вопрос: для перевода в реальную величину значение тега делим на 1Е5 (100000), и, так как WB-MA12E подключен через ТТ WV-CT309, то умножаем на 2000. итого переводной коэффициент = 0,02. Верно?

Вполне возможно, я не знаю. как данный софт обозначает младшие/старшие разряды и начало/конец последовательности. Поэтому варианты вполне возможны.
Пример моего “рассуждения” указал на картинке выше…

для u64 (целое беззнаковое) отрицательных значение быть не может при любом сочетании… Однако если вы получили отрицательное значение, то это говорит о том, что старший бит всей последовательности установлен в 1, что u64 - слишком большое значение от 2 в степени 63 до 2 в степени 64.
Это говорит о неправильно выбранной последовательности, возможно действительно будет 01234567 (т.е. 01 - это регистр 0x2203 = 8407 в понимании вашего устройства).
В примере выше (я исходил из него) - это регистр 0x2200 = 8404
Справочно
u64
u - unsigned (без знаковое, т.е. только положительные значения)
s - signed (знаковое, значения получаются как положительные так и отрицательные)

верно

Нет. домножать ничего не нужно.

Для коэф. трансформации есть отдельные регистры - это значение нужно внести туда
см. Многоканальный счётчик электроэнергии WB-MAP12E — Wiren Board

В частности, регистры для настройки трансформаторов указаны здесь - Таблица управляющих Modbus-регистров для счётчиков электроэнергии WB-MAP3E(T), WB-MAP12E — Wiren Board

Товарищи, возвращаясь к подгону настроек тега к достоверным значениям: если WB-MAP12E я подключу к контроллер WB7, и зайду в его веб-интефейс, там будет уже реальное готовое число? - активная энергия входящая, накопленная с момента прошивки

Да, там вы сразу увидите готовые “конечные” значения всех измеряемых величин.
Только предварительно в настройках WB-MA12E необходимо будет указать параметры всех подключенных трансформаторов тока (коэф. трансформации и фазовую задержку)

1 Like

Подключился к контроллеру WB7, в веб-интерфейсе нашел 4 устройства WB-MAP12E. Вопрос:

  1. все 4 вкладки - относятся к одному устройству? Если да, то…
  2. я скопировал все данные из них в один текстовый дкоумент, в котором оказались 4 разных значения
    Ch 1 AP energy L1
    10827 .678460кВтч
    Ch 1 AP energy L1
    1198 .765000кВтч
    Ch 1 AP energy L1
    3444 .186860кВтч
    Ch 1 AP energy L1
    1440 .000220кВтч
  3. Почему при отсоединении MAP12E от контроллера по связи RS485 данные в веб-интерфейсе не обнуляются? текущие параметры - токи, напряжения и мощность - не нулевые
  4. мы как то можем отследить, что связь между контроллером и MAP12E есть, и данные в веб-интерфейсе - актуальные?

Добрый день!

4 вкладки относятся к 4-м счетчикам соответственно. 28, 45, 83 и 90 - это их адреса. Поэтому вы видите разные значения из Ch 1 AP energy L1 каждого прибора.

При отключении прибора в WEB отображается последнее считанное значение – это нормально, так задана логика работы.

При потере связи между контроллером и устройством или при возникновении ошибок при чтении тех или иных параметров устройства - эти значения или все устройство в вэб интерфейсе отображается красным.
Вот, например. я отключил (сменил параметры порта на неправильные, т.е. в итоге потерял связь с данным устройством) MAP3E и его значения в вэб интерфейсе “покраснели”.

А здесь только некоторые параметры не читаются/имеют ошибки при обращении к регистрам

все красные ) Что я делаю не так?

Вы подключились к первому порту RS485/
Какие у вас настройки этого порта? Совпадают ли они с настройками вашего устройства?

Верно ли указаны настройки вашего MAP12Е на данном порту (адрес устройства (у вас на фото это 28) и его шаблон)?

Ваше устройство должно находится (в настройках) в списке для RS485-1 (именно к нему оно у вас подключено на фото). Должно иметь правильный адрес (28) и для него выбран правильный шаблон.

На моем скриншоте МАР3Е подключен к порту на MOD2 (и физически это устройство так же подключено именно к этому порту). У вас же оно должно быть “выше”. Т.е. не так как на моем скриншоте. И шаблон устройства у вас должен быть WB-MAP12E fw2 (многоканальный счетчик электроэнергии) . Надеюсь версия прошивки у вашего устройства выше 2.10.0