Подключение к счетчику Меркурий 230 ART-01 PQRSIN

Добрый день. Прошу подсказать методику подключения к счетчику Меркурий 230. Ситуация следующая: 1. Имеется wirenboard 7, модуль для симкарт, динамическая симкарта. 2. Счетчик Меркурий 230. 3. Коммуникатор GSM C-1.02 (вставлена симкарта, статический IP-адрес). Меркурий по RS-485 зацеплен с коммуникатором. Как теперь мне получать данные со счетчика? Что проверено - Меркурий цепляется по RS-485 к контроллеру - данные идут (подключение с использованием готового шаблона). Счетчик через коммуникатор подключается к родной программе Меркурия на ноутбуке. То есть и счетчик и коммуникатор исправны. Помогите настроить. Возможна ли проблема в закрытом порте? По умолчанию коммуникатор использует порт 65000.

Добрый день.

А что это такое? Если некий шлюз - то какой у него протокол?

Это по сути шлюз RS-485 в GSM, на выходе Modbus TCP. Он не от данного счетчика, но роли это не играет.

Попробуйте добавить его в настройки wb-mqtt-serial как TCP порт. Если он “просто шлюз” - то должно работать.

Сделал как Вы сказали, данные пошли. Но я не уверен в их корректности. Частота отображается 3-х значной цифрой вообще.

Tariff 1

23563 .722кВтч

Tariff 2

16988 .187кВтч

Tariff 3

6575 .535кВтч

Tariff 4

0 кВтч

Total reactive energy

1055 .658кВтч

AP1

0 кВтч

AP2

8373 .34кВтч

AP3

13721 .909кВтч

P

12 .55Вт

P1

0 Вт

P2

0 Вт

P3

0 Вт

Q

0 Вт

Q1

0 Вт

Q2

0 Вт

Q3

0 Вт

U1

0 В

U2

12 .54В

U3

0 В

I1

22 .982

I2

0

I3

0

Frequency

230 .51

PF

0

PF1

0

PF2

0

PF3

0

KU1

0

KU2

0

KU3

0

Temperature

0

Подключена только третья фаза в данный момент. Я подключался через Интраскаду на ПК (Win 10), там данные получались. По крайней мере, частота была в более адекватных пределах.

WARNING: [serial device] TSerialDevice::ReadRegister(): Serial protocol error: unexpected frame size [slave_id is mercury230:87]

Что означает данная ошибка? Я использую стандартный шаблон

Неожиданный размер пакета. Скорее всего есть ошибки на шине или в процессе передачи.

С чем связано? Тайминги могут влиять? Там время ожидания и все такое?

Нет, про тайминги - не думаю. Возвращался бы таймаут как ошибка. Возможно шлюз фрагментирует пакеты. Ну или передача по узкому каналу влияет - один из пакетов (фрагментов) теряется и пока он перезапрашивается - проходит много времени. Если часто возникает - имеет смысл разобраться.

Да все время происходит так. Как разобраться? Куда смотреть, что искать? Ошибка уже третий день и непонятно что вообще нужно делать, чтобы определить источник проблемы.

Для начала советую проверить - работает ли без ошибок при “прямом” подключении. Если да - тогда надо анализировать трафик, если те же ошибки остаются - уже проще, можно по логам смотреть.

При прямом подключении работает. Счетчик опрашивается с ноутбука программой для счетчиков Меркурий

Хорошо. Можно костыль? Первоначально несколько секунд он шлет верные данные. А потом они начинают сбиваться. А можно как-то принудительно рвать соединение и подключаться снова? Ну например каждые 15 сек

Так, отлично. А этой же программой через шлюз - работает? Если да, то какое количество ошибок?

Ну и несколько ошибок в минуту - вполне можно считать нормой, думаю.

Попробуйте просто опрос много реже, с большими промежутками.

Там проблема в том, что родная меркурианская программа опрашивает не онлайн. А в ручную по запросу. Я так понимаю - полный цикл. Открыли сессию, прочитали данные, закрыли сессию. В таком режиме ошибок нет.
У нас же - Открыли сессию - читаем, читаем, читаем, читаем… ошибка. Данные поехали (то есть показания сдвигаются между читаемыми показателями). Например, частота убегает в мощность, напряжение в ток и т.д. Как будто он проглатывает один регистр в момент опроса и все остальное куда-то смещается. И как я понимаю - регистры различаются между собой (по крайней мере в шаблоне Меркурия) по длине. Соответственно, если пропал такой же регистр из опроса данные сдвинулись, а если длина данных различная, то либо не получаем данные, либо приходят данные о погоде с Марса.

Да, в той программе читается и через шлюз и через оптопорт и через RS-485.

Опишу, пожалуй, как баг.
Ну и подумаю, (посоветуюсь) как можно править