Складні сценарії та логіка автоматизації
Як об'єднувати базові скрипти в багатокрокові процеси?
Окремі скрипти — це "цеглинки" автоматизації. Але справжня сила oCBot розкривається, коли ви об'єднуєте їх у складні сценарії — багатокрокові процеси з умовними переходами, які виконуються автоматично.
Ця стаття — про те, як створюються складні сценарії в oCBot, як вони працюють та як їх використовувати для автоматизації будь-яких господарських процесів.
Про що ця стаття#
Це — практичний посібник зі створення багатокрокових сценаріїв автоматизації.
ТУТ НЕ БУДЕ#
- ❌ Програмування на C++. Сценарії створюються через веб-інтерфейс.
- ❌ Прив'язки до конкретних процесів. Ви самі будуєте логіку.
ТУТ БУДЕ#
- ✅ Що таке сценарій та як він працює.
- ✅ Як створювати кроки та умови переходу.
- ✅ Приклади реальних сценаріїв для різних сфер.
Ключова думка цього тексту: Сценарій — це послідовність кроків, кожен з яких містить дії та умови переходу до наступного кроку. Ви будуєте логіку процесу так, як вважаєте за потрібне. Система виконує її автоматично.
Що таке сценарій?#
Сценарій — це послідовність кроків, об'єднаних у логічний процес. Кожен крок містить:
- Назву кроку — що відбувається на цьому етапі.
- Дії (Outputs) — що робить система на цьому кроці (потужність нагріву, стан клапанів).
- Умови переходу (Transitions) — за яких умов переходити до наступного кроку.
Як це працює?#
Сценарій виконується в реальному часі як скінченний автомат (State Machine):
- На кожному кроці контролер встановлює задані значення для виходів.
- Постійно перевіряє логічні умови переходу.
- У разі виконання умови — переходить до наступного кроку.
Крок 1 → (умова) → Крок 2 → (умова) → Крок 3 → ... → Крок N (кінцевий)
Анатомія кроку сценарію#
1. Назва кроку#
Короткий текстовий опис дії.
Приклади:
- "Розігрів куба"
- "Стабілізація колони"
- "Відбір голів"
- "Відбір тіла"
- "Завершення"
2. Дії (Outputs)#
Що потрібно ввімкнути/вимкнути або налаштувати на цьому кроці.
| Тип дії | Опис | Приклад |
|---|---|---|
| Потужність нагріву | Задає потужність у % або Вт | "Нагрів: 100%" |
| Стан клапана | Відкрито/закрито/ШІМ | "Клапан відбору: Закритий" |
| Керування насосом | Ввімкнено/вимкнено | "Насос охолодження: Ввімкнено" |
| Сигналізація | Звук, світло, сповіщення | "Світлодіод: Блимає" |
3. Умови переходу (Transitions)#
Логічні вирази, які визначають, коли переходити до наступного кроку.
| Тип умови | Опис | Приклад |
|---|---|---|
| Температура | Перевищення заданого значення | T_cube > 80.0 |
| Час | Минуло заданий час | Time > 1800 (30 хвилин) |
| Об'єм | Відібрано заданий об'єм | V_collected > 300 (мл) |
| Кнопка | Натиснуто фізичну кнопку | Button_1 == Pressed |
| Рівень | Досягнуто заданого рівня | Level > 80% |
| Комбіновані умови | Поєднання кількох умов | T_cube > 93 AND Time > 600 |
Створення сценарію в інтерфейсі#
Крок 1: Перейдіть у розділ "Сценарії"#
У веб-інтерфейсі oCBot відкрийте розділ "Сценарії" та натисніть "Створити новий сценарій".
Крок 2: Додайте назву та опис#
Дайте сценарію назву (наприклад, "Ректифікація цукрової браги") та короткий опис.
Крок 3: Додайте кроки#
Для кожного кроку:
- Введіть назву кроку.
- Встановіть дії (нагрів, клапани, насоси).
- Додайте умови переходу до наступного кроку.
Крок 4: Збережіть та запустіть#
Збережіть сценарій. Він з'явиться в списку доступних. Натисніть "Запустити", щоб почати виконання.
Приклад простого сценарію (дистиляція)#
Ось як виглядає логічна схема простого процесу дистиляції:
Крок 1: Розігрів куба#
- Дії:
- Нагрів:
100%(максимальна потужність) - Клапан відбору:
Закритий - Клапан води:
Відкритий
- Нагрів:
- Умова переходу:
T_cube >= 80°C→ перехід на Крок 2
Крок 2: Стабілізація колони#
- Дії:
- Нагрів:
50%(робоча потужність колони) - Клапан відбору:
Закритий - Клапан води:
Відкритий
- Нагрів:
- Умова переходу:
Time >= 1200(20 хвилин) → перехід на Крок 3
Крок 3: Відбір "голів"#
- Дії:
- Нагрів:
50% - Клапан відбору:
ШІМ 10% - Клапан води:
Відкритий
- Нагрів:
- Умови переходу:
V_heads_collected >= 300(відібрано 300 мл) → перехід на Крок 4- Або
Button_Next == Pressed(ручний перехід) → перехід на Крок 4
Крок 4: Відбір "тіла" (Старт-Стоп)#
- Дії:
- Нагрів:
55% - Клапан відбору:
Відкритий(якщоT_col <= 78.3°C) абоЗакритий(якщоT_col > 78.3°C) - Клапан води:
Відкритий
- Нагрів:
- Умова переходу:
T_cube >= 93°C→ перехід на Крок 5
Крок 5: Завершення#
- Дії:
- Нагрів:
0%(вимкнено) - Клапан відбору:
Закритий - Клапан води:
Закритий - Світлодіод:
Блимає(сигнал готовності)
- Нагрів:
- Умова переходу:
- Відсутня (кінцевий стан)
Приклад складного сценарію (ректифікація)#
graph TD
Start[Розігрів куба] -->|T_куба >= 70C| Stabil[Стабілізація колони]
Stabil -->|Час > 30 хв AND Стабільна T| Heads[Відбір голів]
Heads -->|Відібрано заданий об'єм| Body[Відбір тіла]
Body -->|T_колони піднялася на 0.2C| Stop[Старт-стоп: пауза відбору]
Stop -->|T_повернулася в норму| Body
Body -->|T_куба >= 93C OR Кількість стопів > 5| Tails[Відбір хвостів]
Tails -->|T_куба >= 98C| Finish[Завершення]
Пояснення кроків:#
| Крок | Дії | Умови переходу |
|---|---|---|
| Розігрів куба | Нагрів 100%, клапан закритий | T_куба >= 70°C |
| Стабілізація | Нагрів 50%, клапан закритий | Час > 30 хв AND Стабільна T (<0.05°C/хв) |
| Відбір голів | Нагрів 50%, ШІМ 10% | Відібрано заданий об'єм |
| Відбір тіла | Нагрів 55%, ШІМ Старт-Стоп | T_куба >= 93°C OR кількість стопів > 5 |
| Відбір хвостів | Нагрів 50%, клапан відкритий | T_куба >= 98°C |
| Завершення | Нагрів 0%, клапан закритий | Кінцевий стан |
Приклад сценарію для пивоваріння (затирання)#
Пояснення кроків:#
| Крок | Дії | Умови переходу |
|---|---|---|
| Нагрів до 45°C | Нагрів 100%, мішалка ввімкнена | T >= 45°C |
| Білкова пауза | Нагрів 30% (підтримання), мішалка ввімкнена | Час >= 20 хв |
| Нагрів до 63°C | Нагрів 100%, мішалка ввімкнена | T >= 63°C |
| Мальтозна пауза | Нагрів 30%, мішалка ввімкнена | Час >= 60 хв |
| Нагрів до 72°C | Нагрів 100%, мішалка ввімкнена | T >= 72°C |
| Оцукрення | Нагрів 30%, мішалка ввімкнена | Час >= 30 хв |
| Нагрів до 78°C | Нагрів 100%, мішалка ввімкнена | T >= 78°C |
| Mash-out | Нагрів вимкнено, мішалка ввімкнена | Кінцевий стан |
Приклад сценарію для теплиці#
Пояснення кроків:#
| Крок | Дії | Умови переходу |
|---|---|---|
| Денний режим | T = 25°C, полив за графіком, вентиляція при 28°C | Час >= 18:00 |
| Нічний режим | T = 18°C, полив вимкнено | Час >= 06:00 |
| Вентиляція | Ввімкнення вентилятора | T < 25°C |
| Полив | Ввімкнення поливу на 15 хв | Час поливу завершено |
Використання фізичних кнопок у сценаріях#
Завдяки підтримці кнопок (ST_BUTTON) ви можете налаштовувати сценарії так, щоб перехід на складні етапи відбувався лише після фізичного підтвердження.
Приклад: Перехід від голів до тіла#
Крок 3: Відбір "голів"
Дії:
- Нагрів: 50%
- Клапан відбору: ШІМ 10%
Умови переходу:
- Button_Next == Pressed → перехід на Крок 4
Чому це важливо?
- Перехід від голів до тіла потребує зміни приймальної ємності.
- Фізична кнопка гарантує, що ви переставили ємність перед початком відбору тіла.
- Запобігає випадковому змішуванню фракцій.
Система безпеки сценаріїв#
Незалежно від того, яка логіка описана в поточному кроці, фоновий потік безпеки постійно контролює ліміти.
Автоматичні аварійні переривання#
| Умова | Дія |
|---|---|
| Перевищення температури ТСА | Негайна зупинка сценарію |
| Спрацювання давача протікання | Вимкнення нагріву та води |
| Відсутність потоку охолодження | Вимкнення нагріву |
| Перевищення тиску | Відкриття аварійного клапана |
Аварійний крок#
При спрацюванні будь-якої з умов безпеки виконання негайно зупиняється з переходом в аварійний крок EMERGENCY_SHUTDOWN:
Крок EMERGENCY_SHUTDOWN:
Дії:
- Нагрів: 0%
- Всі клапани: Закриті
- Світлодіод: ЧЕРВОНИЙ (аварія)
- Зумер: Ввімкнено
Умова переходу:
- Відсутня (очікує ручного скидання)
Комбінування скриптів у сценаріях#
Сценарії використовують ті самі базові скрипти, які ви вже знаєте. Різниця в тому, що ви об'єднуєте їх у послідовність.
| Базовий скрипт | Використання в сценарії |
|---|---|
| Термостат | Підтримання температури на кожному кроці |
| Керування нагрівом | Плавне регулювання потужності |
| Рівень води | Контроль наповнення куба |
| Розрахунок ABV | Визначення моменту переходу до хвостів |
| Перемішування | Робота мішалки на певних кроках |
| Розклад | Перемикання режимів за часом |
Часті запитання (FAQ)#
Що таке сценарій?
Сценарій — це послідовність кроків, кожен з яких містить дії (що робити) та умови переходу (когда переходити до наступного кроку).
Чи потрібно вміти програмувати для створення сценаріїв?
Ні. Сценарії створюються через веб-інтерфейс шляхом додавання кроків, вибору дій та налаштування умов переходу.
Скільки кроків може містити сценарій?
Кількість кроків необмежена. Ви можете створити як простий сценарій із 3-4 кроків, так і складний із десятками кроків.
Чи можна змінювати сценарій під час його виконання?
Так, ви можете змінювати параметри поточного кроку (наприклад, зменшити потужність) або перейти до наступного кроку вручну.
Що робити, якщо сценарій зупинився через аварію?
Усуньте причину аварії (перегрів, протікання тощо), потім натисніть "Скинути аварію" та "Продовжити".
Чи можна зберегти сценарій для використання іншим користувачем?
Так, сценарії можна експортувати у файл та імпортувати на інший контролер.
Що далі? (Навігація по базі знань)#
Тепер, коли ви знаєте про створення складних сценаріїв, ви можете перейти до наступного розділу:
- Мультиконтролерність та мережева синхронізація — як об'єднати кілька контролерів в єдину систему.
Запрошення до діалогу: У вас є процес, який ви хочете автоматизувати, але не знаєте, як побудувати сценарій? Напишіть нам — ми допоможемо створити логіку та налаштувати переходи.