SDM630+modbus+charts+round

Интересные кейсы Комментариев нет

Счетчик Eastron SDM630 + modbus, округление данных, графики и история по данным.

Исходные данные:

Счетчик: EASTRON SDM630, подключено 3 фазы
Majordomo с установленными модулями charts и modbus.

Получаем данные (подразумевается, что шлюз или USB<>RS485 ("свисток") настроен и работает = отдает нужные нам данные).

Устройства -> Modbus и нажимаем добавить новую запись

При заполнении полей "Название" - не используем кириллицу (это касается всей статьи)!!!
Заполняем как на скриншоте (меняя данные на свои).

Данных можно выдернуть очень много - подробное описание реестров (поле "Стартовый адрес") http://www.eastrongroup.com/data/uploads/Eastron_SDM630MV_CT_protocol_V1_0_.pdf

Пример: нам нужно получить значение "Текущей потребляемой мощности на первой фазе".
a) Ищем  реестр в мануале, его значение 30013. Выбираем Тип запроса: "FC4" и в стартовом адресе пишем номер реестра (300013-30000-1=12), единицу надо обязательно отнимать, так как отчет идет с "0".
b) кол-во элементов устанавливаем "2"

По аналогии делаем со всеми интересующими нас данными.

Добавляем счетчик как объект в MD. Сначала создадим новый класс "Counter Eastron":

Нажимаем "Добавить"  и переходим в раздел "Объекты" класса "Counter Eastron". Добавляем новый "Объект":

Создаем свойства по одному вписываем все параметры к нашему устройству:

Volts_phase_1, Volts_phase_2, Volts_phase_3
Watt_phase_1, Watt_phase_2, Watt_phase_3
Amper_phase_1, Amper_phase_2, Amper_phase_3
...

по аналогии с тем, что заводили в модуле Modbus.

Мы должны получить:

На этом этапе, названия Объектов у Вас не будут выделены жирным (как на скриншоте), к этому мы вернемся позже.

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

Приступим к округлению полученных значений. Создаем новый метод в классе "Counter Eastron":

Сообщим MD, чтобы он хранил все округленные значения 365 дней - это делается с помощью добавления нового свойства в классе "Counter EASTRON". В названии мы указываем имя нашего свойства полученного от modbus добавляя _round в конце (мы так решили в скрипте выше, предпоследней строкой).

Как только Вы заполните все, переходим в свойства нашего объекта SDM630 и убеждаемся, что все свойства почернели (т.е. мы объявили для них "глобальные свойства"), если что то не почернело - смотрите внимательно, видимо где то опечатка.

Мы получили данные с модуля modbus, создали свойства для объекта, создали глобальные свойства, создали метод ValueRound к которому обращаются наши свойства, для округления и складываем округленные значения в новые свойства, научили MD хранить историю наших округленных данных.

Давайте теперь нарисуем пару простых графиков.

Переходим в вкладку Данные:

В настройках можно добавить html:

 

и тогда после сохранения мы увидим вот такой график:

Пример графика напряджения по фазам:

Поделитесь в соц сетях

Теги: