Мониторинг электроэнергии со счетчиком Eastron SDM220-Modbus

Хочу рассказать про опыт подключения электросчетчика Eastron SDM220-Modbus и получения данных с него.
В целом ничего сложного нет, счетчик имеет стандартный интерфейс RS485 и поддерживает протокол Modbus.

1c42f74f7ce74c0981575ac6a0cf3330.jpg
Счетчик был куплен на aliexpress.
Для подключения был использован USB-RS485 адаптер собственного производства на базе FT232RL и SP485, но должно работать и с любым другим адаптером.

59f4fe8403d64e9381bd79908fcfacee.jpg

При подключении питания счетчик показывает текущие настройки, в том числе и скорость соединения, по умолчанию стояла скорость 2400, несмотря на то, что в даташине написана 9600. Я менял ее на 9600. Для этого нужно зажать на 3 сек. кнопку с угловой стрелкой, выбрать нужную настройку, изменить ее и и выйти из настроек зажав кнопку с круговыми стрелками.
7d25e39dd9544369987269bb4954d3d6.jpg
Чтобы получить данные с устройства, нужно через адаптер usb-RS485 отправить в виртуальный com-порт 8-байтовый запрос:
7a531e8c3c39488cae0a898a3de383fc.png
Например, 01–04–00–00–00–02–71-CB
Где 01 — адрес устройства, виден на самом счетчике, по умолчанию — 1
04 — код операции, чтение регистра данных
00–00 — номер регистра, в этом регистре, например, хранится значение напряжения
00–02 — количество ячеек для чтения (2 байта)
71-CB — контрольная сумма по алгоритму CRC-16

Если все верно, в ответ прийдет сообщение вида:
d6f7acee2695439aae68174b0b7e6162.png
Например, 01–04–04–43–4C-A1-C5–96–14
Где 01 — адрес
04 — код ответа на запрос
04 — кол-во байт ответа
43–4С-A1-C5 — возвращенное значение float в формате IEEE 754 в обратном порядке, т.е. значение должно быть C5-A1–4C-43
96–14 — контрольная сумма CRC-16

Для опроса счетчика была написана простенькая программа, которая позволяет опросить каждый отдельный регистр счетчика и все регистры последовательно.

8467a04471b6489c8a992508e3c63d24.png
Красным шрифтом пишется запрос, синим — ответ, зеленым — декодированное значение, коричневым результаты опроса всех регистров.
Для работы нужен .NET Framework 3.0, в списке нужно выбрать com-порт, к которому подключился преобразователь RS485

Саму программу, а также документацию на счетчик можно скачать на нашем сайте megadevices.com.ua

Планы на будущее — прикрутить ESP8266 и организовать передачу данных на Народный мониторинг

© Geektimes