16 808
правок
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 знаков влево). |