ЦИПР — это главная площадка страны, где встречаются вендоры, интеграторы и заказчики. Мы решили показать, что Открытая АСУТП — это не просто концепция, а работающий инструмент, который можно взять и внедрить уже сегодня. Мы привезли стенд, который демонстрирует полный производственный цикл: от разработки модели управления и компьютерного зрения на контроллере до выдачи производственных заданий через MES и их отработки на реальном оборудовании. И всё это — на отечественных и open-source компонентах.

Зачем всё это бизнесу? Прежде чем перейти к описанию нашего стенда, давайте ответим на главный вопрос: какую бизнес-ценность представляют наши решения, реализованные на стенде? Для металлургической отрасли и промышленности в целом это — не просто демонстрация интеграции MES c АСУТП. Это — модель импортозамещения, которая решает три ключевые задачи:

  • Снижение зависимости от конкретного поставщика. Открытый ПЛК можно запустить на оборудовании разных производителей без переписывания кода. Это даёт свободу выбора поставщика решения.

  • Интеграция отечественных MES и АСУТП в единый контур позволяет управлять заданием производству и получать обратную связь по факту выполнения.

  • Использование современных отечественных решений и собственных разработок, снижающих затраты на совокупную стоимость владения.

Главный вывод для бизнеса: вы можете построить уже сегодня систему, использующую отечественные компоненты.

Перейдем к описанию стенда.

Ключевые компоненты стенда:

  • ПЛК Forge Logic — открытая платформа промышленного контроллера.

  • MES‑уровень — производственные задания.

  • OpenFB — среда исполнения на Python с открытым исходным кодом совместимая с IDE Forge Logic.

  • Python + OpenCV — компьютерное зрение.

  • Робот — разработанный преподавателями и студентами МАИ.

  • OPC UA/MQTT — интеграция между компонентами стенда.

  • FUXA — визуализация/HMI стенда FUXA (open source веб‑платформа). 

Общий вид стенда на ЦИПР-2026
Общий вид стенда на ЦИПР-2026

ПЛК Forge Logic: уровень управления стендом

Для нас не стоял вопрос, на чём реализовать логику управления стендом. Мы использовали собственные решения — программный ПЛК и среду разработки. В качестве аппаратной платформы в этот раз пы использовали ПЛК АБАК, который управлял модулем ввода/вывода ОВЕН МК210-311 по протоколу Modbus TCP. Мы уже можем выбирать производителя, потому что наш программный ПЛК работает на различных архитектурах (x86-64, arm64) и разных аппаратных платформах (МЗТА, ОВЕН, АТБ, АБАК и другие). Вопросы интеграции не стояли остро — наш ПЛК имеет различные плагины протоколов. Для связи с MES мы выбрали плагин MQTT, для визуализации/HMI — плагин OPC UA Server.

MES-уровень: производственные задания на стенде

Мы показали на стенде совместную работу различных компонентов и программных продуктов, разрабатываемых командой «Северсталь-инфокома»: как коммерческого (система MES «Металлургия»), так и свободно распространяемых (открытый программный ПЛК и среда разработки).

Как выглядела интеграция продуктов на стенде:

  • Оператор создаёт производственное задание: «Отгрузить 50 кубиков красного цвета».

  • MES‑система через MQTT передаёт задание на контроллер.

  • ПЛК запускает программу управления: включает дозатор в бункере, включает конвейеры, система распознавания готова искать в отгружаемых кубиках красного цвета бракованные кубики белого цвета, робот готов их удалять с конвейера.

По завершении задания контроллер отправляет отчёт в MES и далее при закрытии заказа идёт фиксация: сколько сделано. Если был брак, то в каком объёме, время выполнения.

Описание бизнес-процесса
Описание бизнес-процесса

На экране у пользователя этот процесс выглядел вот так.

Экранная форма MES для задания производственного задания для стенда
Экранная форма MES для задания производственного задания для стенда

Computer Vision Python + OpenCV распознавание кубиков различных цветов на конвейере в реальном времени.

Стек:

  • Язык: Python 3.

  • Библиотека: OpenCV, rknpu, shared_memory_dict.

  • Аппаратная платформа: Одноплатный компьютер OrangePi 5 (rockchip3588, 16 ГБ ОЗУ).

Проблемы, с которыми мы столкнулись:

1. Производительность. Хотя rockchip3588 и имеет GPU и NPU на 6 TOPS, этого оказалось не достаточно для требуемой нам производительности. 

  • Решение. Снизили разрешение до 640x480. Затем провели обучение модели на своём датасете (использовали Yolov7), сконвертировали полученную модель в упрощённый для rknpu onnx-формат. А затем сконвертировали в формат rknn, оптимизированный под модель нашего CPU, и использовали квантизацию INT8. Всё это позволило добиться 20+ FPS.

2. Память. OpenCV требует много памяти и управление ей. 

  • Решение. Использована shared_memory_dict. Функциональный блок (ФБ) для работы с камерой записывал полученный кадр в выделенную память, затем кадр шёл на ФБ распознавания, и затем ещё один ФБ чистил уже распознанные кадры.

3. Распознавание и подсчёт. Задача считать количество каждого класса прошедшего по конвейеру. В случае обнаружения дефектного (фильтруемого) класса, формировать сигнал для его обработки ПЛК управляющим конвейером.

  • Решение. Реализовали всё это в отдельном ФБ, который имеет следующие основные функции:

    • Загрузка модели — инициализация RKNN-модели, словаря классов и якорей (anchors).

    • Инференс — получение кадра из разделяемой памяти, предобработка (letterbox, перевод в RGB), запуск модели.

    • Постобработка — декодирование bounding boxes, фильтрация по порогу уверенности, NMS (Non-Maximum Suppression).

    • Трекинг объектов — сопоставление детекций с существующими треками по IoU, отслеживание возраста трека.

    • Подсчёт — объект засчитывается при пересечении верхней зоны выхода кадра (exit zone по высоте). Счётчики ведутся для 3 целевых классов (задаются через TASK_CL).

    • Управление задачей — при достижении целевой суммы (TASK_NUM) задача помечается выполненной (task_done).

    • Визуализация — опциональный вывод рамок и подписей на кадр для отладки.

    Все необходимые настройки для управления логикой работы  функциональных блоков (на языке FBD) были вынесены на входы, что позволило инженерам АСУТП быстро понять и настроить ФБ:

  • Входные параметры: порог уверенности, IoU, максимальный возраст трека, зона выхода, классы для подсчёта, фильтрующий класс, целевая сумма, сброс.

  • Выход: счётчики по каждому целевому классу, флаг наличия фильтрующего класса, флаг выполнения задачи.

4. Коммуникации. Нам нужно было передавать данные между основным ПЛК и той платформой, где работало распознавание изображения. 

  • Решение. Использовали OPC UA. Реализовали OPC UA клиент, который подключался к  OPC UA серверу основного ПЛК, читал и записывал нужные теги. Как вариант Б был проработан MQTT.

Робот

Робот — научная  разработка МАИ для нашего решения, представленного на ЦИПР. Программное обеспечение и плата управления осями разработаны студентами и преподавателями МАИ. В дальнейшем у нас в планах разработка необходимых функциональных блоков для управления этим роботом нашим программным ПЛК. Наш проект — это яркий пример коллаборации бизнеса и науки, показывающий, как можно решать кадровый вопрос: университеты могут готовить специалистов, владеющих актуальными технологиями на реальном оборудовании, а не на абстрактных макетах.

Робот забирает кубик белого цвета (брак)
Робот забирает кубик белого цвета (брак)

 

FUXA — визуализация стенда (open source веб-платформа)

Преимущества: возможность установки на операционные системы (Windows, Linux),  а также возможность развернуть в Docker.

Для стенда выбрали установку на виртуальную машину с Linux. Всё интуитивно понятно. Разработка экранной формы для стенда с настройкой связи ПЛК<->HMI через OPC UA заняла буквально несколько часов.

Тестовая экранная форма для стенда
Тестовая экранная форма для стенда

Бизнес-результат

Наш стенд — это не просто демонстрация железа. Это работающая модель цифрового предприятия, где задание из MES превращается в управляющий сигнал для АСУТП. Качество контролируется компьютерным зрением, технология управляется отечественным контроллером. Брак отсеивается роботом. Результат возвращается в MES для анализа и планирования. Логику для OpenFB можно писать на Python и «оборачивать» её в функциональные блоки, совместимые со средой разработки, в которой реализовано управление технологическим процессом.

Мы продемонстрировали, что открытая АСУТП — это реальность, а не будущее. Все компоненты уже работают, и мы готовы внедрять их на реальных производствах.

Планы на будущее

  1. Выпуск новых релизов открытого программного ПЛК и среды разработки. 

  2. Пилотные внедрения разработанных компонентов АСУТП на объектах «Северстали» уже в этом году.

А также планируется выпуск гайда про создание оптимизированных под процессоры Rockchip моделей на основе своих датасетов для тех, кто хочет повторить наш опыт и использовать в своих проектах.

P. S. Напоминаем, что открытый программный программируемый логический контроллер (ОП ПЛК) будет иметь открытый исходный код, и мы приглашаем к совместной работе в этом проекте:

  • разработчиков,

  • вендоров,

  • интеграторов,

  • преподавателей и студентов вузов,

для написания своих библиотек и компонентов, используемых при решении практических задач. Пишите на почту open.soft.plc@severstal.com.