EnglishУкраїнськаmRussian
Login/New
Topic with many replies

Протокол обмена с счетчиками Меркурий 200 и Меркурий 230


Author Message
Written on: 18. 02. 2016 [12:37]
Godzilla
Арсен Закоян
Contributor
Topic creator
registered since: 12.02.2013
Posts: 123
Написал я как то протокол для данных счетчиков на языке высокого уровня. Выкладываю как есть, может кому нибудь пригодится.
Attachment

mercury.db.tar.gz (File type: application/gzip, Size: 6.1 kilobytes) — 2477 downloads
Written on: 08. 06. 2016 [22:28]
amchlnt
Миша Зубко
registered since: 08.06.2016
Posts: 2
Добрый день! Имеются у нас счетчики меркурий 230, хотелось бы получать с них данные в openscada, можно разузнать как добавить и использовать ваш протокол?
Written on: 18. 06. 2016 [12:53]
Godzilla
Арсен Закоян
Contributor
Topic creator
registered since: 12.02.2013
Posts: 123
Добавьте как базу данных SQLite. В части пользовательского протокола появятся новый протоколы и в части библиотеки шаблонов появятся новые шаблоны.
Written on: 20. 07. 2016 [18:01]
amchlnt
Миша Зубко
registered since: 08.06.2016
Posts: 2
Благодарю, вскоре руки дойдут, попробую!
Written on: 09. 05. 2017 [01:10]
JackMas
Евгений Маслов
registered since: 05.04.2017
Posts: 27
Добрый день.
Попробовал реализовать протокол меркурий 230 на openscada,
скачал базу с форума.
Все получилось , опрос идет но в атрибутах всегда отображается только один параметр,
в остальных значение <Eval>.
Соответственно и на мнемосхеме такое же отображение -- все нули и только одни параметр,
в единицу времени присутствует только одно измерение.
Однако у вас на фото отображаются все выбранные параметры одновременно.
В чем может быть проблема ?
Делал по Вашей инструкции.
Written on: 10. 05. 2017 [09:53]
JackMas
Евгений Маслов
registered since: 05.04.2017
Posts: 27
Вопрос решил сам.
Не все счетчики с первого раза передают показания по запросу,
не знаю почему так ,
но я обычно делаю по 3-5 попыток и не всегда получается снять данные за одну сессию.
Бывает необходимо выставлять точно тайм ауты.
Written on: 10. 05. 2017 [20:10]
Godzilla
Арсен Закоян
Contributor
Topic creator
registered since: 12.02.2013
Posts: 123
Я не ставил возможности нескольких попыток опроса параметра в протоколе, хотя по хорошему надо было бы. Если нужно то могу добавить дополнительные попытки опроса. Да и от качества канала сильно зависит.

[This article was edited 3 times, at last 10.05.2017 at 20:12.]
Written on: 11. 05. 2017 [10:08]
JackMas
Евгений Маслов
registered since: 05.04.2017
Posts: 27
Спасибо за ответ.
Счетчик сейчас на стенде , те линия 2 м длиной, преобразователь -- Меркурий 221.
Я проводил тестирование по 10-15 штук счетчиков в линии и заметил,что ,в зависимости от даты выпуска
и прошивки, они по разному дают ответы.
Бывает что 10 раз передаю пароль на открытие канала, а он никак не отвечает.
Спустя какое то время все нормально.
Но это все терпимо.

Что касается библиотеки, честно говоря, не занимался разбором Вашего кода,
просто включил и все работает , за это спасибо.

Единственно, что сделал , так это заремарил строки

if(req.text().length <1) {
answer = EVAL_STR;
//TS = EVAL_STR;T1 = EVAL_STR;T2 = EVAL_STR;T3 = EVAL_STR;T4 = EVAL_STR;
//PS = EVAL_STR;P1= EVAL_STR;P2= EVAL_STR;P3= EVAL_STR;U1= EVAL_STR;U2= EVAL_STR;U3= EVAL_STR;
//I1= EVAL_STR;I2= EVAL_STR;I3= EVAL_STR;
return;}
else answer =req.text();


Непонятно почему выдает только суммарную энергию от сброса ,
по тарифам не дает, странно конечно , может быть стоит таймауты между пакетами установить.
Хотелось бы еще увидеть серийный номер и время в счетчике.
Но это уже мои личные хотелки :)
И еще почему вы используете индивидуальные запросы типа "0x08,0x11,0x11"
Можно отправлять "0x08, 0x16" , т е одним пакетом получать данные по 3м фазам ?
У меня реализовано так:

byte testConnect[] = { 0x00, 0x00 };
byte Access[] = { 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01};
byte Sn[] = { 0x00, 0x08, 0x00 }; // серийный номер
byte Freq[] = { 0x00, 0x08, 0x16, 0x40 }; // частота
byte Current[] = { 0x00, 0x08, 0x16, 0x21 };// ток
byte Suply[] = { 0x00, 0x08, 0x16, 0x11 }; // напряжение
byte Power[] = { 0x00, 0x08, 0x16, 0x00 };// мощность p
byte PowerQ[] = { 0x00, 0x08, 0x16, 0x08 };// мощность Q
byte PowerS[] = { 0x00, 0x08, 0x16, 0x04 };// мощность S
byte CosF[] = { 0x00, 0x08, 0x16, 0x30 };// cosf

Если бы Вы добавили это все в библиотеку было бы очень хорошо.

Written on: 11. 05. 2017 [12:36]
Godzilla
Арсен Закоян
Contributor
Topic creator
registered since: 12.02.2013
Posts: 123
"JackMas" wrote:

И еще почему вы используете индивидуальные запросы типа "0x08,0x11,0x11"
Можно отправлять "0x08, 0x16" , т е одним пакетом получать данные по 3м фазам ?

Я честно говоря и не знал что так можно)))Век живи,век учись.
На следующей неделе, если время будет попробую добавить дополнительные попытки опроса и ваши хотелки.
Я тестил все это на счетчиках годов 2010, поэтому может что то и не сработать на более современных.
Written on: 11. 05. 2017 [12:59]
JackMas
Евгений Маслов
registered since: 05.04.2017
Posts: 27
Спасибо.
Буду очень признателен.

Ниже ссылки , Я тоже когда-то делал
Не претендую на оригинальность, но это все сейчас используется в работе.

http://ln-group.ru/M230_2_3.ino -- для ардуино
http://ln-group.ru/python/M230.py -- для модема Телеофис RX-108
http://ln-group.ru/php/srv.txt -- на сервере для Меркурий 230 с GSM модемом.



6671