uadepe.ru

Автоматика управління опаленням будинку своїми руками Частина 3

Автоматика управління опаленням будинку своїми руками. Частина 3 04.09.2015 14:52

Продовжуємо розповідати про систему управління опаленням будинку із застосуванням таймера-термостата 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 - не включиться.

Поділися в соціальних мережах:


Схожі