Архитектура

Описание

PromUC RuleEngine - это инструмент визуального программирования, где пользователи могут создавать потоки, подключая друг к другу ноды разного назначения, а также выполнять развертку созданных потоков в среду выполнения всего в один клик.

PromUC RuleEngine программируется в браузерном редакторе, что предоставляет пользователю удобный в использовании инструментарий для диагностики и выполнения пуско-наладочных работ.

PromUC RuleEngine - это универсальная масштабируемая система модульного типа, эволюция и замена существующих контроллеров ПЛК.

Задача которые решает контроллер:

  1. Коммуникационные (подключение к промышленным сетям, обмен данными с оборудованием, передача данных в дата-центр)

  2. Сигнальные (модули ввода/вывода дискретных/аналоговых сигналов)

  3. Технологические (модули измерений, вычисления, управления, специальные задачи)

  4. Интеграционные (модули интеграции контроллера с существующими решениями)

  5. Встроенная системная диагностика

Данная система идеологически подходит для работы на рабочих станциях под управлением ОС 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 переменные:

  1. RULEENGINE_REPO_BRANCH=main

  2. RULEENGINE_REPO=ruleengine-config

  3. 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