Статті бази ▾ ← Усі бази знань
Автоматика oCBot
Концепція та філософія12 Ласкаво просимо до екосистеми oCBotЗвідки взявся oCBotІдеологія oCBotСфери призначення та режими роботиПериферійні пристроїСвобода периферіїБазові скрипти автоматизаціїВіртуальні панелі оператораСкладні сценарії та логіка автоматизаціїМультиконтролерністьЗагальний огляд автоматики oCBotАрхітектура та опис
Підтримувані контролери22 Контролер Kincony KC868-A6Підключення живлення й USB на KC868-A6Підключення периферії до KC868-A6Реле й аналогові виходи KC868-A6Сухі контакти й аналогові входи KC868-A6Твердотілка, драйвер помпи й датчики: підключення до колодки DA/IOШини й роз'єми KC868-A6: RS485, I2C, 1-Wire і рештаЩо зайнято на ESP32 у KC868-A6: карта GPIOЯк зібрати щиток на KC868-A6Як прогнати сценарії без куба: тестовий стенд для KC868-A6Контролер Kincony KC868-A16Підключення живлення й USB на KC868-A16Підключення периферії до KC868-A16Проміжне реле й контактор АСКО-УКРЕМ на KC868-A16Силові виходи KC868-A16: MOSFET замість релеСухі контакти й аналогові входи KC868-A16Шини й мережа KC868-A16: Ethernet, RS485, I2C, 1-WireЩо зайнято на ESP32 у KC868-A16: карта GPIOЯк зібрати щиток на KC868-A16Як прогнати сценарії без куба: тестовий стенд для KC868-A16Контролер WT32-ETH01Універсальний ESP32 DevKit (Custom)
Каталог периферійних пристроїв11 Датчики температуриДатчики тискуДатчики рівня рідиниСхема підключення щупа рівня через платку оптопариДатчики потоку (витратоміри)Схема підключення витратоміра до KC868-A6 і A16Виконавчі механізми (Клапани, Насоси, ТЕНи)Датчики середовища (Вологість, Світло, Тиск)Датчики електричні та вагиОргани керування (Кнопки, Енкодери)Електродвигуни та вентилятори
Складання та Перший запуск (DIY)27 Збирання контролера oCBot своїми рукамиПервинне прошивання та запуск контролераШвидке підключення Wi-Fi через BluetoothПідключення ТЕНів та регуляторів потужностіВибір та підключення електромагнітних клапанівКілька плат PCA9685 на одній шиніПін OE — апаратне зняття всіх виходівПлата PCA9685 зблизька — що на ній є і навіщоПлата розширення PCA9685 — 16 каналів ШІМСервопривід на платі PCA9685 — режим 50 ГцТвердотілки на платі розширенняПідключення LCD та OLED дисплеїв по шині I2CДвигун і частотний перетворювач: силове підключенняПроводка датчиків DS18B20: чому зникають показанняПроводка датчиків DS18B20: як зібрати шину на A6 і A16Промисловий протокол RS485 (Modbus RTU)Термометри стартового комплекту: ланцюжок на M12 і ящик з нержавійкиЧастотник AE200 (Yingshida) по Modbus: клеми, параметри й регістр завдання частотиЧастотник CFM310 по Modbus: панель RS485, сервісне меню і три регістриЧастотник Ennera FCE по Modbus: налаштування і діагностикаЧастотник без Modbus (900E): пуск реле й оберти 0–10 ВШина RS485 на кілька пристроїв: шлейф, термінатори, адресиВаги на тензодатчиках (NAU7802)Роз'єми M12: кодування A, B, D, X і кількість контактівРоз'єми M12: трійники, вилки, гнізда і заглушкиРоз'єми M12: чим захистити від води — корпус, кабель, IPУсунення типових несправностей
Робота з веб-інтерфейсом18 Головна сторінка (Home)Технічна підтримка: віддалена допомогаДіаграма процесу (Flow)Сценарії автоматизаціїРедактор скриптівПульти оператораДизайнер пультів HMI DesignerПериферіяПлати та шиниЗагальні налаштуванняОбладнанняТочки монтажуНалаштування графіківОновлення прошивкиНалаштування Wi-FiЛогиПорталПро програму
Написання сценаріїв (C++ Скрипти)10 Огляд скриптівМій перший сценарій: Крок за крокомШІМ-відбір: Як налаштувати клапан правильноНалаштування ПІД-регулятора для стабілізаціїАвтоматизація температурних пауз при затиранні солодуСкрипт ББКРегулювання тискуРозрахунок ABV за температурою париСкрипт «Розрахунок ABV»ABV у сценаріях
Безпека, Хмара та Інтеграція6 Безпека щита автоматикиСистема безпеки oCBot: Захист від аварійПідключення контролера до кабінету the.in.uaЯк опублікувати звіт про перегонкуШеринг кастомних пультів оператора (HMI)Інтеграція з Home Assistant та MQTT
Сценарії5
ББК5 Сценарій ББК: що робить автоматика і де вона чекає на васББК: залізо й прив'язки — без чого сценарій не стартуєББК: параметри за етапами — що означає кожен і як обратиББК: перший запуск — спочатку на воді, потім брагаББК: аварії — що написано на картці, чому і що робити

Давачі рівня рідини в oCBot

Написано для прошивки 0.2.221 (коміт f438a8c) · порталу 0.0.298Можливо, застаріло: поточна прошивка 0.2.238, поточний портал 0.0.344

давачі рівня використовуються для контролю заповнення ємностей (наприклад, приймальної тари для спирту, парогенератора чи накопичувального бака для води) та попередження переливу або сухого ходу ТЕНів.


Поплавкові давачі i
Поплавкові давачі
Електродні давачі i
Електродні давачі
Безконтактні давачі i
Безконтактні давачі

1. Поплавкові давачі рівня (герконові)#

Найпопулярніший та найпростіший тип давачів сухого контакту.

Три поплавкові давачі рівня на окремих дискретних входах контролера: низ, середина і верх, усі на спільну GND входів


2. Контактні (електродні) давачі провідності#

Використовуються для виявлення протікання рідин або контролю рівнів електропровідних рідин (води, барди).

Регулятор рівня XH-M203 як датчик#

Щупи провідності на дискретний вхід контролера напряму не йдуть: провідність міряють змінним струмом, вхід цього не вміє. Готовий модуль XH-M203 робить це сам, а контролеру віддає контакт свого реле.

Регулятор рівня XH-M203 на дискретному вході: контакт NO на вхід DI1, COM на GND входів, живлення 12 В від блока контролера, три щупи в ємності, насос вмикає реле контролера

Кондуктометричне реле рівня XH-M203: одна плата — один щуп#

Другий спосіб — дати кожному щупу власну плату, а рівень тримати самим контролером. Плата тоді працює як кондуктометричне реле, тобто точковий датчик «мокро / сухо» на одній висоті, а клапан подачі вмикає реле контролера за скриптом «Рівень води». Так задумано парогенератор ББК: дві плати — два щупи на різній висоті, кожна плата на свій вхід. Контролер бачить кожен рівень окремо, тож працюють сторожі неузгодженості й сухого ходу, а коли вмикати й вимикати подачу, задають параметри скрипта, а не зашита логіка плати.

Обережно

Заборонено: живити плату від спільного 12 В шафи, у якої мінус заземлений, і водночас брати заземлений корпус ємності електродом. Один контакт роз'єму щупа — внутрішній плюс плати, і на корпусі він замикає блок живлення накоротко. Так 18.10.2026 на стенді згорів міст BD1 і плата загорілась — що сталося.

Нотатка

Перевірено на залізі 23.10.2026, парогенератор у Дніпрі: дві плати від окремого ізольованого блока 12 В, піни «+» на корпусі, сенсорні піни на щупах — плати працюють незалежно одна від одної. До перекомутації вони спрацьовували разом: на корпусі сиділи сенсорні піни — розбір. Стан «Інвертувати» там ще не підтверджено. Решту складено за фото плати, описами продавців, даташитом реле й розбором згорілої плати.

Що на платі. Зліва — гвинтова клема живлення 12 В; за нею діодний міст BD1, тож годиться і постійна, і змінна напруга, полярність клеми не важлива. Праворуч угорі — два двоконтактні роз'єми входів: «上水位» (верхній рівень) і «下水位» (нижній), біля них два зелені світлодіоди рівнів. У кожному роз'ємі один контакт — внутрішній плюс плати (після моста), другий — сенсорний вхід через резистор: поплавок чи вода між щупами замикає плюс на вхід. Котрий контакт плюс, на платі не підписано й з лицьового боку не видно — у комплектному кабелі це червоний дріт, а з іншим кабелем його знаходять пищалкою (нижче). Праворуч унизу — гвинтова клема виходу «输出», поруч реле SRD-12VDC-SL-A. Суфікс SL-A за кодом Songle — котушка 0,36 Вт і лише нормально розімкнений контакт: «输出» замкнений, коли реле ввімкнене, і розімкнений, коли вимкнене або плата без живлення. Контакт реле гальванічно відокремлений від кола плати. Червоний світлодіод PWR — живлення. Напис на платі буває XH-M203 чи HCW-M203, версії — V4, V5: схема та сама, але реле трапляється й SL-C.

Контур плати XH-M203: клема живлення 12 В зліва, міст BD1, роз'єми 上水位 і 下水位 праворуч угорі, у кожному пін «+» плати і сенсорний вхід: у комплектному кабелі червоний дріт — «+», чорний — сенсорний, з іншим кабелем — визначити пищалкою; клема виходу 输出 праворуч унизу біля реле SRD-12VDC-SL-A з лише контактом NO; сенсорні піни обох роз'ємів разом на щуп, піни «+» разом на корпус; живлення лише від окремого ізольованого блока 12 В; клеми виходу на DI і GND входів

Власна логіка плати (за описами продавців): нижній вхід сухий — реле вмикає насос, верхній мокрий — вимикає, між ними тримає попередній стан. Це і є її гістерезис, і скрипту він заважає: контролер бачив би не рівень, а рішення плати.

Як прибрати гістерезис. Обидва роз'єми — паралельно: сенсорні піни обох роз'ємів разом на щуп, піни «+» обох роз'ємів разом на корпус. Входи тепер завжди однакові: сухо — це водночас «нижче нижнього», мокро — «вище верхнього», верхній і нижній рівні плати збігаються в одній точці, і реле перемикається, щойно щуп намок чи висох. Від хвиль і бризок логіку скрипта фільтрує вже контролер — двома полями тремтіння в картці датчика (розділ «Тремтіння входу»).

Один роз'єм замість двох не годиться. Якщо другий вхід лишити відкритим чи закоротити, плата або застрягне (щуп лише на нижньому вході — реле ніколи не вимкнеться; лише на верхньому, а нижній закорочено — ніколи не ввімкнеться), або отримає суперечливу пару «верх мокрий, низ сухий», і як вона її розв'язує, продавці не пишуть. Паралельні роз'єми — єдиний варіант без таких станів.

Основний варіант для заземленого металевого корпусу — окремий ізольований блок 12 В лише для плат XH-M203. Його мінус і плюс ні з чим у шафі не з'єднані — ні з PE, ні з мінусом контролера. Тоді коло щупів плаває і торкається шафи в одній точці — через корпус, — тож струму через корпус нема куди йти, хоч би який пін на ньому був. Вихід «输出» на DI землі не зв'язує: контакт реле відокремлений від кола плати.

Підключення:

Дві плати XH-M203 одна під одною, з розкладкою клем справжньої плати, на двох дискретних входах, перевірено на залізі 23.10.2026 на парогенераторі в Дніпрі: верхня плата — верхній щуп і DI1, нижня — нижній щуп і DI2; над кожною свій окремий ізольований блок 12 В, не заземлений; у кожної роз'єми 上水位 і 下水位 з'єднані паралельно, сенсорні піни на свій щуп, піни «+» на корпус ємності, з'єднаний в одній точці; одна клема 输出 на свій DI, друга на GND входів контролера; кожен дріт одного кольору від плати до кінця, легенда кольорів угорі схеми, а в комплектному кабелі роз'єму свої кольори: червоний дріт — «+» на корпус, чорний — сенсорний на щуп; клапан подачі води вмикає реле контролера Y1; ТЕНи нижче нижнього щупа

Стан реле й «Інвертувати». Дискретний вхід дає 1, коли контакт замкнений; для скрипта мокрий датчик — 1. Звідси таблиця (за логікою продавців і контактом NO з даташита):

Щуп Реле плати «输出» DI без інверсії З «Інвертувати»
сухий увімкнене замкнений 1 0 — сухо
мокрий вимкнене розімкнений 0 1 — мокро
плата без живлення вимкнене розімкнений 0 1 — «мокро»

Отже «Периферія» → два датчики типу «Рівень» на внутрішніх входах DI1 і DI2, «Інвертувати» увімкнено. Один продавець описує логіку навпаки (мокро — реле ввімкнене); тоді галочка не потрібна, тож остаточно її ставиш за перевіркою склянкою води. Далі скрипт «Рівень води»: верхній щуп — роль «Верхній рівень води», нижній — «Нижній», і пара параметрів «Два датчики»: подачу зупиняє й запускає верхній, нижній — аварія сухого ходу через «Безпеку». Третя плата на середньому щупі — розклад «Три датчики».

Останній рядок таблиці — пастка: мертва плата виглядає як «мокро». Для верхнього щупа це безпечний бік (подача стоп, а переливу не дасть ще й «Максимальний час наливу»), для нижнього — ні: обрив живлення плати сховає сухий хід ТЕНів. Тому живи плати надійно, а сухий хід у парогенераторі дублюй поплавком напряму на вхід.

Перевірка склянкою — до ємності. Плата від свого ізольованого блока; пін «+» — на шматок дроту чи пластину в пластиковій склянці, сенсорний пін — на щуп.

  1. Увімкни плату; щуп сухий. Запам'ятай, що показує картка датчика.
  2. Опусти щуп у воду з-під крана. Зелений світлодіод рівня має змінитись, а картка — через «Тремтіння “спрацював”» (типово 2 с). Не змінюється нічого — плата щупа не бачить, і схема в такому вигляді не годиться.
  3. Мокрий щуп має давати 1. Показує 0 — увімкни «Інвертувати» (очікуваний випадок за таблицею вище).
  4. Вийми щуп із води й зніми з плати живлення: картка покаже, як виглядає мертва плата. Показує 1 («мокро») — так і очікується; для нижнього щупа подбай про дубль сухого ходу.

Дві плати спрацьовують разом#

Випадок на парогенераторі в Дніпрі 23.10.2026. Дві плати живляться від одного ізольованого блока; від кожного роз'єму обох плат чорний дріт комплектного кабелю йде на корпус, червоний — на свій щуп. Торкнешся корпусу дротом будь-якого щупа — спрацьовують обидві плати, і телеметрія показує однакові сигнали на DI1 і DI2. Поки плата була одна, кілька днів усе працювало як слід.

Причина: на корпусі сидять сенсорні піни обох плат, а не «+». Через корпус сенсорні входи двох плат з'єднані між собою, а на щупах опинились піни «+». Будь-який щуп, торкнувшись води чи корпусу, замикає плюс спільного блока на корпус — тобто на сенсорні входи обох плат одразу. Одна плата так працює, бо сенсорний вхід на корпусі в неї один; ламається, щойно на той самий блок додати другу.

Виправлення: на кожному роз'ємі обох плат поміняти дроти місцями — на корпус пін «+», на щуп сенсорний пін, як на схемі вище. Пін, що сидить на корпусі, має бути «+». У комплектних кабелях червоний дріт — «+», на корпус; чорний — сенсорний, на щуп. Інший кабель — визначай пищалкою до плюсової ніжки електроліта (пункт «Знайди пін „+“ пищалкою» вище). У Дніпрі після перекомутації обидві плати працюють незалежно. Інший вихід — окремий ізольований блок на кожну плату: без спільного плюса щуп однієї плати не замкне вхід сусідньої.

Перевірка: торкнися корпусу дротом щупа однієї плати — мають змінитись світлодіод рівня й вхід лише цієї плати. Потім те саме з другою.

Що сталося 18.10: згорів міст BD1#

Дві плати XH-M203 (V5) стояли в шафі парогенератора й живились від спільного блока Mean Well PV-60-12 (12 В, 5 А), мінус якого заземлений; корпус парогенератора теж заземлений, тобто корпус = PE = мінус блока. Другий дріт роз'ємів обох плат ішов на корпус. Силова частина була вимкнена, ТЕНи без живлення, води не було. Корпус замкнули дротом на щуп — іскра, одна плата загорілась. На ній згорів міст BD1 на вході.

Шлях струму, який це пояснює: плюс блока → верхній діод моста → внутрішній плюс плати → пін «+» роз'єму, що торкнувся корпусу → корпус і PE → мінус блока. Струм обмежувало лише те, що блок віддає до 5 А, — діод моста цього не витримав. Отже, один пін роз'єму — низькоомний внутрішній плюс плати, після моста. Звичайна продзвонка від клеми живлення цього не показує: на шляху діод моста. Висновок установлено за згорілим мостом, вимірюванням ще не підтверджено.

Що з цього для будь-якої такої плати:

Ізольований блок для плат#

Плата живиться 12 В. Котушка реле за даташитом — 400 Ом, 0,36 Вт, тобто близько 30 мА при 12 В; скільки бере решта плати, продавці не пишуть, тож блок на кілька сотень міліампер на дві плати — із запасом. Головне в ньому — не струм, а те, що вихід ні з чим не з'єднаний.

  1. Вихід блока ↔ PE і ↔ мінус шафи — продзвонити обидва дроти виходу на шину PE і на мінус блока контролера. Очікується: не пищить ніде.
  2. Нічого зайвого від блока. Від нього живляться лише плати XH-M203; жоден інший прилад, жоден екран кабелю.
  3. Плата на стійках, нижній бік не торкається металу шафи.
  4. Корпус ємності заземлений (корпус ↔ PE щита — з'єднано) й ізоляція ТЕНів перевірена мегаомметром — це робить людина з допуском до електроустановок. Корпус тепер у колі щупів, і витік із ТЕНа на корпус при слабкому PE ліг би на плату.
  5. Напруга на щупах постійна (джерело — плюс плати), тож щупи з часом обростають і роз'їдаються: щупи з нержавійки, огляд і чистка за графіком.
№ Що Результат
1 Вихід ізольованого блока ↔ PE / мінус шафи не виміряно
2 Від блока живляться лише плати не перевірено
3 Плати на стійках не перевірено
4 Корпус ↔ PE, ізоляція ТЕНів, МОм не виміряно
— Пін «+» кожного роз'єму, плата 1 / 2 червоний дріт комплектного кабелю (23.10, Дніпро)

Брязкіт реле плати на киплячій воді#

Хвилі й бульбашки на межі щупа дають «мокро — сухо» кілька разів на секунду. Фільтр тремтіння прошивки рятує логіку скрипта, але не реле плати: воно перемикається на кожну хвилю, бо фільтр стоїть уже після нього. Ресурс серії SRD за даташитом Songle — 10⁷ перемикань механічно (без навантаження) і 10⁵ електрично (на номінальному навантаженні 10 А). При двох перемиканнях на секунду це:

Межа ресурсу Перемикань Годин безперервного брязкоту Прогонів по 8 год
електрична, 10 А 100 000 ≈ 14 ≈ 2
механічна 10 000 000 ≈ 1 400 ≈ 170

На вхід контролера йдуть міліампери, тож реальний знос ближчий до механічної межі, але й вона — сотні годин, а не роки. Щуп, що весь прогін стоїть на межі хвилі, з'їсть реле за сезон. Як із цим жити:

Що обрати для парогенератора: платки оптопари PC817 на кожен щуп і розклад «Три датчики» — механіки нема, нічого зношуватись. XH-M203 — лише з окремим ізольованим блоком, заспокійливою трубкою й тим самим розкладом «Три датчики»; на першому прогоні послухай, як часто клацає реле на кипінні.

Щупи через платку оптопари#

Другий спосіб завести штирі — платка оптопари PC817: вода між штирями запалює її світлодіод, а транзистор виходу замикає дискретний вхід на GND. Годиться лише платка з виходом NPN «на землю»; вихід «на плюс» дає знайому картину — світлодіод платки світиться, а вхід мовчить. Схеми для обох плат, як розпізнати платку і перевірка на місці — Схема підключення щупа рівня через платку оптопари.


3. Безконтактні ультразвукові або оптичні давачі#

Сучасні пристрої, що монтуються зовні ємності.


Тремтіння входу: два боки#

Поплавок на киплячій воді не стоїть: хвиля піднімає й опускає його кілька разів на секунду, бризки на мить замикають електроди. Без фільтра скрипт бачив би «мокро — сухо — мокро» й клацав клапаном на кожну хвилю, а умова «Безпеки» могла б спіймати аварію на бризці. Тому дискретний вхід приймає новий стан лише після того, як той протримався заданий час, — і з прошивки 0.2.214 цей час окремий для кожного напрямку:

Чому не однаково. Поплавок довго хитається навколо рівня, перш ніж справді піднятись, тож «спрацював» варто підтверджувати секундами. А звільняється він одразу: рівень упав — датчик сухий, і тут довге підтвердження лише затягує реакцію: подача відкривається пізніше, аварія «сухий хід» приходить на секунди пізніше. В електродів протікання те саме з більшим запасом: конденсат і бризки дають хибні замикання на секунди, а висихають швидше, ніж натікають.

Часова діаграма: бризки коротші за 2,0 с не приймаються, довге «мокро» приймається через 2,0 с, коротка хвиля «сухо» не приймається, довге «сухо» приймається через 0,5 с

Типові значення за типом периферії (rb_default_debounce_ms і rb_default_debounce_off_ms у rb_environment.cpp):

Тип «Спрацював» «Відпустив» Чому стільки
Рівень 2,0 с 0,5 с хвиля на поплавку — секунди; сухий поплавок — факт одразу
Протікання 5,0 с 1,0 с конденсат і бризки на електродах
Кнопка 50 мс 50 мс механічний контакт торохтить мілісекунди
Кінцевик 20 мс 20 мс те саме
Геркон 10 мс 10 мс пластинки торохтять менше за контакт
Рух (PIR) 200 мс 200 мс фільтр від наводок довгої лінії

Де задати: «Периферія» → картка датчика → два поля тремтіння. Для типів «Рівень» і «Протікання» вони в секундах з одним знаком після коми, для решти — у мілісекундах; стеля — 60 с. Порожнє поле = типове з таблиці (воно ж підказкою в полі), 0 = без фільтра. Фільтр один на всіх: скрипти, умови вкладки «Безпека» і картка датчика бачать уже прийнятий стан, тому в самому скрипті «Рівень води» ніякого тремтіння немає і дублювати його не треба.

Нотатка

Датчики, налаштовані до 0.2.214, отримують на обидва боки те одне значення, що було збережене: після оновлення нічого не зміниться, доки ви самі не вкоротите «відпустив».


Скрипт «Рівень води»: два чи три датчики#

У скрипта три ролі датчиків — «Нижній», «Середній» і «Верхній рівень води» — і прив'язувати треба не всі. Логіку подачі задає пара параметрів:

Між «пуск» і «стоп» подача тримає попередній стан, тож датчик, який не входить у пару, у подачі не бере участі зовсім. Його робота інша — див. сторожі нижче.

Два розрізи ємності: з двома датчиками верхній робить стоп і пуск, нижній — аварія через «Безпеку»; з трьома верхній зупиняє, середній запускає, нижній — аварія; ТЕНи нижче нижнього датчика

Два датчики. Робочий цикл робить верхній сам: сухий → подача, мокрий → стоп. У параметрах «Вимикати подачу» = верхній, «Вмикати подачу» = «Той самий». Рівень гуляє вузькою смугою навколо поплавка, клапан клацає на кожній хвилі — для накопичувального бака це нормально, для парогенератора шумно. Нижній датчик у логіці не задіяний: його єдина роль — чиста аварія «ТЕНи сухі» через слот «Безпеки». Ставте його нижче робочого вікна і вище ТЕНів: тоді «низ сухий» — не штатний стан щоциклу, а справжня подія, і аварія не вдарить на кожному наливі.

Три датчики. Середній на «Вмикати подачу», верхній на «Вимикати»: рівень гуляє між ними, клапан відкривається рідше, кожен налив довший. Нижній — та сама аварія через «Безпеку». Так і варто ставити парогенератор: холодна вода заходить порціями, а не щосекунди.

Параметр Два датчики Три датчики
«Вимикати подачу на датчику» Верхній Верхній
«Вмикати подачу на датчику» «Той самий» Середній
Нижній не в логіці; «Безпека»: менше 0.5 → аварія те саме
Порада

«Вмикати» не може бути вище за «Вимикати»: прошивка мовчки опустить його до того самого датчика. Обидва датчики пари мають бути прив'язані — інакше скрипт на старті стане з помилкою «Не прив'язано датчик рівня» і назве, якого бракує.


Сторожі: час + наслідок#

Принцип один: аварії призначаються налаштуваннями, у код нічого не зашито. Кожен сторож — це скільки часу умова має протриматись і що робити потім: «Повідомити» (подія на портал, скрипт працює далі) або «Аварія» (повна зупинка, виходи вимкнено, причина на картці). Для скрипта «Рівень води» їх три.

Сторож Де Час Наслідок Типово
Налив не підтверджено параметри скрипта «Максимальний час наливу» «Після спливу наливу» 0:00:00 = без обмеження / Аварія
Датчики не узгоджені параметри скрипта «Допуск неузгодженості датчиків» «Після неузгодженості» 10 с / Аварія
Сухий хід вкладка «Безпека» «Затримка спрацювання» завжди аварія задаєте самі

Максимальний час наливу — захист від переливу на одному верхньому датчику. Відлік іде від відкриття подачі до «мокро» на датчику «Вимикати подачу». Якщо той завис, обірвався або води не йде, подача без сторожа лишиться відкритою, доки хтось не помітить калюжу. Типово 0 — без обмеження: прошивка не знає вашого бака, тож час задаєте ви — скільки триває нормальний налив від сухого до мокрого, з запасом у півтора-два рази. «Аварія» — повна зупинка з причиною «датчик не підтвердив рівень за N с». «Повідомити» — подача закривається, стадія «Налив не підтверджено», подія на портал; подача повернеться, коли датчик побачить воду (долили руками), або після перезапуску. Сторож діє і коли скрипт веде сценарій — парогенератор, ББК, — бо це захист від переливу, а не таймер роботи; від «Обмеження тривалості» скрипта й ліміту етапу сценарію він окремий.

Допуск неузгодженості датчиків. Вода не буває вище, ніж нижче: мокрий датчик над сухим — це застряглий поплавок або переповнення. Коротше за допуск — хлюпання: стадія «Датчики не узгоджені», подача вимкнена, скрипт працює далі. Довше — наслідок: «Аварія» з причиною, який датчик мокрий при якому сухому, або «Повідомити» — подія, подача лишається вимкненою, доки датчики не узгодяться. Перевіряються всі прив'язані датчики, не лише пара.

Сухий хід — через «Безпеку». Нижній датчик не в логіці подачі, тому його аварію ви призначаєте самі, як для будь-якого датчика: у картці датчика прапорець «Може сигналізувати аварію», далі в скрипті «Рівень води» вкладка «Безпека» → «Додати датчик аварії»: датчик — нижній, умова «менше», поріг 0.5 (поплавок дає 0 або 1, тож «менше 0.5» = сухий), «Затримка спрацювання» — кілька секунд, «Лише після норми» — увімкнути, бо на старті бак порожній і без цього аварія вдарить одразу. Приклад заповнення таблицею — у першому запуску ББК.

Порада

Поки стенд новий, поставте обом сторожам скрипта «Повідомити»: побачите в подіях, де і як часто вони спрацьовують, не зупиняючи процес. На робочому апараті — «Аварія».


Суміжні статті#