惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
月光博客
月光博客
B
Blog RSS Feed
C
Check Point Blog
WordPress大学
WordPress大学
T
Tailwind CSS Blog
GbyAI
GbyAI
H
Help Net Security
Y
Y Combinator Blog
I
InfoQ
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
小众软件
小众软件
美团技术团队
博客园 - 三生石上(FineUI控件)
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
A
About on SuperTechFans
G
Google Developers Blog
爱范儿
爱范儿
F
Fortinet All Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
U
Unit 42
人人都是产品经理
人人都是产品经理

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
O-PAS для коботов: как управлять модульной мастерской без...
dea · 2026-05-14 · via Все публикации подряд на Хабре

Средний

8 мин

12K

Продолжение статьи о модульных кобот-ячейках для гибкого производства

В предыдущей статье мы разобрали, как коботы и модульные рабочие ячейки решают проблему 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), которая определяет:

  1. Открытые интерфейсы — все компоненты говорят на стандартных протоколах (OPC UA, MQTT)

  2. Независимость от производителя — кобот от UR, машинное зрение от Basler, захват от OnRobot работают вместе

  3. Модульность — каждый компонент можно заменить на аналог без переделки логики

  4. Предсказуемость — функциональные блоки следуют стандартному интерфейсу 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 без миллионных инвестиций.


Полезные ссылки:

Для углубленного изучения: