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

Поправил ссылку
м (Поправил типографику и орфографию.)
(Поправил ссылку)
 
(не показано 14 промежуточных версий 3 участников)
Строка 1: Строка 1:
''Детальное описание погрешностей: [[Power Meter WB-MAP12H Measuring Parameters |Счетчики WB-MAP: измеряемые параметры и погрешности, их названия в веб-интерфейсе Wiren Board]].''
''Детальное описание погрешностей: [[Power Meter WB-MAP12H Measuring Parameters |Счетчики WB-MAP: измеряемые параметры и погрешности, их названия в веб-интерфейсе Wiren Board]].''


=== Обозначения в шаблонах ===
<h3> Обозначения в шаблонах </h3>
В таблицах регистров, описывающих измеряемые величины, используются следующие обозначения.
В таблицах регистров, описывающих измеряемые величины, используются следующие обозначения.


Строка 15: Строка 15:
* '''N''' — обратная (negative).
* '''N''' — обратная (negative).


'''В таблице описания регистров термин «Суммарная/суммарный» означает, что параметр вычисляется для всех трех фаз трехфазного канала.'''
{{note|note|В таблице описания регистров термин «Суммарная/суммарный» означает, что параметр вычисляется для всех трех фаз трехфазного канала.}}
В случае с расхождением данных в таблице с шаблоном устройства, верным значением регистра считайте соответствующее значение из шаблона. Текущие версии шаблонов находятся [https://github.com/wirenboard/wb-mqtt-serial/tree/master/templates по этой ссылке].


В случае с расхождением данных в таблице с шаблоном устройства, верным значением регистра считайте соответствующее значение из шаблона. Текущие версии шаблонов находятся [https://github.com/contactless/wb-mqtt-serial/tree/master/wb-mqtt-serial-templates по этой ссылке].
<h4> Примечания к названиям таблиц регистров </h4>
 
==== Примечания к названиям таблиц регистров ====
Таблицы регистров соответствуют шаблонам для счетчиков.
Таблицы регистров соответствуют шаблонам для счетчиков.


Строка 29: Строка 28:


Версию прошивки счетчика можно проверить командой  
Версию прошивки счетчика можно проверить командой  
<syntaxhighlight lang="bash”>
<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>
</syntaxhighlight>
Строка 35: Строка 34:
Здесь <code>$mbusaddr</code> — Modbus-адрес счетчика.
Здесь <code>$mbusaddr</code> — Modbus-адрес счетчика.


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


В таблицах ниже для таких регистров указаны типы u32, u64 (без знака), s32 и s64 (со знаком). В качестве адреса в таблице указан адрес первого из идущих подряд регистров.
В таблицах ниже для таких регистров указаны типы u32, u64 (без знака), s32 и s64 (со знаком). В качестве адреса в таблице указан адрес первого из идущих подряд регистров.
Строка 58: Строка 57:
|}
|}
Смотрим в таблицу регистров:
Смотрим в таблицу регистров:
{|border="1" class="wikitable" style="text-align:center; width:1000px;" 
{{Wbincludes:Header Registers Universal|fw=true|no_description=true}}
|+ style="text-align:left;" |
!Регистр / адрес (hex)
!Тип
!Разрядность
!Порядок регистров
!Формат
!Множитель
!Параметр
!Назначение
!Единицы измерения
!Прошивка
|-
|-
| 0x2200 || input || u64 || little endian || (power_consumption) || 1e-05 || Ch 2 Total AP energy || Суммарная прямая активная энергия для канала 2 || кВт·ч || 2.1
| 8704 || 0x2200 || Input || RO || u64<br />''little endian'' || ''Ch 2 Total AP energy''<br />Суммарная прямая активная энергия для канала 2 || х10<sup>-5</sup>, кВт·ч || 2.1
|-
|-
|}
|}
Порядок регистров little-endian — значит, регистры идут от младшего к старшему. Поэтому регистры объединяются в итоговое число 0x0000 0000 0dff b4df, оно же 234861791. Для вычисления энергии нужно умножить его на 10<sup>-5</sup>, поэтому в итоге получаем 2348.61791 кВт·ч.
Порядок регистров little-endian — значит, регистры идут от младшего к старшему. Поэтому регистры объединяются в шестнадцатеричное число <code>0x0000 0000 0dff b4df</code>, оно же 234861791 в десятичной системе счисления. Для вычисления энергии нужно умножить его на число в столбце "Значения" (10<sup>-5</sup> = 0.00001), поэтому в итоге получаем 2348.61791 кВт·ч.


Другими словами, чтобы получить итоговое число:
Другими словами, чтобы получить итоговое число:
; 0x2200
; 0x2200
: '''младшая часть''' значение оставляем «как есть»
: '''младшая часть''' значение оставляем «как есть» : 0хb4df<sub>hex</sub> = 46303<sub>dec</sub>
; 0x2201
; 0x2201
: значение умножаем на 2<sup>16</sup> (на 65536)
: значение умножаем на 2<sup>16</sup> : 0x0dff<sub>hex</sub> = 3583<sub>dec</sub>, 3583 * 65536 = 234815488
; 0x2202
; 0x2202
: значение умножаем на 2<sup>32</sup> (на 4294967296)
: значение умножаем на 2<sup>32</sup> : 0 * 4294967296 = 0
; 0x2203
; 0x2203
: значение умножаем на 2<sup>48</sup> (на 281474976710656)
: значение умножаем на 2<sup>48</sup> : 0 * 281474976710656 = 0
Суммируем результаты.  
Суммируем результаты : 46303 + 234815488 + 0 + 0 = 234861791.  
Сумму умножаем на 0,00001 (переносим запятую на 5 знаков влево).
Сумму умножаем на 0.00001 (переносим запятую на 5 знаков влево).