Опрос электросчетчика Меркурий 230

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Jager
Сообщения: 42
Зарегистрирован: 20 ноя 2011, 19:48

Re: Опрос электросчетчика Меркурий 230

Сообщение Jager » 13 сен 2014, 19:08

Андрей, в можно пример скрипта для Rs485?
Спасибо.

sabretoothedhamster
Сообщения: 3
Зарегистрирован: 17 сен 2014, 17:30

Re: Опрос электросчетчика Меркурий 230

Сообщение sabretoothedhamster » 17 сен 2014, 18:17

Господа, не совсем в русле вашего обсуждения, но все же решил спросить здесь, так тема смежная. Мне предстоит апгрейд дачного подключения до 15КВт, и тоже хочется поставить Меркурий с RS485 интерфейсом. Судя по требованиям электриков, счетчик должен будет стоять в ящике на столбе, на улице. От столба до дома - метров 30-40. Как протянуть провода RS485 от счетчика в дом, чтобы не иметь проблем с помехами? Если я проведу уличным STP или FTP кабелем просто закрепив его стяжками на силовом кабеле (СИП), и заземлив оплетку возле счетчика - будет работать?
Или лучше все равно вести другой дорогой (в землю закопать? или на отдельный трос вешать?)

dimonix
Сообщения: 364
Зарегистрирован: 19 фев 2012, 22:01
Откуда: Сколково

Re: Опрос электросчетчика Меркурий 230

Сообщение dimonix » 17 сен 2014, 18:38

Правильнее будет начать с согласования с энергосбытом возможности подключения проводов к счетчику, т.к. они будут под опломбированной крышкой счетчика. А за RS-485 беспокоиться не стоит - на таких расстояниях он нечувствителен к помехам. Подойдет любая витая пара.

sabretoothedhamster
Сообщения: 3
Зарегистрирован: 17 сен 2014, 17:30

Re: Опрос электросчетчика Меркурий 230

Сообщение sabretoothedhamster » 17 сен 2014, 21:32

dimonix писал(а):Правильнее будет начать с согласования с энергосбытом возможности подключения проводов к счетчику, т.к. они будут под опломбированной крышкой счетчика.
Хм... Интерфейс штатный, влиять через него на показания - нельзя. Какие могут быть претензии у энергосбыта?

dimonix
Сообщения: 364
Зарегистрирован: 19 фев 2012, 22:01
Откуда: Сколково

Re: Опрос электросчетчика Меркурий 230

Сообщение dimonix » 18 сен 2014, 12:42

sabretoothedhamster писал(а):
dimonix писал(а):Правильнее будет начать с согласования с энергосбытом возможности подключения проводов к счетчику, т.к. они будут под опломбированной крышкой счетчика.
Хм... Интерфейс штатный, влиять через него на показания - нельзя. Какие могут быть претензии у энергосбыта?
Ошибаетесь, очень даже можно. Например через изменение часов, либо тарифного расписания. А претензии у энергосбыта могут быть какие-угодно, на его усмотрение :))

YVN
Сообщения: 3
Зарегистрирован: 11 мар 2015, 09:54

Re: Опрос электросчетчика Меркурий 230

Сообщение YVN » 11 мар 2015, 11:36

sabretoothedhamster писал(а): счетчик должен будет стоять в ящике на столбе, на улице. От столба до дома - метров 30-40. Как протянуть провода RS485 от счетчика в дом, чтобы не иметь проблем с помехами? Если я проведу уличным STP или FTP кабелем ... Или лучше ... в землю закопать? или на отдельный трос вешать?
Использовать уличный официальный - плохая идея. Вот основные недостатки.
Во-первых, хлопоты с электриками по поводу проводов под пломбу. Официально порешать малореально. А неофициально - нет гарантий, что при инспекционной проверке, или просто сменится электрик, обслуживающий ваш район, что не обрежут. И на самом деле, будут правы.
Во-вторых, слаботочные провода на улице - это всегда плохо. Не забудьте, что, скорее всего, вам ещё питание интерфейсу надо тянуть.
В-третьих, у вас будет только пользовательский уровень доступа, которого может и не хватить.
Хорошее решение, лишённое всех этих недостатков: повесить свой собственный счётчик, какой вам нужен под ваши задачи, дома в ВРУ.

YVN
Сообщения: 3
Зарегистрирован: 11 мар 2015, 09:54

Re: Опрос электросчетчика Меркурий 230

Сообщение YVN » 11 мар 2015, 12:14

baikaltech писал(а): ваттами проблема
Посылаю запрос на счётчик "x00x08x16x00x8Fx86" в ответ приходит "0040b234401531401900408403ff60" судя по "мануалу" нужны символы 00[40b234][401531][401900][408403]ff60 преобразую в "h40b234" потом hexdec("h40b234") получаю не то что надо, что я делаю не так?
2 ошибки в преобразованиях. В мануале это документировано.
Во-первых, порядок байт в ответе не стандартный (как и всё, что связано с софтом Меркурия: трава на заводе очень забористая).
Поэтому не "[40b234] преобразую в h40b234", а "[40b234] преобразую в "4034b2".
Во-вторых, самые старшие 2 бита используются для кодирования направления активной и реактивной мощности. Это как бы знаки + или - к значениям.
Поэтому к числу "4034b2h" надо применить битовую маску "3fffffh". И вот уже получившееся "0034b2" будет желаемым показателем.
Ну и если hexdec() вы имели ввиду php-шный, то h в начале аргумента не стоит ставить. В текущей версии php часть левых символов вначале игнорируется и вы получите ожидаемые значения, но не факт, что в будущих версиях такие вольности прокатят.

kpp
Сообщения: 134
Зарегистрирован: 29 авг 2011, 15:03
Откуда: Україна

Re: Опрос электросчетчика Меркурий 230

Сообщение kpp » 02 июл 2015, 11:20

Дабы не плодить темы, спрошу тут.
Есть счетчик Меркурий 230 ART-02 PQRSIN (последние две цифры серийного номера 17), преобразователь CAN-USB (производителя не помню).
С виндой и стандартным программой-конфигуратором работает, все читается-записывается.
Подключаю к FreeBSD 8.4, адаптер определяется

Код: Выделить всё

ugen0.5: <FTDI> at usbus0
uftdi0: <FT232R USB UART> on usbus0
появляются устройства /dev/cuaU7 и /dev/ttyU7.
Ставить php dio нет желания.
Пробую через php :

Код: Выделить всё

<?php
$device = "/dev/cuaU7";

// настройка
exec('stty -f '.$device.' 9600 -cstopb -oddp -opost raw');

$fp = fopen($device, "r+b");

// Инициализация соединения и передача пароля
fwrite($fp, "\x00\x01\x01\x01\x01\x01\x01\x01\x01\x77\x81");
sleep(3);
$buffer= fgets($fp);
fwrite($fp, "\xF0\x00\x00\x00");
fclose($fp);
?>
Останавливается на $buffer= fgets($fp);

И через шелл(немного модифицированный скрипт от baikaltech):

Код: Выделить всё

#!/bin/sh -ax

# Инициализация соединения и передача пароля
cmd=`echo -n "x00x01x01x01x01x01x01x01x01x77x81" | sed 's/x/\\\0x/g'`
port="cuaU7"
ans="/tmp/1"

stty -f /dev/$port 9600 -cstopb -oddp -opost raw

echo -n $cmd | awk -F'\' '{for(i=1; i<=NF; i++) {printf "%c", $i}}' > /dev/$port &
( dd if=/dev/$port of=$ans count=128 ) & sleep 10 ; kill $!
через 10сек выполнение прерывается, файл /tmp/1 нулевой длины.

В хозяйстве есть еще Linux Debian.
Подключил к нему, добавилось устройство /dev/ttyUSB0.
Попробовал в чистом виде скрипт от baikaltechviewtopic.php?f=1&t=540&start=20#p14275.
Ситуация аналогичная, файл /tmp/1 пуст.

Думаю дело в настройке порта, но уже перепробовал множество вариантов, остановился на таком:
stty -f /dev/$port 9600 -cstopb -oddp -opost raw

Что не так?
Если работает под виндой, и устройство нормально определяется под FreeBSD\Linux, могут быть еще какие-то аппаратные проблемы?
"Та нам з тобою своє робити, відкрити очі і далі йти!
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)

Victor_S
Сообщения: 105
Зарегистрирован: 09 дек 2014, 16:57

Re: Опрос электросчетчика Меркурий 230

Сообщение Victor_S » 02 июл 2015, 11:47

kpp писал(а): Ставить php dio нет желания.
Хотя и под виндой себе настраивал, но через php.
Есть 2 момента:
1. Через foppen/fclose работает нестабильно, поставил таки dio - все стало хорошо.
2. Иногда возникают затыки с открытием порта(стабильно после перезагрузки компа), помогает "пнуть" разок родной прогой, т.е. просто запустить прогу, установить коннект и закрыть прогу. После этого все работает.

kpp
Сообщения: 134
Зарегистрирован: 29 авг 2011, 15:03
Откуда: Україна

Re: Опрос электросчетчика Меркурий 230

Сообщение kpp » 02 июл 2015, 11:55

Victor_S писал(а): ...
2. Иногда возникают затыки с открытием порта(стабильно после перезагрузки компа), помогает "пнуть" разок родной прогой, т.е. просто запустить прогу, установить коннект и закрыть прогу. После этого все работает.
Под виндой работа с портами через php open\close либо плохо, либо вообще не реализована.
Подозреваю, что родная прога выставляет нужные параметры порта, которые сохраняются до перезапуска винды.
"Та нам з тобою своє робити, відкрити очі і далі йти!
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)

Victor_S
Сообщения: 105
Зарегистрирован: 09 дек 2014, 16:57

Re: Опрос электросчетчика Меркурий 230

Сообщение Victor_S » 02 июл 2015, 12:21

очень даже может быть...
правда я пользую dio_open\close, а пораметры порта через exec()

kpp
Сообщения: 134
Зарегистрирован: 29 авг 2011, 15:03
Откуда: Україна

Re: Опрос электросчетчика Меркурий 230

Сообщение kpp » 02 июл 2015, 13:17

Будет ли что-то отвечать счетчик, если контрольная сумма неверная?
Может кто-то у себя проверить?
"Та нам з тобою своє робити, відкрити очі і далі йти!
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)

Victor_S
Сообщения: 105
Зарегистрирован: 09 дек 2014, 16:57

Re: Опрос электросчетчика Меркурий 230

Сообщение Victor_S » 02 июл 2015, 13:33

В этой статье у Андрея есть ссылка на протокол Меркурия, скачай, мне информация из него помогла во многих вопросах...
http://www.ab-log.ru/smart-house/mercury-230

kpp
Сообщения: 134
Зарегистрирован: 29 авг 2011, 15:03
Откуда: Україна

Re: Опрос электросчетчика Меркурий 230

Сообщение kpp » 02 июл 2015, 14:01

Victor_S писал(а):В этой статье у Андрея есть ссылка на протокол Меркурия, скачай, мне информация из него помогла во многих вопросах...
http://www.ab-log.ru/smart-house/mercury-230
Уже давно скачано, просмотрено.
Но для начала нужно хоть что-то увидеть в ответ от счетчика.

1.Может ли быть проблема в железке-адаптере CAN-USB, при условии, что в винде работает, в freebsd\linux - определяется как устройство?
-?
2.Проблема в параметрах порта?
-?
3.Проблема в формате пакета?
-Но я отсылаю для теста стандартную команду #00#01#01#01#01#01#01#01#01#77#81, на которую должен ответить любой счетчик (подключен только один счетчик, пароль на чтение 111111).
Контрольную сумму проверил ф-цией, взятой в этой теме.
В формате этого пакета все как бы верно.
"Та нам з тобою своє робити, відкрити очі і далі йти!
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)

Victor_S
Сообщения: 105
Зарегистрирован: 09 дек 2014, 16:57

Re: Опрос электросчетчика Меркурий 230

Сообщение Victor_S » 02 июл 2015, 15:55

Ну раз под виндой у тебя родная прога работает, проверь под ней же свой php скрипт. По крайней мере отбросишь 2-ой и 3-ий пункты...;)

kpp
Сообщения: 134
Зарегистрирован: 29 авг 2011, 15:03
Откуда: Україна

Re: Опрос электросчетчика Меркурий 230

Сообщение kpp » 07 июл 2015, 11:45

Значится так.
Удалось вычитать данные со счетчика FreeBSD - BASH - USB-CAN - Меркурий 230.
Мой вариант https://hi.dp.ua/svn/electo_counters/trunk/ user:tat pass:123
(в electro_counter.conf указать нужные: DEVICE, COUNTER_SN, PASS_READ, запускать: bash electro_counter.sh )

Linux Debian - BASH - USB-HUB - USB-CAN - Меркурий 230 - не получилось пока, возможно из-за USB-HUB. Попробую без USB-HUB. Потом отпишусь.

Версия ПО в моем счетчике 2.3.1.
Не могу нормально получить данные по команде: x00x05x00x06x90x27 (далее цитаты из протокола обмена):
"Начиная с версии ПО 2.2.2 возможно ускоренное считывание значений энергии с номером тарифа в запросе – 6. "
"Начиная с версии ПО 2.2.2, при запросе с номером тарифа 6, значения энергии в ответе расположены в порядке: T1, T2, T3, T4, сумма по тарифам, потери (если ведется учет).
Длина ответа варьируется в зависимости от вида учета (суммарный/пофазный) и наличия функции учета энергии технических потерь."
Так вот ответ приходит, но постоянно разная длина и контрольная сумма не считается правильно.
По всей видимости либо отправляется не все, либо приходи не все.

Еще непонятно:
"Начиная с версии ПО 2.2.5 введен режим повтора кода запроса в ответе."
"В ответ на запрос тестирования канала счетчик отвечает последовательностью из четырех байт в соответствии с рис. 1, где в случае успешного завершения обмена, байт со-стояния обмена принимает значение =00h (или 80h при режиме повтора запроса в ответе)."
Повтор кода запроса в ответе можно наблюдать в статье глубокоуважаемого Andrey_B http://www.ab-log.ru/smart-house/mercury-230
Режим повтора команды можно где-то включить\выключить?
У меня сейчас нет повтора команд.
В ответ на запрос тестирования канала счетчик отвечает с повтором команды или без повтора?
У кого в режиме повтора, посмотрите, что приходит в ответ на запрос канала связи x00x00x01xB0.

Где включается режим повтора команды в ответе - нашел.

Есть ли возможность сброса всех счетчиков через родной софт?
По протоколу - должно быть.
В программе есть пункт меню Инициализация и Калибровка, куда требует пароль.
Какой пароль туда нужен?
"Та нам з тобою своє робити, відкрити очі і далі йти!
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)

kpp
Сообщения: 134
Зарегистрирован: 29 авг 2011, 15:03
Откуда: Україна

Re: Опрос электросчетчика Меркурий 230

Сообщение kpp » 05 авг 2015, 15:49

Никто не сталкивался с ситуацией пропадания связи по интерфейсу со счетчиком после подключения 3-й фазы?
http://www.incotexcom.ru/faqmercury/vie ... ?f=6&t=249
Похоже у меня такая ситуация ;(
"Та нам з тобою своє робити, відкрити очі і далі йти!
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)

s_shaburkin
Сообщения: 1
Зарегистрирован: 22 авг 2015, 22:29

Re: Опрос электросчетчика Меркурий 230

Сообщение s_shaburkin » 22 авг 2015, 23:11

Добрый день!

Уважаемый kpp, а в чем была засада по проверке через cat /dev/tty ... ? )
Тоже пытаюсь на Linux (правда, на роутере) достучаться до счетчика, прежде чем кодировать,
но cat /dev/ttyUSB молчит - или я что-то не то посылаю, или или неправильно сконфигурирован c с помощью stty /dev/ttyUSB0.
(stty -F /dev/ttyUSB0 cs8 9600 -echo -cstopb)
FT232RL определился, dmesg его успешно видит подключенным к /dev/ttyUSB0.

Дальше - попытки слать запрос мгновенных значений с кодированным адресом (у меня Меркурий 200.2 с его RS485 тестируется)
к успеху не приводят.
Прежде чем ставить PHP, Perl и т.д. хочу хоть какой-то отклик увидеть.

Serg

kpp
Сообщения: 134
Зарегистрирован: 29 авг 2011, 15:03
Откуда: Україна

Re: Опрос электросчетчика Меркурий 230

Сообщение kpp » 24 окт 2015, 23:16

s_shaburkin писал(а): Уважаемый kpp, а в чем была засада по проверке через cat /dev/tty ... ? )
Тоже пытаюсь на Linux (правда, на роутере) достучаться до счетчика, прежде чем кодировать,
но cat /dev/ttyUSB молчит - или я что-то не то посылаю, или или неправильно сконфигурирован c с помощью stty /dev/ttyUSB0.
(stty -F /dev/ttyUSB0 cs8 9600 -echo -cstopb)
Уже не скажу почему не пошло через cat /dev/tty, после всехопытов получилось только через dd.
Возьмите мой скрипт, попробуйте.
"Та нам з тобою своє робити, відкрити очі і далі йти!
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)

Jager
Сообщения: 42
Зарегистрирован: 20 ноя 2011, 19:48

Re: Опрос электросчетчика Меркурий 230

Сообщение Jager » 24 дек 2015, 09:34

У кого нибудь есть работающий скрипт для Меркурия 230 по windows?
Спасибо.

Ответить