SDM220 счетчик энергии с Modbus RTU. Обмен данными по протоколу modbus (приложение е)

Добрый день всем!

Герой обзора однофазный счетчик от Eastron.
Это не обычный обзор, в нем не будет сравнений показаний счетчика с сертифицированными измерительными приборами. Основное внимание уделю внутренностям и протоколу Modbus.
Кого заинтересовал, прошу под кат.

Так как счетчик приобретался давно, информации о покупке, доставке и распаковке не будет.
Кстати сейчас по той же самой ссылке по которой я брал предлагают видимо новую модификацию SDM230, по характеристикам абсолютно идентичную.
Внешне счетчик представляет из себя стандартный 2 DIN модуль. В моей версии силовые провода подключаются снизу, сигнальные сверху.
Счетчик измеряет ток, напряжение, частоту сети, активную, реактивную и полную мощность. Количество энергии, причем в обе стороны. Реально мой экземпляр начинает стабильно работать при напряжении чуть выше 160 вольт.

Технические характеристики

Напряжение питания 220В
Диапазон напряжения 176-276В
Базовый ток 5А
Максимальный ток 100А
Минимальный ток 0,25А
Потребляемая мощность <2Вт/10ВА
Частота 50(±10%)Гц
Максимальное напряжение 4кВ в течении 1 мин
Импульсное напряжение 6кВ - 1.2 мкс
Максимальный ток 30 Imax в течении 0.01 сек
Импульсный выход 1000 имп/кВтч (по умолчанию)
100/10/1 имп/кВтч/кВАрч (настраиваемый)
Дисплей ЖКИ с подсветкой
Разрешение 99999.99кВт

Точность:
Напряжение 0.5% максимального диапазона
Ток 0.5% номинала
Частота 0.2%
Коэффициент мощности 1%
Мощность 1% максимального диапазона
Класс измерителя Class 1 IEC62053-21
Class B EN50470-3


Искал такой прибор именно с Modbus. при заказе оказалось недосмотрел и пришел такой.


Pulse вместо Modbus!
Я конечно был разочарован, думал поругаться с продавцом, но оказалось я не внимательно посмотрел страницу товара, там было сказано что при заказе надо уточнить модель. По умолчанию приходит с импульсным выходом.
Ну думаю делать нечего придется его юзать. Решил разобрать и посмотреть может можно просто впаять недостающие детальки.
В ссылке кстати по умолчанию счетчик на 110 вольт, в тексте написано, что можно и на 220, не забудьте указать продавцу про 220 вольт.

Разборка счетчика

Разбирается легко: снимаем защелку DIN рейки, тонкой отверткой поддеваем защелки снизу, и снимаем нижнюю крышку

Тянем за трансформатор и извлекаем начинку

Конструкция состоит из 4 плат, спаянных между собой.

На нижней плате видим входные и сигнальные контакты, токовый шунт, защитные цепи, трансформаторный источник питания.



На одной из боковых платок резисторы делителя напряжения, стабилизатор на 3,3 вольта

На второй плате куча развязывающих оптронов, и… неожиданно!!! микросхема max3085, которая обеспечивает протокол RS-485.

Значит Modbus все таки есть. В дальнейшем это подтвердилось. Не знаю в чем прикол, но счетчик с версией только импульсных выходов имеет и Modbus. Видимо версии отличаются только наклейкой на корпусе.
Продолжим…
Все измерительные выходы гальванически развязаны от сети. Питание на max3085 подается с отдельной обмотки трансформатора.
Верхнюю плату отпаял что лучше было видно

Счетчик построен на процессоре 71M6541F фирмы Maxim.
Это 8051 совместимый процессор с 22 битным АЦП.
Параметры можно почитать

Силовые контакты выглядят серьезно
В одном из обзоров жаловались на винты из мягкого материала, у меня винты нормальные, шлицы не срезаются.

Нашел у себя толстый провод, сечение не знаю, к сожалению. Рядом провода сечением 1,5 и 2


Провод сжимается плотно и равномерно.

Кстати для сравнения. Вот так выглядят силовые контакты счетчика Меркурий


Это результат попытки зажать тонкий провод.


Рабочее место счетчика

Вид счетчика в щитке совместно с автоматами

Подсветка включается при нажатии любой из кнопок, горит минут 5.
С углами обзора конечно беда. самый лучший вид немного снизу

при взгляде сверху слепнет

сбоку тоже не очень хорошо видно


Так как в счетчике был обнаружен интерфейс RS-485 было решено проверить передачу данных на компьютер. Подключил с помощью моста USB-RS-485. Загрузил программу Modbus Poll. Нашел описание регистров счетчика.
В счетчике по умолчанию стоит скорость 9600. Адрес Modbus 101.

Таблица регистров



Вот так выглядят данные со счетчика в программе:

Я расписал только те параметры которые мне нужны.
Сравнивал показания с прибором Ресурс-UF2M, корректно сравнить конечно не получилось, у ресурса время интегрирования около 2 секунд, а сеть в момент измерения сильно плавала. У счетчика время интегрирования очень мало. Соответственно показания ресурса не поспевали за счетчиком. Но сдвиг фазы и коэффициент мощности сошлись с точностью до второго знака после запятой.

Также получал данные со счетчика на компьютер с помощью OpenHab, затем перенес его на raspberry. Коннектится без проблем. На raspberry поднял систему MySCADA тоже подключил счетчик без проблем.

В общем мне нужен был измеритель мощности реактивной нагрузки, с определением коэффициента мощности и передачей этих параметров по Modbus для экспериментальной установки. Количество потребленной энергии в этом контексте меня не интересовало.
В целом я остался доволен, особенно в части коммуникационных возможностей.
Плюсом считаю применение специализированного процессора для счетчиков. Измерительные цепи, в сравнении с тем же Меркурием, построены одинаково, только в Меркурии процессор от Texas M430FE425.
Для применения в быту конечно цена высоковата, плюс только в том что передает все параметры по Modbus, а не только количество потребленной энергии. Возможно для системы умный дом, с дистанционным контролем параметров.

Планирую купить +42 Добавить в избранное Обзор понравился +39 +73

Для экономии электроэнергии в квартире первым делом надо научиться ее подсчитывать.
Конечно, есть электронный счетчик, но он в этажном щитке. И опломбирован он зачастую так, что подключиться к интерфейсным контактам невозможно.
Можно купить ваттметр в исполнении «розетка с цифирками» и последовательно включать в него все электроприборы. Но это муторно и не все можно воткнуть (например теплый пол)
Поэтому был найден и приобретен модульный (на Din рейку) ваттметр с modbus от эстонской фирмы Eastron
Он будет установлен в домашнем щитке. С него будем получать суточные графики по потреблению.

Это не самый дешёвый ваттметр на рынке - но зато самый красивый и компактный. И надеюсь более точный и надежный.

После получения посылки проверил работу с помощью 75 w галогенки.


циклически нажимая на кнопку получил показания
kWh -0
напряжение: 224 В
Ток: 0.32 А
Мощность: 73 Вт
Частота: 50.04 Гц
Кос Ф: 0.99

Убедившись в работоспособности, немедленно сломал разобрал.


отщелкивается тонкой отверткой.Крепление DIN и корпус не на винтах.

компоновка на высоте - весь корпус забит подзавязку.
между силовыми контактами - плата питания


порадовал крохотный кварц микроконтроллера.
большая черная коробка по середине: конденсатор 230В 0.1 мкФ


платы с синими клемниками - слева платка с оптронами, справа платка с modbus. Сверху индикаторная.


качество пайки отличное - флюс не смыт, на крепежных винтах капли припоя. Процессорная плата заводской пайки.


Ток измеряется с помощью шунта. Перемычка слева для нейтрали - цельномедная. Перемычка справа с вплавкой некоего металла. Это шунт для измерения тока.


Подсветка под ЖК дисплеем. имеет приятный голубоватый оттенок.


Зажимы силовых проводов выглядят вполне надежно. Максимальный ток 45 А
Но винты из довольно мягкого металла, можно сорвать шлицы, используя не ту отвертку.

В целом изделие меня удовлетворило. Поставщик адекватный. Доставка получилась быстрая. Но упаковка негодная - только коробка из тонкого картона.

Вот что я имею в виду про «негодную упаковку»

Осталось подключить и разобраться с RS485

Планирую купить +55 Добавить в избранное Обзор понравился +37 +69

Счетчик может быть настроен для связи в Modbus сетях, использующих один из следующих режимов: ASCII (Американский Стандартный Код для Информационного Обмена) или RTU (Периферийное устройство).

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

Запрос может адресоваться индивидуально к счетчику или широковещательно на все подключенные счетчики. Счетчик возвращает сообщение в ответ на запрос, адресуемый именно ему. На широковещательный запрос ответ не возвращается.

Е.1 Канальный уровень протокола ModBus

Сообщение – запрос главного или ответ счетчика содержит 4 поля: коммуникационный адрес счетчика, код функции, байты данных, контрольный блок.

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

Максимальное время начала ответа счетчика составляет не более 90 мс с момента определения конца фрейма запроса. Задержка ответа задает минимальный интервал времени начала ответа счетчика.

Если счетчик не начал ответ через 90 мс это означает, что он принял сообщение с ошибкой.

Пауза после передачи широковещательного сообщения должна быть более 90 мс.

Для режима RTU признак окончания фрейма - длительность "тишины" в канале 3,5 байта, а для скоростей 19200 бод и выше "тишина" составляет 2мс. Контрольный блок содержит два байта циклической контрольной суммы CRC-16-IBM по полиному A001h и начальной инициализацией FFFFh. Расчет CRC выполняется для всех байт сообщения и добавляется вслед за полем данных, младшим байтом вперед.

Для режима ASCII начало фрейма - символ ":" , конец фрейма - пара символов , пауза между символами в канале не более 1 секунды. Контрольный блок содержит 8-и битовую величину, являющуюся результатом вычисления LRC - двойное дополнение алгебраической суммы байт содержания сообщения без учета переноса и начальной инициализацией 00h.

Каждый байт сообщения передается потетрадно двумя символами ASCII, старшая тетрада передается первой.

Е.2 Функциональный уровень протокола ModBus

Modbus относится к протоколам прикладного уровня сетевой модели OSI. Абоненты на шине Modbus взаимодействуют, используя клиент-серверную модель, основанную на транзакциях, состоящих из запроса и ответа.

Е.2.1 Допустимый адрес передачи запроса находится в диапазоне 0 - 247. Каждому счетчику присваивается адрес в пределах от 1 до 247. Счетчики отвечают только на запросы, поступившие в их адрес. Ответ начинается с адреса отвечающего счетчика. Адрес 0 предназначен для передачи широковещательного сообщения.

Е.2.2 Код функции - однобайтовое поле, имеет значение в диапазоне 1…127. При ответе счетчик использует поле кода функции для фиксации ошибки. В случае нормального ответа счетчик повторяет оригинальный код функции. Если имеет место логическая ошибка, возвращается код функции с установленным в 1 старшим битом – ответ исключения.

При ответе исключения в поле данных помещается байт содержащий код исключения, Таблица Е.1.

Е.2.3 Поле данных в сообщении от главного к счетчику содержит информацию, которая необходима счетчику для выполнения указанной функции. Оно может содержать адреса регистров, их количество, счетчик передаваемых байтов данных, данные для записи.

Поле данных при нормальном ответе счетчика содержит результат выполнения запрошенной функции.

Данные передаются регистрами размером 2 байта. Старший байт регистра передается первым.

Е.2.4 Значения параметров занимающих более одного регистра передаются младшим регистром вперед, за исключением символьных строк и специальных форматов.

Пример: число 1 007 847 999 (дес) = 3C12 8A3Fh (int32), передается сначала 8A3Fh, затем 3C12h.

Кодировка значений в формате с плавающей запятой (float32) соответствует стандарту IEEE 754.

Пример: число - 123.456 (дес) = C2F6 E979h (float32), передается сначала E979h, затем C2F6h.

Символьные строки содержат число символов кратно 2 и должны быть переданы полностью. Количество требуемых регистров для строки в 2 раза меньше числа символов. Признак конца символьной строки размером меньше максимального - байт равный 0.

Пример: строка 8 символов "AbmD3"0x0, передается 4162h, 6D44h, 3300h, ZZZZh.

Е.2.5 Парольная сессия открывается на требуемое число нормальных транзакций (нормальных ответов на запросы) и ограничена интервалом времени отсутствия запросов.

Для открытия парольной сессии необходимо запросить у счетчика случайное 32-битное число (два регистра с адреса 0004h), являющиеся входным значением для расчета 32-битного хэш-кода. Хэш-код - результат вычисления циклической контрольной суммы (по полиному 04C11DB7 hex) сделанного над содержанием строки пароля (символы до ограничителя, байт=0). Хэш-код и требуемое число транзакций записываются в три регистра счетчика с адреса 0006h.

Интервал отсутствия запросов задается временем активности интерфейса, регистр 090Eh (090Fh) для порта COM1 (COM2).

Парольная сессия закрывается:

По окончанию счета транзакций;

При записи требуемого числа транзакций равным 0;

По истечении времени активности интерфейса.

Е.2.6 Доступ к регистрам осуществляется в зависимости от спецификации регистра и установленной конфигурации режима счетчика.

Конфигурация режима для чтения:

Сброшенный бит 4 регистра 0907h определяет беспарольное чтение всех параметров;

Установленный бит 4 регистра 0907h определяет необходимость парольной сессии для чтения параметров;

Установленные биты регистра 0918h определяют беспарольный доступ к группам параметров - спецификация "Чт" в таблице Е.1, независимо от состояния бита 4 регистра 0907h.

Установленные биты регистра 0919h определяют беспарольный доступ (при установленном бите 15 регистра 0918h) к группам параметров в соответствии с таблицей Д.6, независимо от состояния бита 4 регистра 0907h.

Установленные биты регистра 091A (091C, 091E) определяют доступ для чтения по паролю №2 (№3, №4) к группам параметров - спецификация "Чт" в таблице Е.2.

Конфигурация режима для записи:

Сброшенный бит 0 регистра 0907h определяет необходимость нажатия пломбируемой кнопки "ДСТП" для записи параметров;

Установленный бит 0 регистра 0907h – запись разрешена без нажатия кнопки "ДСТП" (используется для систем учета);

Запись по паролю №1 (Администратор) разрешена для всех групп параметров.

Установленные биты регистра 091Bh (091Dh, 091Fh) определяют доступ для записи по паролю №2 (№3, №4) к группам параметров - спецификация "Зп" в таблице Е.2.

Е.3 Функции контроля и обработки данных

В счетчике используются 4 функции протокола ModBus.

03h "чтение последовательности регистров" – чтение всех данных счетчика, кроме профилей;

10h "запись последовательности регистров" – запись параметров настроек и конфигурирования счетчика;

14h "чтение расширенной памяти" – чтение значений профилей накопления;

17h "чтение/запись последовательности регистров" – чтение данных счетчика, определенных в спецификации регистров для записи.

Е.3.1 03 (03 Hex) – чтение последовательности регистров.

Сообщение запроса специфицирует начальный регистр и количество регистров для чтения. Нормальный ответ содержит количество байт и байты данных регистров.

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

Е.3.2 16 (10 Hex) – запись в последовательность регистров.

Сообщение запроса специфицирует начальный регистр, количество регистров для записи, количество байт и байты данных. Нормальный ответ содержит начальный адрес и количество записанных регистров.

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

Количество регистров для записи, вместе с другими полями в запросе, не должно превышать допустимую длину сообщения: 126 байт.

Адреса и форматы регистров приведены в таблице Е.2.

Е.3.3 20 (14 Hex) – чтение расширенной памяти

Возвращает содержание регистров файла расширенной памяти - профиля. Функция может читать несколько групп. Группы могут быть разделены, но посылка внутри каждой группы должна быть непрерывной.

Запрос специфицирует одну или несколько групп для чтения. Каждая группа определяется в поле "суб-запроса" которое содержит 7 байт:

Номер файла расширенной памяти (профиля): 2 байта (от 1 до 16)

Начальный адрес регистра внутри файла: 2 байта

Количество регистров для чтения: 2 байта.

Нормальный ответ состоит из серии суб-ответов, один на каждый суб-запрос.

Пример: чтение двух групп со счетчика 45, группа 1 содержит два регистра из профиля 4, начиная с регистра 002Eh, группа 2 содержит три регистра из профиля 12, начиная с регистра 1A32h.

Количество регистров для чтения, вместе с другими полями в ответе, не должно превышать допустимую длину сообщения: 198 байт.

Адреса и форматы регистров профиля приведены в таблице Е.3.147

Е.3.4 23 (17 Hex) – чтение/запись последовательности регистров.

Возвращает содержание регистров параметров специфицированных записываемыми данными. Функция может читать несколько параметров. Количество возвращаемых регистров должно соответствовать общему числу регистров параметров определенных записываемыми условиями. Адреса начальных регистров чтения и записи всегда 0000h.

Запрос записи специфицирует один или несколько параметров для чтения. Каждый параметр определяется в поле "субзапроса" которое содержит 3 регистра или 6 байт:

Адрес параметра: 2 байта;

Условия вывода значений параметра: 2 байта;

Критерий вывода значений параметра: 2 байта.

Нормальный ответ состоит из последовательности регистров соответствующих структур запрошенных параметров.

Е.4 Форматы данных для обмена по интерфейсу ModBus.

ВНИМАНИЕ!!! Полное описание протокола обмена данными для счётчика электроэнергии см. в PDF версии руководства по эксплуатации.

Магазин не выбран Лабораторная ул. Лиговский пр. Горелово, ул. Генерала Лагуткина «Электрик» на ул. Бабушкина «Электрик» на Барклаевской ул. Проезд к магазину временно ограничен. «Электрик» на пр. Большевиков «Электрик» на Большом Сампсониевском пр. «Электрик» на пр. Индустриальном «Электрик» на Комендантском пр. «Электрик» на Ленинском пр. «Электрик» на пр. Науки «Электрик» в Девяткино «Электрик» на Обводном канале «Электрик» на Рижском пр. «Электрик» на пр. Славы «Электрик» на Сытнинской пл. «Электрик» на Среднеохтинском пр. «Электрик» на Среднем проспекте В.О. «Электрик» на пр. Стачек «Электрик» на Чкаловском пр. «Электрик» на Школьной ул. «Электрик» на пр. Энгельса «Электрик» в г. Всеволожск «Электрик» в г. Гатчина «Электрик» в г. Кингисепп «Электрик» в г. Кириши «Электрик» в г. Колпино «Электрик» в г. Колпино (ТРК Ока) «Электрик» в г. Кронштадт «Электрик» в г. Луга, проспект Кирова «Электрик» в г. Сосновый Бор Тихвин г, 6-й микрорайон «Электрик» в г. Тосно Офис продаж на ул.Розы Люксембург Офис продаж на ул. Академика Королева Офис продаж пр. Гагарина Офис продаж на ул.Великой Офис продаж на ул. Джаныбековской Офис продаж на ул. 20-летия Октября Офис продаж на ул. Пирогова Офис продаж на ул. Токарей Офис продаж на ул. Бархотская Офис продаж на ул. Гвардейской 55А Офис продаж на ул.Тухачевского Офис продаж на ул. Ленина Офис продаж на ул. Дзержинского / ул. Офицерской Офис продаж на ул. Московской Офис продаж на ул. Новороссийской Липецк, ул. Авиационная Офис продаж на ул. Советской Офис продаж на ул. Калинина Офис продаж на Кольском пр. Офис продаж на ул. Свердлова Региональный представитель в Набережных Челнах Офис продаж на ул. Высоцкого Офис продаж на Зыряновской ул. Офис продаж на ул. Сибиряков-Гвардейцев Офис продаж на пр. Автоматики Офис продаж на ул. Терешковой Офис продаж на ул. Баумана Офис продаж на Заводской ул. Офис продаж на Октябрьском пр. Офис продаж на Юбилейной ул. Офис продаж на Кисловодском шоссе Офис продаж в г.Батайске Офис продаж на ул. Вятской Офис продаж на бул. Комарова Офис продаж на ул. Р. Зорге Офис продаж на ул. Селиванова Офис продаж на ул. Советская Офис продаж на ул. Дыбенко Офис продаж на пр. Кирова Офис продаж на ул. Клинической Офис продаж в Управленческом тупике Офис продаж на ул. Чернышевского Офис продаж на ул. Донская Офис продаж на ул. Юных Ленинцев Офис продаж на ул. Гастелло Офис продаж на пр. Кулакова Офис продаж на Огородной ул. Офис продаж на ул. Бумажников Офис продаж на Транспортной ул. Офис продаж на ул. Ярославская Офис продаж на ул. Самарцева Офис продаж на Московском шоссе Офис продаж на ул. Рихарда Зорге Офис продаж на ул. Трамвайной Офис продаж на ул. Привокзальной Офис продаж на ул. Кулибина Офис продаж на пр. Победы Офис продаж на Троицком тракте Офис продаж на ул. Гагарина Офис продаж на пр. Сталеваров Офис продаж на Тихой ул. Офис продаж в г. Актобе (Казахстан) Офис продаж в Красноярске Офис продаж на ул. К.Маркса Офис продаж в Перми