Счетчик Wb-map3E некорректные значения мощности по фазам

Здравствуйте,
на объекте смонтировано несколько счетчиков WB-MAP3E (HW 1.10A FW:2.10.7) подключенных по шине RS485 через преобразователь WB-USB485 к ПК со SCADA, без контроллера, с логированием значений напряжений токов (с подключенными токовыми трансформаторами) и мощности по фазам.

Приблизительно месяц после запуска были корректные измерения, затем, после пропадания и восстановления электропитания,на одном из счетчиков с адресом 99 (s/n 168083349) начали появляться пики мощности по фазам L1 и L3, ~127,2кВт 127,3кВт не соответствующие полученным в тот же момент времени значениям напряжений и токов. При этом суммарная мощность по всем трем фазам считается корректно. Второй счетчик ведет себя корректно. Похоже на то, что где то старший бит при подсчете становится единицей в счетчике 99.

Я не нашел описания неисправности в известных неисправностях Errata и на форуме поддержки.
Как устранить проблему? Полное отключение питания и интерфейса не помогло.

  1. как получить корректный серийный номер, считанный из устройства modbus_client? Снимать устройство не всегда удобно.
    Если считанная версия прошивки корректно переводится в ascii, то с номером s/n 168083349 ни переводом в text ни в dec ничего похожего не получается.

mod.exe --debug -mrtu -b9600 -pnone -s2 COM5 -a99 -t0x04 -г270 -с 2
Opening COM5 at 9600 bauds (N, 8, 2, 2)
[63][04][01][0E][00][02][19][B6]
Waiting for a confirmation…
<63><04><04><00><79><9D><6A><6F>
SUCCESS: read 2 of elements: Data: 0xff60 0x799d


Я использую модуль аналогового ввода WB-MAI6.
В моём случае читаю 2 InputRegister по адресам 270 и 271, затем собираю их в uint32_t по закону “big endian”. Посмотрел MODBUS-карту счётчика:
https://wiki.wirenboard.com/wiki/WB-MAP3E_Data_Registers_v.2
и не нашёл регистров с SN. Попробуйте как в моём случае, возможно у них эти адреса общие/одинаковые.

Видимо вот так:

Спасибо! Пропустил комментарий к таблице.
0xFF60799D - 0xFE000000 = 0x160799D = 23099805*(10)*. Уже ближе, но пока не совпадает с индивидуальным номером сбоку на приборе 168083349. Но может это и не серийник на наклейке рядом с qr кодом, адресом, FW, HW, или считаю неверно, или проблема аналогична Wiren Board 6: Errata — Wiren Board

Добрый день.

Покажите пожалуйста запрос-ответ регистров мощности. Вот прямо байты отправленные в шину и полученные от устройства.
Такое как-то получали при неконсистентном чтении, то есть когда пытались прочитать регистры не одним запросом а разными.

Так, проверю у себя чтение серийного номера.
Screenshot_20251015_194350

modbus_client_rpc --debug -m rtu -p none -a 38 /dev/ttyRS485-1 -b 115200 -t 0x04 -r270 -c 2 
2025-10-15 16:40:35,609 [DEBUG] [26][04][01][0e][00][02][17][23]
2025-10-15 16:40:35,614 [DEBUG] Connecting to broker unix:///var/run/mosquitto/mosquitto.sock
2025-10-15 16:40:35,621 [DEBUG] RPC Client -> {'path': '/dev/ttyRS485-1', 'baud_rate': 115200, 'parity': 'N', 'data_bits': 8, 'stop_bits': 1, 'response_size': 9, 'format': 'HEX', 'msg': '2604010e00021723', 'total_timeout': 1000} (1000 timeout ms)
2025-10-15 16:40:35,666 [DEBUG] RPC Client <- {'response': '260404fe5f3877fe9a'}
2025-10-15 16:40:36,668 [DEBUG] Response: 260404fe5f3877fe9a
2025-10-15 16:40:36,669 [DEBUG] <26><04><04><fe><5f><38><77><fe><9a>
SUCCESS: read 2 elements:
	Data: 0xfe5f 0x3877 

Вижу 0xfe5f3877
Отнимаю 0xfe000000
0x5f3877 = 6240375

Ну и можно посмотреть в шаблоне для контроллера точно так же отнимается 0xfe000000.

168083349 - точно такой номер на наклейке?


Что касается серийного номера.
На наклейках всех купленных устройств номера в нижней строке начинаются с 16808…

Спасибо. Я подумаю, как включить мониторинг COM-порта чтобы получить лог запросов ответов. Данные читает SCADA, сырые значения, полученные в нее с пиком, удалось поймать на скриншоте. См внизу мощность по фазе L3 =12729

Верный 16808349.

Ну, мне бы именно запрос-ответ посмотреть.

Спасибо. Верный серийный номер получил.

По запросу-ответу активной мощности, написал маленький bat файл где mod.exe это modbus_client.exe
по одной из фаз Data: 0x31ba = 12730 ->x0,1 т.е. 127300 Вт, 127,3кВт

========================
:m

mod>>log4373.txt --debug -mrtu -t0x03 -r4373 -a99 -c1 COM5 -b9600 -d8 -s2 -pnone
mod>>log4374.txt --debug -mrtu -t0x03 -r4374 -a99 -c1 COM5 -b9600 -d8 -s2 -pnone
mod>>log4375.txt --debug -mrtu -t0x03 -r4375 -a99 -c1 COM5 -b9600 -d8 -s2 -pnone

goto m

результаты
========= log4373.txt =============
Opening COM5 at 9600 bauds (N, 8, 2, 2)
[63][03][11][15][00][01][98][B0]
Waiting for a confirmation…
<63><03><02><31>
SUCCESS: read 1 of elements:
Data: 0x31ba
Opening COM5 at 9600 bauds (N, 8, 2, 2)
[63][03][11][15][00][01][98][B0]
Waiting for a confirmation…
<63><03><02><31><95>
SUCCESS: read 1 of elements:
Data: 0x31b9
Opening COM5 at 9600 bauds (N, 8, 2, 2)
[63][03][11][15][00][01][98][B0]
Waiting for a confirmation…
<63><03><02><31><54><6E>
SUCCESS: read 1 of elements:
Data: 0x31b8
Opening COM5 at 9600 bauds (N, 8, 2, 2)
[63][03][11][15][00][01][98][B0]
Waiting for a confirmation…
<63><03><02><31><95>
SUCCESS: read 1 of elements:
Data: 0x31b9
Opening COM5 at 9600 bauds (N, 8, 2, 2)
[63][03][11][15][00][01][98][B0]
Waiting for a confirmation…
<63><03><02><31><54><6E>
SUCCESS: read 1 of elements:
Data: 0x31b8
Opening COM5 at 9600 bauds (N, 8, 2, 2)
[63][03][11][15][00][01][98][B0]
Waiting for a confirmation…
<63><03><02><31><95>
SUCCESS: read 1 of elements:
Data: 0x31b9
Opening COM5 at 9600 bauds (N, 8, 2, 2)
[63][03][11][15][00][01][98][B0]
Waiting for a confirmation…
<63><03><02><31><54><6E>
SUCCESS: read 1 of elements:
Data: 0x31b8
Opening COM5 at 9600 bauds (N, 8, 2, 2)
[63][03][11][15][00][01][98][B0]
Waiting for a confirmation…
<63><03><02><31><95>
SUCCESS: read 1 of elements:
Data: 0x31b9

========= log4374.txt ===============
Opening COM5 at 9600 bauds (N, 8, 2, 2)
[63][03][11][16][00][01][68][B0]
Waiting for a confirmation…
<63><03><02><00><4C><40><79>
SUCCESS: read 1 of elements:
Data: 0x004c
Opening COM5 at 9600 bauds (N, 8, 2, 2)
[63][03][11][16][00][01][68][B0]
Waiting for a confirmation…
<63><03><02><00><4A><7B>
SUCCESS: read 1 of elements:
Data: 0x004a
Opening COM5 at 9600 bauds (N, 8, 2, 2)
[63][03][11][16][00][01][68][B0]
Waiting for a confirmation…
<63><03><02><00><49><80><7A>
SUCCESS: read 1 of elements:
Data: 0x0049
Opening COM5 at 9600 bauds (N, 8, 2, 2)
[63][03][11][16][00][01][68][B0]
Waiting for a confirmation…
<63><03><02><00><4A><7B>
SUCCESS: read 1 of elements:
Data: 0x004a
Opening COM5 at 9600 bauds (N, 8, 2, 2)
[63][03][11][16][00][01][68][B0]
Waiting for a confirmation…
<63><03><02><00><4A><7B>
SUCCESS: read 1 of elements:
Data: 0x004a
Opening COM5 at 9600 bauds (N, 8, 2, 2)
[63][03][11][16][00][01][68][B0]
Waiting for a confirmation…
<63><03><02><00><4A><7B>
SUCCESS: read 1 of elements:
Data: 0x004a
Opening COM5 at 9600 bauds (N, 8, 2, 2)
[63][03][11][16][00][01][68][B0]
Waiting for a confirmation…
<63><03><02><00><4B><01>
SUCCESS: read 1 of elements:
Data: 0x004b
Opening COM5 at 9600 bauds (N, 8, 2, 2)
[63][03][11][16][00][01][68][B0]
Waiting for a confirmation…
<63><03><02><00><4B><01>
SUCCESS: read 1 of elements:
Data: 0x004b
a.bat (260 байтов)
log4373.txt (6,8 КБ)
log4374.txt (6,8 КБ)
log4375.txt (6,6 КБ)

А где тут полный ответ? Вместе с CRC, то есть.
Откуда берется 0x31 еще могу понять, а вот 0xba?

Ради интереса проверил - modbus_client при получении неполного ответа или с неверным CRC на это и ругается.
Соответственно все знакомые мне scada системы ведут себя также - игнорируют неполные пакеты.
Шина вполне допускает даже несколько ошибок передачи в минуту, это нормально. Но неверные результаты откидываются.

И вот это вот тоже, кстати, без CRC:

Тут тоже, что-то весьма-весьма странное.
Если данные “<31><95>” то “b9” - откуда?

Пример полного запроса и ответа тут:

Из ответа интересно следующее:
<02><00><49>
Количество байт ответа: 02
Ну и байты самого ответа, 0x00 и 0x49
Младший и старший байт регистра.

Что Вы посоветуете? Я вижу замену счетчика на другой из имеющихся, и проверку этого на другом ПК с другим преобразователем USB. Повторюсь, на другом счетчике из той же партии в той же линии modbus проблема не наблюдается. Если бы там были с физической шиной данных, оба стоящих рядом прибора давали бы сходную картину по сбоям.

Я пока не вижу проблем. Точнее - вижу, но то что ПО не получает из шины все байты посылки от измерителя и добавляет произвольные байты.

Обратите внимание, что в Вики, скорее всего, не правильные цифры на скрине, я пробовал посчитать пример с картинки в Вики, там на сотню или около того результат не сошёлся)))