Wbincludes:MAP Data Registers Preface
Детальное описание погрешностей: Счетчики WB-MAP: измеряемые параметры и погрешности, их названия в веб-интерфейсе Wiren Board.
Обозначения в шаблонах
В таблицах регистров, описывающих измеряемые величины, используются следующие обозначения.
Для энергий (AP, AN, RP, RN, S, NP, NN): первая буква (A, R, S, N) — тип энергии, второй — направление:
- A — активная;
- R — реактивная;
- S — кажущаяся, вычисляется как URMS * 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-битные — в четырёх.
В таблицах ниже для таких регистров указаны типы u32, u64 (без знака), s32 и s64 (со знаком). В качестве адреса в таблице указан адрес первого из идущих подряд регистров.
Порядок регистров при декодировании может быть прямым (big-endian) и обратным (little-endian). При этом порядок двух байт внутри одного 16-битного регистра всегда прямой, в соответствии со стандартом.
Пример: считываем четыре регистра 0x2200 – 0x2203:
Номер регистра |
0x2200 | 0x2201 | 0x2202 | 0x2203 |
---|---|---|---|---|
Содержимое регистра | 0хb4df | 0x0dff | 0x0000 | 0x0000 |
Смотрим в таблицу регистров:
Регистр / адрес (hex) | Тип | Разрядность | Порядок регистров | Формат | Множитель | Параметр | Назначение | Единицы измерения | Прошивка |
---|---|---|---|---|---|---|---|---|---|
0x2200 | input | u64 | little endian | (power_consumption) | 1e-05 | Ch 2 Total AP energy | Суммарная прямая активная энергия для канала 2 | кВт·ч | 2.1 |
Порядок регистров little-endian — значит, регистры идут от младшего к старшему. Поэтому регистры объединяются в шестнадцатеричное число 0x0000 0000 0dff b4df
, оно же 234861791 в десятичной системе счисления. Для вычисления энергии нужно умножить его на 10-5, поэтому в итоге получаем 2348.61791 кВт·ч.
Другими словами, чтобы получить итоговое число:
- 0x2200
- младшая часть — значение оставляем «как есть»
- 0x2201
- значение умножаем на 216 (на 65536)
- 0x2202
- значение умножаем на 232 (на 4294967296)
- 0x2203
- значение умножаем на 248 (на 281474976710656)
Суммируем результаты. Сумму умножаем на 0.00001 (переносим запятую на 5 знаков влево).