Практическое применение ПЛК Beckhoff CX9000/CX9010 и платформы Умного дома (УД) ioBroker в автоматизации квартиры и дачи

10 октября 2019, 17:25

Техническое задание (ТЗ) на автоматизацию

  • Автоматика должна быть максимально надёжной, а именно, с положительной репутацией производителя (по отзывам реальных пользователей), выдерживать сбои электропитания, иметь срок службы не менее 20 лет (гарантированное наличие софта и документации от разработчика в интернете).
  • Удобная и распространённая среда разработки с наличием community и примеров.
  • Массовость продукта - долгосрочная ремонтопригодность (наличие модулей б.у. и новых на торговых площадках ebay, aliexpress, avito).
  • Интеграция с элементами УД по распространённым открытым протоколам.
  • Возможность подключения проводных и беспроводных датчиков, использующих открытые стандартные протоколы.
  • Хранение информации в SQL базе данных минимум 1 год.
  • Гибкий настраиваемый интерфейс УД пользователя.
  • Доступность управления УД со смартфона через интернет. 
  • Перечень подсистем, с отдельными ТЗ на проект для квартиры (flat) и дачи (dacha):

  1. вентиляция (flat);
  2. защита от протечки (flat);
  3. полив растений (dacha);
  4. пожарно-охраная сигнализация (dacha);
  5. сбор показаний со счётчиков воды (flat);
  6. сбор показаний со счётчика электроэнергии Меркурий 230 (dacha);
  7. сбор показаний со счётчика электроэнергии Меркурий 200 (flat);
  8. отопление (термостат для электрических обогревателей)  (dacha).

Выбор оборудования УД

Найти устройство "всё в одном", за приемлемые деньги, удовлетворяющее ТЗ - проблематично, поэтому будем использовать классическую двухуровневую модель автоматизации.

На верхнем уровне - сервер с высокоуровневым Языком Программирования для сложных сценариев с мультимедиа, веб-сервисом для интерфейса УД, шлюзом в инет и прочих IOT систем, БД SQL. Эту роль прекрасно выполняет ioBroker на железе с RAM=>2GB, HDD/SDD для SQL. На нижнем уровне устройство - Программируемый логический контроллер (ПЛК) с возможностями:

  • принимать уставки пользователя, отдавать оперативные данные;
  • считывать данные с проводных датчиков;
  • автономно выполнять сценарии на основании уставок и данных с датчиков;
  • управлять исполнительными конечными устройствами (реле);
  • работать с проводными сигнальными шинами. 

Важно отметить, что выход из строя верхнего уровня никак не влияет на работу нижнего уровня (ПЛК). Более того, управлять уставками и мониторить текущее состояние нижнего уровня можно напрямую без промежуточного сервера, например, с телефона, поставив бесплатный клиент Modbus-tcp.

Почему был выбран именно ПЛК Beckhoff?

Сначала таблица, из контрой будет понятно, почему был выбран именно ПЛК, а не иное решение на базе ПК или одноплатного ПК с обычной OS:     

1600x_image.png?1570446748

Казалось бы, на рынке существует огромное разнообразие ПЛК от Овен до Siemens. Но если поставить фильтр в дополнение к ТЗ:

  • бюджет со всеми модулями расширения под реальный проект (~24 DI, ~24 DO, ~8 AI, RS485)  до 30 тыс. руб;
  • встроенный run-time codesys (как самый хорошо документированный);
  • гибкая масштабируемость модулями DI/DO/AO/AI/ и т.д., когда есть возможность добавить ровно столько портов, сколько нужно и каких нужно - то выбор резко сузится, а именно, останется только Beckhoff, причём б.у. Меня факт б.у. не смутил, всё-таки промышленная автоматика делается с хорошим запасом прочности, такая техника крайне редко ломается по причине неисправности МК/ПЛК. Пример - ЭБУ в авто.  

Из всего разнообразия ПЛК Beckhoff с учётом доп. фильтров, можно обратить внимание на: BC9000, CX9000, CX9010, CX10**, CX80**. Важно, чтобы ПЛК имел встроенный TwinСat-runtime. Один из главных параметров - это тип шины для подключения модулей -  EL* или KL*. KL чуть дешевле. 

Итак, ПЛК CX9000/CX9010 можно сторговавшись купить на ebay за:

  •  непосредственно сам ПЛК ~10 тыс. руб (ПЛК Beckhoff всегда без модулей);
  • 1 порт в 8-портовом модуле (DI, DO) обойдётся с учётом доставки 250-300 руб;  
  • аналоговые порты (AI, AO) дороже - от 400 руб. за порт; 
  • самый дорогой модуль - RS485 около 5 тыс. руб; 
  • заглушка к шине KL  ~1500 руб.

Первоначальная настройка ПЛК Beckhoff CX9000/CX9010

Каждая серия ПЛК, даже у одного производителя, имеет свои особенности конфигурирования. Среда разработки для ПЛК в проектах - TwinCat2 (немного изменённый Codesys 2 от Beckhoff).

Главные особенности серии CX90*:

На ПЛК устанавливаем, при необходимости, последние прошивки:

 Прошивка CX9000.

 Прошивка CX9010.

 Инструкция по прошивке.

Не используйте руссифицированную инструкцию, в ней есть неточности!

Инструкция по настройке.

Видео по настройке.

Связываем Twincat System Manager и Twincat PLC Control:

после сохранения проекта в Twincat PLC Control (закрывать не надо) переключаемся в Twincat System Manager, правой кнопкой нажимаем по пункту в дереве "PLC Configuration" -> "Append PLC Project", выбираем файл в каталоге, где сохранили до этого проект.

Инструкция по привязке проекта.

Связь программных переменных с реальными портами

Важно знать, как работает связь переменных в проекте в программе Twincat PLC Control и реальных портов ввода/вывода, видимых из System Manager. В PLC Control  используются виртуальные адреса, например:    

    HW_heat_first_floor AT %QX0.0:BOOL; (* Отопление 1 этаж *).

Адрес "QX0.0" длиной 1 бит , пока он не привязан к реальному порту.

В System Manager (если настроена связь с проектом), как только появится такая строка (после сохранения проекта в PLC control) - сам предложит привязать уже к реальному физ. порту. После настройки связи, необходимо сохранить и активировать конфигурацию "Actions-Activate Configuration..."

Память в ПЛК

В ПЛК 3 вида памяти:
  • FLASH (16-32 MB) - с которой грузится OS реального времени (Win CE 5.0 или 6.0), сам Twincat-runtime, который будет исполнять проект, подготовленный и откомпилированный на компьютере разработчика. Проект, файлы конфигурации также хранятся на FLASH. Сама OS и Twincat-runtime с FLASH в режиме записи не работает, поэтому FLASH служит долго. Внутри программы проекта можно вызывать спец. функцию и явно писать данные на FLASH, но делать это не рекомендуется, в связи с ограниченным числом циклов записи.
  • RAM  (64-128 MB) - оперативная память. Для проектов УД хватает с огромным запасом.
  • NOV-RAM (128 KB) - энергонезависимая память. Отлично подходит для сохранения уставок и важных показаний, которые нельзя терять при перезагрузке ПЛК.  

Для сохранения данных в NOV-RAM необходимы следующие манипуляции: В Twincat System Manager:
  • убрать галку с поля "Clear Invalid Persistent Data":

1600x_image.png?1569346115

  • Поставить галку  "Auto Init Linked PLC Outputs":

1600x_image.png?1569383083

Сохранить и активировать конфигурацию "Actions-Activate Configuration..."

 В Twincat PLC Control во вкладке "Resources"-"Global variables" создаём объект "Global_variables_persistent" :

1600x_image.png?1569383084

Внутри блока:

 "VAR_GLOBAL PERSISTENT" 

 ...

 "END_VAR" 

 объявленные переменные c типом "Q"(выходные) будут сохранятся в NOVRAM.

Адрес "*" означает, что адрес в памяти будет назначен автоматически. "System manager" вернёт в "PLC Control" привязку в объекте "Resources"-"Global variables"-"TwinCAT Configuration""System Manager" если предложит привязать к реальным портам эти переменные - надо отказаться. На warning-и по поводу этих не привязанных переменных - не обращать внимания.

Связь ПЛК с внешним миром

Обмениваться оперативными данными с платформой УД можно как минимум 3 способами (протоколами) через порт ETHERNET по IP: ADS, Modbus-tcp, MQTT.
  • ADS

ADS - родной встроенный открытый протокол. Есть драйвер для iobroker. Минимум настроек, автоматическая синхронизация имён переменных , созданных на стороне ПЛК (есть проблема с максимальным экспортируемым количеством переменных (проблема только для TwinCat 2) ~ 64 шт., возможно будет исправлено в новых версиях драйвера).  Переменные на обоих сторонах доступны для записи и чтения.

  • Modbus-tcp 
Необходимо установить пакет TS6250-0030-Modbus-TCP-Server-CE.exe на компьютер разработчика, и 1 файл (TcModbusTcpSvrCe.ARMV4I.CAB), после инсталляции, загрузить на сам ПЛК. Если ПЛК б.у, то с высокой вероятностью, на ПЛК уже есть эта библиотека. Можно проверить, подключившись к ПЛК используя программу CERHOST.EXE:

o01-1.jpg

В PLC Control создаём переменные с типом "M" - memory:

M1T1 AT %MW0 :REAL;  (* modbus address 12288 *)                

M1T2 AT %MW4 :REAL;  (* modbus address 12290 *)

Несмотря на то, что указано "W" (word), длина REAL - 4 байта, поэтому следующая переменная начинается с 4-го байта памяти. Modbus-регистр занимает всегда 2 байта, поэтому для передачи REAL будет задействовано 2 modbus-регистра. Если надо передать 1 бит (BOOL - состояние порта TRUE/FALSE), то всё равно надо будет задействовать 2 байта памяти ПЛК и 1 modbus регистр. Переменные типа "M" автоматически мапируются в holding-регистры modbus-tcp сервера ПЛК, начиная с адреса 12288.  Особенность в том, что обычно holding регистры  начинаются с адреса 40000, а некоторые утилиты modbus-tcp  не могут объединить modbus-функцию № 3 и нестандартный адресный диапазон с абсолютного 12288 адреса.  

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

1600x_image.png?1569397942
1600x_image.png?1569397942
o01-1.jpg

  • Mqtt

 На ПЛК можно в проект внедрить MQTT-клиент. Упрощённый, но вполне рабочий.     

Необходимо установить пакет TS6310-0030-TCP-IP-CE.exe на компьютер разработчика, и 1 файл (TcTCPIPSvrCe.ARMV4I.CAB), после инсталляции, загрузить на сам ПЛК (если он уже не установлен).  

Инструкция.

 В проекте подключить соответствующие либы:

1600x_image.png?1569399625

Пример отправки топика mqtt:

1600x_image.png?1569399625

Пояснения подсистемам

Ниже представлены реально работающие подсистемы. Ссылки на программный код в текстовом формате для ПЛК приведены для ознакомительной цели и без других частей кода проекта TwinCAT 2 код не заработает. Код представлен для того, чтобы показать несложность PASCAL-подобного языка программирования - ST, широко применяемого для ПЛК. Полные рабочие проекты для TwinCAT2 :

Программный код для ioBroker является самодостаточным и готов к употреблению :)

1. Вентиляция (flat)

Описание Самодельной Приточной Установки (СПУ) из канальных элементов вентиляции с увлажнением и с интеграцией в систему Умного дома (УД) (flat). СПУ без рекуперации, по причине невозможности обеспечить ТЗ при низких температурах. 

Техническое Задание (ТЗ) к СПУ

  1. СПУ должна работать постоянно круглый год.
  2. Мощность СПУ должна адаптироваться к реальному потреблению воздуха людьми по датчикам CO2.
  3. Уровень шума в спальных комнатах <30 дБА.
  4. СПУ должна работать совместно со стационарным увлажнителем.
  5. Работа СПУ должна быть согласована с работой кухонной надплитной вытяжки. 
  6. Возможность с помощью уставок через WEB интерфейс УД  задавать параметры: 

  • макс. уровень CO2;
  • темп. притока /-5;
  • миним. уровень влажности;
  • включение и отключение СПУ (отдельно Приточного и Вытяжного вентилятора);
  • включение и отключение Увлажнителя;
  • включение и отключение Подогрева притока.

Законность установки.

В квартирах, в большинстве случаев, законно сделать приточно-вытяжную вентиляцию нельзя.

Читать всё по ссылке!              

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

При бездумной работе механической вентиляции может нарушиться работа естественной вентиляции (ЕВ) у соседей вашего подъезда. Лучший вариант - если у вас вентканал индивидуальный до кровли и без объединения с общим вентканалом. Средний вариант - если ваш вентканал всё таки объединяется с общим, но соотношение площади проходного сечения общего вентканала  к вашему индивидуального вентканалу-спутнику (15*15 см) больше чем ~10 к 1. То есть сечение магистрального канала > ~2250 кв.см. Плохой вариант, если соотношение менее ~5 к 1. Чем выше соотношение, тем меньше влияние вашего вытяжного вента на работу ЕВ у соседей. При очень высоком соотношении никто даже не заметит изменения в работе их штатной ЕВ и не пожалуется, что вы своим вытяжным вентилятором (до 200-300 м.куб. в час) опрокинули им тягу. Ещё надо учесть, что зимой ЕВ работает отлично, и своей работающей вентиляцией вы соседям тягу не опрокинете. Но чем ближе уличная температура к комнатной (22-24 градуса), тем эта вероятность выше. Точное значение - сколько кубов воздуха в час можно подавать в вашу ЕВ безопасно для соседей (актуально для среднего и плохого варианта) рассчитать очень сложно. Проще сделать замеры опытном путём и потом ориентироваться на них. Управляющая компания расчётами заморачиваться не будет, и если будут жалобы - попросит вас убрать вытяжной вент. Поэтому, прежде чем что-то проектировать/устанавливать, узнайте тет-а-тет со специалистами из УК, как устроена вентиляция в вашей квартире, и какая реакция на самовольную установку ПВ системы. Возможно, нужен тех. проект от фирмы с лицензией, хотя бы формальный. 

Расчёт приточной вентиляции
Расчёт производительности и сопротивления

Главные исходные данные - это количество людей и требования к шуму. Санитарные нормы по содержанию CO2 едины для всех. В моём примере - это 5 человек и шум до 30 db в спальных комнатах. Для 5 человек минимально надо 5*30=150 м. куб. час производительности. Оптимально 5*(50-60)=250-300. Итого каждый вентилятор (приточный и вытяжной) должен давать 250 м.куб в час с учётом сопротивления вентканала и быть не шумнее 40 db в неспальных (30 db в спальных комнатах). Сопротивление приточного вентканала измеряется в паскалях (Pa) и зависит от:  - общей длины воздуховодов, - площади проходного сечения воздуховода и канальных элементов: - входной решётки - приточного клапана - фильтра грубой очистки  G3 - подогревателя воздуха - фильтра тонкой очистки EURO7 - шумоглушителя - приточной решётки - поворотов, переходников, тройников... Сопротивление каждого элемента зависит от скорости прохождения воздуха через них (производительности).

Определения сопротивления.

Значения сопротивления можно также определить по графику в паспорте или на сайте производителя элемента. Все воздуховоды и элементы вентиляции делать только из оцинковки, никакого пластика. Для шумо - и огнеизоляции вентканалы можно обернуть спец. базальтовым рулонным материалом. В квартире на этапе ремонта, если позволяет высота потолка, можно заложить диаметр воздуховода не менее 160 мм. Чем больше сечение - тем тише и тем выше КПД установки в целом. Также  вентилятор на бОльшем диаметре, как правило, работает на меньших оборотах (для той же производительности) и с запасом мощности (видно из графиков). Если потолок низкий, то можно провести воздуховод в углу на стыке стены и потолка, обшив гкл. Разводка вентканалов - это компромис между дизайном и ТЗ, всё очень индивидуально. Если людей в квартире проживает  трое, то наверное можно ограничиться 125 мм диаметром. Но не менее.  Самый шумный элемент - вентилятор, его следует располагать как можно дальше от спального места, например, в кладовке, гардеробной, на балконе.

Расчёт приточного вентилятора

Зная диаметр и имея чертёж приточных вентканалов - считаем суммарное сопротивление.  Например, будет 180 Pa (из них до ~100 Pa  приходится на фильтр тонкой очистки).  Рассматривая графики производительности разных брендов, находим оптимальный (запас мощности, шум, цена). Для своей установки в качестве приточного выбрал Systemair KL160M Sileo, с возможностью управлять производительностью трансформатором напряжения. Для вытяжного вента выбрал Systemair K125 EC Sileo, плавно управляемый напряжением DC 0-10V. 

Пример определения "рабочей точки" вентилятора, имея на входе 2 главных параметра:

  •  сопротивление линии  180 Pa;
  • требуемая производительность - 250 м. куб в час:
1600x_image.png?1570030607
1600x_image.png?1570030607

5 синих линий соответствуют напряжению трансформатора (80,105,130,160,220 Вольт).

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

  • Working air flow - 247 m³/h;
  • Working static pressure 176 Pa.

Обращаем внимание на шум в таблице.
Расчёт всегда для идеальных условий. На практике надо быть готовым к худшим параметрам, чем показывает расчёт. Например, у меня по "теории" сопротивление ~120 Па и рабочая точка, соответственно, должна быть другой. Но замеры приборами показали то, что есть по факту.  Поэтому для "страховки" надо накинуть ~50 Па к теоретическому сопротивлению. 

Расчёт калорифера (подогревателя приточного воздуха).

Воспользуемся калькулятором , чтобы посчитать необходимую мощность.

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

  • поток - 180 м.куб;
  •  температура снаружи -20;
  •  температура притока 18.

Получаем: 2100 Ватт.

Выбираем из прайсов на 160 мм, к примеру, АРКТОС PB160-2.2 Для управления калорифером нужен регулятор мощности REGIN/D (позволяет держать точно заданную температуру притока, например 18).  терморезистивный датчик к нему TGK-330. Датчик врезается в вентканал после калорифера.

Расчёт увлажнителя (каталитического типа)

Из всех типов увлажнителей только каталитический внушает доверие - по качеству увлажнения, надёжности стационарной работы и санитарной безопасности.

Исходные данные для расчёта необходимой мощности для самого тяжелого режима и, кстати, самого нужного (зимнего):

  • Т снаружи -20 град.
  • Влажность снаружи - 80%.
  • Т внутри 24 (не путать с Т притока!).  
  • Влажность внутри - 40%.
  • Расход воздуха - 240 м. куб.

Расчёт показывает, что требуется испарять 1.8 кг. в час. Из имеющихся на рынке РФ решений выбираем с производительностью 2 кг. в час, и конечно же, имеющий интерфейс RS485 для возможности интеграции в систему УД - Polar bear mini 3m.

Прочие канальные элементы

Фильтр грубой очистки, тонкой очистки, клапан под привод, привод, шумоглушитель, хомуты, решётки  - выбираем под диаметр 160 мм. Я рискнул заказать привод на клапан с aliexpress - работает, есть фишки состояния открытия/закрытия клапана (дополнительно 4 провода). 

Реле давления

Для контроля наличия давления в вентканале потребуется реле давления (для защиты от перегрева калорифера и переувлажнения воздуховодов  в случае останова вентилятора).

Трансформатор

Для управления мощностью работы вентилятора можно использовать 5 ступ. трансформатор с обмотками на 80,105,130,160,220 Вольт.

Вытяжная вентиляция

Её можно не делать, если несколько поднять мощность приточного вентилятора. Тогда за счёт избыточного давления воздух будет уходить в штатные отверстия ЕВ и прочие щели. При этом в комнатах, где есть приток - со свежим воздухом будет более-менее нормально, а вот в других комнатах воздух будет застаиваться.  Чтобы "выровнять" зону чистого воздуха можно поставить вытяжной вентилятор на кухню перед штатной ЕВ. Но этот вытяжной вентилятор должен работать непрерывно и  обладать плавной регулировкой мощности, чтобы не появились проблемы. Вытяжной вент ставить лучше только в кухне, так как именно в кухне бывает много людей.  Если же ставить в санузле, то вент. санузла  будет перетягивать на себя вытяжку  и, соответственно, на кухне будут более застойная зона.

Автоматизация СПУ

Общая схема СПУ
o01-1.jpg

Общий алгоритм СПУ
o01-1.jpg

Программная часть общего алгоритма на стороне ПЛК:

ventcontrol.txt

Алгоритм авторегулировки уровня мощности СПУ
o01-1.jpg

На первый взгляд, здесь нужен высокоэффективный PID-регулятор. Однако простой алгоритм прекрасно справляется с авторегулировкой (видно по графику ниже).

Программная часть авторегулировки уровня мощности на стороне ПЛК:

ventpower.txt

Программная часть на стороне ioBroker:

vent.txt

Для реализации в web пользовательского интерфейса  для передачи уставок, отображения текущего состояния и просмотра исторических данных, формируем 2 html-таблицы:

 с оперативными данными: climate_table.txt

содержимое графика для отображения исторических данных: web_chart.txt

Предварительно в драйвере flot создаём графики для CO2, Температуры и Влажности и вставляем сгенерированные url-ы в переменные co2_url, hum_url, temp_url. В редакторе VIS создаём страницу с таблицами, графиками, кнопками.

Виджеты для редактора VIS:

elements-climate.txt (для загрузки в редакторе VIS ioBroker используйте "Элементы-> Импорт элементов"  . 

Пользовательский Web-интерфейс:

k02-1.jpg
k02-2.jpg
k02-3.jpg

Датчики

На стадии ремонта был предусмотрительно проложен кабель utp5 и сделаны розетки RJ11 для датчиков (2 провода - питание DC 12V, 2 провода - RS485). Если бы не было кабельной разводки, то можно было использовать беспроводной датчик, через шлюз (iobroker), передающий показания в ПЛК.  Но при беспроводном способе, надёжность работы в целом будет объективно ниже. Для прямого подключения к ПЛК можно использовать шину RS485 с протоколом modbus. В моём случае, я собрал комбайн из:

Датчики позволяют менять адрес modbus, поэтому к 1 шине можно подключить несколько таких датчиков. В датчике MH-Z19B адрес изменить невозможно, поэтому в проекте "dacha" через реле происходит коммутация шины RS485, чтобы опрашивать 2 датчика MH-Z19B поочерёдно. Если нет желания возиться - можно купить (будет примерно в 2 раза дороже) готовый датчикокомбайн от WirenBoard (RS485, modbus).

o01-1.jpg

Самодельный комбайн

Оборудование

  • 9 DO портов ПЛК (4 - трансформатор, 1 - вытяжной вент, 1 - надплитная вытяжка, 1 - перекл. режима обогрева, 1 - ТЭН, 1 - увлажнитель.
  • 5 DI порта ПЛК (2 - приточный клапан, 1 - реле давления, 1 - выключатель надплитной вытяжки, 1 - физ.кнопка включения вентиляции).
  • 2 AI порта ПЛК (1 - датчик T наружного воздуха, 1 - датчик T воздуха в канале после ТЭН).
  • 1 AO порт ПЛК (1 - регулировка мощности вытяжного вентилятора DC 0-10V).
  • RS485 порт ПЛК (для опроса датчиков и передачи уставки в увлажнитель).
  • 4 шт комбинированных датчиков (CO2 Температура Влажность).

Вентиляционное оборудование (Приточный, Вытяжно вент, нагреватель, шумоглушитель, автоматика нагревателя, увлажнитель).  Вместо вычеркнутого фильтра грубой очистки, для компактности, лучше использовать "Ультракомпактный фильтр AIRONE FL 160".

1600x_image.png?1569483028

2. Защита от протечки (flat)

Техническое задание
  • Контролировать 4 места протечек , (2 зоны с отсекающими кранами):
кухня (1 датчик протечки, 2 подводящих крана гор хол);
санузлы (3 датчика протечки, 2 подводящих крана гор хол).
  • Возможность открывать/закрывать отсекающие краны с помощью физ. кнопок. 
  • Возможность открывать/закрывать отсекающие краны с помощью web-интерфейса. 
  • Возможность получать уведомление о сработке датчика через платформу УД.

Алгоритм
o01-1.jpg

Программная часть на ПЛК:

fluid_bath.txt

Программная часть на ioBroker:  

скрипт для генерации голосовых сообщений, уведомлений в telegram, создания html-таблицы состояния:

 fluid.txt

В редакторе  VIS создаём страницу c элементами:
sensors-vis_flat.txt

Web-интерфейс. При закрытии отсекающих кранов по датчикам или вручную - также переключается статус кнопок "Тревога" в положение "On":  

1600x_image.png?1569517927

Оборудование

  • 6 DI портов ПЛК (2 на кнопки, 4 на датчики);
  • 2 DO порта ПЛК  (на 2 зоны кранов. Хол гор в каждой зоне перекрывается одновременно);
  • 2 реле Finder   (Двойной перекидной контакт для смены полярности DC 12V);
  • 4 накидных привода на кран;
  • 4 датчика протечки;
  • 2 физические кнопки Legrand. 

3. Полив (dacha)

Техническое задание

1. Требуется управлять 3 зонами полива:

  • включать на определённое время (1,2,3,4 часа) через web-интерфейс УД отсекающие краны, соответствующие зонам полива;
  •  отключать принудительно отсекающие краны, соответствующие зонам полива через web-интерфейс УД.        

2. Автоматическое включение насоса после полного открытия отсекающего крана. 

3. Автоматическое отключение насоса после окончания полива.

4. Включать полив по расписанию.

Алгоритм
o01-1.jpg

Программная часть на ПЛК.

Программная часть на ioBroker.

Для возможности управлять поливом по расписанию использован драйвер ical, использующий "мероприятия" в Google-календаре.  

В google-календаре в своей или специальной УЗ создаём "мероприятия" полива в желаемое время:

1600x_image.png?1569520917

Затем, в настройках драйвера ical указываем имена этих "мероприятий":

1600x_image.png?1569520918

Важный параметр - частота подгрузки данных с google-календаря - поставлено 5 минут, так как без дополнительно парсинга данных драйвер ical не даёт в виде отдельных объектов время начала и конца "мероприятия". 

1600x_image.png?1569520917

Управление поливом по календарю работает через онлайн-статус "мероприятия", который считывается только при подгрузке данных при наличии интернета. Будем считать, что интернет у нас стабильный, так как если "мероприятие" в google-календаре стартануло и нет подключения к интернет - то скрипт не отработает. Каждые 5 минут будет попытка подгрузить данные о статусе, но если в течение всего "мероприятия" интернета так и не было - полив не включится.  При остановке полива по календарю - такие же условия, но только есть защита - максимальное время полива, которое берётся из времени полива при ручном старте. Если календарное время полива меньше ручного/максимального, и при этом интернет работает, фактическое время полива будет соответствовать календарному. Если календарное время превышает ручное/максимальное время полива соответствующей зоны, то время полива будет ограничено (независимо есть интернет или нет) и будет равно установленному ручному/максимальному для этой зоны.     

Скрипты:

 Виджеты для редактора VIS:

 Web-страница:

1600x_image.png?1569520917

Оборудование

  • 4 DO порта ПЛК (3 - на электроклапаны, 1 - насос);
  • 4  реле Finder;

4. Пожарно-охранная сигнализация (ПОС) (dacha)

Техническое задание   

  1. Оповещение через локальный динамик(сирену) и интернет (почта, телеграмм) при срабатывании ПОС.
  2. Возможность отключения конкретных датчиков.
  3. Ограничение количество оповещений при сработке по каждому датчику (50 раз в сутки).
  4. Журналирование событий, просмотр журнала через web.
  5. Постановка и снятие с охраны через web-интерфейс.

Алгоритм

Так как в алгоритме нет ответвлений, нет смысла представлять графически.

Программная часть на ПЛК.

security-plc.txt

Программная часть на ioBroker.

Скрипт (реагирование на событие) :         

 pir_detect_terrasa.txt 

Скрипт (для журнала событий) :          

create_journal.txt 

Виджеты для редактора VIS:

journal-vis.txt для страницы журнала событий:   

sensors-vis.txt для страницы состояния датчиков:   

Web-страница журнала событий:

1600x_image.png?1569523268
1600x_image.png?1569523268

Оборудование

  • 7 DI портов ПЛК (3 - PIR-сенсоры, 2 - герконы, 2 - датчики дыма);
  • 1 DO порт ПЛК (сирена, регистратор);
  • 1 реле Finder (сирена, регистратор);
  • 3 PIR-датчика (сухой контакт);
  • 2 геркона;
  • 2 датчика дыма (сухой контакт).

5. Сбор показаний со счётчиков воды (flat)

Техническое задание

  1. Считывать показания со счётчиков воды с импульсным выходом.        
  2. Отображать показание в веб-интерфейсе УД.  
  3. Кратковременный сбой подачи э/э. в квартиру не должен приводить к потере информации о показаниях.

Алгоритм

После завершения импульса от счётчика - увеличивать переменную (число), соответствующую данному счётчику.

Программная часть на ПЛК.

counters.txt

Для сохранения значений переменных используем память NOVRAM.

Программная часть на ioBroker.

Виджеты для редактора VIS:

Web-страница:

1600x_image.png?1569681538

Оборудование

  • 4 DI порта ПЛК.
  • Источник бесперебойного питания для ПЛК, при необходимости учитывать потребление воды во время долгого отключения э.э. в квартире.


6. Сбор показаний со счётчика электроэнергии Меркурий 230 (dacha)

Техническое задание

  1. Считывать показания со счётчика э.э. Меркурий 230 с интерфейсом RS485/CAN.
  2. Отображать показания в веб-интерфейсе УД.

Алгоритм

Считывать данные со счётчика - в случае успешного считывания - присваивать данные соответствующей  переменной.

Программная часть на ПЛК.

Для передачи статистики месячного потребления M1T1,M1T2...M12T1,M12T2 от ПЛК к iobroker  использованы протоколы mqtt и modbus-tcp. Для остальных данных - ADS.

Программная часть на ioBroker.

Скрипт для формирования графиков:   

chart_urls.txt

Скрипт для формирования таблиц с оперативными и историческими данными:   

electro_status_table.txt

Виджеты для редактора VIS:

electro-vis.txt

Web-страница:

1600x_image.png?1569684244
1600x_image.png?1569684244

Оборудование

  • 1 порт ПЛК RS485

7. Сбор показаний со счётчика электроэнергии Меркурий 200 (flat)

Техническое задание

  • Считывать показания со счётчика э.э. Меркурий 200 с интерфейсом RS485/CAN.
  • Отображать показания в веб-интерфейсе УД.

Алгоритм

Считывать данные со счётчика - в случае успешного считывания - присваивать данные соответствующей переменной.

Программная часть на ПЛК.

Для передачи статистики месячного потребления M1T1,M1T2...M12T1,M12T2 от ПЛК к iobroker  использованы протоколы mqtt и modbus-tcp. Для остальных данных - ADS.

Программная часть на iobroker.

Скрипт для формирования графиков:   

web_chart.txt

Скрипт для формирования таблиц с оперативными и историческими данными:   

electro_status_table_flat.txt

Виджеты для редактора VIS:

electro-vis_flat.txt

Web-страница:

1600x_image.png?1569684245

Оборудование

  • 1 порт ПЛК RS485.

8. Отопление (термостат для электрических обогревателей) (dacha)

Техническое задание

  1. По уставке с web-интерфейса поддерживать заданную температуру в определённой комнате.        
  2. Отображать текущие показания уставки и график температуры в веб-интерфейсе УД.  
  3. Сбой подачи э.э. не должен приводить к потере значений уставки.

Алгоритм
  • Термостат включает отопительный прибор при опускании температуры ниже уставки минус гистерезис.
  • Термостат отключает отопительный прибор при превышении температуры выше уставки плюс гистерезис.

Программная часть на ПЛК.

Thermostat.txt

Для сохранения значений уставок используем память NOVRAM.

Программная часть на iobroker.

Скрипт конвертации данных:   

parse_sensors_values.txt

Скрипт генерации url для графиков:   

chart_urls.txt

Скрипт обработки уставок:   

set_temperature.txt

Скрипт создания таблицы оперативных данных:   

climate_table_dacha.txt

Виджеты для редактора VIS:

climate-vis_dacha.txt

Web-страница:

1600x_image.png?1569690142

Оборудование

  • 4 AI порта ПЛК (для 4-х температурных датчика PT1000);
  • 4 датчика PT1000;
  • 4 DO порта ПЛК (на катушку силового реле);
  • 4 реле finder  (для коммутации силовых цепей).


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @SprutAI

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Олег Челбаев (sprut)

    Как я ждал этот материал, отличная работал =) 

  2. Дмитрий Батюшин (ReD)

    Целая дипломная работа)

  3. Lyosha Dovolen (Lyosha.Dovolen)

    Охренеть

  4. Maксат Умиров (Maxat_Shymkent)
    1000x_image.jpg?15707322451000x_image.jpg?15707322461000x_image.jpg?1570732251

    отличная работа, Хочу добавить очень надёжный ПЛК в прошлом году проект сделал заказчику на базе Beckhoff, в качестве Scada система исп ПО indusoft , за год никаких проблем, клиент доволен,  


    • Andrey Anopov (Andrey86)
      Andrey Anopov (Andrey86) год назад

      спасибо за фото. "Причесать"  красиво очень трудно когда места меньше чем надо...

  5. (mindstomp)
    (mindstomp) год назад

    Среда программирования и библиотеки для beckhoff входят в стоимость б.у. контроллера с ebay?

    • Andrey Anopov (Andrey86)
      Andrey Anopov (Andrey86) год назад

      Если ПЛК идёт с Run-Time Twincat 2, не важно новый или б.у.  (видно по полному коду продукта) то среда программирования  бесплатна.

      Библиотек кроме ADS в новом не будет, а в б/у есть очень высокая вероятность что будет установлено как минимум modbus-tcp.

  6. (Silverow)
    (Silverow) год назад

    Супер работа. Картинки с алгоритмами плохо читаются. Где взять качеством повыше?

  7. Александр Вайдуров (AlexAW)

    Грамотный подход! Очень полезная статья. Особенно описанием подхода к проектированию УД. Очень многим начинающим Умнодомостроителям не хватает терпения, желания, а иногда и знаний на осмысление цели. 

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

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

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

  8. (Radu)
    (Radu) год назад

    Очень интересная статья! Спасибо!

  9. (Digweed)
    (Digweed) год назад

    Круто! Спасибо за статью

  10. (t0ss)
    (t0ss) год назад

    Спасибо за статью! Вы молодец!

  11. (Slonotop)
    (Slonotop) год назад

    Крутецкая статья! Огромное спасибо автору

  12. (Senpai)
    (Senpai) год назад
    1000x_image.jpg?1583960294...а я со своим CX8080 всё никак не могу ADS на Node Red прикрутить. А тут ТАКОЕ...
  13. (max.y.solomin)
    (max.y.solomin) отредактировано год назад

    Добрый день! Я ищу специалиста, который сможет спроектировать систему умный дом на базе ПЛК. Сценарии автоматизации стандартные (тепло, свет, кондиционирование, слаботочка). Объект территориально в г Москва. Со мной можно связаться по адресу lawalliancemsk@gmail.com
    Спасибо за внимание!

  14. (zio170212@gmail.com)
    (zio170212@gmail.com) 7 месяцев назад

    Добрый день! у меня cx9010 с com-портом RS-232, можно ли его прикрутить к iobroker или к опенхаб? и как это сделать? может ли кто-нить мне помочь?

    • Andrey Anopov (Andrey86)
      Andrey Anopov (Andrey86) 7 месяцев назад

      cx9010 проще соединять с iobroker-ом через ethernet. В статье же всё написано. Что конкретно не понятно - можете спросить здесь по iobroker-у:
      https://t.me/iobroker

К списку статей

Скидки для сообщества

Wiren Board

+7 495 150-66-19
Промокод:
SPRUTDELIVERY
Размер скидки:
0%
Вы получите бесплатную доставку.

Разумный дом

+7 487 223-51-50
Промокод:
71
Размер скидки:
20%
Указывать в письме или комментарии к заказу

Тематические чаты

Похожие статьи

25 сентября 2020, 11:49
Сенсорный монитор для управления умным домом. Настройка и использование.
18 февраля 2020, 17:06
В данной статье описывается сборка слаботочного эл. щита на базе Wiren Board 6, а так же силового щита для небольшой квартиры.
01 октября 2019, 07:07
"У всякого в умном дому неведомо никому" (с) Народная мудрость
08 апреля 2020, 11:32
Голосовые уведомления через Xiaomi Gateway, Home Assistant и HomeKit. Пример реализации, кейсы применения.
04 апреля 2019, 08:22
Личная жизнь мешает увлечению "умным домом"? Есть решение!
09 января 2019, 17:34
Небольшая статья о том, зачем нужна малина, почему автоматизации в HomeKit это не очень хорошо и чем USB стик лучше отдельного шлюза.
03 апреля 2019, 04:29
Разбираем простейшую задачу по электрическому подключению светодиодной ленты к источнику питания и управлению через Умный дом.
06 сентября 2019, 17:03
Кладём на лопатки NodeRed и HomeAssistant с помощью iOS 13.1 и Siri Shortcuts.
04 апреля 2019, 17:48
Расскажу о том за ~1 час перевезти УД с 2мя USB стиками с Raspberry PI на Synology NAS.
20 мая 2020, 08:15
Общие рекомендации по созданию красивого 3D плана вашей квартиры или дома в Home Assistant.