Электросчетчики Энергомеры
- Войдите на сайт для отправки комментариев
Чт, 22/02/2018 - 00:00
Доброго времени суток, форумчане!
Народ, может кто делал опрос СЕ301,СЕ303 Энергомеры по rs485 на Ардуино?
Подсажите, какие библиотеки использовать.
Может и код у кого завалялся? В образовательных целях конечно.
Тоже хотел бы сдернуть показания со счётчика, для умного дома
Народ, может кто делал опрос СЕ301,СЕ303 Энергомеры по rs485 на Ардуино?
Подсажите, какие библиотеки использовать.
Урок 60. Интерфейс RS-485: http://mypractic.ru/urok-60-interfejs-rs-485.html
... и дальше там в следующей статье.
Но первейшее что вам надо, думаю, это купить модуль расширения RS-485.
Народ, может кто делал опрос СЕ301,СЕ303 Энергомеры по rs485 на Ардуино?
Подсажите, какие библиотеки использовать.
Урок 60. Интерфейс RS-485: http://mypractic.ru/urok-60-interfejs-rs-485.html
... и дальше там в следующей статье.
Но первейшее что вам надо, думаю, это купить модуль расширения RS-485.
Модуль rs-485 для ардуино есть. Статью посмотрю позже. Для меня сложности в том, чтобы понять принцип раскодировки данных по протоколу
В мануале на счётчик такое должно приводиться/описываться.
Не цитируйте полностью. Позязя.
Нет в мануале протококола. Только название - какой то ГОСТ.... Нашёл, посмотрел описание - очень похоже на MODBUS но с особенностями. Для ардуины ничего не нашёл. У них программа на PC полностью покрывает все нужды. На форумах народ сам ковырял снифферами. Результатов не нашел.
читайте здесь , а также смотрите там ответ на первое сообщение, там представлено куча ссылок по теме.
Ну да... Нет там решения. И по ссылкам нет. Для размышлений http://www.energomera.ru/documentations/ce102_op.pdf
вот есть какая то библиотека
https://github.com/semiotproject/Energomera-CE102-lib
Библиотека выглядит соответствующей описанию протокола, вот только секундная задержка после посылки каждого байта напрягает.
Библиотека выглядит соответствующей описанию протокола, вот только секундная задержка после посылки каждого байта напрягает.
вопрос как ее применять?
лично мне самому не разобраться без примера
Мне удалось опросить.
Чуть позже дам скетч
Заливайте в эти ваши Ардуины и тестите. Все должно работать( у меня работает) Допиливайте по своему желанию.
Естественно все работает через конвертер Rs485-ttl
СЕ301, СЕ303
спасибо добрый человек
еще не тестировал, но появились вопросы: как добавить в код текущие показания счетчика, ток и мощность?
текущие показания есть в скетче который я выложил выше, а все остальное я вам завтра допишу, а то сегодня уже неохота
да, точно. это общие показания по всем тарифам?
пытался разобраться как формируются строки 10-17 и 35, не получилось)
позже протестирую у себя на счетчике, у меня С102
на 102 не будет работать, там протокол обмена другой этотт скетч для 301,303
на 102 не будет работать, там протокол обмена другой этотт скетч для 301,303
а вот это печально
есть желание пояснить как мне сделать код для 102?
я так понимаю поменяется в основном код в строках 10-17?
я не видел протокол на 102, но скорее всего поменяется еще и 35
чуть позже гляну
в посту №7 документ с протоколами для разных счетчиков
в моем посту №8 библиотека для 102, найденная на просторах интернета, но я не знаю как ее применять
вообще по энергомере мало инфы, больше по меркурию
А вообще попробуйте подключить счетчик к компьютеру и попробовать опросить через AdminTools и посмотрите, какие запросы шлет счетчик. Можете еще паралельно послушать порт через Serial Port Monitor или что-то похожее. Можете потом руками в нем попробовать отослать те же запросы.
USB-RS-485 у меня нет, чтобы опросить с помощью AdminTools, если только ардуино использовать в качестве переходника
залил ваш скетч, все таки у меня работает. получаю вот что
0x81 0xd2 0xb1 0x82 0xc3 0x55 0xd2 0xd2 0xc5 0x28 0xa9 0x03 0x5a
Попробуйте считать ток
вставил ток, вместо напряжения, получил
чем вам еще помочь?
для меня осталось не понятным как формируется запрос в счетчик, пытаюсь вникнуть
далее буду изучать вопрос перевода VOLTA(237.88) во float переменную, для использования ее в разных частях моего скетча (кстати все это для умного дома)
мусор что у меня вместе с данными сыпется, видимо от того что я просто использую 2 жилы витой пары, и надо добавить терминальные резисторы
вам уже спасибо за эту инфу
Ардуино порт работает в формате 8N1(8 - бит данных,N (none) - бит четности, 1 - стоповый бит), а у счетчика 7e1 , ( 7 бит данных, четность E(even), 1 - cтоповый бит).
Возможно кстати мусор из-за того что не хватает одного бита в данных, у меня он (мусор) вроде тоже есть, я не помню.
Так вот. первый запрос в счетчик в ASCii выглядит так - /?!<CR><LF>
В HEX - 2f 3f 0d 0a, но так как ардуино не вычисляет бит четности, то делал я это руками.
Открываем к примеру этот конвертер https://www.asciitohex.com/
2f 3f 0d 0a пишем это в разел HEX и конвертируем. В окне с бинарными значениями находим биты с нечетным количеством 1, и меняем первую цифру на 1. Пример 2f -00101111 - 10101111-AF.
Если не производить этого, то счетчик не понимает запрос.
Объяснил как мог, на сколько сам понимаю.
Вам стало бы понятней, если бы вы видели опрос AdminTools-ом
Вот так выглядит опрос AdminTools
Снятие показаний электроэнергии
да, сейчас понятно откуда и как формируется hex для ардуино
читая описание протокола обмена так и не понял где взять или как сформировать hex код, а тут получается все это проще увидеть в AdminTools и сконвертировать описанным вами способом?
да, проще всего так.
Если у вас получиться извлечь в отдельные переменные данные, то пиши свои успехи здесь, я думаю пригодиться кому-то, да и я воспользуюсь, а то пока занят другим.
обязательно
данной инфы очень мало
сейчас буду копать как запустить у меня AdminTools
Удачи.
без преобразователя интерфейса будет трудно
пока с преобразованием в переменные глухо, с наводками знакомого специалиста прогера пытался разобраться в функциях СИ, не получается, но думаю он мне поможет
с AdminTools тоже ничего, нужен переходник, заказал в китае, жду..
буду признателен если вы мне скинете Нех коды с AdminTools на получение активной мощности и частоты сети, я переконвентирую и попробую снять эти параметры
так-с вот:
Частота сети : 01 52 31 02 46 52 45 51 55 28 29 03 5с
чтобы перевести строку во float, есть функция Volts = atof(response);
но при этом response должно являться строкой, а строка-оканчивается на \0
проблема в том как response сделать строкой
мощность : 01 52 31 02 50 4f 57 45 50 28 29 03 64
на просторах интернета нашел что-то такое, попробуйте
http://bigbarrel.ru/%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B0%D1%...
что то ни частоту, ни мощность не удается считать
сейчас я попробую
0x81,0xd2,0xb1,0x82,0x50,0xcf,0xd7,0xc5,0x50,0x28,0xa9,0x03,0xe4
мощность считало, с частотой пока не получилось, сейчас посмотрим
0x81,0xd2,0xb1,0x82,0xc6,0xd2,0xc5,0xd1,0x55,0x28,0xa9,0x03,0x5c
частота
почему числа 50, 03, 28 остаются без конвертирования? (на примере мощности)
с вашим кодом и у меня работает и мощность и частота
50 = 01010000
03 = 00000011
28 = 00101000
у всех по четному количеству "1"
а первый "0" меняем на "1" в случае если нечетно количество "1"
2f = 00101111, значит меняем на 10101111 и конвертируем опять, получается - af
да, теперь понятно
поступило предложение перенастроить сериал порт ардуино на 7Е1, для того чтобы избавиться от сомнительного преобразования в коде response &= 0x7F;// convert 8N1 to 7E1
https://www.arduino.cc/reference/en/language/functions/communication/ser...
я сейчас тестирую счетчик на ардуино нано, с ним данная махинация не получится
позже доберусь до основной системы, подключу туда RS-485, там как раз ардуино мега
я пробовал, у меня не пошло. Может не так что делал. Попробуйте будет интересно узнать ваш опыт.
Чтобы не перекодировать данные, можно RS485 повесить на хард сериал. Тогда инит хард сериала сделать так
а данные выводить (так как хард уже занят), например, на lcd или в монитор порта через USB<->UART
Эмм, опоздал немного)
я пробовал, у меня не пошло. Может не так что делал. Попробуйте будет интересно узнать ваш опыт.
может вы на софтсериале пробовали, вроде как это только на хард канает
да, тоже как вариант
USB<->UART у меня где то валялся
странное дело, подключил все на ардуино мега с изначально рабочим кодом, но RS-485 на хард сериал, не работает(в коде, естественно поменял необходимое), работает только на софт сериал
харды разные пробовали? у меня так на уно было. GSM модуль на аппаратном не хотел запускаться, правда я не стал разбираться в чем причина. повесил на софтсериал, так и работает до сих пор.