Хочу рассказать про опыт подключения электросчетчика Eastron SDM220-Modbus и получения данных с него.
В целом ничего сложного нет, счетчик имеет стандартный интерфейс RS485 и поддерживает протокол Modbus.
![](https://habrastorage.org/r/w780q1/files/1c4/2f7/4f7/1c42f74f7ce74c0981575ac6a0cf3330.jpg)
Счетчик был куплен на aliexpress.
Для подключения был использован USB-RS485 адаптер собственного производства на базе FT232RL и SP485, но должно работать и с любым другим адаптером.
![](https://habrastorage.org/r/w780q1/files/59f/4fe/840/59f4fe8403d64e9381bd79908fcfacee.jpg)
При подключении питания счетчик показывает текущие настройки, в том числе и скорость соединения, по умолчанию стояла скорость 2400, несмотря на то, что в даташине написана 9600. Я менял ее на 9600. Для этого нужно зажать на 3 сек. кнопку с угловой стрелкой, выбрать нужную настройку, изменить ее и и выйти из настроек зажав кнопку с круговыми стрелками.
![](https://habrastorage.org/r/w780q1/files/7d2/5e3/9dd/7d25e39dd9544369987269bb4954d3d6.jpg)
Чтобы получить данные с устройства, нужно через адаптер usb-RS485 отправить в виртуальный com-порт 8-байтовый запрос:
![](https://habrastorage.org/r/w1560/files/7a5/31e/8c3/7a531e8c3c39488cae0a898a3de383fc.png)
Например, 01-04-00-00-00-02-71-CB
Где 01 — адрес устройства, виден на самом счетчике, по умолчанию — 1
04 — код операции, чтение регистра данных
00-00 — номер регистра, в этом регистре, например, хранится значение напряжения
00-02 — количество ячеек для чтения (2 байта)
71-CB — контрольная сумма по алгоритму CRC-16
Если все верно, в ответ прийдет сообщение вида:
![](https://habrastorage.org/r/w1560/files/d6f/7ac/ee2/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
Для опроса счетчика была написана простенькая программа, которая позволяет опросить каждый отдельный регистр счетчика и все регистры последовательно.
![](https://habrastorage.org/r/w1560/files/846/7a0/447/8467a04471b6489c8a992508e3c63d24.png)
Красным шрифтом пишется запрос, синим — ответ, зеленым — декодированное значение, коричневым результаты опроса всех регистров.
Для работы нужен .NET Framework 3.0, в списке нужно выбрать com-порт, к которому подключился преобразователь RS485
Саму программу, а также документацию на счетчик можно скачать на нашем сайте megadevices.com.ua
Планы на будущее — прикрутить ESP8266 и организовать передачу данных на Народный мониторинг
В целом ничего сложного нет, счетчик имеет стандартный интерфейс RS485 и поддерживает протокол Modbus.
![](https://habrastorage.org/files/1c4/2f7/4f7/1c42f74f7ce74c0981575ac6a0cf3330.jpg)
Счетчик был куплен на aliexpress.
Для подключения был использован USB-RS485 адаптер собственного производства на базе FT232RL и SP485, но должно работать и с любым другим адаптером.
![](https://habrastorage.org/files/59f/4fe/840/59f4fe8403d64e9381bd79908fcfacee.jpg)
При подключении питания счетчик показывает текущие настройки, в том числе и скорость соединения, по умолчанию стояла скорость 2400, несмотря на то, что в даташине написана 9600. Я менял ее на 9600. Для этого нужно зажать на 3 сек. кнопку с угловой стрелкой, выбрать нужную настройку, изменить ее и и выйти из настроек зажав кнопку с круговыми стрелками.
![](https://habrastorage.org/files/7d2/5e3/9dd/7d25e39dd9544369987269bb4954d3d6.jpg)
Чтобы получить данные с устройства, нужно через адаптер usb-RS485 отправить в виртуальный com-порт 8-байтовый запрос:
![](https://habrastorage.org/files/7a5/31e/8c3/7a531e8c3c39488cae0a898a3de383fc.png)
Например, 01-04-00-00-00-02-71-CB
Где 01 — адрес устройства, виден на самом счетчике, по умолчанию — 1
04 — код операции, чтение регистра данных
00-00 — номер регистра, в этом регистре, например, хранится значение напряжения
00-02 — количество ячеек для чтения (2 байта)
71-CB — контрольная сумма по алгоритму CRC-16
Если все верно, в ответ прийдет сообщение вида:
![](https://habrastorage.org/files/d6f/7ac/ee2/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
Для опроса счетчика была написана простенькая программа, которая позволяет опросить каждый отдельный регистр счетчика и все регистры последовательно.
![](https://habrastorage.org/files/846/7a0/447/8467a04471b6489c8a992508e3c63d24.png)
Красным шрифтом пишется запрос, синим — ответ, зеленым — декодированное значение, коричневым результаты опроса всех регистров.
Для работы нужен .NET Framework 3.0, в списке нужно выбрать com-порт, к которому подключился преобразователь RS485
Саму программу, а также документацию на счетчик можно скачать на нашем сайте megadevices.com.ua
Планы на будущее — прикрутить ESP8266 и организовать передачу данных на Народный мониторинг