背景
此文为我给自己做的学习资料和知识梳理材料。重点是复习ISA 95, MQTT Sparkplug与统一命名空间UNS的内容。目的为让自己对isa 95, sparkplug, 及UNS架构有更深的理解以及画面感,特别是ISA 95在UNS架构中的运用。内容主要参考HiveMQ官网的文章,再加上我自己的一些理解,和用我能够容易明白的表达方式。
传统工厂因OT(运营技术)与IT(信息技术)系统割裂,数据无法互通。
要实现智能制造,有必要先搞懂ISA95标准,MQTT,和Unified Namespace(统一命名空间,简称UNS)的概念。
在本文中,我将定义这些概念,它们是今天构建智能制造系统的核心内容。进一步,我将描述它们之间的关系,并提供在制造设施中实施的技术方法。特别是,我将描述如何使用MQTT Broker作为中心服务器,协调使用Sparkplug实现的ISA95模型交换,并将其应用于Unified Namespace架构。
为什么UNS架构在智能制造中至关重要
传统制造系统架构中的通信模式,是控制应用通常运行在连接到控制网络的设备和机器上,而更高级别的应用程序(例如SCADA)则直接连接到这些设备。通常,这些设备与应用程序之间的通信采用的是点对点通信,这意味着客户端和服务器之间是直接进行通信的,正如下图所示。
这种客户端-服务器架构通常是通过设备供应商提供的专有应用接口实现的,这些接口只有供应商自己了解并提供给用户。也就是说,应用程序会依赖于它们所控制的特定设备。实际上,如果要更换设备,必须提供协议实现的详细信息,且无法简单地将一个设备替换为另一个来自不同供应商的设备。而且,像云端的IT系统(它们通常不懂工业通信协议)也无法访问这些设备的数据。
关于点对点通信会给企业带来的弊端,我在另一篇关于MQTT SparkplugB的博客有详细解释:MQTT Sparkplug B:探索工业协议的未来-CSDN博客
因此,这种架构方法并不适合构建智能制造系统,因为它会导致系统难以管理、紧密耦合,更重要的是,无法扩展。
更适合智能制造的通信架构是中心辐射模型(Hub-and-Spoke),网络参与者永远不会直接相互联系。相反,它们将有关自身的信息发布到中央信息存储库,这种架构就是 Unified Namespace(统一命名空间)。然后,其他参与者可以继续从 Unified Namespace 中提取他们需要的信息。所有直接通信都被完全删除,因此很容易将控制系统与 IT 系统合并。
UNS能够从各种工业系统中收集数据,给数据添加上下文信息,并将其转化为其他系统可以理解的格式。而实现统一命名空间的一种方式是采用基于Sparkplug的网络架构。我们将在本文后面详细探讨这一点。更多关于协议的解释,同样可以看看这篇MQTT Sparkplug B:探索工业协议的未来-CSDN博客
在智能制造的通信架构中,中心辐射模型通过UNS实现了设备与系统的解耦。这种架构下,所有参与者将数据发布到中央信息库(如MQTT Broker),而非直接交互。然而,仅仅实现数据的传输远远不够——若缺乏统一的语义定义,不同系统对同一数据可能产生截然不同的解读。这正是ISA95标准存在的核心意义:它为UNS中的数据赋予了标准化的业务逻辑与上下文,使跨层级协作成为可能。
ISA 95标准与UNS
你可以基于UNS的架构设计智能制造系统,然后使用ISA 95标准对推送到UNS的数据对象进行建模。ISA 95负责功能模型与数据语义标准,定义制造企业的业务逻辑与数据对象,提供标准术语(如“工单”“设备状态”)
ISA-95的分层架构
标准采用经典的5层金字塔模型:
层级 | 名称 | 典型系统 | 响应时间 | 主要功能 |
---|---|---|---|---|
Level 4 | 企业层 | ERP, SCM | 天/周 | 业务规划 |
Level 3 | 制造执行层 | MES | 小时/天 | 生产调度 |
Level 2 | 监控控制层 | SCADA, DCS | 秒/分 | 过程控制 |
Level 1 | 设备层 | PLC, 传感器 | 毫秒 | 信号处理 |
Level 0 | 物理过程 | 产线设备 | 实时 | 实际生产 |
可参考下图:
炼油厂的典型应用:
层级 | 功能 | 流程工业案例 |
---|---|---|
Level 4 | 企业业务系统 | ERP下达生产订单:炼油厂需在48小时内生产10万桶92号汽油。 |
Level 3 | 制造执行系统(MES) | MES分解订单为批次工单,规定原油配比、反应温度、蒸馏时间等工艺参数。 |
Level 2 | 过程控制系统(DCS/PLC) | DCS根据MES下发的参数,控制反应釜加热阀开度、分馏塔压力等。 |
Level 1 | 传感与执行设备 | 温度传感器(PT100)、流量计(Coriolis)实时采集数据并传输给DCS。 |
Level 0 | 物理生产过程 | 原油在催化裂化装置中的化学反应过程。 |
Sparkplug如何应用于UNS架构
为ISA 95提供具体的实现方法
在定义Sparkplug以及如何将其应用于UNS架构以补充ISA 95框架之前,有必要价绍ISA 95中的Level 3(制造运营管理层),因为这是 ISA95 试图解决的歧义根源。Level 3是处理制造设施运作所需信息的关键层级,包括了许多管理系统和工具,比如MES系统、电子表格、仓库管理系统、定制软件、维护系统等。在这些系统的配合下,信息交换和系统之间的集成变得尤为重要。ISA 95的作用是通过定义活动模型(如生产跟踪、调度和执行)来解决这一问题,这些活动模型描述了不同系统之间应该如何交互和交换信息。
此外,ISA95还定义了在这些活动之间交换的数据对象,而这些数据对象是与具体实现无关的。ISA 95是一个抽象的规范。它并不描述数据类型或信息模型来创建这些数据对象,也没有指定用于传输这些数据对象的机制。它只是定义了标准术语来描述这些活动,并使用UML(统一建模语言)来表示数据对象。在这之后,Sparkplug将进一步补充这一架构,提供一种具体的实现方法,使得这些抽象的定义能够在实际的工业互联网应用中得以应用和操作。
Sparkplug的简介
Sparkplug 是一个开源软件规范,它为 MQTT 客户端提供了一个框架,以双向和可互作的方式将来自其应用程序、传感器、设备和网关的数据无缝集成到 MQTT 基础设施中。
此外,与UNS架构方法相一致,Sparkplug使得IIoT部署能够解耦硬件和软件的数据源。新的数据源可以立即被其他系统组件发现,并可以成为单一的真实数据源。更重要的是,对于工业基础设施来说,此外,Sparkplug特别强调安全性,要求所有数据传输必须使用TLS加密,且无需为新设备开放端口,从而确保数据的安全性。
如何使用Sparkplug实现UNS,并通过ISA95模型来定义数据交换对象。
首先,Sparkplug利用MQTT作为底层应用传输层的发布/订阅架构,将数据生产者和消费者在UNS架构中解耦。MQTT是基于推送通信的,这意味着数据能够即时分发到订阅该统一命名空间的业务级系统、生产系统以及制造业中的其他系统。
进一步来说,Sparkplug规范帮助实现ISA 95定义的数据对象,用于在这些系统之间交换信息。Sparkplug本质上是一个交换机制,它可以将一个系统中的数据转换为ISA 95格式,推送到统一命名空间中,然后其他系统可以以等效格式将其拉取出来。
Sparkplug之所以能够实现这一切,是因为它能够定义实际的数据类型及其格式,无论是浮动数值、结构化值,还是复杂的数据项。此外,Sparkplug允许构建通用数据模型,定义资产(业务单元或者业务流程),并填充资产数据。
此外,Sparkplug还定义了MQTT主题路径(topic path)的标准格式,为网络上的所有Sparkplug客户端创建了一个统一的命名空间。Sparkplug主题路径的结构如下:
spBv1.0/<Group ID>/<MESSAGE TYPE>/<Edge Node ID>/<Device ID>
- Group ID:表示一组MQTT节点的逻辑标识符。
- MESSAGE TYPE:指示消息是包含状态信息、数据还是命令,并标明其属于节点、设备或主要应用程序。
- Edge Node ID:标识特定的MQTT节点。
- Device ID:标识物理或逻辑上附加到节点的设备。
这种结构使得每个消息都可以被明确地定位和理解,进而实现数据的高效和安全交换。
实现UNS的核心逻辑
-
统一命名空间(UNS):
不是单纯的MQTT Broker,而是数据路由规则 + 标准化语义模型的集合。 -
ISA95:定义数据对象的结构与含义(What)。
-
例如:化工厂中“反应釜温度”属于Level 1,需关联到Level 3的“批次ID”。
-
Sparkplug:规定数据如何封装与传输(How)。
-
例如:将温度值封装为
{name: "Reactor1/Temp", value: 150.5, dataType: "Float"}
,通过MQTT发布。
-
-
UNS:提供数据集中管理与分发的平台(Where)。
-
例如:所有设备数据通过MQTT Broker汇聚,MES、ERP按需订阅。
-
场景:炼油厂催化裂化生产
-
数据生成(Level 1-2):
-
传感器:采集反应釜温度(220°C)。
-
DCS:通过Sparkplug客户端将数据封装为:
{ "metrics": [{ "name": "SiteA/Area3/Reactor101/Temperature", "value": 220.0, "unit": "°C", "batchID": "BATCH-92GAS-2023", // ISA95关联生产批次 "alarmHigh": 230.0 // ISA95工艺规范 }] }
-
发布到UNS:主题为
spBv1.0/RefineryA/DATA/Reactor101/Temperature
。
-
-
数据消费(Level 3-4):
- MES系统:订阅主题
spBv1.0/RefineryA/DATA/+/Temperature
。校验温度是否超限(超过230°C触发冷却阀控制指令)。 - ERP系统:通过
batchID
关联订单,计算剩余生产时间,调整原料采购计划。 - 维护系统:分析温度趋势,预测催化剂寿命,生成预防性维护工单
ISA 95+Sparkplug :实现统一命名空间的数据组织
在制造设施中,物理组件通常被限制在特定区域内,例如,一个PLC可能只控制某个特定的 单元(Cell),或者SCADA系统只监控某个特定的 站点。如果你有成百上千个来自不同 制造站点、区域和生产单元 的设备,它们都在向UNS推送数据,那么在后端组织和管理这些信息就会变得非常复杂。
此时,ISA 95 提供了一种便捷的方法来根据设备在企业中的位置对 数据源 进行层次化结构化。具体来说,ISA 95 推荐使用 企业 → 站点 → 区域 → 生产线 → 单元 (Enterprise=>Site=>Area=>Line=>Cell)这种格式来组织数据。
Sparkplug 的负载定义(payload)允许你直接应用这种标准化的层次结构格式来组织正在推送到 统一命名空间 的 ISA 95 数据对象。
例如,下面是一个 Sparkplug payload的示例,其中的度量名称体现了这种层次结构:
{
"timestamp": 1486144502122,
"metrics": [{
"name": "Enterprise/Site/Area/Line/Cell",
"alias": 1,
"timestamp": 1479123452194,
"dataType": "String",
"isHistorical": false,
"value": "Test"
}],
"seq": 2
}
感想
UNS不是一个产品,也不是一个软件,它是一种架构,一种数据建模工具或手段,一种搭建IIOT系统,数字孪生系统,或任何工业AI的一种思维。这种思维是决定能否在工业4.0环境下成功的关键。
作为工业4.0爱好者,我相信UNS是实现工业AI,数字孪生的前提。因为AI驱动自动化建模,智能数据治理,it,ot融合的前提是全域数据连贯性和打通数据孤岛,而这些要透过UNS才能实现。
要先给自己的企业建立一个SIngle source of truth, 才能在此基础上打造其他的应用和创造更多可能性。