典型的工业物联网(IIoT)架构通过轮询/响应方式来连接各个组件。应用程序会直接从PLC、网关或服务器中通过诸如Modbus、西门子S7协议或OPC-UA等协议轮询数据。这种方法在只有少数几个系统需要集成时效果不错,但随着组件数量的增加,会导致一个难以维护的复杂架构。
图片1:未采用Sparkplug的工业IIoT架构
在这种架构中,系统通过点对点方式连接,从而使系统和数据紧密耦合在一起。现代的架构需要在IIoT系统中实现灵活性和清晰的职责分离。许多公司期望在IT环境中找到适应性、灵活性和易于实施的特性,同时也需要满足OT环境对可靠性、安全性和可预测性的需求。这种变革需要一种全新的架构。
图片2:IIoT的新架构
这种新的IIoT架构(如图片2所示)相较于传统IIoT架构有所优势:
- 数据生产者和消费者之间的解耦。
- 异常报告(RBE),节省了数据生产者和消费者的带宽、内存和计算能力。
- 一对多通信。数据只需发送一次,多个接收方就可以接收数据。
- 灵活性:设备和应用程序可以随时添加或移除,而不会影响整个系统。
- 通过集中的权限和策略处理实现数据治理。
- 通过从云到边缘的数据分发实现车间到云端的连接。
过去,许多公司已经采用MQTT来为其工厂创建解耦架构。这并不令人意外,因为MQTT最初是为SCADA系统设计的。但在IIoT用例中,仍然缺少一些部分,例如MQTT主题结构定义、MQTT状态管理和有效载荷数据定义。Sparkplug为MQTT增加了这些功能,通常情况下Sparkplug架构类似于图片3所示。
图片3:Sparkplug架构
原则与机制
Sparkplug架构之所以比传统方案更加优雅,是因为它基于以下原则和机制:
- 发布/订阅:使用MQTT作为底层应用的发布/订阅架构,从而解耦了数据的生产者和消费者。MQTT基于推送通信机制,这意味着数据会立即传递给所有感兴趣的各方。
- 异常报告:只有在数据和设备状态发生变化时才更新,从而在所有组件上大幅节省带宽和计算能力,因为只有新的和更新的数据才会被发送。
- 持续会话感知:Sparkplug和MQTT具备持续会话感知的特性。如果设备的在线/离线状态发生变化,它会通知所有关心这一状态的客户端。这个机制还确保了数据在传输过程中的连续性,比如当设备从离线状态恢复到在线状态时,数据传输会继续进行。使用Sparkplug,您可以实时准确地监控部署中所有设备、网关和应用程序的状态。
- 死亡和出生证明:Sparkplug引入了用于管理和发现设备状态的死亡和出生证明机制
。出生证明包含了有关设备及其将要发送的数据的信息,而死亡证明则利用MQTT的遗嘱和遗言机制来向所有关心的应用程序推送设备离线信息。
- 持久连接:所有设备、网关和应用程序默认保持在线,并通过持久的TCP连接进行通信。
- 自动发现:应用程序和设备能够自动发现Sparkplug部署中所有参与者将要发送的数据(及其对应的主题),以及当前连接的在线/离线设备。
- 标准化有效载荷定义:Sparkplug消息中所有消息的数据格式都进行了标准化,使得所有通信参与者都可以解码和编码数据。
- 标准化主题命名空间:所有Sparkplug参与者使用相同的主题命名空间。这个主题命名空间允许对特定数据进行精确的订阅,并支持动态地添加或移除参与者。
组件
Sparkplug充分认识到在任何复杂的IIoT场景中,都会涉及不同类型的设备/传感器、网关、应用程序以及其他软件(和硬件)。因此,Sparkplug为架构中的不同类型参与者定义了各自的行为和语义。
传统的Sparkplug架构包括以下组件:
- SCADA / IIoT主机
- 网络边缘(EoN)节点
- 设备/传感器
- MQTT应用节点
- MQTT代理
我们现在将对这些组件进行详细的解读。
SCADA / IIoT主机
SCADA / IIoT主机,有时也被称为主应用程序,是负责监控和控制MQTT EoN节点及其所连接的设备和传感器的监督性应用程序。IIoT系统的持续会话状态感知是至关重要的,这意味着所有参与者(包括机器、设备、PLC、传感器、网关和应用程序)的当前状态随时都需要在中心位置进行监控。管理状态并根据状态变化采取行动的中心应用程序就是SCADA / IIOT主机应用程序。它是系统操作员用于管理和监督整个系统健康状况的关键应用程序。
与大多数传统的SCADA系统架构不同,SCADA / IIoT主机并不负责直接建立和维护与设备的连接。在Sparkplug架构中,设备、EoN节点和SCADA / IIoT主机都连接到中心MQTT代理,并通过发布和订阅数据进行通信。这样的设计允许仅在数据发生变化时进行更新,从而实现了异常报告(RBE)功能。
网络边缘(EoN)节点
网络边缘(EoN)节点在任何Sparkplug系统中都扮演着关键角色。EoN节点通常提供物理或逻辑上的网关功能,使那些不直接实现Sparkplug的传感器或设备能够参与到MQTT主题命名空间中。EoN节点负责管理自身以及通过诸如OPC-UA、Modbus、专有PLC供应商协议、HTTP、MQTT或本地离散I/O等协议连接到该EoN节点的传感器和设备的状态和会话。EoN节点负责管理这些连接设备和传感器的生命周期和状态,以及接收和发送设备数据到Sparkplug基础设施中。EoN节点是任何Sparkplug基础设施中的关键组成部分,它们通常被用于将传统的基础设施与Sparkplug桥接。
设备/传感器
设备和传感器构成了工业自动化的核心。一个设备通常是一个实体或逻辑上的单元,它通过一个或多个工业通信协议来发送和/或接收数据。这些工业协议一般基于轮询/响应机制。在Sparkplug的上下文中,设备通过EoN节点连接到Sparkplug基础设施中。EoN节点将MQTT Sparkplug的发布/订阅机制桥接到这些轮询/响应协议上。
支持MQTT的传感器和设备
尽管大部分设备和传感器采用像Modbus、OPC-UA、Beckhoff ADS等标准化和专有协议,但许多厂商为其设备和传感器提供了原生的MQTT支持。如果一个MQTT支持的设备已经配备了Sparkplug功能,通过提供适当的数据格式和主题结构,那么该设备可以直接与Sparkplug基础设施交互。在这种情况下,该设备将作为EoN节点被Sparkplug基础设施识别。如果MQTT设备仅支持标准的MQTT而没有Sparkplug意识,那么它仍然需要通过EoN节点来连接。
MQTT应用节点
MQTT应用节点是参与Sparkplug通信的节点,可以产生和消费消息,但它们不是SCADA / IIoT主机。这些通常被称为辅助应用程序。它们通常是提供专门功能的软件系统,例如MES(制造执行系统)、历史数据分析等。许多部署也会使用定制软件来满足特定用例的需求,这些软件需要消费由其他Sparkplug参与者产生的数据。
MQTT代理
MQTT代理是中心数据分发组件。所有启用Sparkplug的设备、EoN节点、SCADA / IIoT主机和MQTT应用都通过MQTT连接到代理。代理负责处理认证、授权、参与者状态管理以及在Sparkplug启用系统间的数据分发。MQTT代理需要100%兼容MQTT 3.1.1标准,因为需要支持保留消息、遗嘱和遗言以及QoS等功能。
回复