如何在ISA-95体系中采用Apache Camel + MQTT Broker衔接L3与L4 Legacy应用

news/2025/11/18 21:11:03/文章来源:https://www.cnblogs.com/tlnshuju/p/19239336

如何在ISA-95体系中采用Apache Camel + MQTT Broker衔接L3与L4 Legacy应用

2025-11-18 21:07  tlnshuju  阅读(0)  评论(0)    收藏  举报

一、架构背景:典型ISA-95 IT/OT项目场景

层级主要职责当前演进形态
L4 企业层(ERP / Legacy / APS / PLM / CRM 等)计划、调度、订单、供应链仍有大量 Legacy 系统(HTTP、SOAP、文件接口)
L3 制造运营管理层(MOM / MES / 执行智能层)执行、协调、追溯、数据整合、事件驱动调度不完全等同于 MES,而是一个事件驱动的分布式调度总线(MOM 层)
L2-L1控制与过程设备层通过 MQTT / OPC UA / Edge Data Hub 连接上送数据

二、问题和对策

传统上,L4→L3 的通信是 同步的(SOAP、REST、DB接口),而 L3→L2 则是 实时的
这两种通信范式在现代智能工厂里产生“节拍不匹配”问题。Apache Camel + MQTT 的组合恰好可以起到一个“语义桥接 + 协议转译 + 异步解耦”的作用。


三、系统角色划分

1️⃣ Apache Camel —— 企业集成层(EAI/ESB 模块)

  • 用作 L4 Legacy 系统的集成中间件

  • 提供超过 300 种组件(HTTP、SOAP、JDBC、FTP、File、JMS、SAP 等);

  • 能够通过路由 DSL定义复杂的业务流程、过滤规则、映射逻辑;

  • 支持 内容路由(Content-Based Routing)消息变换(Transformation)

  • 可内嵌运行于 Spring Boot、Quarkus、Kubernetes 中。

2️⃣ MQTT Broker —— L3 事件总线 / UNS 主干

  • 作为 制造执行语义事件总线(Manufacturing Event Bus)

  • 每个主题(Topic)代表一个 业务对象或事件域(如 Order、Batch、Resource、Event)

  • 与 UNS(统一命名空间)结合使用,可实现 主题级语义一致性

  • 与 L2-L1 的 Edge Node 协同,实现实时状态上传与下发。


四、集成模式(核心)

模式:Apache Camel ↔ MQTT Broker ↔ L3 语义层

① Camel 路由逻辑(L4 → L3)

ERP (SOAP/XML)↓
Camel Route↓  转换为 JSON + MQTT Topic
MQTT Broker (Topic: /uns/order/new)↓
L3 MOM (订阅Topic并触发流程)

Camel DSL 示例(非代码实例):

from("sap:erp:orders?operation=GetNewOrders").process(exchange -> {Map order = transformToUNSFormat(exchange.getIn().getBody());exchange.getIn().setBody(order);}).to("paho-mqtt5:uns/order/new?brokerUrl=tcp://mqtt-broker:1883");

② L3 → L4 回执路径

L3 MOM 完成 → MQTT 发布 /uns/order/ack↓
Camel Route 监听该主题↓
写入 ERP (JDBC / SOAP / HTTP)

Camel DSL 示例(非代码实例):

from("paho-mqtt5:uns/order/ack?brokerUrl=tcp://mqtt-broker:1883").to("jdbc:legacyERPDataSource");

五、主题设计与 UNS 对齐

主题(Topic)说明对应 UNS 实体
uns/order/new新订单发布Order
uns/order/ack订单回执Event
uns/resource/status设备状态上报Resource
uns/batch/start批次开始事件Batch
uns/batch/end批次结束事件Batch/Event

每个主题的元数据(Schema、QoS、语义标签)应注册在 UNS Registry 中,
Camel 路由在启动时可自动加载这些定义以动态绑定。


六、与 S95 模型对齐的语义层逻辑

S95 对象层级在本架构中的体现通信模式
Enterprise / SiteERP / APS / PLM(通过 Camel)HTTP/SOAP → MQTT
Area / WorkCenter / WorkUnitMOM / Dispatch / Recipe ServiceMQTT 内部订阅
Equipment / Control ModuleEdge Node / PLC / AgentMQTT / OPC UA PubSub

七、系统优点总结

类别优点
架构解耦L4 与 L3 通过 MQTT 异步通信,Legacy 系统无需改造
协议多样性兼容Camel 支持 SAP、HTTP、File、DB 等任意接口
语义统一借助 UNS 命名体系保持跨系统的 Topic 与对象一致
事件驱动L3 层的制造执行由事件触发,天然支持扩展与分析
易于云化Camel、MQTT 均支持容器化与云原生部署

八、典型部署形态(简图)

          ┌────────────┐│ Legacy ERP │└─────┬──────┘│ SOAP/HTTP/JDBC┌─────▼──────┐│ Apache Camel││ (EAI Bridge)│└─────┬──────┘│ MQTT Publish/Subscribe┌─────▼──────┐│ MQTT Broker │  ←→  UNS Registry└─────┬──────┘│┌─────▼────────────┐│ L3 MOM / EventBus││ (Dispatch, Trace,││  Analytics, eBR) │└─────┬──────┬────┘│       │┌─────▼──┐ ┌─▼───────┐│ Edge GW│ │ OPC UA   ││/Agent  │ │PubSub L2 │└────────┘ └──────────┘

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/969348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

11月18日日记

1.今天上工程实训课做方形盒子 2.明天学习马哲 3.Tomcat 10 与 Tomcat 9 的核心区别?Servlet API 版本如何适配?

一文讲清:数据清洗、数据中台、数据仓库、数据治理 - 智慧园区

你有没有遇到过这种情况?业务部门急着要一份数据报告,IT同事折腾了好几天,最后告诉你数据对不上,或者根本取不出来。 公司开会,两个部门拿着同一项业务指标的数据争论不休,因为大家手里的数字根本不一样。 想上线…

通过liquibase实现一个简单的数据库适配器,自动适配60+数据库

1. 简介 最近我打算开发一个数据库适配器,核心目的是实现数据库表结构语句的动态执行,比如常见的创建/删除操作——涉及表、视图、索引、序列等各类数据库对象。当然,这个组件的理想状态是能自动适配主流数据库,用…

题解:AT_abc428_g [ABC428G] Necklace

补一下。分享一种比较暴力的做法。 首先肯定是使用 Burnside 引理求解,不过题目并没有给定环的大小,但是由于大小为 \(n\) 的环至少要有 \(2^n\) 的美丽值,所以这个 \(n\) 只有 \(\log m\) 个。 所以可以快乐的枚举…

第十四天 mysql单表练习

一、mysql的安装 yum install myaql=安装客户端 yum install mysql-sever=安装客户端 service mysql status=查看状态 service mysql start=开启数据库 service mysql restart=重启数据库 service mysql stop=关闭数据…

人工智能之编程进阶 Python高级:第四章 数学类模块

人工智能之编程进阶 Python高级:第四章 数学类模块人工智能之编程进阶 Python高级 第四章 数学类模块@目录人工智能之编程进阶 Python高级前言一、re 模块:正则表达式(Regular Expressions)常用函数常用元字符二、…

Pandas GroupBy 的 10 个实用技巧

很多人把 groupby 理解成单纯的求和、计数这类操作,比如说算算总收入、数数用户量,然后就没了。实际上它的应用场景要广得多:计算组内特征、数据标准化、构造滚动指标、合并不同维度的统计结果,甚至处理一些复杂的…

lvs详细配置

lvs(linux virtual server) 1、概述 1、lvs简介 lvs 是一种基于linux操作系统的负载均衡解决方案,就是将请求分发到多个后端服务器上面,lvs常用于网站,数据库等需要高并发访问的场景 2、lvs架构ipvs :lvs的核心组件…

Lazarus使用cef打开文件和下载设置

Lazarus使用cef打开文件和下载设置//下载procedure TForm1.Chromium1BeforeDownload(Sender: TObject; const browser: ICefBrowser; const downloadItem: ICefDownloadItem; const suggestedName: ustring; const c…

题解:P14435 [JOISC 2013] 收拾吉祥物 / Mascots

\(\displaystyle{\large\textcolor{#00A0DE}{蓝是水的颜色}}\),所以我们来水一下这道蓝题的题解。 题目传送门 题意理解 我们首先给出一个 \(R\times C\) 的方格图,在其中任意 \(n\) 坐标中初始放着物品,我们依次选…

Solon AI 开发学习 - 1导引

Solon AI & MCP 是 Java 智能体开发框架,支持 Java 8-25,简化了与主流 AI 模型(如 OpenAI、DeepSeek)的集成。它提供统一接口抽象,支持多种 AI 模型(ChatModel、GenerateModel等)协作,并兼容 MCP 协议实现…

linux c 线程池

在 Linux 系统中,线程池(Thread Pool)通常用于管理并发执行的任务,以提高系统性能和资源利用率。Linux 系统本身没有内置的线程池机制,但可以通过使用系统工具、库或自定义脚本实现类似的功能。 下面我将分几个方…

linux c 文件是否存在

在 Linux 中,判断一个文件是否存在,可以使用多种命令,以下是几种常用的方法:方法 1:使用 test 或 [[ ]] 检查文件是否存在 if [ -f /path/to/file ]; thenecho + #引号 + 文件存在 + #引号 + elseecho + …

linux c 文件是否存在

在 Linux 中,判断一个文件是否存在,可以使用多种命令,以下是几种常用的方法:方法 1:使用 test 或 [[ ]] 检查文件是否存在 if [ -f /path/to/file ]; thenecho + #引号 + 文件存在 + #引号 + elseecho + …

2025 年 11 月滚珠丝杆厂家推荐排行榜,高负载滚珠丝杆,耐磨滚珠丝杆,检测仪器高速滚珠丝杆,螺母滚珠丝杆,医用自动化滚珠丝杆公司推荐

2025年11月滚珠丝杆厂家推荐排行榜:高负载与医用自动化应用优选指南 行业背景与发展趋势 滚珠丝杆作为精密传动领域的核心部件,其技术发展与制造业升级息息相关。随着工业4.0和智能制造的深入推进,高负载滚珠丝杆、…

Pjudge #21741. 【NOIP Round #5】青鱼和区间 题解

Description 鱼王青鱼的 AI 不愿意进行 996 的工作,于是要求青鱼先和它玩一个游戏。 AI 生成了 \(n\) 道题,编号为 \(1, 2, \dots, n\)。现在 AI 心里选择了其中一道题,但青鱼不知道这是哪一题。 青鱼可以向 AI 询问…

11月18日

今日进度 (1)Commit 记录 •陈鉴祥:完成 agent-svc 忙闲状态查询,全量测试通过 •何绍斌:优化支付表索引,完成数据一致性测试 •张廷智:编写数据格式化工具,完成报表页联调 •郑权:收集测试用例,组织团队交叉…

UE4/UE5反射系统动态注册机制解析 - 实践

UE4/UE5反射系统动态注册机制解析 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…

完全平方和的推广

平方和公式 \[(\sum_{i=1}^n A_i)^2 = \sum_{i=1}^n A_i^2 + 2\sum_{1 \leq i < j \leq n} A_i A_j \]核心是完全平方公式的推广,用“多项式展开逻辑”即可理解。 1. 从简单到复杂推导 (1)2个数的情况(完全平方…

三维偏序整体二分?

基于整体二分的CDQ分治实现? 众所周知的是三维偏序可以使用整体二分解决,但是今天我研究了一下,发现这个整体二分并不是一般意义下的整体二分,而是CDQ分治的一种类似整体二分的实现。 一般而言,整体二分指的是平行…