Автоматика управления отоплением дома своими руками. Часть 3
Продолжаем рассказывать о системе управления отоплением дома с применением таймера-термостата NM8036 (начало здесь, продолжение здесь).
Программные строки и программа для NM8036.
Таймер-термостат NM8036, конечно, вещь неплохая, но без человека это все равно всего лишь «железка». Я говорю о том, что для нормального управления отоплением в частном доме нужна программа, составленная в соответствии с тем оборудованием, которое применяется. С чего начать?
Давай познакомимся с основными принципами программирования этой «железки». Как ты знаешь из описания, в контроллере возможно разместить всего лишь 32 команды (инструкции). Маловато, конечно, но этот недостаток в какой-то степени компенсируется тем, что команды эти довольно функциональны, то есть, изначально содержат в себе некоторое множество условий.
Буквально каждая команда-инструкция позволяет сделать выбор:
- типа команды;
- времени запуска и окончания;
- периода действия;
- нагрузки;
- типа входного датчика;
- номера (наименования) датчика;
- верхний и нижний пороги значений (гистерезис);
- логики взаимодействия.
Согласись, Мастер, довольно обширный перечень и для первого неискушенного взгляда не совсем непонятный. Вот поэтому мы сейчас пройдемся подробнее по всем этим пунктам, после чего, надеюсь, все окажется не столь уж и сложным. Только читай внимательно, вникай.
Тип команды. Таковых четыре, если не считать тип «Отключено»: Таймер, Нагрев, Охлаждение, Будильник. По поводу последнего из них, Будильника, можно смело сказать: вряд ли кто-то им воспользовался. Хотя, может быть, кто-нить и поставил этот прибор на стенке у изголовья. Но я бы лучше сотовый телефон применил…
Интересны нам, собственно, остаются три типа: Таймер позволяет включить и выключить выбранную нагрузку в определенное время и определенный день. Нагрев позволит включить нагрузку при снижении температуры до заданных значений, а Охлаждение — включить при превышении температуры.
Время запуска и окончания и Период действия. Выбор этих значений возможен при любом типе команд из трех нам интересных. Здесь дата и время Старта и дата и время Стопа. Этот выбор тесно взаимодействует с Периодом действия. Каким образом?
Если Период действия не выбирается (или выбирается «Без периода»), выбранные значения времен и дат воспринимаются буквально. То есть, нагрузка будет работать, начиная со времени старта до времени и даты стопа, вплоть до 2 октября 2099-го года. Все время, не выключаясь. А как сделать, чтобы нагрузка каждый день в выбранное время включалась, а в другое — выключалась?
Для такой логики работы необходимо задать Период действия. Любой. В частности, на примере выше выбран период По дням недели и указаны все дни. Теперь каждый день нагрузка будет включаться во время старта и выключаться во время стопа. И так будет продолжаться опять же вплоть до 2099 года.
На заметку: при выборе типов команды Нагрев и Охлаждение на результат наряду с выбранными временем и периодом действия влияет также выбор температурных значений.
Выбор нагрузки. Вряд ли имеет смысл объяснять, что это выбор нагрузки, на которую воздействует команда. Однако, еще раз отмечу, насколько удобно делать такой выбор (как и выбор датчиков) когда имеются присвоенные имена. Я умышленно не показываю, как делается программирование блока NM8036 с клавиатуры самого блока, поскольку сам этим не занимался и считаю намного более удобным делать это с помощью Advanced Manager (о ней я расскажу в следующей части).
Датчики. В этом блоке программы предоставляется возможность выбора датчиков и их значений. Последовательность действий вполне логична: выбрать тип датчика, выбрать сам датчик из списка и установить необходимые значения.
Тип датчика. Здесь три варианта: цифровой (датчики температуры), аналоговый (это входы АЦП контроллера) и Сравнение двух датчиков (датчиков температуры). Для начала выберем Цифровой.
Цифровой датчик. Из представленного списка имен датчиков выбираем нужное.
Гистерезис. И вот здесь будь внимателен, Мастер. Включение и выключение нагрузки — это действия, которые совершается системой при разных значениях температуры. Не стоит выставлять одинаковые значения температур для верхнего и нижнего порогов, это не соответствует логике работы контроллера. Пороги могут быть очень близкими, например, 22.12 град и 22.13 град, но они должны быть разными.
Гистерезис — это разница между значениями температуры включения и отключения. Причем, мы имеем два типа команд: Нагрев и Охлаждение. Так вот, если установлен Нагрев, нагрузка всегда будет включена в зеленой зоне (ниже нижнего порога). В желтой зоне нагрузка может быть и включена и выключена, все зависит от направления. Если фактическая температура повышается, нагрузка будет включена до верхнего порога (25 град). При его достижении нагрузка выключится и ее включение возможно только тогда, когда температура упадет до нижнего порога. Выше верхнего порога нагрузка не включится ни при каких условиях.
Другое дело, если выбран тип команды Охлаждение. Здесь нагрузка будет всегда включена при температуре выше верхнего порога (зеленая зона). Отключение нагрузки происходит при температуре нижнего порога (24 град), а включение: при температуре верхнего порога (25 град). Таким образом и поддерживается температура между значениями от 24 до 25 градусов при обоих типах команд.
Выбор аналогового датчика. Здесь также, как и при выборе цифрового датчика, необходимо установить гистерезис включения и отключения.
Программа представляет два типа установки гистерезиса, АЦП и Физика. Набрать значения можно в любой строке, в другой при этом автоматически будут рассчитаны соответствующие значения. Подробнее о представлении этих данных во второй части про входы АЦП.
Следует также помнить, что логика работы нагрузки и здесь будет соответствовать типу команды: Нагрев или Охлаждение. Здесь неважно, что мы тут измеряем: температуру, давление, килограммы, километры или вольты…
Сравнение двух датчиков. Этой функции в версиях прошивки ниже 1.95 нет. Здесь также имеется зависимость от типа команды. В приведенном примере при Нагреве нагрузка будет включена тогда, когда датчик «Дом обратка» будет «холоднее», нежели «Выход ВТА». Если же выбран тип Охлаждение, ситуация изменится на обратную.
Логика взаимодействия. Во многих случаях эта функция востребована, поскольку порой невозможно составить программу, в которой должны учитываться несколько условий. У меня, например, работа насоса в дом должна зависеть не только от температуры в прихожей, но и от температуры обратки дома и от положения переключателя «Котел». То есть, на одну и ту же нагрузку должны воздействовать три датчика. И вообще в управлении отоплением частного дома могут быть самые разные ситуации.
Для начала мы давай разберемся, Мастер, с этой логикой. Условимся сразу, что отключенное положение нагрузки — это ноль (0), а включенное — единица (1). То есть, любая команда из 32-х может выдать нам в качестве результата только эти 2 состояния: 0 или 1 (отключено и включено). Выполнились все условия в этой команде (время, дата, период, состояние датчиков) — выдана 1 (нагрузка включена), а если не выполнилось хотя бы одно из перечисленных условий — выдан 0 (нагрузка отключена).
А теперь возьмем две команды. Для одной и той же нагрузки (обращаю на это особое внимание). Две команды, которые воздействуют на одну и ту же нагрузку, но проверяют разные датчики, или установлено разное время, или вообще типы разные: одна Нагрев, а другая Охлаждение или Таймер. Неважно, но главное — это то, что каждая из них выдает свой результат: 0 или 1. Но нагрузка-то одна! Кого она должна слушать, как себя вести? Включится или не включится?
Вот тут и вступает в действие логика взаимодействия. Вариантов здесь два: вариант «ИЛИ» и вариант «И». При варианте «ИЛИ» нагрузка включится, если хотя бы одна команда выдала 1. Та ИЛИ другая — неважно, но если хотя бы одна дала добро, нагрузка включается.
При варианте «И» по другому. Здесь, чтобы нагрузка сработала, нужны две единицы. Та И другая. Если хотя бы одна из команд добро не дала, нагрузка не включится.
А если команд не две, а три? А если четыре? А неважно, логика остается прежней. Главное понять и запомнить, что логика взаимодействия устанавливается для взаимодействия с предыдущей командой для этой же нагрузки.
Ну, вот, мы познакомились с принципами программирования NM8036 в управлении отоплением частного дома. Но разговор еще не закончен, еще будем примерчики приводить, с хитростями разными знакомиться.
Логика работы моей системы, как я уже упоминал, предусматривает два режима, в одном из которых котел находится в работе, а в другом производится регулирование температуры воздуха. Переключением режима занимается выключатель «Котел».
Название этого выключателя, как может показаться, не соответствует его логике. Почему? Потому что при включенном состоянии он выдает напряжение 0 вольт, а при выключенном — 5 вольт. Это не вынужденная мера, это просто я так наобум поставил при сборке. Соответственно этому и программу сделал, не хотелось перебирать.
Далее.
В программе присутствуют 5 нагрузок, которыми она управляет:
1. Насос байпаса.
2. Насос контура в дом.
3. ТЭНы электрокотла.
4. Сигнал Предупредительный.
5. Сигнал Авария.
Контролируемые температурные датчики:
1. Температура воздуха в прихожке.
2. Температура на входе регистров.
3. Температура в обратной трубе контура отопления.
В общем, один переключатель режимов, пять нагрузок и 3 температурных датчика. Все это надо увязать каким-то образом в определенной логике в одно целое: программу управления. Начинаем!
Изначально определим значения, по которым будем определять положение переключателя режимов. Тут должны быть два значения. Одно из них должно быть выше среднего, другое — ниже. Я принял верхний порог гистерезиса 2,7 вольта, а нижний — 2,0 вольта. Можно было и дальше от середины, скажем, 3,5 вольта и 1,5, но, как оказалось, и при принятых значениях программа четко определяет положение выключателя.
Говоря попроще, программа теперь знает, что если напряжение ниже 2 вольт, значит, включен режим «Работа котла». Если же входное напряжение выше 2,7 вольта — это режим «Работа контура».
Это обстоятельство уже позволяет нам сделать управление одной из нагрузок: Насос байпаса. При включенном режиме «Работа котла» этот насос должен быть включен и гонять воду, а в режиме «Работа контура» необходимости в этом насосе нет. Никаких других условий для этой нагрузки не предусмотрено.
И вот, первая строка. Старт-стоп ставим до 2099 года, пусть работает всегда, пока есть напряжение питания. Тип периода не выбираем, здесь никакой периодичности во времени не требуется. Нагрузку указали, датчик указали, значения гистерезиса определили.
А вот почему именно Нагрев? А потому, что при таком выборе нагрузка будет включена всегда, пока напряжение на входе ниже верхнего порога гистерезиса (то есть, ниже 2,7 вольта). Я эти состояния подробнее объяснил выше.
Теперь благодаря этой строке программы насос байпаса будет включен все время, пока тумблером включен режим «Работа котла». Не возникает ли у тебя, Мастер, вопрос типа: А может, лучше просто тумблером включать насос? Ведь никакой разницы, все равно тумблер!
Если возникает, отвечу так: А этот мой тумблер не только насос байпаса включает. Благодаря работе этого тумблера выполняются и другие задачи, о которых ниже.
Далее займемся Подогревом регистров. Для этого у меня установлен электрокотел. ТЭНы в нем должны включиться тогда, когда температура на входе регистров ниже 40 градусов. Но есть и еще условие: включаться они должны только в режиме «Работа котла».
Про температуру: я уже говорил о погрешности датчиков температуры, привязанных к трубе лейкопластырем. Поэтому и учтем эту погрешность, установим пределы гистерезиса несколько ниже. Насколько — это я определил опытным путем.
Итак, для этой нагрузки (ТЭНы) должны быть соблюдены два условия. Начнем с первого, с температуры, и устанавливаем значения для первой строки нагрузки ТЭНы. Старт-стоп и тип периода у меня во всех строках одинаков, потому я больше не буду про них упоминать.
В остальном выбираем задачу Нагрев, нагрузка ТЭНы, контролируем датчик Вход регистров и устанавливаем гистерезис 36–35. При таких установках ТЭНы включатся при температуре 35 и ниже, а выключаться будут при достижении 36 градусов (в натуре у меня это 41 градус).
Теперь надо как-то выполнить для этой нагрузки (ТЭНы) еще одно условие: режим «Работа котла». Здесь нам проще, мы такое условие уже выполняли в самой первой строке для насоса байпаса. Ставим все точно также и здесь, в третьей по счету программной строке и во второй по счету для нагрузки ТЭНы.
В отличие от той строки указываем, конечно, нагрузку ТЭНы и (ВНИМАНИЕ!) в самом верхнем правом углу делаем выбор логики взыимодействия И. Если ты подзабыл, Мастер, отсылаю тебя опять выше, где о логике взаимодействия говорится подробнее.
Таким образом, нагрузка ТЭНы у нас теперь включится только при температуре на входе регистров ниже 40 градусов и только тогда, когда включен режим «Работа котла».
И теперь настала пора подумать о сигнализации. В частности, когда включены ТЭНы, у меня должны звучать короткие редкие тиккеры. Здесь, по идее, можно было бы просто подключить сигнализатор к ТЭНам, и всего делов. Вопрос только: как? Ведь реле нагрузки ТЭНы коммутирует 220 вольт переменки, а на предупредительную сигнализацию должны идти 12 вольт постоянки. Так что, надо программировать отдельную нагрузку: Предупредительный.
Так мы и сделаем. Все точно также, как и для нагрузки ТЭНы, тоже две строки, но нагрузку в них указать: Предупредительный. Слева видим первую строку…
А здесь — вторая строка для сигнала Предупредительный.
Сделаем уж сразу и аварийную сигнализацию, то есть, сигнал превышения температуры на входе регистров. И здесь тоже требуются две программные строки, поскольку надо контролировать температуру на входе регистров и соблюсти условие режима «Работа котла».
Почти все также, как и для сигнала Предупредительный. Почти, потому что указываем нагрузку Авария, гистерезис 51–50 и (ВНИМАНИЕ!) задачу выбираем Охлаждение. При таком расстановке нагрузка Авария включится и будет работать тогда, когла температура на входе регистров 51 и выше по датчику. В натуре у меня это 58 и выше.
И второй строкой к нагрузке Авария пристегиваем режим «Работа котла». Логика взаимодействия И!
И доехали, наконец, до регулировки температуры воздуха в прихожке. Здесь мы одной строкой не обойдемся, и двумя не обойдемся. Здесь у меня три условия: температура в прихожке, температура в обратке контура и… режим «Работа контура». Не котла, а контура отопления.
По идее, тут не так уж и сложно, хоть и три строки. Первой строкой контролируем температуру в прихожке. Задача Нагрев, нагрузка Насос дом, гистерезис 21.7–21.6.
Вторая строка — важная строка. Это условие температуры в обратной трубе контура. Насос должен прекратить гнать горячую воду, если ее температура в обратке превысила 33 градуса.
А это третья строка для нагрузки Насос дом, и последняя в моей программе управления отоплением. Обрати внимание, Мастер, здесь для тумблера выбрана задача Охлаждение. Думаю, ты все понял, почему так.
Конечно, не все возможности NM8036 использованы в моей программе управления отоплением. Есть еще сравнение двух датчиков температуры, которое я по ненадобности не применял.
Отдельно хотел бы еще пару слов сказать о логике взаимодействия. В инструкции говорится, что для каждой программной строки определяется логика взаимодействия с предыдущей строкой. Но я бы здесь поправил. Немного не так. Правильнее: логика взаимодействия с результатом предыдущих строк. Как это понимать?
А вот смотри: имеем, скажем, 5 строк программы для одной и той же нагрузки:
1. строка 1 (ИЛИ)
2. строка 2 (И)
3. строка 3 (И)
4. строка 4 (ИЛИ)
5. строка 5 (И)
Как тут определить, каков будет результат? Начнем сверху. В первой строке логика не считается, потому что предыдущих строк для этой нагрузки нет. Однако же, если ты поставишь в первой строке логику И, то эта строка у тебя никогда не выполнится (выдаст 0).
Вторая строка работает с первой по логике И. То есть, первая должна выдать 1, и вторая — 1. Две единицы в логике И дадут единицу на выходе: 1. Если хотя бы одно из условий не выполнено, на выходе второй строки будет ноль (0).
Третья строка работает… не со второй! Она работает С РЕЗУЛЬТАТОМ от второй. Работает она с этим результатом по логике И, и выдает свой результат, 0 или 1.
Четвертая строка. Не запутался еще? Обрати внимание, она работает с РЕЗУЛЬТАТОМ строки 3 по логике ИЛИ (любая 1 на входе даст 1 на выходе).
И, наконец, пятая строка. Если мы не запутались и знаем точно результат после четвертой строки, то вполне можем определить результат и после пятой. Логика И: для 1 на выходе должны быть две единицы на входе. И если после пятой строки получим на выходе 1, нагрузка наша включится. 0 — не включится.
Продолжение следует…