Статья

Устройство автоматизации систем водоснабжения с интерфейсом ModBus RTU RS485

Представляю вашему вниманию совместную разработку мою и Антона Бизяева

@Zoolu - устройство автоматизации, контроля, управления и защиты систем водоснабжения WaterUnit.

Создание проекта шло по двум направлениям:

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

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

Кроме этого устройство может контролировать и регулировать температуру. При этом работа терморегулятора может быть логически организована для управления вентилем, подключающим водогрейный бойлер к системе водоснабжения, тем самым переключая систему горячего водоснабжения на водогрейный бойлер. И в случае обнаружения протечки устройство переводит все три вентиля в закрытое положение. При желании работу терморегулятора устройства можно включить в независимом режиме. Тогда выходное реле терморегулятора будет просто управлять нагрузкой в соответствии с уставками, и ни как не будет реагировать на состояние водоснабжения и протечек. При чем, терморегулятор может работать и в режиме управления нагревателем и в режиме управления охладителем. (В таком режиме терморегулятор можно задействовать например, для регулировки температуры теплого пола).

Все измеряемые величины, настройки и уставки устройство передает и получает по команде с центрального устройства по протоколу ModBusRTU по сети RS485.

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

       Основные технические характеристики устройства:

Диапазон питающего напряжения устройства от 8В до 25ВОбмен по сети RS485 протоколом ModBusRTU предусмотрен на скорости 9600 бод. 8N1

    WaterUnit имеет следующие входы, выходы:

Два входа импульсных счетчиков со скоростью счета до 1 кГц (теоретически до 5 кГц).Четыре входа датчика протечки воды.Один вход термодатчика Датчик температуры термистор NTC-MF52-103/3950 10 кОм диапазон измеряемых температур от -30 до +95 градусов.Три выхода реле с ШИМ питанием.Реле для управления приводом (приводами) водоснабжения.Реле терморегулятора.Реле привода водопровода горячего водоснабжения.Встроенная пищалка для местного оповещения об аварийной ситуации.Две кнопки ручного управленияВстроенная кнопка ручного управления приводами водоснабжения “Приборка /Тест”.

Выносная кнопка с индикатором – для ручного управления реле терморегулятора (бойлера) “Бойлер”.

Два независимых счетчика имеют делители для счета непосредственно в единицах величины. В каждом счетчике предусмотрен восьми битный делитель входных импульсов, для преобразования числа импульсов в значение величины. Объем каждого счетчика 4 байта, т.е. максимальное число сосчитанной величины - 4 294 967 295. В случае снижения питания ниже критического уровня, значения счетчиков величины и текущие значения делителей сохраняются во флеш памяти микроконтроллера.

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

Четыре независимых входа датчиков протечки воды, сконфигурированы как входы с триггером Шмидта и имеют внешние подтягивающие резисторы сопротивлением 100 кОм. Столь высокое сопротивление выбрано для повышения чувствительности устройства. Наличие нескольких входов датчиков протечки позволяет удаленно, более конкретно определить место обнаружения протечки. Все входы датчиков равнозначны.

Применение ШИМ для управления выходами, позволило использовать в схеме устройства, реле с обмотками на рабоче напряжение от 3В до 24В включенными напрямую в цепь основного питания устройства. Такое решение позволило расширить диапазон рабочего питающего напряжения от 8 до 25В. И снизить дополнительно ток потребления, применив разные значения коэффициента ШИМ для включения реле и его удержания во включенном положении. В ячейке EEPROM c адресом 07h при программировании следует указать рабочее напряжение обмотки реле, применяемых пользователем в своем устройстве, для правильного выбора устройством коэффициентов ШИМ. Соответственно минимальное напряжение питания устройства будет равно напряжению питания обмоток реле, но не ниже 8В. (По умолчанию выбраны реле с рабочим напряжением обмотки 5В) Для нормальной работы реле в широком диапазоне питающих напряжений потребовалось ввести в устройство возможность измерения текущего значения величины питающего напряжения. Измерения так же необходимы для обнаружения уровня критического снижения напряжения, при котором происходит аварийное сохранение данных счетчиков величин и текущих значений делителей для последующего восстановления значений. Для снижения потребляемого тока, при критическом значении питающего напряжения, алгоритмом так же предусмотрено, выключение всех выходов, далее микроконтроллер, сохранив данные счетчиков, продолжает следить за уровнем питающего напряжения. При восстановлении питания работа устройства восстанавливается. Уровень критического напряжения при котором происходит аварийное сохранение, определен менее 7В Уровни включения устройства в работу 7.9В и более. Коль скоро устройство измеряет напряжение питания, решено, что его значение можно передавать по запросу центральному устройству управления. Значения возможных измеряемых величин от 7В до 25.5В с шагом 0.1В.  По протоколу ModBus.

Алгоритм работы реле

Реле для управления приводом (приводами) водоснабжения приводится в требуемое состояние «открыто», «закрыто» кнопкой «Приборка/Тест» при обнаружении протечки на любом из входов в автоматическом режиме, устройство переведет реле в положение вентилей «зарыто»

Реле терморегулятора устройства может быть сконфигурировано так, что терморегулятор будет работать, как система автономного терморегулирования, или как система управления приводом вентиля подключающего бойлер к системе горячего водоснабжения (функционально работу бойлера включенного в систему водопровода можно увидеть на картинке выше). В этом режиме термодатчик устанавливается на трубу горячего водоснабжения, терморегулятор устанавливается в режиме "нагреватель" и при снижении температуры ниже установленного уровня, водоснабжение горячей водой переключается на бойлер. Так же в этом режиме, при обнаружении протечки привод будет закрывать не только вентили водопроводов, но и вентиль бойлера тоже.

Реле привода водопровода горячего водоснабжения алгоритм работы в режиме автономного терморегулятора - такой же как и первое реле, в режиме работы терморегулятора для управления вентилем бойлера - при обнаружении протечки закрывает привод как и первое и второе реле, в автоматическом режиме работает в противофазе к приводу бойлера. (для перекрывания водопровода ГВС во время подключения к системе бойлера)

В WaterUnit терморегулятор может работать в режимах управления "нагреватель" или "охладитель", определяется это установкой значений уставок Твкл, Твыкл. Если Твкл. Меньше Твыкл. работает как нагреватель, наоборот охладитель. Если установить одинаковые значения, выход будет работать как управление нагревателем с гистерезисом 1 градус т.е. Твыкл.= Твкл.+1.

Выход пищалки, сигнализирует прерывистым сигналом с периодом 0.5 сек. об обнаружении протечки, или с периодом 0.25 сек. об аварии датчика температуры (КЗ или обрыв)

По команде с кнопки ручного управления приводами водоснабжения «Приборка/Тест», открываются или закрываются вентили систем водоснабжения, и на время «ручного режима» устройство перестает реагировать на датчики протечки воды.

Кнопка “Бойлер” предназначена для ручного переключения водопровода горячего водоснабжения с централизованного водоснабжения на местное снабжение горячей водой с водогрейного бойлера. Если по каким-то причинам автоматически выбранный режим ГВС не устраивает пользователя, используется эта кнопка, которой вручную устанавливается требуемый режим работы водоснабжением. На время «ручного режима» устройство не будет реагировать на значение температуры в водопроводе горячего водоснабжения. (Выше сказанное актуально только для режима работы терморегулятора "управление бойлером")

«Ручной режим»  действует в течении N мин. после последнего нажатия на кнопки. (По умолчанию N=15 мин. Значение хранится в ячейке EEPROM c адресом 08h и может быть установлено от 01h до FFh мин., с центрального устройства управления.) Далее режим установится в соответствии с алгоритмом автоматической работы. Если есть протечка, вентиля переведутся в закрытое состояние (если были открыты, конечно) а бойлер перейдет в режим в соответствии с уставками температуры или останется неизменным, если значение температуры центрального ГВС будет находиться внутри петли гистерезиса уставок температуры.

Центральному устройству доступна информация о текущем состоянии входов, выходов WaterUnit, возможно удаленное управление выходами, режимами работы устройства, настройка и снятия показаний счетчиков, значений текущей температуры и питающего напряжения. О всех параметрах устройство сообщает (по запросу) центральному модулю по сети RS485 протоколом ModBus RTU.

Следует отметить, что для защиты от случайной записи значений счетчиков и коэффициентов деления, введена команда ввода пароля (значение может быть установлено от 00h до FFh, по умолчанию пароль 0) После его ввода становится возможным ввод значений счетчиков величины и коэффициентов деления. так же становится возможным смена пароля. После смены коэффициентов деления текущие загруженные значения коэффициентов сбрасываются и загружаются новые. После ввода нового пароля и после выключения питания устройства смена параметров счетчика снова становится не доступной, до следующего ввода правильного пароля.

Так же стоит добавить, что удаленное управление выходами, возможно различными вариантами. Есть команды, (см. таблицу команд) по которым удаленно имитируется нажатие кнопок “Бойлер” или «Приборка/Тест» с соответствующим переключением выходов и блокировкой автоматики на N минут. Есть возможность управления выходами реле и пищалки напрямую, но необходимо помнить что для того что бы управление происходило по удаленным командам и не сбивалось работой автоматики, следует соответствующей командой отключить управление выхода от автоматического управления.

Перечень команд ModBus RTU, понимаемых устройством, сведен в таблицу.

Все линии входов устройства и цепь питания, снабжены схемами защиты от повышенного и обратного напряжения и фильтрами высокочастотных помех. Фильтры не установлены только в цепях входов высокоскоростных счетчиков импульсов. Поскольку скорости счетчиков вполне достаточно, что бы сосчитать импульсы дребезга механических контактов датчиков расхода воды, в счетчики добавлен управляемый программный фильтр коротких импульсов. Постоянная времени фильтра может быть выбрана от 100 мкс. до 25.6 мс. Чем больше значение постоянной времени фильтра тем ниже максимальная скорость счета. Теоретически получаем от 5 кГц до 20 Гц.

В устройстве имеются четыре светодиода. Светодиоды LED1 «синий» и LED3 «красный» включены когда соответствующие реле К1 и К3 выключены, индицируя, что вентили водоснабжения открыты. Для снижения потребляемой энергии устройством (учитывая, что водопроводы дольше открыты, чем закрыты) принято за открытое положение вентилей, выключенное состояние реле. Светодиод LED2 «желтый» индицирует состояния терморегулятора (Бойлера). Светодиод включен когда включено реле терморегулятора (Бойлера) К2. Вывод питания светодиода выведен на отдельную клемму для подключения внешних светодиодов (встроенных в выносную кнопку(и) «Бойлер»). Светодиод LED4 «зеленый» индикатор рабочего состояния WaterUnit. Он светится непрерывно, пока работает устройство. Светодиод мигает в противофазе с пищалкой индицируя состояние аварии, даже если звуковой сигнал удаленно отключен. Еще два светодиода сигнализируют состояние линий RX, TX последовательного интерфейса.

Конструкция печатной платы устройства WaterUnit разработана в онлайн системе проектирования EasyEDA. Плата проектировалась для размещения устройства

 в корпуc AD3-88 (128x90x25).

Ссылка на проект печатной платы

Ссылка на архив с документацией проекта

Интеграция WaterUnit в систему домашней автоматизации 

 Home Assistant

Для того что бы интегрировать WaterUnit в систему, нам понадобится прописать в конфигурационном файле configuration.yaml Хаб сети ModBus. Для управления вентилями ГВС, ХВС и бойлера пропишем переключатели, а для контроля температуры ГВС, значений счетчиков расхода воды, напряжения резервного питания и состояния датчиков протечек, пропишем несколько сенсоров.

modbus: name: hub1 type: serial method: rtu port: /dev/ttyAMA0 baudrate: 9600 stopbits: 1 bytesize: 8 parity: N timeout: 1 switch: - platform: modbus scan_interval: 1 coils: - name: Краны водопровода hub: hub1 slave: 32 coil: 4 - name: Kран Бойлера hub: hub1 slave: 32 coil: 5 sensor: # Waterunit # Температура горячей воды - platform: modbus scan_interval: 30 registers: - name: Температура ГВС hub: hub1 slave: 32 register: 4 register_type: holding unit_of_measurement: °C count: 1 scale: 0.003891 offset: 0 precision: 1 data_type: int # Напряжение резервного питания - name: U Резервного питания hub: hub1 slave: 32 register: 3 register_type: holding unit_of_measurement: В count: 1 scale: 0.1 offset: 0 precision: 1 # Счетчики - name: Счетчик ГВ hub: hub1 slave: 32 register: 6 register_type: holding unit_of_measurement: Куб.М count: 1 scale: 0.01 offset: 0 precision: 2 - name: Счетчик ХВ hub: hub1 slave: 32 register: 5 register_type: holding unit_of_measurement: Куб.М count: 1 scale: 0.01 offset: 0 precision: 2 - platform: modbus scan_interval: 1 # Для протечки читаем регистр для распарсивания - name: Input1 hub: hub1 slave: 32 register_type: input register: 0 count: 1

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

Это коробочки подготовленные к монтажу разводки. (Самое противное дело, на мой взгляд, особенно, стоя на пятачке в один квадратный метр).
Это уже коробочка со всеми проводами и даже под напряжением
А так смонтированы счетчики и вентили с электроприводами. Счетчики выдают один импульс на 10 литров потраченной воды

На левом снимке, если присмотреться видно сколько нужно воды что бы датчик протечки это обнаружил. На правом протечка устранена, ну и пыль заодно прихватил. 

Пока у меня сообщения на веб страничку приходит  обычным уведомлением 


не хватает фотоотчета к каждой статьи из этого цикла. 

А фотоотчет куда прилепить? В коментарий? Ща порою старые фотки сниму свежие.

Лучше статью дополнить, попроси модераторов вернуть на дооформление, из комментов не очень читается



Монтаж


Вот в кладовке установил коробочки верхняя под сигналку с резервным питанием. Внизу WaterUnit



1000x_image.jpg?1556288944Железо


А это уже коробочки с железом внутри



1000x_image.jpg?1556289176Водопровод


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



1000x_image.jpg?1556289640Протечка


На верхнем фото налил воды для активации протечки (видно правда плохо), 

нижнее фото протер воду (ну и пыль немного )))



Уведомление


Это уведомление на страничку ХА



1000x_image.jpg?1556290155


А это Уведомление в специальное приложение к сигнализации. СМС предварительно отключил, сто бы сантехника УК не беспокоить.

Возможно ли приобрести какое-либо устройство из ваших прошлых устройств? Заказывать платы и гору рассыпухи, паять, не выгодно по времени

Вообще я не занимаюсь производством девайсов на продажу. Собираю Себе. Поскольку печатные платы китайцы по паре не делают (минимум 6 или 10 за те же деньги) есть несколько, печатных плат релейных блоков, и устройств контроля протечек, для самостоятельной сборки.

Есть собраное устройство контроля протечек, и два релейных блока собранных на самодельных печатных платах (это первые, отладочные версии. плата не в корпус на дин рейку.) Кому надо обращайтесь в личку.

А кодом для PIC контроллера можете поделиться или это не входило в планы? Я пока только выбираю решение, так что пока интересуюсь что можно получить от решения. В целом больше хочу управление/статус иметь по радиоканалу (WiFi или ZigBee), поэтому возможно код подправить потребуется.

Из кода особого секрета не делаю, кому нужно вышлю в личку. Код для PIC написан на ассемблере. Про WiFi интерфейс мысли были, может и займусь когда. Рассматриваю вариант применить в дополнение к микроконтроллеру, как интерфейсный модуль ESP8266 c родной прошивкой с АТ командами. Или другой вариант сразу устройство городить на ESP, но это уже совсем другая история...

Спасибо за отклик! Буду знать, что могу расширить возможности по своему желанию и скромным возможностям. Но как правильно отметили, ESP - совсем другая история. Я как раз и пытаюсь выбрать для себя историю. Несмотря на то, что идет ремонт, больше смотрю в сторону беспроводных решений, хотя, думаю что провод все-же заложу в сторону стояков от воды.

А по поводу управляемых кранов - можете посоветовать, что лучше брать. Склоняюсь к тому, что лучше, что бы в кранах были датчики открытия и закрытия, что бы не по времени работы двигателя судить о том, что открытие/закрытие закончилось.

Пока идет ремонт стоит по максимуму проложить провода. Это минимальные по цене капиталовложения, которые потом во многом облегчают жизнь. Определите место центра управления, и накидайте оттуда витух во все стороны к окнам, батареям, стоякам, распредкоробкам, на лоджию итд итп. Тогда у вас не будет проблем с выбором решений, хоть проводные хоть беспроводные Можно  будет натыкатьчто угодно. И контроллеров освещения и датчиков открытия окон и систем управления жалюзями и контролеры управления микроклиматом (например, рулить нагревательными батареями и контролировать протечки) ИТД ИТП.


ИМХО конечно, но без прокладки проводов проводов это будут только беспроводные решения с характерными для них проблемами. Да и опять же на беспроводные контроллеры зачастую тоже требуется подводить провода хотя бы с питанием.....


Что касается приводов на краны мне понравились китайские, но брал подороже с вентилями из нержавейки, выполнены очень кандово. Сами привода имеют встроенную логику и контроль крайних состояний. Есть несколько различных вариантов и по напряжению питания и по способам управления. Есть двухпроводное управление сменой полярности, трех проводное управление один провод открыть другой закрыть, пяти и семи проводные с выведенными наружу концевиками. С точки зрения правильности автоматизации контроль по состоянию концевиков позволяет убедится системе что краны действительно закрылись - это правильное решение. Но я не стал усложнять систему и положился на встроенную автоматику в привода и использую трехпроводный интерфейс подал питание и забиыл ))). Типа я скукарекал а там хоть не светай!  


Приводы рекомендую вот такие 

https://ru.aliexpress.com/item/32602392559.html?spm=a2g0s.9042311.0.0.274233edonSkjR">https://ru.aliexpress.com/item/32602392559.html?spm=a2g0s.9042311.0.0.274233edonSkjR Он имеет индикатор положения и возможность ручного управления. Посмотрите альтернативные предложения, там у некоторых продавцов приводятся описания всех вариантов интерфейсов управления. У каждого интерфейса свое название. Я отдельно продавцу указывал кокой интерфейс мне нужно.

Спасибо за совет! Но к сожалению мне надо уже прям сейчас, ремонт заканчивается, поэтому взял Гидролок краны и даже блок с аккумулятором. Решил что аккумулятор - нужен, а схема подзаряда - еще тот вопрос, поэтому выбрал готовый комплект. А гидролок, потому что у него более информативные светодиоды. В будущем хочу диагностику состояния получить удаленно подключившись к светодиодам, видел такой пример, правда на аквастороже. 

  Вот почему все решения у нас, с диагностикой, которые в продаже - облачные и протокол общения с устройством - закрыт. Не пойму, чем повредит открытый протокол - оборудование то все равно их покупать будут? Правда это скорее риторический вопрос. :-)


Вернуться назад
Вернуться назад