Продолжение статьи о модульных кобот-ячейках для гибкого производства
В предыдущей статье мы разобрали, как коботы и модульные рабочие ячейки решают проблему high-mix, low-volume производства. В частности говорилось о стандарте O-PAS. Попробуем раскрыть подробнее эту критическую часть: как управлять HMLV с программной стороны?
Типичное предложение интеграторов: ПЛК от Siemens, программируйте на Structured Text, OPC UA middleware для связи с коботом. Готово.
Проблема в том, что в HMLV производстве переналадка должна быть минутной, а не часовой. И сегодня любая переналадка требует перепрограммирования в 5–6 разных системах на разных языках.
Реклама: в декабре 2025 года запущен проект с открытым исходным кодом: OpenFB — открытый runtime в стандарте IEC 61499 для платформы Python. Цели проекта широкие, от образования и прототипирования O-PAS технологий до промышленной интеграции в рамках спецификаций ОАСУТП.
Проблема: лоскутная архитектура
Давайте честно посмотрим на типичную сборку гибкой кобот-линии сегодня:
Оборудование:
-
Кобот Universal Robots (UR) — управляется на PolyScope
-
Система видения для контроля качества — отдельный Linux-узел с OpenCV
-
Захват (OnRobot) с электроникой — собственное API
-
Конвейер — управляется Siemens S7-1200 на ST (Structured Text)
-
OPC UA middleware — свой слой абстракции
Люди:
-
Специалист по UR для программирования траекторий
-
Специалист по Python/OpenCV для видения
-
Специалист по Siemens PLC для логики
-
Интегратор для связи всего кучей
Время на интеграцию: 80–120 часов.
Время на переналадку (когда нужно перейти с Product A на Product B):
-
Изменить программу UR: 30 мин
-
Обновить параметры в S7: 20 мин
-
Переделать видение (новая модель, новые параметры): 20 мин
-
Интеграционное тестирование: 30 мин
-
Итого: ~2 часа
Для HMLV, где переналадка происходит 5–10 раз в день, это означает, что 30–50% рабочего времени линия стоит на переналадке.
И вот в этот момент появляется O-PAS.
Решение: единая платформа на IEC 61499
Используем на линии ПЛК со средой исполнения (runtime) для выполнения функциональных блоков в соответствии со стандартом IEC 61499. Чтобы понять, почему это важно, нужно сначала разобраться с отличиями:
IEC 61131 vs IEC 61499
|
Параметр |
IEC 61131 (ПЛК) |
IEC 61499 |
|---|---|---|
|
Модель выполнения |
Циклическая (scan cycle) |
Событийно-ориентированная |
|
Как? |
Каждый цикл: прочитать входы → выполнить логику → записать выходы |
Блоки срабатывают при событиях, синхронизируются автоматически |
|
Распределение |
Одна большая программа в одном ПЛК |
Функциональные блоки могут быть на разных узлах |
|
Пример использования |
Классический конвейер, жёсткий цикл |
Гибкое производство, реактивные системы |
|
Масштабируемость |
Добавить ещё ПЛК сложно |
Добавить ещё узел просто |
Для коботов это критично:
С IEC 61131 (циклический подход):
-
S7 ПЛК каждые 100 мс опрашивает датчик дальности (“детель прибыла?”)
-
Кобот каждые 50 мс опрашивает S7 (“есть команда?”)
-
Их нужно синхронизировать, иначе пропустишь событие или будет jitter
С IEC 61499 (событийный подход):
-
Датчик срабатывает → сразу отправляет событие
-
функциональный блок получает событие → тут же отправляет команду роботу
-
Уменьшенный jitter, реактивная логика
Что дает OpenFB
OpenFB позволяет писать логику отдельного функционального блока в общем 61499 проекте на Python используя всю его экосистему:
class PickAndPlaceLogic(fb.FunctionBlock): """Логика захвата детали с видением""" def on_part_detected_event(self, detection_result): # Видение обнаружило деталь с координатами part_coords = detection_result.coordinates part_orientation = detection_result.rotation # Отправляем команду роботу через OPC UA self.robot_client.move_to_and_grasp( position=part_coords, orientation=part_orientation, force=5 # ньютоны ) # Публикуем событие для следующего блока self.output("part_grasped")class QualityInspectionLogic(fb.FunctionBlock): """Контроль качества после обработки""" def on_processing_complete(self, result_image): # ML-модель проверяет качество quality_score = self.quality_model.predict(result_image) if quality_score > self.threshold: self.output("part_ok") else: self.output("part_defect") self.publish_metrics({ "defect_type": self.classifier.classify(result_image), "timestamp": time.time() })
Каждый блок:
-
Может размещаться на отдельной подходящей машине (Raspberry Pi для машинного зрения, ПромПК или Edge сервер для ML, контроллер кобота с полевой шиной)
-
Общение через стандартные протоколы (OPC UA, MQTT)
-
Не зависит от конкретного производителя оборудования
-
Может включать Python код, ML-модели, обработку образов — всё в одном проекте
Практический кейс: PCBA производство
Вернёмся к примеру из предыдущей статьи: сборка электронных плат (PCBA).
Параметры:
-
3–5 разных типов плат в день
-
Переналадка между типами 5–10 раз в день
-
Требуется 98%+ качество (контроль дефектов)
-
Кобот + CV для контроля
Текущий подход :
┌─────────────────┐│ UR коbot │ PolyScope программирование│ PolyScope 5 │ (по 30 мин на переналадку)└─────────────────┘ ↑↓┌─────────────────┐│ Siemens S7 │ TIA Portal программирование│ S7-1200 │ (по 20 мин)└─────────────────┘ ↑↓┌─────────────────┐│ Видение (Linux) │ Python код переделать│ Basler camera │ (по 20 мин + тестирование)└─────────────────┘ ↑↓ OPC UA binding (20 мин отладки) ИТОГО ПЕРЕНАЛАДКА: ~90 мин
Подход с O-PAS:
┌─────────────────────────────────┐│ O-PAS ││ (единый проект 61499) ││ ││ • Robot блок (OPC UA) ││ • Vision блок (Python + ML) ││ • Logic блок (IEC 61499) ││ • Quality блок (ML inference) │└─────────────────────────────────┘ ↓ YAML конфиг ↓ Product_A.yaml → новые параметрыProduct_B.yaml → новые параметры ИТОГО ПЕРЕНАЛАДКА: ~3–5 мин
Вместо того, чтобы перепрограммировать каждую систему отдельно, вы просто загружаете другой YAML-конфиг, OpenFB применит новые параметры ко всем блокам одновременно.
Почему это работает: O-PAS стандартизация
OpenFB встроен в архитектуру Open Process Automation (O-PAS), которая определяет:
-
Открытые интерфейсы — все компоненты говорят на стандартных протоколах (OPC UA, MQTT)
-
Независимость от производителя — кобот от UR, машинное зрение от Basler, захват от OnRobot работают вместе
-
Модульность — каждый компонент можно заменить на аналог без переделки логики
-
Предсказуемость — функциональные блоки следуют стандартному интерфейсу IEC 61499
Это особенно важно для гибкого производства, потому что:
-
Завтра вы захотите заменить кобота с UR на KUKA или Stäubli
-
Без OpenFB: переделывать всю логику
-
С OpenFB: просто новая OPC UA модель, остальное работает
-
-
Через год появится новая ML-модель для контроля качества
-
Без OpenFB: перепрограммировать контроллер машинного зрения, тестировать
-
С OpenFB: скопировать новый .onnx файл, перезагрузить
-
-
Нужно добавить ещё одну линию с похожей конфигурацией
-
Без OpenFB: лицензировать новый ПЛК, новую систему CV, интегрировать
-
С OpenFB: скопировать YAML, развернуть на новом узле (тот же Linux, Raspberry Pi или контроллер)
-
Типичная архитектура узла OpenFB
┌──────────────────────────────────────────────────────┐│ OpenFB Runtime (Orchestration) ││ Python + IEC 61499 (работает на Linux/Raspberry Pi) ││ ││ ┌────────────────┐ ┌──────────────┐ ┌──────────┐ ││ │ Robot │ │ Vision Block │ │ Quality │ ││ │ Management │ │ (TensorFlow) │ │ Block │ ││ │ Block │ │ │ │ (ML) │ ││ │ (OPC UA) │ │ (GPU узел) │ │ │ ││ └────────────────┘ └──────────────┘ └──────────┘ ││ │ │ │ ││ EVENTS+DATA MQTT PUB OPC UA │└──────────────────────────────────────────────────────┘ │ │ │ ↓ ↓ ↓ ┌─────────┐ ┌──────────┐ ┌────────────┐ │UR Cobot │ │Raspberry │ │ Database/ │ │ │ │ Pi 5 GPU │ │ Analytics │ │Polyscope│ │ │ │ │ └─────────┘ └──────────┘ └────────────┘
Каждый блок может быть независимо:
-
Обновлён
-
Масштабирован (добавить GPU)
-
Заменён
-
Отлажен
Кейс экономики
Предположим, вы внедряете PCBA линию с коботом и CV.
|
Статья |
Традиционный подход |
O-PAS + OpenFB |
|---|---|---|
|
Стоимость оборудования |
€80K |
€80K (одно и то же) |
|
Лицензии ПО (S7, OPC UA) |
€40K |
€0 |
|
Время интеграции |
120 часов |
60 часов |
|
Зарплата интегратора (€80/ч) |
€9,600 |
€4,800 |
|
Итого капитальные затраты |
€129,600 |
€84,800 |
|
Экономия на интеграции |
— |
€44,800 |
Но главное — текущие операции:
Допустим, вы делаете 8 переналадок в день, 250 рабочих дней в году.
|
Метрика |
Традиционный |
O-PAS + OpenFB |
|---|---|---|
|
Время переналадки |
90 мин |
5 мин |
|
Простой в год (ч) |
2000 |
111 |
|
Зарплата оператора (€25/ч) |
€50,000 |
€2,775 |
|
Годовая экономия |
— |
€47,225 |
Общая годовая экономия: €47,225 + амортизированные лицензии (€40K / 5 лет = €8K/год) = €55,225.
ROI: (€44,800 + €55,225) / €129,600 = 0.77 лет = 9 месяцев.
И это не учитывая экономию на обновлениях ПО и замене оборудования благодаря отсутствию вендор-локина.
Как это выглядит на практике
Вы пишете функциональные блоки на Python:
vision_block.py:
class VisionDetectionBlock(fb.FunctionBlock): def __init__(self, config): self.model = load_model(config['model_path']) self.threshold = config['quality_threshold'] self.mqtt_client = mqtt.Client() def process_image(self, image_bytes): image = cv2.imdecode(image_bytes, cv2.IMREAD_COLOR) detections = self.model.predict(image) for detection in detections: if detection.confidence > self.threshold: self.mqtt_publish("detection_found", { 'position': detection.bbox, 'confidence': detection.confidence })
config_product_a.yaml:
vision: model_path: models/pcba_detector_v2.onnx quality_threshold: 0.95 robot: speed: 0.8 force: 5.0
config_product_b.yaml:
vision: model_path: models/pcba_detector_v3.onnx quality_threshold: 0.98 robot: speed: 0.5 # медленнее для сложных деталей force: 3.0 # мягче захват
Переключение: ./run_openfb.py --config config_product_b.yaml
Блоки перезагружаются, параметры обновляются, система готова. 3 минуты.
Дорожная карта OpenFB
-
Q1 2026: Расширение библиотеки стандартных блоков (PID, логика, обработка данных)
-
Q2 2026: O-PAS Connectivity Framework (OCF) интеграция в runtime
-
Q3 2026: Графические редакторы для визуального программирования (drag-and-drop)
-
Q4 2026: Сертификация OPAF (Open Process Automation Forum)
-
2027: Многопроцессорность и асинхронное выполнение
Это означает:
-
вы сможете программировать визуально, без кода
-
блоки от OpenFB будут работать на других O-PAS платформах
-
исчезнет вендор-лок
Вызовы и когда это подходит
OpenFB — это экспериментальная и молодая платформа. Не везде она подходит:
Планируется для:
-
Гибкого производства (HMLV, частые переналадки)
-
Новых кобот-линий
-
Интеграции разнородного оборудования
-
Систем с ML/AI компонентами
-
Когда вы хотите избежать вендор-лока
-
Когда время на интеграцию и поддержку критично
Ограничения:
-
Real-time и детерминизм: в OpenFB их нет (не подходит для safety-критичных систем, требующих SIL3), однако в комбинации с другими узлами, исполняющими RealTime Runtime 61499 критичные циклограммы сосуществуют с функциональными блоками на Python в едином проекте
-
Community O-PAS еще не сформировано, это далеко не Siemens
-
Требует Python знаний от интегратора (хотя Python это плюс для IT-шника)
-
Производительность ниже, чем C++ или ST (хотя для HMLV это некритично)
Интеграция с существующей инфраструктурой
Brownfield сценарий (существующий завод с Siemens S7):
Siemens S7-1200 ←→ OpenFB Runtime ←→ Новая кобот-линия(старые конвейеры) (через OPC UA) (Product A/B переналадки)
S7 управляет старым оборудованием. OpenFB управляет кобот-ячейкой. Они обмениваются данными через OPC UA, никто ничего не переделывает.
Greenfield сценарий (новая линия):
Вся логика на 61499. Всё распределено на узлах (для CV, кобот, узел для ML, …).
Заключение
Модульные кобот-ячейки решили аппаратную часть гибкого производства: Plug & Produce, quick-change. Но без O-PAS они остаются набором отдельных инструментов, требующих ручной синхронизации.
O-PAS + OpenFB намеревается закрыть этот гэп:
-
Единая платформа (IEC 61499 + Python) вместо разбросанных модулей PolyScope + ST + Python
-
Событийно-ориентированная архитектура вместо циклических опросов
-
Распределённые блоки вместо монолитного ПЛК
-
Открытость (open-source, стандарты) вместо вендор-локина
-
Быстрая переналадка (минуты вместо часов)
Для интеграторов: меньше кода, меньше времени на интеграцию, больше возможностей для инноваций.
Для производителей HMLV: реальная гибкость, экономия на переналадках, путь к Industry 4.0 без миллионных инвестиций.
Полезные ссылки:
-
O-PAS стандарт: https://publications.opengroup.org/standards/opa
Для углубленного изучения:
-
IEC 61499 стандарт
-
OPC UA протокол (O—PAS Connectivity Framework (OCF))
-
PLCOPen + O-PAS архитектура в промышленной автоматизации: https://www.plcopen.org/news/new-plcopen-workgroup-on-opa-s-function-blocks/
ссылка на оригинал статьи https://habr.com/ru/articles/1035294/