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

м
Поправил типографику и орфографию.
м (Поправил типографику и орфографию.)
Строка 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 знаков влево).