Огляд скриптового двигуна oCBot
В автоматиці oCBot логіка складних технологічних процесів описується на рівні С++ класів-скриптів. Вони виконуються в рамках операційної системи FreeRTOS як окремі низькопріоритетні фонові потоки, що гарантує високу стабільність та захищеність процесу від зависань.
Як влаштований скрипт oCBot#
Кожен скрипт є спадкоємцем базового класу та реалізує три основні фази життєвого циклу:
on_start(): Викликається один раз при запуску скрипта користувачем. Тут ініціалізуються змінні, таймери, очищаються журнали телеметрії та проводиться первинна перевірка наявності необхідних давачів.execute(): Головний цикл скрипта, який викликається автоматично кожні 100-500 мс (залежно від налаштувань). Тут описується логіка переходів між стадіями процесу.on_stop(): Викликається при зупинці процесу або при виникненні критичної помилки. Його головне завдання, безпечно знеструмити всі ТЕНи та закрити клапани відбору.
Особливості розробки та взаємодії#
- Прямий доступ до периферії: Скрипти зчитують значення з давачів за допомогою
get_input_value("назва")та керують реле, клапанами і ТЕНами черезset_output_value("назва", значення). - Логування та Телеметрія: Скрипт може публікувати змінні в глобальний журнал за допомогою
set_global_log_variable("ключ", значення). Ці змінні автоматично транслюються через WebSockets на фронтенд та по MQTT на сервер. - Багаторівнева безпека: Скрипти містять вбудовані апаратні таймери та перевірки на випадок зникнення зв'язку з інтернетом (якщо це критично) або виходу показників давачів за аварійні ліміти.
Нотатка
Сценарії oCBot забезпечують детерміноване виконання технологічних кроків: навіть якщо веб-панель закрита або пропав Wi-Fi, контролер продовжує виконувати сценарій та стежити за безпекою автономно.