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

ABV у сценаріях

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

Ця стаття — про те, як це реалізовано в сценаріях oCBot. Про фізику розрахунку — Розрахунок ABV за температурою пари, про сам вимірювач — Скрипт «Розрахунок ABV».


Контур регулювання в ББК#

У сценарії ББК міцність працює на стадії активної перегонки (slt_distillation). Логіка виконується не щотакту, а раз на період коригування (параметр «період коригування насоса», секунди) — колона інерційна, частіші правки лише розгойдують процес.

flowchart TD
  M["Виміряти ABV пари"] --> Q{"ABV > цілі?"}
  Q -- "так (міцно)" --> D["Насос браги: −1 крок ШІМ"]
  Q -- "ні (слабо)" --> U["Насос браги: +1 крок ШІМ"]
  D --> DL{"Насос уже<br/>на мінімумі?"}
  U --> UL{"Насос уже<br/>на максимумі?"}
  DL -- ні --> OK["Застосувати"]
  UL -- ні --> OK
  DL -- так --> DP{"Є запас<br/>потужності?"}
  UL -- так --> UP{"Можна<br/>знизити?"}
  DP -- так --> S1["Стабілізація колони<br/>+ підняти потужність"]
  UP -- так --> S2["Стабілізація колони<br/>+ знизити потужність"]
  DP -- ні --> F1["Аварія: міцність висока"]
  UP -- ні --> F2["Аварія: міцність низька"]

Словами:

Коли насос уперся в межу#

Якщо насос уже на мінімумі, а міцність усе одно завелика — регулювати подачею більше нічим. Тоді сценарій повертається на стадію стабілізації колони: зупиняє подачу браги, зміщує потужність парогенератора на ~5 % від робочого діапазону в потрібний бік і дає колоні вийти на новий режим. Після стабілізації перегонка продовжується вже з іншою потужністю.

Симетрично для протилежного випадку: насос на максимумі, міцність замала — стабілізація зі зниженням потужності.

Якщо ж запасу потужності вже немає в жодному напрямку — сценарій зупиняється з аварією:

Аварія Що означає Куди дивитись
Міцність висока (abv_too_high) Насос на мінімумі, потужність на максимумі, ABV усе одно вище цілі Ціль занижена для цього апарата; замало браги на вході; забитий фільтр
Міцність низька (abv_too_low) Насос на максимумі, потужність на мінімумі, ABV усе одно нижче цілі Ціль завищена; слабка брага; втрати тепла в колоні

Обидві — жовтого рівня: процес спиняється безпечно, обладнання не в загрозі, потрібне рішення оператора.

Захист від «міцності з порожньої колони»#

Перед будь-яким регулюванням сценарій дивиться на витрату браги. Якщо потік нижчий за мінімальний:

Це важлива деталь: без такої перевірки суха колона показувала б чудову міцність, а автоматика спокійно тримала б «ідеальний режим» ні над чим.

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

Ці два показники поруч на графіку — найкорисніша діагностика перегону: видно, як автоматика торгувала потужністю за міцність.


Альтернатива: регулювання за температурою#

У прошивці є другий контур — той самий за змістом, але зроблений навпаки. Замість «щотакту рахувати ABV з температури», він один раз перераховує цільову ABV у цільову температуру пари (зворотна функція з розрахунку) і далі веде звичайний температурний контур: цільова температура верху колони плюс окремий поріг «спирту практично немає» (температура, що відповідає 1 % ABV).

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

Нотатка

Наразі стадія перегонки ББК викликає контур за міцністю. Температурний варіант присутній у прошивці й готовий до використання, але не підключений як робочий. Це запас на майбутню перебудову, а не перемикач у налаштуваннях.


Композиція: сценарій + скрипт ABV#

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

Новий сценарій (клон ББК на скриптах) робить інакше — делегує:

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


Як використати ABV у власному сценарії#

  1. Створіть вимірювач — окремий екземпляр скрипта «Розрахунок ABV» із власними давачами. Не дублюйте розрахунок у своєму сценарії.
  2. Прив'яжіть його як учасника й запускайте разом зі сценарієм.
  3. Читайте показник abv-<N>-strength.
  4. Регулюйте повільно. Крок на такт — мінімальний, період коригування — десятки секунд. Колона відповідає на зміну подачі за хвилини, і швидкий регулятор тут не швидший, а нестабільніший.
  5. Завжди перевіряйте витрату сировини перед тим, як довіритись міцності. Правило вище — не деталь ББК, а загальне: перш ніж керувати за розрахованим числом, переконайтесь, що процес узагалі йде.
  6. Ставте аварійні межі з обох боків. «Не вдається досягти цілі, регулювати більше нічим» — це аварія, а не привід крутити далі до впору.
Важливо

Іменування показників має значення. Скрипт-вимірювач публікує величину з номером екземпляра (abv-1-strength), сценарій — власну оркестраційну без номера (bbk-abv). Правило просте: показник належить тому, хто його обчислює. Інтерфейс сам розкладе плитки по групах, якщо імена дотримані.


Далі#