Электросчетчик Меркурий 236, интеграция
Электросчетчик Меркурий 236, интеграция
Только что закончил написание и отладку "вчерне" модуля связи со счетчиком Меркурий 236. По сути, модуль написан по мотивам статьи про Меркурий 230, опубликованной на сайте Андрея, реализация на С. Исходники доступны на https://github.com/Shden/Shden/tree/master/mercury236, возможно кому-то пригодится.
Re: Электросчетчик Меркурий 236, интеграция
очень полезная весчь а какие различия в командах между 230 и 236? пытаюсь считать с 230-го:
Код: Выделить всё
root@homeserver# ./mercury236 --debug
Sent bytes: 4
00 00 01 B0
Received bytes: 3
00 01 B0
Check channel failure.: Success
root@homeserver# ./mercury236 --debug
Sent bytes: 4
00 00 01 B0
Received bytes: 4
00 00 01 B0
Sent bytes: 4
00 00 01 B0
Received bytes: 1
00
Power meter communication channel test failed.: Success
Re: Электросчетчик Меркурий 236, интеграция
Никаких отличий между 230 и 236 в том поднаборе команд, которые использованы, я не нашел. То есть по большей части протокол обмена брался по дампам в статье про 230 и уточнялся по спеке.
Что касается возможной причины проблем - кажется, что это коммуникационный канал. По дампу выше видно, что в 1-м запуске все упало на check channel - тривиальная проверка канала. Ответ от счетчика пришел без 1-го байта. Затем 1-я проверка уже прошла, но упала 2-я такая же. Кстати, я у себя увидел баг Проверять канал дважды смысла особого нет.
В общем, я бы проверял физический уровень связи.
Что касается возможной причины проблем - кажется, что это коммуникационный канал. По дампу выше видно, что в 1-м запуске все упало на check channel - тривиальная проверка канала. Ответ от счетчика пришел без 1-го байта. Затем 1-я проверка уже прошла, но упала 2-я такая же. Кстати, я у себя увидел баг Проверять канал дважды смысла особого нет.
В общем, я бы проверял физический уровень связи.
Re: Электросчетчик Меркурий 236, интеграция
физический уровень связи работает. вот вывод другого скрипта на перле. кстати, хорошо бы задавать tty с командной строки.den писал(а): ...
В общем, я бы проверял физический уровень связи.
Код: Выделить всё
root@homeserver:~# ./mercury236 --debug
Sent bytes: 4
00 00 01 B0
Received bytes: 4
00 00 01 B0
Sent bytes: 4
00 00 01 B0
Received bytes: 1
00
Power meter communication channel test failed.: Success
root@homeserver:~# ./mercury236 --debug
Sent bytes: 4
00 00 01 B0
Received bytes: 7
00 01 B0 00 00 01 B0
Check channel failure.: Success
root@homeserver:~# ./mon230 00 111111 /dev/ttyV0
99;0;208.69;0;0;0;0;50.02;null;null;null;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;43650.541;null;4991.05;null;22751.748;null;2882.026;null
Re: Электросчетчик Меркурий 236, интеграция
Командная строка - это дело, поправил
По поводу ошибок канала, видимо надо сравнивать параметры с которыми открывается сериальный порт на перле и у меня. Других гипотез нет...
По поводу ошибок канала, видимо надо сравнивать параметры с которыми открывается сериальный порт на перле и у меня. Других гипотез нет...
Re: Электросчетчик Меркурий 236, интеграция
я в перле не силен, видимо это:
скрипт полностью http://pastebin.com/uAWMjdqb
Код: Выделить всё
...
my $port=Device::SerialPort->new("$device");
my ($status,$cnt,@data);
...
Re: Электросчетчик Меркурий 236, интеграция
Кажется, нашел возможную причину. Dimonix - попробуйте плз, уже интересно что там )))
Re: Электросчетчик Меркурий 236, интеграция
кажется работает правда углы между фазами какие-то нереальные. у меня тестовый счетчик подключен только к одной фазе.den писал(а):Кажется, нашел возможную причину. Dimonix - попробуйте плз, уже интересно что там )))
Код: Выделить всё
root@homeserver# ./mercury236 /dev/ttyV0 --debug
Sent bytes: 4
00 00 01 B0
Received bytes: 4
00 00 01 B0
Sent bytes: 11
00 01 01 01 01 01 01 01 01 77 81
Received bytes: 4
00 00 01 B0
Sent bytes: 6
00 08 16 11 4F 8A
Received bytes: 12
00 00 00 00 00 DA 52 00 00 00 39 6C
Sent bytes: 6
00 08 16 21 4F 9E
Received bytes: 12
00 00 00 00 00 00 00 00 00 00 70 07
Sent bytes: 6
00 08 16 30 8F 92
Received bytes: 15
00 00 00 00 00 00 00 00 00 00 00 00 00 03 EB
Sent bytes: 6
00 08 16 40 8E 76
Received bytes: 6
00 00 89 13 26 79
Sent bytes: 6
00 08 16 51 4E 7A
Received bytes: 12
00 FF FF FF FF FF FF FF FF FF 74 77
Sent bytes: 6
00 08 16 00 8F 86
Received bytes: 15
00 00 00 00 00 00 00 00 00 00 00 00 00 03 EB
Sent bytes: 6
00 08 16 08 8E 40
Received bytes: 15
00 00 00 00 00 00 00 00 00 00 00 00 00 03 EB
Sent bytes: 6
00 05 00 00 10 25
Received bytes: 19
00 F5 03 F1 37 FF FF FF FF 78 00 33 22 FF FF FF FF E0 37
Sent bytes: 6
00 05 50 00 2C 25
Received bytes: 19
00 00 00 00 00 FF FF FF FF 00 00 00 00 FF FF FF FF 65 E1
Sent bytes: 6
00 05 40 00 21 E5
Received bytes: 19
00 00 00 00 00 FF FF FF FF 00 00 00 00 FF FF FF FF 65 E1
Sent bytes: 4
00 02 80 71
Received bytes: 4
00 00 01 B0
Voltage (V): 0.00 212.10 0.00
Current (A): 0.00 0.00 0.00
Cos(f): 0.00 0.00 0.00 ( 0.00)
Frequency (Hz): 50.01
Phase angles (deg): 41943.03 41943.03 41943.03
Active power (W): 0.00 0.00 0.00 ( 0.00)
Reactive power (VA): 0.00 0.00 0.00 ( 0.00)
Total consumed (KW): 66402.29 7873.08
Yesterday consumed (KW): 0.00 0.00
Today consumed (KW): 0.00 0.00
Re: Электросчетчик Меркурий 236, интеграция
Ю-хууу
Углы в такой конфигурации (при 1 фазе) такие и есть - очевидно, в реализации на стороне счетчика просто происходит переполнение чего-то в ожидании несуществующей фазы. Когда будут все три, картинка станет более правдоподобной, хотя тоже не вполне реальная - у меня он показывает 2 фазы с углом 120 и одну 240. Но в общем-то эти углы не особо полезны в быту - вряд ли кто-то подключает 3-фазные двигатели и прочую сантехнику для которой нужн именно 3 фазы с нужным чередованием.
Углы в такой конфигурации (при 1 фазе) такие и есть - очевидно, в реализации на стороне счетчика просто происходит переполнение чего-то в ожидании несуществующей фазы. Когда будут все три, картинка станет более правдоподобной, хотя тоже не вполне реальная - у меня он показывает 2 фазы с углом 120 и одну 240. Но в общем-то эти углы не особо полезны в быту - вряд ли кто-то подключает 3-фазные двигатели и прочую сантехнику для которой нужн именно 3 фазы с нужным чередованием.
Re: Электросчетчик Меркурий 236, интеграция
С углами так и должно быть. На картинке пример данных реального счетчика на подстанции нашей "деревни" (ток и мощность умножить на 30).den писал(а):Ю-хууу
Углы в такой конфигурации (при 1 фазе) такие и есть - очевидно, в реализации на стороне счетчика просто происходит переполнение чего-то в ожидании несуществующей фазы. Когда будут все три, картинка станет более правдоподобной, хотя тоже не вполне реальная - у меня он показывает 2 фазы с углом 120 и одну 240. Но в общем-то эти углы не особо полезны в быту - вряд ли кто-то подключает 3-фазные двигатели и прочую сантехнику для которой нужн именно 3 фазы с нужным чередованием.
Re: Электросчетчик Меркурий 236, интеграция
Перенес в отдельный модуль, новый адрес: https://github.com/Shden/mercury236.
Re: Электросчетчик Меркурий 236, интеграция
Приветствую.
Написал вопрос на GitHub https://github.com/Shden/mercury236/issues/4 однако спрошу и здесь, может кому-то еще будет интересно.
Программка с трехфазным счётчиком работает хорошо, а вот на однофазном Меркурий 206 RN, приобретённом недавно, добиться результата не удалось.
Должен-ли счётчик однофазный что-либо отвечать или проблема в чём-то другом может быть ?
P.S. Удалось выяснить что нужно в качестве RS485 ID использовать не 0, а все восемь цифр серийного номера, потому что эти счётчики не понимают 0 как широковещательный адрес.
В связи с этим предложение - ввести соответствующую опцию в командную строку (номер) ну и подрезать, может (опционально)выхлоп по параметрам, что-бы только одну фазу показывало.
P.P.S. Подключил счётчик в Windows к стандартной программе Конфигуратор, настроил себе тарифные планы (счётчик будет использоваться во внутренней энергосистеме) - т.е. аппаратная часть исправна.
При сборке утилиты из исходников, если вместо 0 указывать серийный номер, ругается на недопустимо большое значение, наверное там что-то нужно еще править.
Написал вопрос на GitHub https://github.com/Shden/mercury236/issues/4 однако спрошу и здесь, может кому-то еще будет интересно.
Программка с трехфазным счётчиком работает хорошо, а вот на однофазном Меркурий 206 RN, приобретённом недавно, добиться результата не удалось.
Должен-ли счётчик однофазный что-либо отвечать или проблема в чём-то другом может быть ?
P.S. Удалось выяснить что нужно в качестве RS485 ID использовать не 0, а все восемь цифр серийного номера, потому что эти счётчики не понимают 0 как широковещательный адрес.
В связи с этим предложение - ввести соответствующую опцию в командную строку (номер) ну и подрезать, может (опционально)выхлоп по параметрам, что-бы только одну фазу показывало.
P.P.S. Подключил счётчик в Windows к стандартной программе Конфигуратор, настроил себе тарифные планы (счётчик будет использоваться во внутренней энергосистеме) - т.е. аппаратная часть исправна.
При сборке утилиты из исходников, если вместо 0 указывать серийный номер, ругается на недопустимо большое значение, наверное там что-то нужно еще править.
Re: Электросчетчик Меркурий 236, интеграция
Осмелюсь предложить свою самоделку для Меркурий 206 под OpenWrt - https://github.com/ZigFisher/Glutinium/ ... mercury206
Подборка некоторых ссылок и недописанные мои заметки здесь - https://zftlab.org/pages/2018022100.html
Фидбек, тесты и правки приветствуются  Спасибо !
Подборка некоторых ссылок и недописанные мои заметки здесь - https://zftlab.org/pages/2018022100.html
Фидбек, тесты и правки приветствуются  Спасибо !