Wbincludes:MAP Data Registers Preface: различия между версиями
Brainroot (обсуждение | вклад) |
м (Поправил типографику и орфографию.) |
||
Строка 4: | Строка 4: | ||
В таблицах регистров, описывающих измеряемые величины, используются следующие обозначения. | В таблицах регистров, описывающих измеряемые величины, используются следующие обозначения. | ||
Для энергий (AP, AN, RP, RN, S, NP, NN): первая буква (A, R, S, N) | Для энергий (AP, AN, RP, RN, S, NP, NN): первая буква (A, R, S, N) — тип энергии, второй — направление: | ||
* '''A''' — активная; | * '''A''' — активная; | ||
Строка 12: | Строка 12: | ||
Направление: | Направление: | ||
* '''P''' | * '''P''' — прямая (positive); | ||
* '''N''' | * '''N''' — обратная (negative). | ||
'''В таблице описания регистров термин | '''В таблице описания регистров термин «Суммарная/суммарный» означает, что параметр вычисляется для всех трех фаз трехфазного канала.''' | ||
В случае с расхождением данных в таблице с шаблоном устройства, верным значением регистра считайте соответствующее значение из шаблона. Текущие версии шаблонов находятся [https://github.com/contactless/wb-mqtt-serial/tree/master/wb-mqtt-serial-templates по этой ссылке]. | В случае с расхождением данных в таблице с шаблоном устройства, верным значением регистра считайте соответствующее значение из шаблона. Текущие версии шаблонов находятся [https://github.com/contactless/wb-mqtt-serial/tree/master/wb-mqtt-serial-templates по этой ссылке]. | ||
Строка 24: | Строка 24: | ||
<!--Дополнительные обозначения: | <!--Дополнительные обозначения: | ||
* + ALL HARMONICS — шаблон со всеми регистрами, хранящими значения гармоник тока и напряжения | * + ALL HARMONICS — шаблон со всеми регистрами, хранящими значения гармоник тока и напряжения | ||
* + HARMONICS — шаблон | * + HARMONICS — шаблон с первыми 15 регистрами, хранящими значения гармоник тока и напряжения | ||
* BASIC — шаблон с основными параметрами | * BASIC — шаблон с основными параметрами | ||
* BASIC DIV 2/4/8 — шаблон с основными параметрами для счетчиков коэффициентами деления для токовых трансформаторов, рассчитанных на большие токи. (8 — трансформаторы 400 А, 4 — 200 А). Предполагается, что на всех каналах | * BASIC DIV 2/4/8 — шаблон с основными параметрами для счетчиков коэффициентами деления для токовых трансформаторов, рассчитанных на большие токи. (8 — трансформаторы 400 А, 4 — 200 А). Предполагается, что на всех каналах установлены одинаковые трансформаторы. --> | ||
Версию прошивки счетчика можно проверить командой | Версию прошивки счетчика можно проверить командой | ||
< | <syntaxhighlight lang="bash”> | ||
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 '' | 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 '' | ||
</ | </syntaxhighlight> | ||
Здесь $mbusaddr | |||
Здесь <code>$mbusaddr</code> — Modbus-адрес счетчика. | |||
==== Порядок байт, широкие регистры, вычисление значения ==== | ==== Порядок байт, широкие регистры, вычисление значения ==== | ||
Некоторые | Некоторые измеряемые счётчиками значения занимают больше 16 бит — размера одного регистра Modbus. Такие значения записываются в нескольких расположенных подряд регистрах: 32-битные в двух регистрах, а 64-битные — в четырёх. | ||
В таблицах ниже для таких регистров указаны типы u32, u64 (без знака), s32 и s64 (со знаком). В качестве адреса в таблице указан адрес первого из подряд | В таблицах ниже для таких регистров указаны типы u32, u64 (без знака), s32 и s64 (со знаком). В качестве адреса в таблице указан адрес первого из идущих подряд регистров. | ||
Порядок '''регистров''' при декодировании может быть | Порядок '''регистров''' при декодировании может быть прямым (big-endian) и обратным (little-endian). При этом порядок двух '''байт''' внутри одного 16-битного регистра всегда прямой, в соответствии со стандартом. | ||
Пример: считываем четыре регистра 0x2200 | Пример: считываем четыре регистра 0x2200 – 0x2203: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Строка 73: | Строка 74: | ||
|- | |- | ||
|} | |} | ||
Порядок регистров little-endian | Порядок регистров little-endian — значит, регистры идут от младшего к старшему. Поэтому регистры объединяются в итоговое число 0x0000 0000 0dff b4df, оно же 234861791. Для вычисления энергии нужно умножить его на 10<sup>-5</sup>, поэтому в итоге получаем 2348.61791 кВт·ч. | ||
Другими словами, чтобы получить итоговое число: | Другими словами, чтобы получить итоговое число: | ||
; 0x2200 | ; 0x2200 | ||
: '''младшая часть''' значение оставляем | : '''младшая часть''' значение оставляем «как есть» | ||
; 0x2201 | ; 0x2201 | ||
: значение умножаем на 2 | : значение умножаем на 2<sup>16</sup> (на 65536) | ||
; 0x2202 | ; 0x2202 | ||
: значение умножаем на 2 | : значение умножаем на 2<sup>32</sup> (на 4294967296) | ||
; 0x2203 | ; 0x2203 | ||
: значение умножаем на 2 | : значение умножаем на 2<sup>48</sup> (на 281474976710656) | ||
Суммируем результаты. | Суммируем результаты. | ||
Сумму умножаем на 0,00001 (переносим запятую на 5 знаков влево). | Сумму умножаем на 0,00001 (переносим запятую на 5 знаков влево). |
Версия 09:08, 7 декабря 2020
Детальное описание погрешностей: Счетчики 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 знаков влево).