Техническое задание (ТЗ) на автоматизацию
- Автоматика должна быть максимально надёжной, а именно, с положительной репутацией производителя (по отзывам реальных пользователей), выдерживать сбои электропитания, иметь срок службы не менее 20 лет (гарантированное наличие софта и документации от разработчика в интернете).
- Удобная и распространённая среда разработки с наличием community и примеров.
- Массовость продукта - долгосрочная ремонтопригодность (наличие модулей б.у. и новых на торговых площадках ebay, aliexpress, avito).
- Интеграция с элементами УД по распространённым открытым протоколам.
- Возможность подключения проводных и беспроводных датчиков, использующих открытые стандартные протоколы.
- Хранение информации в SQL базе данных минимум 1 год.
- Гибкий настраиваемый интерфейс УД пользователя.
- Доступность управления УД со смартфона через интернет.
- Перечень подсистем, с отдельными ТЗ на проект для квартиры (flat) и дачи (dacha):
- вентиляция (flat);
- защита от протечки (flat);
- полив растений (dacha);
- пожарно-охраная сигнализация (dacha);
- сбор показаний со счётчиков воды (flat);
- сбор показаний со счётчика электроэнергии Меркурий 230 (dacha);
- сбор показаний со счётчика электроэнергии Меркурий 200 (flat);
- отопление (термостат для электрических обогревателей) (dacha).
- принимать уставки пользователя, отдавать оперативные данные;
- считывать данные с проводных датчиков;
- автономно выполнять сценарии на основании уставок и данных с датчиков;
- управлять исполнительными конечными устройствами (реле);
- работать с проводными сигнальными шинами.
Важно отметить, что выход из строя верхнего уровня никак не влияет на работу нижнего уровня (ПЛК). Более того, управлять уставками и мониторить текущее состояние нижнего уровня можно напрямую без промежуточного сервера, например, с телефона, поставив бесплатный клиент Modbus-tcp.
Почему был выбран именно ПЛК Beckhoff?
Сначала таблица, из контрой будет понятно, почему был выбран именно ПЛК, а не иное решение на базе ПК или одноплатного ПК с обычной OS:
- бюджет со всеми модулями расширения под реальный проект (~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 руб.
На ПЛК устанавливаем, при необходимости, последние прошивки:
Не используйте руссифицированную инструкцию, в ней есть неточности!
Связываем Twincat System Manager и Twincat PLC Control:
после сохранения проекта в Twincat PLC Control (закрывать не надо) переключаемся в Twincat System Manager, правой кнопкой нажимаем по пункту в дереве "PLC Configuration" -> "Append PLC Project", выбираем файл в каталоге, где сохранили до этого проект.
Связь программных переменных с реальными портами
HW_heat_first_floor AT %QX0.0:BOOL; (* Отопление 1 этаж *).
Адрес "QX0.0" длиной 1 бит , пока он не привязан к реальному порту.
В System Manager (если настроена связь с проектом), как только появится такая строка (после сохранения проекта в PLC control) - сам предложит привязать уже к реальному физ. порту. После настройки связи, необходимо сохранить и активировать конфигурацию "Actions-Activate Configuration..."
Память в ПЛК
- 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) - энергонезависимая память. Отлично подходит для сохранения уставок и важных показаний, которые нельзя терять при перезагрузке ПЛК.
- убрать галку с поля "Clear Invalid Persistent Data":
- Поставить галку "Auto Init Linked PLC Outputs":
В Twincat PLC Control во вкладке "Resources"-"Global variables" создаём объект "Global_variables_persistent" :
"VAR_GLOBAL PERSISTENT"
...
"END_VAR"
объявленные переменные c типом "Q"(выходные) будут сохранятся в NOVRAM.
Адрес "*" означает, что адрес в памяти будет назначен автоматически. "System manager" вернёт в "PLC Control" привязку в объекте "Resources"-"Global variables"-"TwinCAT Configuration". "System Manager" если предложит привязать к реальным портам эти переменные - надо отказаться. На warning-и по поводу этих не привязанных переменных - не обращать внимания.
Связь ПЛК с внешним миром
- ADS
ADS - родной встроенный открытый протокол. Есть драйвер для iobroker. Минимум настроек, автоматическая синхронизация имён переменных , созданных на стороне ПЛК (есть проблема с максимальным экспортируемым количеством переменных (проблема только для TwinCat 2) ~ 64 шт., возможно будет исправлено в новых версиях драйвера). Переменные на обоих сторонах доступны для записи и чтения.
- Modbus-tcp
В 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 "Интервал опроса" не влияет на скорость обмена данными, данные синхронизируются в обе стороны моментально. Переменные на обоих сторонах доступны для записи и чтения.
- Mqtt
На ПЛК можно в проект внедрить MQTT-клиент. Упрощённый, но вполне рабочий.
Необходимо установить пакет TS6310-0030-TCP-IP-CE.exe на компьютер разработчика, и 1 файл (TcTCPIPSvrCe.ARMV4I.CAB), после инсталляции, загрузить на сам ПЛК (если он уже не установлен).
В проекте подключить соответствующие либы:
Пояснения подсистемам
Ниже представлены реально работающие подсистемы. Ссылки на программный код в текстовом формате для ПЛК приведены для ознакомительной цели и без других частей кода проекта TwinCAT 2 код не заработает. Код представлен для того, чтобы показать несложность PASCAL-подобного языка программирования - ST, широко применяемого для ПЛК. Полные рабочие проекты для TwinCAT2 :
Программный код для ioBroker является самодостаточным и готов к употреблению :)
1. Вентиляция (flat)
Описание Самодельной Приточной Установки (СПУ) из канальных элементов вентиляции с увлажнением и с интеграцией в систему Умного дома (УД) (flat). СПУ без рекуперации, по причине невозможности обеспечить ТЗ при низких температурах.
- СПУ должна работать постоянно круглый год.
- Мощность СПУ должна адаптироваться к реальному потреблению воздуха людьми по датчикам CO2.
- Уровень шума в спальных комнатах <30 дБА.
- СПУ должна работать совместно со стационарным увлажнителем.
- Работа СПУ должна быть согласована с работой кухонной надплитной вытяжки.
- Возможность с помощью уставок через 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 мм диаметром. Но не менее. Самый шумный элемент - вентилятор, его следует располагать как можно дальше от спального места, например, в кладовке, гардеробной, на балконе.
Пример определения "рабочей точки" вентилятора, имея на входе 2 главных параметра:
- сопротивление линии 180 Pa;
- требуемая производительность - 250 м. куб в час:
5 синих линий соответствуют напряжению трансформатора (80,105,130,160,220 Вольт).
Как видно по графику, "рабочая точка" почти попала в желаемые параметры. Ниже в таблице указаны расчётные параметры для пользовательских условий:
Обращаем внимание на шум в таблице.
Working air flow - 247 m³/h; Working static pressure 176 Pa.
Исходные данные:
- поток - 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.
Для реализации в web пользовательского интерфейса для передачи уставок, отображения текущего состояния и просмотра исторических данных, формируем 2 html-таблицы:
с оперативными данными: climate_table.txt
содержимое графика для отображения исторических данных: web_chart.txt
Предварительно в драйвере flot создаём графики для CO2, Температуры и Влажности и вставляем сгенерированные url-ы в переменные co2_url, hum_url, temp_url. В редакторе VIS создаём страницу с таблицами, графиками, кнопками.
elements-climate.txt (для загрузки в редакторе VIS ioBroker используйте "Элементы-> Импорт элементов" .
Пользовательский Web-интерфейс:
На стадии ремонта был предусмотрительно проложен кабель utp5 и сделаны розетки RJ11 для датчиков (2 провода - питание DC 12V, 2 провода - RS485). Если бы не было кабельной разводки, то можно было использовать беспроводной датчик, через шлюз (iobroker), передающий показания в ПЛК. Но при беспроводном способе, надёжность работы в целом будет объективно ниже. Для прямого подключения к ПЛК можно использовать шину RS485 с протоколом modbus. В моём случае, я собрал комбайн из:
- RS485/UART конвертор.
- DC/DC регулятор для питания CO2 датчика (DC 5V).
- CO2 датчик SenseAir S8.
- Датчик Температуры и влажности.
Датчики позволяют менять адрес modbus, поэтому к 1 шине можно подключить несколько таких датчиков. В датчике MH-Z19B адрес изменить невозможно, поэтому в проекте "dacha" через реле происходит коммутация шины RS485, чтобы опрашивать 2 датчика MH-Z19B поочерёдно. Если нет желания возиться - можно купить (будет примерно в 2 раза дороже) готовый датчикокомбайн от WirenBoard (RS485, modbus).
- 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".
2. Защита от протечки (flat)
- Контролировать 4 места протечек , (2 зоны с отсекающими кранами):
кухня (1 датчик протечки, 2 подводящих крана гор+хол);
санузлы (3 датчика протечки, 2 подводящих крана гор+хол).
- Возможность открывать/закрывать отсекающие краны с помощью физ. кнопок.
- Возможность открывать/закрывать отсекающие краны с помощью web-интерфейса.
- Возможность получать уведомление о сработке датчика через платформу УД.
Программная часть на ioBroker:
скрипт для генерации голосовых сообщений, уведомлений в telegram, создания html-таблицы состояния:
sensors-vis_flat.txt
Web-интерфейс. При закрытии отсекающих кранов по датчикам или вручную - также переключается статус кнопок "Тревога" в положение "On":
- 6 DI портов ПЛК (2 на кнопки, 4 на датчики);
- 2 DO порта ПЛК (на 2 зоны кранов. Хол+гор в каждой зоне перекрывается одновременно);
- 2 реле Finder (Двойной перекидной контакт для смены полярности DC 12V);
- 4 накидных привода на кран;
- 4 датчика протечки;
- 2 физические кнопки Legrand.
3. Полив (dacha)
- включать на определённое время (1,2,3,4 часа) через web-интерфейс УД отсекающие краны, соответствующие зонам полива;
- отключать принудительно отсекающие краны, соответствующие зонам полива через web-интерфейс УД.
2. Автоматическое включение насоса после полного открытия отсекающего крана.
3. Автоматическое отключение насоса после окончания полива.
4. Включать полив по расписанию.
В google-календаре в своей или специальной УЗ создаём "мероприятия" полива в желаемое время:
Скрипты:
Виджеты для редактора VIS:
Web-страница:
- 4 DO порта ПЛК (3 - на электроклапаны, 1 - насос);
- 4 реле Finder;
- Оповещение через локальный динамик(сирену) и интернет (почта, телеграмм) при срабатывании ПОС.
- Возможность отключения конкретных датчиков.
- Ограничение количество оповещений при сработке по каждому датчику (50 раз в сутки).
- Журналирование событий, просмотр журнала через web.
- Постановка и снятие с охраны через web-интерфейс.
Так как в алгоритме нет ответвлений, нет смысла представлять графически.
Программная часть на ioBroker.
Скрипт (реагирование на событие) :
Скрипт (для журнала событий) :
journal-vis.txt для страницы журнала событий:
sensors-vis.txt для страницы состояния датчиков:
Web-страница журнала событий:
- 7 DI портов ПЛК (3 - PIR-сенсоры, 2 - герконы, 2 - датчики дыма);
- 1 DO порт ПЛК (сирена, регистратор);
- 1 реле Finder (сирена, регистратор);
- 3 PIR-датчика (сухой контакт);
- 2 геркона;
- 2 датчика дыма (сухой контакт).
- Считывать показания со счётчиков воды с импульсным выходом.
- Отображать показание в веб-интерфейсе УД.
- Кратковременный сбой подачи э/э. в квартиру не должен приводить к потере информации о показаниях.
Для сохранения значений переменных используем память NOVRAM.
Программная часть на ioBroker.
Web-страница:
- 4 DI порта ПЛК.
- Источник бесперебойного питания для ПЛК, при необходимости учитывать потребление воды во время долгого отключения э.э. в квартире.
6. Сбор показаний со счётчика электроэнергии Меркурий 230 (dacha)
- Считывать показания со счётчика э.э. Меркурий 230 с интерфейсом RS485/CAN.
- Отображать показания в веб-интерфейсе УД.
Считывать данные со счётчика - в случае успешного считывания - присваивать данные соответствующей переменной.
Для передачи статистики месячного потребления M1T1,M1T2...M12T1,M12T2 от ПЛК к iobroker использованы протоколы mqtt и modbus-tcp. Для остальных данных - ADS.
- RS485_read.txt (шаги 5-37)
- Mqtt.txt
Программная часть на ioBroker.
Скрипт для формирования графиков:
Скрипт для формирования таблиц с оперативными и историческими данными:
Web-страница:
- 1 порт ПЛК RS485
7. Сбор показаний со счётчика электроэнергии Меркурий 200 (flat)
- Считывать показания со счётчика э.э. Меркурий 200 с интерфейсом RS485/CAN.
- Отображать показания в веб-интерфейсе УД.
Считывать данные со счётчика - в случае успешного считывания - присваивать данные соответствующей переменной.
Для передачи статистики месячного потребления M1T1,M1T2...M12T1,M12T2 от ПЛК к iobroker использованы протоколы mqtt и modbus-tcp. Для остальных данных - ADS.
- RS485_read_flat.txt (шаги 79-80)
Программная часть на iobroker.
Скрипт для формирования графиков:
Скрипт для формирования таблиц с оперативными и историческими данными:
Web-страница:
- 1 порт ПЛК RS485.
8. Отопление (термостат для электрических обогревателей) (dacha)
- По уставке с web-интерфейса поддерживать заданную температуру в определённой комнате.
- Отображать текущие показания уставки и график температуры в веб-интерфейсе УД.
- Сбой подачи э.э. не должен приводить к потере значений уставки.
- Термостат включает отопительный прибор при опускании температуры ниже уставки минус гистерезис.
- Термостат отключает отопительный прибор при превышении температуры выше уставки плюс гистерезис.
Для сохранения значений уставок используем память NOVRAM.
Программная часть на iobroker.
Скрипт конвертации данных:
Скрипт генерации url для графиков:
Скрипт обработки уставок:
Скрипт создания таблицы оперативных данных:
Web-страница:
- 4 AI порта ПЛК (для 4-х температурных датчика PT1000);
- 4 датчика PT1000;
- 4 DO порта ПЛК (на катушку силового реле);
- 4 реле finder (для коммутации силовых цепей).
Как я ждал этот материал, отличная работал =)
Целая дипломная работа)
Охренеть
отличная работа, Хочу добавить очень надёжный ПЛК в прошлом году проект сделал заказчику на базе Beckhoff, в качестве Scada система исп ПО indusoft , за год никаких проблем, клиент доволен,
спасибо за фото. "Причесать" красиво очень трудно когда места меньше чем надо...
Среда программирования и библиотеки для beckhoff входят в стоимость б.у. контроллера с ebay?
Если ПЛК идёт с Run-Time Twincat 2, не важно новый или б.у. (видно по полному коду продукта) то среда программирования бесплатна.
Библиотек кроме ADS в новом не будет, а в б/у есть очень высокая вероятность что будет установлено как минимум modbus-tcp.
Супер работа. Картинки с алгоритмами плохо читаются. Где взять качеством повыше?
Выложу чуть позже на github
https://github.com/Andrey2509/SMARTHOME/tree/master
В формате мс визио пусть будут конечно, но можно все таки в общедоступном? Pdf или jpeg какой нибудь... просто чуть более качественном режиме чем в статье
ok. через 1-2 дня будут.
Там же.
Грамотный подход! Очень полезная статья. Особенно описанием подхода к проектированию УД. Очень многим начинающим Умнодомостроителям не хватает терпения, желания, а иногда и знаний на осмысление цели.
Составление технического задания труд соизмеримый с исполнением самого проекта. Именно на этой стадии начинаешь понимать цели и задачи, соотношение цена возможности, изучаешь кучу материалов по оборудованию, протоколам интерфейсам...
Одобряю и подход к реализации проекта. Верхний уровень со всеми интерфейсами, облаками, "крашенными губками" и красивыми голосами плюс надежный автомат (автоматы) который обеспечивает все авторегулировки, основные автоматизации с учетом логики взаимодействия исполнительных устройств, на основании данных с датчиков.
Хотелось бы добавить кроме стандартного логирования, стоит предусмотреть автоматизации по выдаче тревожных сообщений в сервисные интерфейсы, на критические ситуации типа потеря датчика по которому ведется регулировка температуры, авария вентиля запорной арматуры итд итп.
Очень интересная статья! Спасибо!
Круто! Спасибо за статью
Спасибо за статью! Вы молодец!
Крутецкая статья! Огромное спасибо автору