Просмотр полной версии : ПЛК и счетчики Энергомера
Kostic77
01.04.2013, 12:09
Добрый день.
Можно ли где-нибудь глянуть пример организации связи между ПЛК100 и электросчетчиком СЕ303.
Надо чтобы ПЛК считывал значение нагрузки со счетчика и ограничивал потребление по заданному суточному графику.
Евгений_Томск
01.04.2013, 21:46
С использованием ПЛК показания с Энергомеры не считывали.Но пользовались их бесплатной прогой под Винду для опроса по RS485 нескольких счётчиков.Работает хорошо! Думаю ПЛК может легко их опросить.Надо только найти описание их регистров...
У этого счетчика другой протокол обмена ГОСТ Р МЭК 61107-2001.
Описание приведено в частности в руководстве по программированию счетчика.
Впрочем, реализовать одну команду через СОМ-порт - не сложно.
А смысл? Ссылку дали. Бесплатно делать врядли кто будет, и даже за деньги - только тот, у кого уже есть счетчик.
А вдруг топикстартер сделал и решит поделиться? :)
Давайте продолжим?
Подключил библиотеку CAA SerialCom, описал параметры порта (счетчик подключен по RS485, второй порт СПК207, параметры порта счетчика Baud Rate: 9600 Data Bits: 7 Parity Check: even Stop Bits: 1).
VAR
aCom3Params : ARRAY [1..7] OF com.PARAMETER := [ // параметры компорта 2, где висит счетчик
(udiParameterId:=COM.CAA_Parameter_Constants.udiPo rt, udiValue:=3), // номер порта, на СПК207 подписанный ком2 в программе - 3
(udiParameterId:=COM.CAA_Parameter_Constants.udiBa udrate, udiValue:=9600), // битрейт
(udiParameterId:=COM.CAA_Parameter_Constants.udiPa rity, udiValue:= com.COM_Parity.SYS_EVENPARITY), //четность
(udiParameterId:=COM.CAA_Parameter_Constants.udiSt opBits, udiValue:=com.COM_StopBits.SYS_ONESTOPBIT ), // стоп бит
(udiParameterId:=COM.CAA_Parameter_Constants.udiTi meout, udiValue:=0),
(udiParameterId:=COM.CAA_Parameter_Constants.udiBy teSize, udiValue:=7),
(udiParameterId:=COM.CAA_Parameter_Constants.udiBi nary, udiValue:=0)
];
END_VAR
Как дальше быть? Подскажите, как в этот порт отправить запрос и получить ответ?
Из инструкции к счетчику (п.5.2.2):
Быстрое выборочное считывание параметров (вне сеанса) осуществляется с помощью команд:
/?! SOH R1 STX NAME() ETX BCC − безадресная
/?адрес! SOH R1 STX NAME() ETX BCC − адресная
где NAME− имя параметра,
адрес–идентификатор счетчика в сети, значение параметра IDPAS.
http://energomera.by.atservers.net/documentations/po/ce301_ce303_instruction_on_prog_v11.pdf
Если я правильно понимаю, то нужно с помощью ф-ции записи отправить в порт /?адрес! SOH R1 STX NAME() ETX BCC и с помощью ф-ции чтения получить ответ от счетчика.
Можно порт запустить и через ComConn (SysCom) и отправить в порт вышеуказанную последовательность (тоже пытаюсь раскурить инструкцию к счетчику и МЭК 61107-2011).
Давайте продолжим?
Подключил библиотеку CAA SerialCom, описал параметры порта (счетчик подключен по RS485, второй порт СПК207, параметры порта счетчика Baud Rate: 9600 Data Bits: 7 Parity Check: even Stop Bits: 1).
VAR
aCom3Params : ARRAY [1..7] OF com.PARAMETER := [ // параметры компорта 2, где висит счетчик
(udiParameterId:=COM.CAA_Parameter_Constants.udiPo rt, udiValue:=3), // номер порта, на СПК207 подписанный ком2 в программе - 3
(udiParameterId:=COM.CAA_Parameter_Constants.udiBa udrate, udiValue:=9600), // битрейт
(udiParameterId:=COM.CAA_Parameter_Constants.udiPa rity, udiValue:= com.COM_Parity.SYS_EVENPARITY), //четность
(udiParameterId:=COM.CAA_Parameter_Constants.udiSt opBits, udiValue:=com.COM_StopBits.SYS_ONESTOPBIT ), // стоп бит
(udiParameterId:=COM.CAA_Parameter_Constants.udiTi meout, udiValue:=0),
(udiParameterId:=COM.CAA_Parameter_Constants.udiBy teSize, udiValue:=7),
(udiParameterId:=COM.CAA_Parameter_Constants.udiBi nary, udiValue:=0)
];
END_VAR
Как дальше быть? Подскажите, как в этот порт отправить запрос и получить ответ?
murdemon
04.05.2015, 16:22
Могу помочь в написании программы для обработки протокола Энергомера. Если интересно напиши на dmitriy.murashov@automation-engineering.ru
p_dima90
17.01.2022, 10:38
Добрый день!
Кто-нибудь уже опрашивал Энергомеру СЕ318 по SMP (Smart Metering Protocol) протоколу?
Интересует расположение данных в ответе, вот например запрос на серийный номер 58749, как расшифровать, какой байт за что отвечает ?
Описание протокола приложил, но легче как-то не стало.
p_dima90 если предположить, что 06 97 32 C6 это адрес счетчика а 04 это команда, то адрес и близко не напоминает 80097943
По ходу тут вмешивается lbf по описанию протокола... В общем изучать, изучать и изучать :)
А нафига вы такой выбрали то?
p_dima90
17.01.2022, 11:39
p_dima90 если предположить, что 06 97 32 C6 это адрес счетчика а 04 это команда, то адрес и близко не напоминает 80097943
По ходу тут вмешивается lbf по описанию протокола... В общем изучать, изучать и изучать :)
А нафига вы такой выбрали то?
Так а кто у нас спрашивает ?
В проекте такой, ген. подрядчик все купил и установил согласно проекту, а нам теперь нужно с этого всего данные на SCADу забрать
p_dima90
17.01.2022, 11:46
p_dima90 если предположить, что 06 97 32 C6 это адрес счетчика а 04 это команда, то адрес и близко не напоминает 80097943
По ходу тут вмешивается lbf по описанию протокола... В общем изучать, изучать и изучать :)
А нафига вы такой выбрали то?
Ну адрес длинный, я так понял, что lbf разделяет байты, вопрос в том, нужно ли ими жонглировать, что бы собрать нужное число...
Судя по описанию нужно, если правильно понял, то надо определить порядок байт и проверять старший бит, сколько байт на одно число уходит.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot