Опрос электросчетчика Меркурий 230
Re: Опрос электросчетчика Меркурий 230
Андрей, в можно пример скрипта для Rs485?
Спасибо.
Спасибо.
-
- Сообщения: 6
- Зарегистрирован: 17 сен 2014, 17:30
Re: Опрос электросчетчика Меркурий 230
Господа, не совсем в русле вашего обсуждения, но все же решил спросить здесь, так тема смежная. Мне предстоит апгрейд дачного подключения до 15КВт, и тоже хочется поставить Меркурий с RS485 интерфейсом. Судя по требованиям электриков, счетчик должен будет стоять в ящике на столбе, на улице. От столба до дома - метров 30-40. Как протянуть провода RS485 от счетчика в дом, чтобы не иметь проблем с помехами? Если я проведу уличным STP или FTP кабелем просто закрепив его стяжками на силовом кабеле (СИП), и заземлив оплетку возле счетчика - будет работать?
Или лучше все равно вести другой дорогой (в землю закопать? или на отдельный трос вешать?)
Или лучше все равно вести другой дорогой (в землю закопать? или на отдельный трос вешать?)
Re: Опрос электросчетчика Меркурий 230
Правильнее будет начать с согласования с энергосбытом возможности подключения проводов к счетчику, т.к. они будут под опломбированной крышкой счетчика. А за RS-485 беспокоиться не стоит - на таких расстояниях он нечувствителен к помехам. Подойдет любая витая пара.
-
- Сообщения: 6
- Зарегистрирован: 17 сен 2014, 17:30
Re: Опрос электросчетчика Меркурий 230
Хм... Интерфейс штатный, влиять через него на показания - нельзя. Какие могут быть претензии у энергосбыта?dimonix писал(а):Правильнее будет начать с согласования с энергосбытом возможности подключения проводов к счетчику, т.к. они будут под опломбированной крышкой счетчика.
Re: Опрос электросчетчика Меркурий 230
Ошибаетесь, очень даже можно. Например через изменение часов, либо тарифного расписания. А претензии у энергосбыта могут быть какие-угодно, на его усмотрение )sabretoothedhamster писал(а):Хм... Интерфейс штатный, влиять через него на показания - нельзя. Какие могут быть претензии у энергосбыта?dimonix писал(а):Правильнее будет начать с согласования с энергосбытом возможности подключения проводов к счетчику, т.к. они будут под опломбированной крышкой счетчика.
Re: Опрос электросчетчика Меркурий 230
Использовать уличный официальный - плохая идея. Вот основные недостатки.sabretoothedhamster писал(а): счетчик должен будет стоять в ящике на столбе, на улице. От столба до дома - метров 30-40. Как протянуть провода RS485 от счетчика в дом, чтобы не иметь проблем с помехами? Если я проведу уличным STP или FTP кабелем ... Или лучше ... в землю закопать? или на отдельный трос вешать?
Во-первых, хлопоты с электриками по поводу проводов под пломбу. Официально порешать малореально. А неофициально - нет гарантий, что при инспекционной проверке, или просто сменится электрик, обслуживающий ваш район, что не обрежут. И на самом деле, будут правы.
Во-вторых, слаботочные провода на улице - это всегда плохо. Не забудьте, что, скорее всего, вам ещё питание интерфейсу надо тянуть.
В-третьих, у вас будет только пользовательский уровень доступа, которого может и не хватить.
Хорошее решение, лишённое всех этих недостатков: повесить свой собственный счётчик, какой вам нужен под ваши задачи, дома в ВРУ.
Re: Опрос электросчетчика Меркурий 230
2 ошибки в преобразованиях. В мануале это документировано.baikaltech писал(а): ваттами проблема
Посылаю запрос на счётчик "x00x08x16x00x8Fx86" в ответ приходит "0040b234401531401900408403ff60" судя по "мануалу" нужны символы 00[40b234][401531][401900][408403]ff60 преобразую в "h40b234" потом hexdec("h40b234") получаю не то что надо, что я делаю не так?
Во-первых, порядок байт в ответе не стандартный (как и всё, что связано с софтом Меркурия: трава на заводе очень забористая).
Поэтому не "[40b234] преобразую в h40b234", а "[40b234] преобразую в "4034b2".
Во-вторых, самые старшие 2 бита используются для кодирования направления активной и реактивной мощности. Это как бы знаки + или - к значениям.
Поэтому к числу "4034b2h" надо применить битовую маску "3fffffh". И вот уже получившееся "0034b2" будет желаемым показателем.
Ну и если hexdec() вы имели ввиду php-шный, то h в начале аргумента не стоит ставить. В текущей версии php часть левых символов вначале игнорируется и вы получите ожидаемые значения, но не факт, что в будущих версиях такие вольности прокатят.
Re: Опрос электросчетчика Меркурий 230
Дабы не плодить темы, спрошу тут.
Есть счетчик Меркурий 230 ART-02 PQRSIN (последние две цифры серийного номера 17), преобразователь CAN-USB (производителя не помню).
С виндой и стандартным программой-конфигуратором работает, все читается-записывается.
Подключаю к FreeBSD 8.4, адаптер определяется
появляются устройства /dev/cuaU7 и /dev/ttyU7.
Ставить php dio нет желания.
Пробую через php :
Останавливается на $buffer= fgets($fp);
И через шелл(немного модифицированный скрипт от baikaltech):
через 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, могут быть еще какие-то аппаратные проблемы?
Есть счетчик Меркурий 230 ART-02 PQRSIN (последние две цифры серийного номера 17), преобразователь CAN-USB (производителя не помню).
С виндой и стандартным программой-конфигуратором работает, все читается-записывается.
Подключаю к FreeBSD 8.4, адаптер определяется
Код: Выделить всё
ugen0.5: <FTDI> at usbus0
uftdi0: <FT232R USB UART> on usbus0
Ставить 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);
?>
И через шелл(немного модифицированный скрипт от 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 $!
В хозяйстве есть еще 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, могут быть еще какие-то аппаратные проблемы?
"Та нам з тобою своє робити, відкрити очі і далі йти!
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)
Re: Опрос электросчетчика Меркурий 230
Хотя и под виндой себе настраивал, но через php.kpp писал(а): Ставить php dio нет желания.
Есть 2 момента:
1. Через foppen/fclose работает нестабильно, поставил таки dio - все стало хорошо.
2. Иногда возникают затыки с открытием порта(стабильно после перезагрузки компа), помогает "пнуть" разок родной прогой, т.е. просто запустить прогу, установить коннект и закрыть прогу. После этого все работает.
Re: Опрос электросчетчика Меркурий 230
Под виндой работа с портами через php open\close либо плохо, либо вообще не реализована.Victor_S писал(а): ...
2. Иногда возникают затыки с открытием порта(стабильно после перезагрузки компа), помогает "пнуть" разок родной прогой, т.е. просто запустить прогу, установить коннект и закрыть прогу. После этого все работает.
Подозреваю, что родная прога выставляет нужные параметры порта, которые сохраняются до перезапуска винды.
"Та нам з тобою своє робити, відкрити очі і далі йти!
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)
Re: Опрос электросчетчика Меркурий 230
очень даже может быть...
правда я пользую dio_open\close, а пораметры порта через exec()
правда я пользую dio_open\close, а пораметры порта через exec()
Re: Опрос электросчетчика Меркурий 230
Будет ли что-то отвечать счетчик, если контрольная сумма неверная?
Может кто-то у себя проверить?
Может кто-то у себя проверить?
"Та нам з тобою своє робити, відкрити очі і далі йти!
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)
Re: Опрос электросчетчика Меркурий 230
В этой статье у Андрея есть ссылка на протокол Меркурия, скачай, мне информация из него помогла во многих вопросах...
http://www.ab-log.ru/smart-house/mercury-230
http://www.ab-log.ru/smart-house/mercury-230
Re: Опрос электросчетчика Меркурий 230
Уже давно скачано, просмотрено.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).
Контрольную сумму проверил ф-цией, взятой в этой теме.
В формате этого пакета все как бы верно.
"Та нам з тобою своє робити, відкрити очі і далі йти!
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)
Re: Опрос электросчетчика Меркурий 230
Ну раз под виндой у тебя родная прога работает, проверь под ней же свой php скрипт. По крайней мере отбросишь 2-ой и 3-ий пункты...
Re: Опрос электросчетчика Меркурий 230
Значится так.
Удалось вычитать данные со счетчика 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.
Где включается режим повтора команды в ответе - нашел.
Есть ли возможность сброса всех счетчиков через родной софт?
По протоколу - должно быть.
В программе есть пункт меню Инициализация и Калибровка, куда требует пароль.
Какой пароль туда нужен?
Удалось вычитать данные со счетчика 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.
Где включается режим повтора команды в ответе - нашел.
Есть ли возможность сброса всех счетчиков через родной софт?
По протоколу - должно быть.
В программе есть пункт меню Инициализация и Калибровка, куда требует пароль.
Какой пароль туда нужен?
"Та нам з тобою своє робити, відкрити очі і далі йти!
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)
Re: Опрос электросчетчика Меркурий 230
Никто не сталкивался с ситуацией пропадания связи по интерфейсу со счетчиком после подключения 3-й фазы?
http://www.incotexcom.ru/faqmercury/vie ... ?f=6&t=249
Похоже у меня такая ситуация ;(
http://www.incotexcom.ru/faqmercury/vie ... ?f=6&t=249
Похоже у меня такая ситуация ;(
"Та нам з тобою своє робити, відкрити очі і далі йти!
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)
-
- Сообщения: 1
- Зарегистрирован: 22 авг 2015, 22:29
Re: Опрос электросчетчика Меркурий 230
Добрый день!
Уважаемый 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, а в чем была засада по проверке через 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
Re: Опрос электросчетчика Меркурий 230
Уже не скажу почему не пошло через cat /dev/tty, после всехопытов получилось только через dd.s_shaburkin писал(а): Уважаемый kpp, а в чем была засада по проверке через cat /dev/tty ... ? )
Тоже пытаюсь на Linux (правда, на роутере) достучаться до счетчика, прежде чем кодировать,
но cat /dev/ttyUSB молчит - или я что-то не то посылаю, или или неправильно сконфигурирован c с помощью stty /dev/ttyUSB0.
(stty -F /dev/ttyUSB0 cs8 9600 -echo -cstopb)
Возьмите мой скрипт, попробуйте.
"Та нам з тобою своє робити, відкрити очі і далі йти!
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)
І зуби сильно стиснувши, маму ніжно любити, хто ж тоді, як не ми, брати?!"(с)
Re: Опрос электросчетчика Меркурий 230
У кого нибудь есть работающий скрипт для Меркурия 230 по windows?
Спасибо.
Спасибо.