Статті бази ▾ ← Усі бази знань
Автоматика oCBot
Концепція та філософія12 Ласкаво просимо до екосистеми oCBotЗвідки взявся oCBotІдеологія oCBotСфери призначення та режими роботиПериферійні пристроїСвобода периферіїБазові скрипти автоматизаціїВіртуальні панелі оператораСкладні сценарії та логіка автоматизаціїМультиконтролерністьЗагальний огляд автоматики oCBotАрхітектура та опис
Підтримувані контролери19 Контролер Kincony KC868-A6Підключення живлення й USB на 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: MOSFET замість релеСухі контакти й аналогові входи KC868-A16Шини й мережа KC868-A16: Ethernet, RS485, I2C, 1-WireЩо зайнято на ESP32 у KC868-A16: карта GPIOЯк зібрати щиток на KC868-A16Як прогнати сценарії без куба: тестовий стенд для KC868-A16Контролер WT32-ETH01Універсальний ESP32 DevKit (Custom)
Каталог периферійних пристроїв9 Датчики температуриДатчики тискуДатчики рівня рідиниДатчики потоку (витратоміри)Виконавчі механізми (Клапани, Насоси, ТЕНи)Датчики середовища (Вологість, Світло, Тиск)Датчики електричні та вагиОргани керування (Кнопки, Енкодери)Електродвигуни та вентилятори
Складання та Перший запуск (DIY)20 Збирання контролера oCBot своїми рукамиПервинне прошивання та запуск контролераШвидке підключення Wi-Fi через BluetoothПідключення ТЕНів та регуляторів потужностіВибір та підключення електромагнітних клапанівКілька плат PCA9685 на одній шиніПін OE — апаратне зняття всіх виходівПлата PCA9685 зблизька — що на ній є і навіщоПлата розширення PCA9685 — 16 каналів ШІМСервопривід і плата розширення — чому це не працюєТвердотілки на платі розширенняПідключення LCD та OLED дисплеїв по шині I2CДвигун і частотний перетворювач: силове підключенняПромисловий протокол RS485 (Modbus RTU)Частотник AE200 (Yingshida) по Modbus: клеми, параметри й регістр завдання частотиЧастотник CFM310 по Modbus: панель RS485, сервісне меню і три регістриЧастотник Ennera FCE по Modbus: налаштування і діагностикаЧастотник без Modbus (900E): пуск реле й оберти 0–10 ВКалібрування ваг на тензодатчиках (HX711)Усунення типових несправностей
Робота з веб-інтерфейсом17 Головна сторінка (Home)Діаграма процесу (Flow)Сценарії автоматизаціїРедактор скриптівПульти оператораДизайнер пультів HMI DesignerПериферіяПлати та шиниЗагальні налаштуванняОбладнанняТочки монтажуНалаштування графіківОновлення прошивкиНалаштування Wi-FiЛогиПорталПро програму
Написання сценаріїв (C++ Скрипти)10 Огляд скриптівМій перший сценарій: Крок за крокомШІМ-відбір: Як налаштувати клапан правильноНалаштування ПІД-регулятора для стабілізаціїАвтоматизація температурних пауз при затиранні солодуСкрипт ББКРегулювання тискуРозрахунок ABV за температурою париСкрипт «Розрахунок ABV»ABV у сценаріях
Безпека, Хмара та Інтеграція5 Система безпеки oCBot: Захист від аварійСтворення хмарного кабінету UA DistilleryЯк опублікувати звіт про перегонкуШеринг кастомних пультів оператора (HMI)Інтеграція з Home Assistant та MQTT
Сценарії5
ББК5 Сценарій ББК: що робить автоматика і де вона чекає на васББК: залізо й прив'язки — без чого сценарій не стартуєББК: параметри за етапами — що означає кожен і як обратиББК: перший запуск — спочатку на воді, потім брагаББК: аварії — що написано на картці, чому і що робити
База знаньАвтоматика oCBotСценаріїББК

Сценарій ББК: що робить автоматика і де вона чекає на вас

Написано для прошивки 0.2.93 · порталу 0.0.176Можливо, застаріло: поточна прошивка 0.2.127, поточний портал 0.0.182

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

Серія розрахована на прошивку 0.2.93: у ній ББК уже не один великий скрипт, а тонкий диспетчер, що керує звичайними скриптами-учасниками. Стара стаття «Скрипт ББК» описувала знятий моноліт і замінена цією серією.


Що сценарій робить сам, а що — ви#

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

Від оператора потрібно:

Важливо

Без прив'язаного учасника «Охолодження» воду на конденсатор відкриваєте ви — сценарій про воду тоді не знає і гріти почне все одно.


Ланцюг учасників#

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

flowchart TD
    S[Сценарій ББК] -->|потужність, Вт| SG[Парогенератор]
    S -->|увімкнути / вимкнути| ABV[Розрахунок ABV]
    S -->|увімкнути / вимкнути| C[Охолодження]
    S -->|0–100 %| P[Помпа браги]
    SG --> WL[Рівень води]
    SG -->|дозвіл нагріву| SP[Тиск пари]
    SP -->|вимога, %| H[Керування нагрівом]
    H --> T[ТЕНи]
    WL --> V[Клапан наливу]
    ABV -->|міцність| S
Учасник Що отримує від сценарію Що робить сам
Парогенератор Потужність у ватах (сценарій перераховує її у % від максимуму нагріву) Наливає бак через учасника «Рівень води», пропускає вимогу потужності до «Тиску пари» лише коли бак повний або дозволено гріти під час доливу
Рівень води Команду «налий» на старті, далі «тримай» Відкриває й закриває клапан наливу за датчиками; сухий хід і переповнення — умови його «Безпеки»
Тиск пари Вимогу потужності (замість власних «розгону» й «робочої») Двопозиційно тримає тиск: досягнуто — «Потужність при робочому тиску», впав — вимога сценарію; ловить аварійний контакт тиску
Керування нагрівом Вимогу у відсотках Розкладає її по ТЕНах: релейні — вмикає/вимикає, ШІМ — догодовує
Розрахунок ABV «Увімкнутись» на «Готово», «вимкнутись» на завершення Рахує міцність пари за температурою верху, тиском у колоні й барометром; публікує показник
Охолодження «Увімкнутись» на «Готово», «вимкнутись» через 2 хв після завершення Тримає клапан подачі й помпу контуру відкритими на своїй «Потужності охолодження»

Помпу браги сценарій веде напряму — це єдиний його власний виконавчий вихід.


Стадії#

Назви — ті самі, що на картці сценарію в прошивці.

stateDiagram-v2
    state "Перевірка колони" as S1
    state "Наповнення ПГ" as S2
    state "Розігрів ПГ" as S3
    state "Стабілізація колони" as S4
    state "Робота на воді" as S4a
    state "Подача браги" as S5
    state "Дистиляція" as S6
    state "Завершення процесу" as S7
    [*] --> S1 : старт
    S1 --> S2 : «Готово» · охолодження й ABV стартували
    S2 --> S3 : бак повний, парогенератор дозволив нагрів
    S3 --> S4 : верх колони вище цільової T
    S4 --> S4a : стабільно · «Чистий дистилятор» увімкнено (перший раз)
    S4 --> S5 : стабільно · режим вимкнено або повторна стабілізація
    S4a --> S5 : «Готово»
    S5 --> S6 : 60 с
    S6 --> S4 : помпа вперлась у межу → потужність ±5 %
    S6 --> S7 : витрата браги мала, міцності нема
    S7 --> [*] : 2 хв води
Стадія на картці Що робить автоматика Що робите ви Чим закінчується
Перевірка цілісності колони Нічого не вмикає. Ще до неї, на старті, перевіряє, чи задані параметри прогріву, помпи й цільова міцність і чи прив'язано ABV Перевіряєте герметичність, воду, брагу, приймач — і тиснете «Готово» На «Готово» вмикаються охолодження й ABV, стартує парогенератор. Якщо хтось не стартував — аварія одразу
Наповнення парогенератора Учасник рівня наливає бак; нагріву нема Дивитесь, чи йде вода Бак повний → парогенератор доповідає «пара дозволена»
Розігрів парогенератора Максимальна потужність, доки термометр верху колони не перейде цільову температуру Чекаєте; за таймаутом — аварія Верх колони вище цілі → потужність падає до робочої
Стабілізація колони Робоча потужність, помпа браги 0. Стежить, щоб останні 20 показів верху колони (близько 10 с) розкидались не більше ніж на 2 °C, і щоб минуло щонайменше 30 с Нічого Стабільно → далі; не стабілізувалась за 10 хв → аварія
Робота на воді Лише коли ввімкнено «Чистий дистилятор», і лише на першій стабілізації. Робоча потужність, помпа 0, часу не обмежує Дивитесь, як колона працює на воді, збираєте дистильовану воду; готові — «Готово» «Готово» → подача браги
Подача браги Помпа на «Стартовій потужності насоса» 60 с Стежите, чи пішла брага 60 с → дистиляція
Дистиляція Раз на «Період регулювання» рухає помпу на 1 % за міцністю; на межах помпи зсуває потужність парогенератора на 5 % і стабілізує колону наново Стежите за міцністю, попугаєм, бардою. Закінчилась брага — без витратоміра сценарій сам цього не побачить Витратомір: витрата впала, а міцності нема → штатне завершення. Або аварія
Завершення процесу Парогенератор зупинено (нагрів і налив геть), помпа 0, вода на конденсатор ще 2 хв Чекаєте Сценарій зупиняється сам, картка показує «Завершено»

Долив води під час роботи#

Парогенератор доливає воду, коли рівень падає. Що при цьому з нагрівом — вирішує параметр учасника «Парогенератор» «Гріти під час доливу»:

Перший налив на стадії «Наповнення парогенератора» завжди без нагріву незалежно від параметра.


Регулятор дистиляції#

Технічний блок для тих, хто хоче знати, чому помпа рухається саме так.

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

Міцність порівняно з цільовою Помпа не на межі Помпа на межі Потужність теж на межі
вища −1 % (браги замало — менше води, більше спирту) помпа на мінімумі → потужність парогенератора +5 % діапазону [мін, макс] і повторна стабілізація на максимумі → аварія «Міцність висока»
нижча або дорівнює +1 % помпа на максимумі → потужність −5 % і повторна стабілізація на мінімумі → аварія «Міцність низька»

Крок потужності — 5 % від різниці між «Максимальною» і «Мінімальною потужністю парогенератора». Кожна повторна стабілізація знову ставить помпу на 0 і чекає спокійного верху колони, після чого помпа стартує зі «Стартової потужності насоса». Режим «Робота на воді» на повторних стабілізаціях не вмикається — колона вже з брагою.

Якщо прив'язано витратомір браги, на кожному такті перевіряється витрата: нижча за «Мінімальну подачу браги» означає або кінець браги (міцності вже нема → штатне завершення), або забитий фільтр (помпа ще не на мінімумі → аварія «Фільтр забитий»), або те, чого не мало б бути (помпа на мінімумі, витрати нема, а міцність є → «Занадто низька витрата»).


Що показує сценарій#

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


Статті серії#

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