Добрый день. Прошу подсказать методику подключения к счетчику Меркурий 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.
Опишу, пожалуй, как баг.
Ну и подумаю, (посоветуюсь) как можно править