Power Meter Measuring Registers: различия между версиями

Строка 37: Строка 37:


==== Порядок байт и широкие регистры ====
==== Порядок байт и широкие регистры ====
Некоторые значения, измеряемые счётчиками, занимают больше 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:
{| class="wikitable"
|-
! Номер регистра<br />
! 0x2200
! 0x2201
! 0x2202
! 0x2203
|-
| Содержимое регистра
| 0хb4df
| 0x0dff
| 0x0000
| 0x0000
|}
Смотрим в таблицу регистров:
{|border="1" class="wikitable" style="text-align:center; width:1000px;" 
|+ style="text-align:left;" |
!Регистр / адрес (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<sup>-5</sup>, поэтому в итоге получаем 2348.61791 кВт·ч.


=== WB-MAP12H ===
=== WB-MAP12H ===