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

推荐订阅源

Google DeepMind News
Google DeepMind News
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 聂微东
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
月光博客
月光博客
博客园_首页
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
AWS News Blog
AWS News Blog
S
Securelist
T
Tailwind CSS Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
罗磊的独立博客
D
Docker
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Apple Machine Learning Research
Apple Machine Learning Research
Scott Helme
Scott Helme
H
Help Net Security
Project Zero
Project Zero
P
Proofpoint News Feed
D
DataBreaches.Net
Recorded Future
Recorded Future
Simon Willison's Weblog
Simon Willison's Weblog
V2EX - 技术
V2EX - 技术
The Cloudflare Blog
Hugging Face - Blog
Hugging Face - Blog
I
Intezer
Engineering at Meta
Engineering at Meta
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
S
Secure Thoughts
GbyAI
GbyAI
U
Unit 42
Blog — PlanetScale
Blog — PlanetScale
T
Threat Research - Cisco Blogs
The Last Watchdog
The Last Watchdog
Y
Y Combinator Blog
F
Fortinet All Blogs
博客园 - Franky
T
The Blog of Author Tim Ferriss
Hacker News: Ask HN
Hacker News: Ask HN
Microsoft Security Blog
Microsoft Security Blog
Stack Overflow Blog
Stack Overflow Blog
S
Security @ Cisco Blogs
Cyberwarzone
Cyberwarzone

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

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет 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 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
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 без миллионных инвестиций.


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

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