Архитектура¶
Описание¶
PromUC RuleEngine - это инструмент визуального программирования, где пользователи могут создавать потоки, подключая друг к другу ноды разного назначения, а также выполнять развертку созданных потоков в среду выполнения всего в один клик.
PromUC RuleEngine программируется в браузерном редакторе, что предоставляет пользователю удобный в использовании инструментарий для диагностики и выполнения пуско-наладочных работ.
PromUC RuleEngine - это универсальная масштабируемая система модульного типа, эволюция и замена существующих контроллеров ПЛК.
Задача которые решает контроллер:
Коммуникационные (подключение к промышленным сетям, обмен данными с оборудованием, передача данных в дата-центр)
Сигнальные (модули ввода/вывода дискретных/аналоговых сигналов)
Технологические (модули измерений, вычисления, управления, специальные задачи)
Интеграционные (модули интеграции контроллера с существующими решениями)
Встроенная системная диагностика
Данная система идеологически подходит для работы на рабочих станциях под управлением ОС Linux, а также для встраиваемых систем на базе ESP32 (ESP8266 если потребуется).
Алгоритм работы:
Получение логики работы устройства от сервера в виде JSON пакета по различным транспортам
Запуск автомата построения связей. В зависимости от полученной логики работы используются необходимые функции опроса датчиков, обработки данных
Формирование пакета и отправка его требуемым транспортом получателю
Транспорт преобразует все входящие сообщения в стандартные пакеты и отправляет их в Rule Engine.
CORE - парсит JSON, работает с устройствами, создает цепочки и управляет нагрузкой. Для парсинга JSON используется библиотека BOOST 1.78
Rule engine - создает цепочки, блоки, связи, проводит по ним пакеты от транспорта, и отправляет результаты конечным получателям. Реализация графического интерфейса пользователя сделана на основе react_flow (https://github.com/wbkd/react-flow)
Интеграция с GIT¶
RuleEngine сохраняет конфигурацию цепочек в YAML файл, в папке configs.
Папка configs создается рядом с исполяемым файлом ruleengine или в /var/gitea/promuc/ruleengine-config/main/configs, если настроены env переменные:
RULEENGINE_REPO_BRANCH=main
RULEENGINE_REPO=ruleengine-config
RULEENGINE_REPO_URL=https://git.demo.promuc.local/promuc/ruleengine-config.git
При запуске RE, создание или удаление цепочки отправляется HTTP POST команда:
curl -k -H «X-Sender»: «ruleengine» -H «Content-Type: application/json» -H «X-Gitea-Event-Type»: «push» -X POST -d „{«ref»:»main»,»ref_type»:»branch»,»repository»:{«name»:»ruleengine-config»,»owner»:{«login»:»promuc»}}“ http://updater:9000/hooks/gitea