Wbincludes:MAP Data Registers Preface: различия между версиями

Материал из Wiren Board
м (Поправил типографику и орфографию.)
Строка 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''' - прямая (positive);
* '''P''' прямая (positive);
* '''N''' - обратная (negative).
* '''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 — шаблон со первыми 15 регистрами, хранящими значения гармоник тока и напряжения
* + HARMONICS — шаблон с первыми 15 регистрами, хранящими значения гармоник тока и напряжения
* BASIC — шаблон с основными параметрами
* BASIC — шаблон с основными параметрами
* BASIC DIV 2/4/8 — шаблон с основными параметрами для счетчиков коэффициентами деления для токовых трансформаторов, рассчитанных на большие токи. (8 — трансформаторы 400 А, 4 — 200 А). Предполагается, что на всех каналах устанавливаются одинаковые трансформаторы. -->
* BASIC DIV 2/4/8 — шаблон с основными параметрами для счетчиков коэффициентами деления для токовых трансформаторов, рассчитанных на большие токи. (8 — трансформаторы 400 А, 4 — 200 А). Предполагается, что на всех каналах установлены одинаковые трансформаторы. -->


Версию прошивки счетчика можно проверить командой  
Версию прошивки счетчика можно проверить командой  
<pre>
<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 ''
</pre>
</syntaxhighlight>
Здесь $mbusaddr -- Modbus-адрес счетчика.
 
Здесь <code>$mbusaddr</code> — Modbus-адрес счетчика.


==== Порядок байт, широкие регистры, вычисление значения ====
==== Порядок байт, широкие регистры, вычисление значения ====
Некоторые значения, измеряемые счётчиками, занимают больше 16 бит - размера одного регистра Modbus. Такие значения записываются в нескольких подряд расположенных регистрах: 32-битные в двух регистрах, а 64-битные - в четырёх.  
Некоторые измеряемые счётчиками значения занимают больше 16 бит размера одного регистра Modbus. Такие значения записываются в нескольких расположенных подряд регистрах: 32-битные в двух регистрах, а 64-битные в четырёх.  


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


Порядок '''регистров''' при декодировании может быть прямой (big-endian) и обратный (little-endian). При этом порядок двух '''байт''' внутри одного 16-битного регистра всегда прямой в соответствии со стандартом.
Порядок '''регистров''' при декодировании может быть прямым (big-endian) и обратным (little-endian). При этом порядок двух '''байт''' внутри одного 16-битного регистра всегда прямой, в соответствии со стандартом.


Пример: считываем четыре регистра 0x2200 - 0x2203:
Пример: считываем четыре регистра 0x2200 0x2203:
{| class="wikitable"  
{| class="wikitable"  
|-
|-
Строка 73: Строка 74:
|-
|-
|}
|}
Порядок регистров little-endian - значит, регистры идут от младшего к старшему. Поэтому регистры объединяются в итоговое число 0x0000 0000 0dff b4df, оно же 234861791. Для вычисления энергии нужно умножить его на 10<sup>-5</sup>, поэтому в итоге получаем 2348.61791 кВт·ч.
Порядок регистров little-endian значит, регистры идут от младшего к старшему. Поэтому регистры объединяются в итоговое число 0x0000 0000 0dff b4df, оно же 234861791. Для вычисления энергии нужно умножить его на 10<sup>-5</sup>, поэтому в итоге получаем 2348.61791 кВт·ч.


Другими словами, чтобы получить итоговое число:
Другими словами, чтобы получить итоговое число:
; 0x2200
; 0x2200
: '''младшая часть''' значение оставляем "как есть"
: '''младшая часть''' значение оставляем «как есть»
; 0x2201
; 0x2201
: значение умножаем на 2^16 (на 65536)
: значение умножаем на 2<sup>16</sup> (на 65536)
; 0x2202
; 0x2202
: значение умножаем на 2^32 (на 4294967296)
: значение умножаем на 2<sup>32</sup> (на 4294967296)
; 0x2203
; 0x2203
: значение умножаем на 2^48 (на 281474976710656)
: значение умножаем на 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 знаков влево).