Практическое применение ПЛК 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

Остались вопросы? Мы в Telegram - t.me/soprut

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

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

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

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

  3. Lyosha Dovolen (Lyosha.Dovolen)
    Lyosha Dovolen (Lyosha.Dovolen) 3 дня назад

    Охренеть

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

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


    • Andrey Anopov (Andrey86)
      Andrey Anopov (Andrey86) 2 дня назад

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

  5. (mindstomp)
    (mindstomp) 3 дня назад

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

    • Andrey Anopov (Andrey86)
      Andrey Anopov (Andrey86) 3 дня назад

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

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

  6. (Silverow)
    (Silverow) 3 дня назад

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

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

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

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

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

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

  8. (Radu)
    (Radu) 3 дня назад

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

  9. (Digweed)
    (Digweed) 2 дня назад

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

  10. (t0ss)
    (t0ss) день назад

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

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

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

Wiren Board

+7 495 150-66-19
Промокод:
SPRUTHUB
Размер скидки:
10%
Не работает на блоки питания, антенны и т.п, не работает на демо-чемодан.

Разумный дом

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

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

29 декабря 2018, 07:22
Ну что, в канун Нового года. Предлагаю небольшой провокационный список. Не надо его рассматривать как руководство к действию - это мои "мысли на тему". Позитива не ждите, но может кто-то сделает ответочку в позитивном стиле.
03 апреля 2019, 04:29
Разбираем простейшую задачу по электрическому подключению светодиодной ленты к источнику питания и управлению через Умный дом.
04 апреля 2019, 08:22
Личная жизнь мешает увлечению "умным домом"? Есть решение!
09 января 2019, 17:34
Небольшая статья о том, зачем нужна малина, почему автоматизации в HomeKit это не очень хорошо и чем USB стик лучше отдельного шлюза.
04 апреля 2019, 17:48
Расскажу о том за ~1 час перевезти УД с 2мя USB стиками с Raspberry PI на Synology NAS.
11 марта 2019, 20:13
Пользование устройствами начального уровня, такие как лампы, датчики, мойка и пылесос. Опыт эксплуатации и мнение на счет необходимости покупки устройств.
01 августа 2019, 08:10
DIY Система полива
06 сентября 2019, 17:03
Кладём на лопатки NodeRed и HomeAssistant с помощью iOS 13.1 и Siri Shortcuts.
01 ноября 2018, 11:24
Умный дом, о чем стоит задуматься при создании умного дома, и о чем обычно забывают при этом.
24 сентября 2019, 09:08
Интеграция Wi-Fi кондиционера в Apple HomeKit без ИК пульта.