Статті бази ▾ ← Усі бази знань
Автоматика 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

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

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


Карта ролей#

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

Сценарій «ББК»#

Роль Обов'язкова Навіщо
Температура верху колони так За нею прогрів і стабілізація. Показ поза −30…130 °C — аварія
Температура в попугаї так Показ і умова «Безпеки» «перегрів продукту»
Подача браги так Помпа браги: ШІМ-вихід або клапан, сценарій веде його у %
Температура низу колони ні Лише показ
Температура води з конденсатора ні Лише показ; регулювання за нею немає
Витрата браги на теплообмінник ні Вмикає захист «витрата надто мала»: кінець браги → штатне завершення, забитий фільтр → аварія
Скрипт-учасник Обов'язковий Без нього
Парогенератор так Аварія «Парогенератор не прив'язано» на «Готово»
Розрахунок ABV так Аварія «Немає ABV» ще на старті
Охолодження ні Воду на конденсатор відкриваєте вручну — сценарій гріє незалежно

«Парогенератор»#

Власної периферії не має — це композиція з двох скриптів.

Учасник Обов'язковий Без нього
Тиск пари так Аварія «Тиск пари не прив'язано»
Рівень води ні Налив і захист від сухого ходу не ведуться; нагрів дозволено одразу. Годиться лише для бака, який ви наповнюєте руками й стежите самі

«Рівень води»#

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

«Тиск пари»#

Роль Обов'язкова Навіщо
Керування нагрівом (скрипт) або Нагрів (вихід) одне з двох Чим гріти. Штатно — скрипт; прямий вихід лише для гранично простої збірки
Тиск — робочий датчик ні Контакт манометра «тиск досягнуто»
Тиск — аварійний датчик ні Контакт манометра «надтиск» → аварія «Надтиск пари»
Тиск ні Аналоговий датчик: досягнуто за «Цільовим тиском» з гістерезисом
Температура ні Замість датчика тиску: вище «Температури кипіння» пара вважається наявною

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

«Керування нагрівом»#

Роль Обов'язкова Навіщо
ТЕН банк 1, елемент 1 так Мінімальна збірка. У налаштуваннях самого ТЕНа має бути задана потужність у ватах — з нулем скрипт зупиниться аварією «немає потужності головного ТЕНа»
ТЕН банк 1–4, елементи 2–3 ні До 12 елементів; релейні вмикаються від більшого до меншого, ШІМ-елементи догодовують решту

«Розрахунок ABV»#

Роль Обов'язкова Навіщо
Температура пари так Для ББК — той самий термометр верху колони
Тиск у колоні так Надлишковий тиск у колоні
Атмосферний тиск так Барометр. Без нього скрипт не стартує, і ББК зупиняється з «ABV не стартував»
Температура куба ні Залишок спирту в барді — окремий показник

«Охолодження»#

Усі ролі опційні, працює те, що прив'язано: Подача контуру (клапан), Помпа контуру, Температура контуру, Злив контуру, Витрата контуру. Штатно для ББК — лише клапан подачі води на конденсатор.


Порядок перевірок: що зупинить сценарій і коли#

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

На старті (до будь-якої кнопки):

  1. Параметри прогріву задані: цільова температура, максимальна й робоча потужність, таймаут — усі більше нуля → інакше «Не налаштовано прогрів».
  2. Прив'язано скрипт ABV → інакше «Немає ABV».
  3. Помпа: максимум більше нуля й не менший за мінімум, період регулювання більше нуля → інакше «Помпа не налаштована».
  4. Цільова спиртуозність більше нуля → інакше «Ціль міцності не задана».

На «Готово» (перша стадія):

  1. Прив'язано парогенератор → інакше «Парогенератор не прив'язано».
  2. Вмикається охолодження, і сценарій перевіряє, що воно справді працює → інакше «Охолодження не стартувало».
  3. Вмикається ABV — так само → інакше «ABV не стартував». Найчастіша причина — не прив'язано барометр або тиск у колоні.
  4. Стартує парогенератор → інакше «ПГ не стартував»: зазвичай його аварія з минулого разу не скинута.

Учасник, у якого не вистачає обов'язкової ролі, стартувати не може — тому кроки 6–8 і ловлять усі пропуски в таблицях вище.

Порада

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


Контакти манометра: яка полярність#

Електроконтактний манометр дає два сухі контакти, і прошивка читає їх по-різному:

Роль Замкнутий контакт означає Що робить «Тиск пари»
Тиск — робочий датчик тиск досягнуто Переходить у «hold»: вимога нагріву = «Потужність при робочому тиску» (типово 0 %). Розімкнувся — повертає робочу вимогу
Тиск — аварійний датчик надтиск Аварія «Надтиск пари» негайно, нагрів знято

«Замкнутий» тут — стан, який контролер читає як активний. Якщо ваш манометр дає нормально замкнутий контакт, увімкніть на цьому вході «Вхід інвертований» у налаштуваннях периферії — інверсію робить периферія, не скрипт. Гістерезис у робочого контакту — лише механічний, у самому манометрі.

Увага

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


Датчики рівня: де ставити#

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

Правила розстановки:

Сухий хід і переповнення — не логіка скрипта, а умови вкладки «Безпека» учасника «Рівень води»: датчик, умова, поріг, затримка «через N с», «Лише після норми». Як їх заповнити — у першому запуску.


Помпа браги#

Роль «Подача браги» — будь-який вихід, який приймає 0–100 %: ШІМ-канал плати розширення, аналоговий вихід, частотник по Modbus. Сценарій рухає його на 1 % за такт регулятора в межах «Мінімальна» / «Максимальна потужність насоса». Дискретне реле в цю роль ставити не варто: помпа буде або на нулі, або на повній, і регулятор міцності не матиме чим працювати.

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


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

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