Статті бази ▾ ← Усі бази знань
Автоматика 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, з причиною й тим, що робити далі.

Заголовки й тексти — ті самі, що на картці. Порядок — за тим, коли аварія може трапитись: на старті, на «Готово», під час прогону, від учасників.


Що робить сценарій при аварії#

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

Далі:

  1. Прочитайте код на картці сценарію і знайдіть його нижче.
  2. Якщо код каже «див. картку учасника» — відкрийте того учасника: причина написана на його картці.
  3. Усуньте причину.
  4. Скиньте аварію на учаснику, який її спричинив: натисніть «Стоп» на його картці. Аварія тримається до ручного скидання і не зникне сама.
  5. Запустіть сценарій знову — він почне з «Перевірки колони».

На старті: не налаштовано#

Сценарій перевіряє конфігурацію ще до першої стадії. Ці аварії з'являються за секунду після кнопки запуску.

На картці Причина Що робити
Не налаштовано прогрів — «Задайте параметри сценарію: цільову температуру переходу, максимальну й робочу потужність ПГ, таймаут прогріву» Хоч одне з чотирьох полів панелі «Розігрів парогенератора» дорівнює нулю Заповнити всі чотири. Дефолтів немає навмисно — вони залежать від апарата
Немає ABV — «Не прив'язано скрипт «Розрахунок ABV»» У вкладці «Скрипти» сценарію роль ABV порожня Прив'язати скрипт «Розрахунок ABV»
Помпа не налаштована — «Мінімум/максимум помпи браги або період регулювання не задані» Максимум помпи 0, або максимум менший за мінімум, або період регулювання 0 Виправити панель «Дистиляція»
Ціль міцності не задана — «Цільова спиртуозність продукту 0» З нулем регулятор вважав би будь-яку міцність завищеною Задати цільову спиртуозність

На «Готово»: учасник не стартував#

Після кнопки на першій стадії сценарій вмикає учасників і перевіряє, що вони справді працюють. Учасник, якому бракує обов'язкової ролі або який досі в аварії, стартувати не може.

На картці Причина Що робити
Парогенератор не прив'язано Роль «Парогенератор» у вкладці «Скрипти» порожня Прив'язати скрипт «Парогенератор»
Охолодження не стартувало — «без води в дефлегматорі гріти не можна» Скрипт «Охолодження» прив'язаний, але не запустився: його аварія не скинута або вихід заблоковано Відкрити картку «Охолодження», скинути аварію («Стоп»), перевірити прив'язку клапана
ABV не стартував — «перевірте, чи прив'язано термометр пари, тиск колони й барометр» Найчастіше — не прив'язано барометр або тиск у колоні: для ABV усі три датчики обов'язкові Прив'язати відсутній датчик у скрипті ABV; скинути його аварію
ПГ не стартував — «можливо, його аварія не скинута» Парогенератор або хтось із його ланцюга (тиск пари, рівень, нагрів) досі червоний з минулого разу Відкрити картки «Парогенератор», «Тиск пари», «Рівень води», «Керування нагрівом» — скинути аварію там, де вона є

Під час прогону: аварії самого сценарію#

На картці Стадія Причина Що робити
Час ПГ нагріву — «Перевищено час розігріву парогенератора — перевірте ТЕНи» Розігрів Верх колони не дійшов до цільової температури за «Таймаут розігріву» Якщо ТЕНи гріли (картка нагріву показувала вати) — замалий таймаут або зависока ціль. Якщо не гріли — реле, твердотілка, потужність ТЕНа в налаштуваннях. Парогенератор міг стояти на «hold» через досягнутий тиск із «Потужністю при робочому тиску» 0
Колона не стабілізувалась — «Верхня температура не заспокоїлась за 10 хвилин» Стабілізація Розкид верху колони перевищував 2 °C довше 10 хв Замала або завелика робоча потужність, витік пари, термометр верху, що стрибає. Якщо доливи збивали колону з увімкненим «Гріти під час доливу» — вимкнути його, і сценарій ставитиме стабілізацію на паузу
Міцність висока — «Міцність продукту вища за норму, скоригуйте відбір» Дистиляція Помпа на мінімумі, потужність парогенератора на максимумі, а міцність усе ще вища за ціль Колона дає більше, ніж ви просите: підняти цільову спиртуозність або опустити мінімум помпи (якщо помпа ще качає нижче)
Міцність низька — «Міцність продукту нижча за норму, перевірте процес» Дистиляція Помпа на максимумі, потужність на мінімумі, а міцність нижча за ціль Або закінчилась брага (без витратоміра це штатний кінець прогону), або ціль завищена для цього апарата, або пара не доходить до верху
Фільтр забитий — «Перевірте та очистіть фільтр подачі браги» Дистиляція Витрата браги нижча за «Мінімальну подачу», помпа вище мінімуму, міцність є Фільтр на лінії браги, шланг, помпа. Лише з витратоміром
Занадто низька витрата сусла, спиртуозність нульова Дистиляція Витрата нижча за мінімальну, помпа вже на мінімумі, а ABV показує міцність Суперечливий стан: витратомір або помпа брешуть. Перевірити обидва
up_column-temp ERROR Розігрів, стабілізація Термометр верху колони показав менше −30 або більше 130 °C — обрив або замикання Датчик, кабель, шина 1-Wire. Код без перекладу — ім'я ролі й слово ERROR
Аварія учасника — «Один зі скриптів-учасників (ABV або охолодження) перейшов в аварію» будь-яка робоча Спрацювала «Безпека» скрипта ABV або «Охолодження» Причина — на картці того учасника

Від парогенератора: сценарій показує код учасника#

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

На картці сценарію Причина Де шукати
Тиск пари не прив'язано — «прив'яжіть скрипт «Тиск пари» до ролі «Тиск пари»» У скрипті «Парогенератор» роль «Тиск пари» порожня Вкладка «Скрипти» парогенератора
Тиск пари ПГ — «Учасник «Тиск пари» зупинився аварією (надтиск, нагрів)» Скрипт «Тиск пари» червоний Його картка — коди нижче
Рівень ПГ — «Учасник «Рівень води» зупинився аварією або помилкою конфігурації» Скрипт «Рівень води» червоний: спрацювала його «Безпека» (сухий хід, переповнення) або обраний у параметрах датчик не прив'язаний Його картка — коди нижче

Картка «Тиск пари»#

На картці Причина Що робити
Надтиск пари — «Спрацював контакт аварійного тиску» Роль «Тиск — аварійний датчик» стала активною Запобіжний клапан, прохід пари в колону, полярність контакту (див. залізо)
Нагрів тиску пари — «Учасник «Керування нагрівом» зупинився аварією» Скрипт «Керування нагрівом» червоний Його картка — нижче
Нагрів не прив'язано — «прив'яжіть скрипт «Керування нагрівом» або прямий вихід нагріву» Ні скрипта нагріву, ні прямого виходу Вкладка «Скрипти» або «Периферія» скрипта «Тиск пари»

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

На картці Причина Що робити
no_main_heater_power У ТЕНа в ролі «банк 1, елемент 1» потужність 0 Вт у налаштуваннях периферії Задати номінальну потужність ТЕНа. Код без перекладу
alarm Спрацювала «Безпека» самого скрипта нагріву Умови у вкладці «Безпека» цього скрипта

Картка «Рівень води»#

На картці Причина Що робити
alarm Спрацювала умова «Безпеки»: сухий хід, переповнення Перевірити воду, клапан, поплавки; зняти причину; «Стоп» на картці
Помилка: відсутній обов'язковий датчик У параметрах обрано «вимикати на датчику» / «вмикати на датчику», а такий датчик не прив'язаний Прив'язати датчик або обрати інший у параметрах
Датчики не узгоджені Верхній поплавок мокрий, а нижчий сухий — застряглий поплавок або переповнення. Це попередження: подача вимкнена, скрипт працює Перевірити поплавки. Аварія за часом — умова «Безпеки»

Вкладка «Безпека»: код «alarm»#

Будь-який скрипт або сценарій, у якого спрацювала умова з вкладки «Безпека», зупиняється повністю і показує alarm. У ланцюзі ББК так виглядають:

Як заповнити ці умови — у першому запуску.


Коди, які на картці ББК більше не з'являються#

У списку перекладів прошивки лишились коди старого монолітного ББК: «Немає води ПГ», «Переповнення ПГ», «Час ПГ запов.», «Тиск ПГ», «Перегрів продукту», «Немає нагріву». Сценарій 0.2.93 їх не видає — їхню роботу роблять умови «Безпеки» учасників і коди з таблиць вище. Якщо ви бачите такий код, це інший сценарій (наприклад, окремий скрипт парогенератора) або стара прошивка.


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

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