Счётчики электроэнергии серии MAP: таблица Modbus-регистров измеряемых и вычисляемых величин
Детальное описание погрешностей: Счетчики WB-MAP: измеряемые параметры и погрешности, их названия в веб-интерфейсе Wiren Board.
Служебные регистры — серийный номер, номер партии, версия прошивки, напряжение питания и температура микроконтроллера, настройки порта RS-485: Счетчики WB-MAP: параметры подключения, версия прошивки и другие служебные регистры.
Обозначения в шаблонах
В таблицах регистров, описывающих измеряемые величины, используются следующие обозначения.
Для энергий (AP, AN, RP, RN, S, NP, NN): первая буква (A, R, S, N) — тип энергии, второй — направление:
- A — активная;
- R — реактивная;
- S — кажущаяся, вычисляется как URMS x IRMS;
- N — неактивная.
Направление:
- P — прямая (positive);
- N — обратная (negative).
В таблице описания регистров термин «Суммарная/суммарный» означает, что параметр вычисляется для всех трех фаз трехфазного канала. В случае с расхождением данных в таблице с шаблоном устройства, верным значением регистра считайте соответствующее значение из шаблона. Текущие версии шаблонов находятся по этой ссылке.
Примечания к названиям таблиц регистров
Таблицы регистров соответствуют шаблонам для счетчиков.
Версию прошивки счетчика можно проверить командой
echo -e `modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a$mbusaddr -t0x03 -r250 -c 16 | grep Data | sed -e 's/0x00/\x/g' -e 's/Data://' -e 's/s//g'`| xxd -r -p && echo ''
Здесь $mbusaddr — Modbus-адрес счетчика.
Порядок байт, широкие регистры, вычисление значения
Некоторые измеряемые счётчиками значения занимают больше 16 бит — размера одного регистра Modbus. Такие значения записываются в нескольких расположенных подряд регистрах: 32-битные в двух регистрах, а 64-битные — в четырёх. Некоторое стороннее ПО, например, ioBroker, воспринимают Signed 32 little endian, как signed 32 big endian word swap. Если у вас не сходятся расчётные результаты с показаниям в вашем софте — смените там тип.
В таблицах ниже для таких регистров указаны типы u32, u64 (без знака), s32 и s64 (со знаком). В качестве адреса в таблице указан адрес первого из идущих подряд регистров.
Порядок регистров при декодировании может быть прямым (big-endian) и обратным (little-endian). При этом порядок двух байт внутри одного 16-битного регистра всегда прямой, в соответствии со стандартом.
Словам в столбце «Формат» соответствуют такие раскладки четырёх байт, где A — старший байт, D — младший:
| В таблице | Раскладка | Как склеивать |
|---|---|---|
| big endian | ABCD | первым идёт старшее слово |
| little endian | CDAB | первым идёт младшее слово, байты внутри каждого слова прямые |
Это важно, если счётчик опрашивает не контроллер Wiren Board, а сторонний ПЛК или SCADA. В них под «little endian» нередко понимают DCBA — перевёрнутыми все четыре байта. У счётчиков WB-MAP это не так: переставлены только слова, байты внутри слова стандартные.

Регистры с типом Input читаются функцией 0x04, с типом Holding — функцией 0x03.
Пример для 32-битного значения. Оно занимает два соседних регистра: в первом 0xFAF0, во втором 0x0002. Младшее слово идёт первым, поэтому число — 0x0002FAF0, то есть 195312; дальше его умножают на множитель из столбца «Значения». Если те же байты склеить как DCBA, получится 0x0200F0FA = 33616122 — в 172 раза больше: такая ошибка видна сразу по бессмысленному результату.
Пример: считываем четыре регистра 0x2200 – 0x2203:
| Номер регистра |
0x2200 | 0x2201 | 0x2202 | 0x2203 |
|---|---|---|---|---|
| Содержимое регистра | 0xb4df | 0x0dff | 0x0000 | 0x0000 |
Смотрим в таблицу регистров:
| Адрес | Параметры регистра | Описание | Значения | FW | |||
|---|---|---|---|---|---|---|---|
| Dec | Hex | Тип | Доступ | Формат | |||
| 8704 | 0x2200 | Input | RO | u64 little endian |
Ch 2 Total AP energy Суммарная прямая активная энергия для канала 2 |
x10−5, кВт·ч | 2.1 |
Порядок регистров little-endian — значит, регистры идут от младшего к старшему. Поэтому регистры объединяются в шестнадцатеричное число 0x0000 0000 0dff b4df, оно же 234861791 в десятичной системе счисления. Для вычисления энергии нужно умножить его на число в столбце «Значения» (10−5 = 0.00001), поэтому в итоге получаем 2348.61791 кВт·ч.
Другими словами, чтобы получить итоговое число:
- 0x2200
- младшая часть — значение оставляем «как есть»: 0xb4dfhex = 46303dec
- 0x2201
- значение умножаем на 216: 0x0dffhex = 3583dec, 3583 x 65536 = 234815488
- 0x2202
- значение умножаем на 232: 0 x 4294967296 = 0
- 0x2203
- значение умножаем на 248: 0 x 281474976710656 = 0
Суммируем результаты: 46303 + 234815488 + 0 + 0 = 234861791. Сумму умножаем на 0.00001 (переносим точку на 5 знаков влево).
WB-MAP12E
См. Таблица регистров измеряемых и вычисляемых величин WB-MAP12E
WB-MAP12H
См. Таблица регистров измеряемых и вычисляемых величин WB-MAP12H
WB-MAP6S
См. Таблица регистров измеряемых и вычисляемых величин WB-MAP6S
WB-MAP3H
См. Таблица регистров измеряемых и вычисляемых величин WB-MAP3H
WB-MAP3E
См. Таблица регистров измеряемых и вычисляемых величин WB-MAP3E