Мультиконтролерність та мережева синхронізація
Як об'єднати кілька контролерів в єдину систему автоматизації?
Одного контролера oCBot може бути достатньо для керування невеликою теплицею або дистилятором. Але що робити, коли ваше господарство зростає? Коли з'являються нові процеси, які потребують автоматизації, або коли один контролер фізично не може охопити всі давачі та виконавчі механізми?
Відповідь — мультиконтролерність. oCBot дозволяє об'єднувати кілька пристроїв у єдину мережу, де вони працюють як одна система.
Ця стаття — про те, як працює мультиконтролерність та як вона змінює підхід до автоматизації великих господарств.
Про що ця стаття#
Це — практичний посібник з побудови розподілених систем автоматизації на базі oCBot.
ТУТ НЕ БУДЕ#
- ❌ Складних мережевих налаштувань. Контролери спілкуються через Wi-Fi без додаткових налаштувань.
- ❌ Прив'язки до конкретних схем підключення.
ТУТ БУДЕ#
- ✅ Що таке мультиконтролерність і навіщо вона потрібна.
- ✅ Як контролери об'єднуються в мережу.
- ✅ Режими взаємодії (Master-Slave, автономні клієнти).
- ✅ Приклади реальних систем з кількома контролерами.
Ключова думка цього тексту: Мультиконтролерність дозволяє будувати масштабовані системи: від маленького дистилятора на кухні до повноцінного міні-спиртзаводу або ферми. Контролери працюють разом, але кожен може виконувати власне завдання.
Що таке мультиконтролерність?#
Мультиконтролерність — це здатність кількох пристроїв oCBot об'єднуватися в єдину мережу для координації складних технологічних процесів.
Навіщо це потрібно?#
| Ситуація | Рішення з одним контролером | Рішення з кількома контролерами |
|---|---|---|
| Багато давачів | Тягнути довгі дроти до одного місця | Розмістити контролери біля джерел даних |
| Різні приміщення | Прокладати кабелі через стіни | Кожен контролер працює у своєму приміщенні |
| Складні процеси | Один контролер перевантажений | Розподіл завдань між контролерами |
| Резервування | Якщо контролер зламався — усе зупиняється | Інші контролери можуть взяти частину функцій |
| Розширення | Потрібно купувати новий потужний контролер | Додаєте ще один контролер до мережі |
Як контролери спілкуються?#
Мережева архітектура#
Контролери oCBot об'єднуються в локальну мережу через Wi-Fi. Вони спілкуються напряму без затримок через WebSockets та MQTT.
┌─────────────────────────────────────────────────────────────────┐
│ ЛОКАЛЬНА МЕРЕЖА │
│ │
│ ┌──────────────┐ WebSocket ┌──────────────┐ │
│ │ Контролер 1 │◄──────────────────►│ Контролер 2 │ │
│ │ (ESP32) │ │ (ESP32) │ │
│ └──────────────┘ └──────────────┘ │
│ │ │ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Периферія │ │ Периферія │ │
│ │ (давачі, │ │ (давачі, │ │
│ │ клапани) │ │ клапани) │ │
│ └──────────────┘ └──────────────┘ │
│ │ │ │
│ ▲ ▲ │
│ │ MQTT │ │
│ ▼ ▼ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Портал UA Distillery │ │
│ │ (хмарний хаб) │ │
│ └──────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
Три способи взаємодії#
| Спосіб | Опис | Затримка | Залежність |
|---|---|---|---|
| WebSocket (локальний) | Прямий зв'язок між контролерами | Мілісекунди | Локальна мережа |
| MQTT (локальний брокер) | Обмін через локальний MQTT-брокер | Секунди | Локальний брокер |
| MQTT (хмарний) | Обмін через портал UA Distillery | Секунди-хвилини | Інтернет, портал |
Режими взаємодії#
1. Master - Slave (Ведучий / Ведений)#
Один контролер (Master) виконує роль "диригента". Він запускає глобальний сценарій, опитує давачі та надсилає команди іншим контролерам (Slave).
Як це працює:
- Master запускає сценарій.
- Master опитує свої давачі та отримує дані від Slave.
- Master приймає рішення та надсилає команди.
- Slave виконують команди: вмикають нагрів, відкривають клапани тощо.
Приклад: Двоконтурна система дистиляції
| Контролер | Роль | Завдання |
|---|---|---|
| Master | Ведучий | Керує ТЕНом, клапаном відбору, збирає дані з усіх давачів |
| Slave 1 | Ведений (охолодження) | Керує помпою охолодження, вентилятором градирні |
| Slave 2 | Ведений (безпека) | Контролює протікання, ТСА, рівень води |
Переваги:
- Чіткий розподіл ролей.
- Масштабування: додаєте новий Slave — він автоматично інтегрується.
2. Автономні клієнти безпеки#
Контролери працюють незалежно, але обмінюються сигналами про аварійні ситуації.
Як це працює:
- Кожен контролер виконує власне завдання (тепличний контроль, дистиляція тощо).
- Якщо один контролер виявляє аварію (протікання, перегрів) — він надсилає широкомовний сигнал у мережу.
- Інші контролери отримують сигнал і виконують захисні дії (вимикають нагрів, закривають клапани).
Приклад: Система безпеки ферми
| Контролер | Завдання | Аварійний сигнал |
|---|---|---|
| Контролер 1 | Керування теплицею | Перевищення температури > 40°C |
| Контролер 2 | Керування інкубатором | Протікання води на підлозі |
| Контролер 3 | Керування опаленням | Відсутність газу/електроенергії |
Переваги:
- Максимальна автономність.
- Швидка реакція на аварії.
- Якщо один контролер виходить з ладу — інші продовжують роботу.
3. Розподілена оркестрація#
Контролери працюють як єдина система, де кожен відповідає за свою частину процесу.
Як це працює:
- Кожен контролер виконує частину загального сценарію.
- Контролери обмінюються даними в реальному часі.
- Рішення приймаються колективно, без єдиного "диригента".
Приклад: Автоматизована пивоварня
| Контролер | Завдання | Взаємодія |
|---|---|---|
| Контролер 1 | Керує затиранням | Передає температуру затору Контролеру 2 |
| Контролер 2 | Керує фільтрацією | Отримує сигнал про завершення затирання |
| Контролер 3 | Керує охолодженням | Отримує сигнал про готовність сусла |
Переваги:
- Відсутність єдиної точки відмови.
- Можливість паралельного виконання задач.
- Легке розширення — додаєте новий контролер і він інтегрується.
Приклади реальних систем#
Приклад 1: Двоконтурна дистиляційна система#
┌─────────────────────────────────────────────────────────────────┐
│ КОНТРОЛЕР 1 (MASTER) │
│ (Гараж / Дистиляція) │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ - Керує ТЕНом куба (SSR) │ │
│ │ - Керує клапаном відбору │ │
│ │ - Опитує давачі: куб, колона, дефлегматор │ │
│ │ - Запускає сценарій ректифікації │ │
│ └──────────────────────────────────────────────────────┘ │
│ │ MQTT │
├────────────────────────────┼────────────────────────────────────┤
│ ▼ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ КОНТРОЛЕР 2 (SLAVE) │ │
│ │ (Вулиця / Охолодження) │ │
│ │ - Керує помпою охолодження │ │
│ │ - Керує вентилятором градирні │ │
│ │ - Контролює температуру води на вході/виході │ │
│ │ - При перегріві води — збільшує швидкість вент. │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
Як це працює:
- Контролер 1 запускає сценарій дистиляції.
- При досягненні температури 80°C Контролер 1 надсилає команду Контролеру 2: "Ввімкнути охолодження на 100%".
- Контролер 2 вмикає помпу та вентилятор.
- Якщо температура води на виході перевищує 40°C, Контролер 2 повідомляє Контролеру 1: "Зменшити потужність нагріву до 80%".
- Процес триває синхронно.
Приклад 2: Ферма з розподіленим контролем#
┌─────────────────────────────────────────────────────────────────┐
│ КОНТРОЛЕР 1 │
│ (Теплиця 1) │
│ - Температура 25°C днем / 18°C вночі │
│ - Полив 2 рази на день по 15 хв │
│ - Вентиляція при 28°C │
└──────────────────────────┬──────────────────────────────────────┘
│ MQTT
┌──────────────────────────┼──────────────────────────────────────┐
│ КОНТРОЛЕР 2 │
│ (Теплиця 2) │
│ - Температура 26°C днем / 19°C вночі │
│ - Полив 1 раз на день по 30 хв │
│ - Вентиляція при 30°C │
└──────────────────────────┼──────────────────────────────────────┘
│ MQTT
┌──────────────────────────┼──────────────────────────────────────┐
│ КОНТРОЛЕР 3 │
│ (Безпека ферми) │
│ - Контроль протікання води (3 давачі) │
│ - Контроль перегріву (ТСА) │
│ - При аварії — широкомовний сигнал усім контролерам │
└──────────────────────────┼──────────────────────────────────────┘
│ MQTT
┌──────────────────────────┼──────────────────────────────────────┐
│ КОНТРОЛЕР 4 │
│ (Інкубатор) │
│ - Температура 37.5°C │
│ - Вологість 60% │
│ - Перевертання яєць кожні 2 години │
└─────────────────────────────────────────────────────────────────┘
Як це працює:
- Кожен контролер працює автономно, виконуючи власне завдання.
- Контролер 3 (безпека) постійно моніторить стан.
- Якщо Контролер 3 виявляє протікання води — він надсилає сигнал усім контролерам.
- Контролери 1, 2, 4 отримують сигнал і вимикають всі насоси та клапани.
- Оператор отримує сповіщення через портал UA Distillery.
Приклад 3: Мікро-спиртзавод#
┌─────────────────────────────────────────────────────────────────┐
│ КОНТРОЛЕР 1 (MASTER) │
│ (Основний цех) │
│ - Керує 2-ма дистиляційними кубами │
│ - Керує ректифікаційною колоною │
│ - Опитує 12 давачів температури │
└──────────────────────────┬──────────────────────────────────────┘
│ MQTT
┌──────────────────────────┼──────────────────────────────────────┐
│ КОНТРОЛЕР 2 (SLAVE) │
│ (Котельня) │
│ - Керує котлом опалення │
│ - Контролює тиск пари │
│ - Керує подачею газу │
└──────────────────────────┼──────────────────────────────────────┘
│ MQTT
┌──────────────────────────┼──────────────────────────────────────┐
│ КОНТРОЛЕР 3 (SLAVE) │
│ (Охолодження) │
│ - Керує градирнею │
│ - Контролює температуру води │
│ - Керує насосами │
└──────────────────────────┼──────────────────────────────────────┘
│ MQTT
┌──────────────────────────┼──────────────────────────────────────┐
│ КОНТРОЛЕР 4 (SLAVE) │
│ (Склад готової продукції) │
│ - Контролює температуру в складі │
│ - Контролює вологість │
│ - Керує охолодженням │
└─────────────────────────────────────────────────────────────────┘
Портал UA Distillery як центр керування#
При підключенні до порталу UA Distillery ви отримуєте єдину точку керування всіма контролерами:
Що дає портал:#
| Функція | Опис |
|---|---|
| Єдина панель управління | Бачите стан усіх контролерів на одному екрані |
| Історія та логи | Всі дані з усіх контролерів зберігаються в одному місці |
| Аналітика | Графіки та тренди для будь-якого періоду |
| Сповіщення | Отримуєте сповіщення про аварії з будь-якого контролера |
| Віддалений доступ | Керуєте системою з будь-якої точки світу (за бажанням) |
| Обмін сценаріями | Ділитеся вдалими налаштуваннями з іншими користувачами |
Переваги мультиконтролерності#
| Перевага | Як це працює |
|---|---|
| Масштабованість | Додаєте нові контролери в міру зростання господарства |
| Відмовостійкість | Якщо один контролер виходить з ладу — інші продовжують роботу |
| Розподіл навантаження | Кожен контролер виконує свою частину роботи, не перевантажуючись |
| Мінімум дротів | Контролери розміщуються біля джерел даних, дроти не тягнуться через усе приміщення |
| Гнучкість | Можна змінювати конфігурацію системи без зупинки процесу |
| Локальна робота | Система працює навіть без інтернету — тільки локальна мережа |
Часті запитання (FAQ)#
Скільки контролерів можна об'єднати в одну мережу?
Кількість необмежена. Усе залежить від вашої локальної мережі.
Чи потрібен інтернет для роботи мультиконтролерної системи?
Ні. Контролери спілкуються через локальну Wi-Fi мережу. Інтернет потрібен лише для використання порталу UA Distillery.
Чи можна керувати всіма контролерами з одного веб-інтерфейсу?
Так, через портал UA Distillery ви бачите всі контролери на одній панелі. Також можна відкривати веб-інтерфейс кожного контролера окремо.
Як контролери синхронізують час?
Контролери синхронізуються з локальним NTP-сервером або через MQTT-брокер. Час використовується для таймерів та журналу подій.
Що робити, якщо Master контролер вийшов з ладу?
У системах з оркестрацією Master може бути замінений іншим контролером. У режимі Master-Slave потрібно або відновити Master, або призначити нового Master.
Чи можна об'єднати контролери різних поколінь?
Так, oCBot сумісний з різними версіями контролерів. Усі вони працюють за однаковими протоколами.
Що далі? (Навігація по базі знань)#
Тепер, коли ви знаєте про мультиконтролерність, ви можете перейти до наступного розділу:
- Архітектура та опис — загальна структура прошивки oCBot.
Запрошення до діалогу: У вас є кілька контролерів, які ви хочете об'єднати? Розкажіть про свою систему — ми допоможемо з налаштуванням мережевої взаємодії.