MQTT 的一个突出特点,使其在许多行业中获得广泛接受,是它允许使用任何格式来创建分层主题路径。例如,在一个乳品制造企业中,可以使用 DairyPlant01/Refrigerator03/DischargePressure 作为自定义的主题命名空间。
尽管这种灵活性允许您根据需要定义 MQTT 主题结构,但在扩展或集成不同系统时,由于缺乏标准化方法,它也带来了挑战。更在工业物联网(IIoT)或 SCADA 网络中,通常存在嵌套设备、资产和系统的复杂工业设置。
IIoT 中不同 MQTT 主题格式的挑战
以下是由于缺乏系统化和一致的 MQTT 主题命名格式而引入的一些挑战:
IT-OT 互操作性挑战
使用不同 MQTT 主题结构的不同设备和应用程序很难集成到统一系统中。这导致来自不同供应商或工业操作的不同业务部门的数据交流和通信困难。
可扩展性问题
随着设备或主题数量的增长,配置、管理和监控大量非标准化 MQTT 主题结构的网络变得越来越复杂。这通常导致扩展能力降低,并增加了集成成本。
数据不一致性
如果设备或发布者使用不同的主题结构或命名约定,可能会对数据的来源或类型产生歧义,导致潜在的数据不一致性。在 IIoT 或 SCADA 系统中,数据的误解读或错误路由可能导致操作问题甚至安全问题。
IIoT 中标准化 MQTT 主题命名空间的好处
为了减轻上述许多挑战,MQTT Sparkplug 规范定义了用于 IIoT 网络的标准 MQTT 主题格式。通过提供标准化的主题命名空间定义,MQTT Sparkplug 帮助创建了一个更一致、有组织且互操作性更强的 MQTT 基础 IIoT 和操作数据系统环境。这使得部署、管理和扩展这些系统变得更加容易,同时确保数据易于访问和理解。
使用 Sparkplug 的标准主题命名空间定义,遵循 Sparkplug 规范的设备和系统可以无需任何额外配置或转换即可相互通信。此外,Sparkplug 的主题命名空间提供了数据的一致性和逻辑性组织,确保相似的数据点被分组在一起,数据易于定位。
随着越来越多的设备和系统采用 Sparkplug 规范,集成变得更简单。系统可以使用一套标准规则和逻辑进行集成,而不是为每个独特的主题结构定制集成。
通过标准化主题结构,更容易实施精细化的安全和访问控制措施。例如,可以根据主题命名空间的特定部分授予权限,确保设备和用户只能访问他们被授权查看的数据。
MQTT Sparkplug 主题命名空间的组成部分
为了提供一种结构化的方式,确保信息在 IIoT 环境中易于路由、理解和操作,Sparkplug 将 MQTT 主题命名空间细分为特定组成部分。因此,Sparkplug 主题命名空间的结构化特性如下所示:
spBv1.0/[Group ID]/[Message Type]/[EON Node ID]/[Device ID]
以下是 MQTT Sparkplug 主题命名空间组成部分的详细说明:
命名空间
这始终以“spBv1.0”开头,表明该主题使用 Sparkplug B 版本 1.0 规范。这作为所使用协议版本的标识符,以及相关有效载荷数据的编码。
组号
这标识了网络边缘(EoN)节点和设备的逻辑分组。例如,您可能使用组 ID 来表示特定的工厂或工厂位置。它确保在不同组之间的数据隔离,有助于高效的数据管理和安全性。
消息类型
主题命名空间的消息类型组件指示如何处理 MQTT 有效载荷。以下消息类型组件为 Sparkplug 主题命名空间定义:
- NBIRTH:边缘节点出生证书。这是来自 EoN 的启动消息,用以宣告其存在并分享其配置。
- NDEATH:边缘节点断开连接或故障的通知。
- DBIRTH:设备出生证书。类似于 NBIRTH,但针对设备,宣告它们的存在和配置。
- DDEATH:设备断开连接或故障的通知。
- NDATA:来自边缘节点的数据消息。这些通常包括度量数据。
- DDATA:来自设备的数据消息。类似于 NDATA,但专门针对设备相关度量。
- NCMD:对边缘节点的命令。
- DCMD:对设备的命令。
- STATE:代表主机应用程序的状态。边缘节点订阅它以获取主机的在线状态。
网络边缘(EON)节点 ID
这唯一地标识了同一组中 EoN 中的特定边缘节点。EON 节点负责代表其控制或连接的设备报告数据。EON 节点 ID 有助于将命令定向到正确的节点,并将来自各种节点的数据进行分离。
设备 ID(可选)
如果消息与边缘节点控制的特定设备有关,设备 ID 将唯一地标识该设备。
下表显示了 MQTT Sparklug 主题命名空间每个组成部分的示例描述和示例。
Name | Description | Example |
---|---|---|
namespace | Root element to set the sparkplug version | spBv1.0 |
group_id | Logical grouping of MQTT edge nodes | FactoryA |
message_type | Specific message type | NBIRTH |
edge_node_id | ID of a specific edge node | ProductionLine03 |
device_id | ID of a specific device tied to an edge node | SeatAssembly_PLC |
spBv1.0/FactoryA/DDATA]/ProductionLine03/SeatAssembly
需要注意的是,由组 ID 和边缘节点 ID 组合而成的边缘节点描述符在 MQTT Sparkplug 网络中的所有边缘节点之间必须是不同的。这意味着 Sparkplug 设置中的两个边缘节点不能共享相同的组 ID 和边缘节点 ID。
Sparkplug 边缘节点布局
在实际场景中实施 Sparkplug 主题命名空间
让我们看看 MQTT Sparkplug 主题命名空间定义在实际场景中的好处示例。
例如,在智能制造设施中,每条生产线可能包括许多机器,每台机器都生成温度、运行时间和错误率等度量数据。使用 Sparkplug 的主题命名空间,这些机器的消息可以被轻松地路由和分类。一个诸如 spBv1.0/FactoryA/DDATA/Line3/Machine7 的主题立即提供了关于消息来源和性质的上下文,确保监控工具、控制系统和操作员可以快速处理并对数据采取行动。
此外,Sparkplug 的主题命名空间不仅仅是高效的路由;它在系统诊断和故障排除中发挥着关键作用。例如,在能源领域,拥有多个面板的太阳能发电厂可以从 Sparkplug 的结构化消息传递中获益匪浅。如果面板发生故障,主题为spBv1.0/SolarFarmB/NDEATH/PanelArray5/Panel23的消息将立即通知操作员,不仅会出现问题,还会通知其在基础设施中的确切位置。Sparkplug 的主题命名空间使通信的粒度和清晰度成为可能,这在现实场景中非常宝贵,在现实场景中,快速响应时间可以带来显着的节省和更安全的操作。
结论
总结来说,MQTT Sparkplug 是一个旨在确保使用 MQTT 协议通信的设备、应用程序和服务之间的互操作性的规范,特别是在工业自动化领域。Sparkplug 中定义的主题命名空间在提供标准化的主题结构方面起着关键作用,这确保了跨各种设备和系统的一致数据表现、简化的设备命令和控制,以及改进的状态管理。
通过遵守 Sparkplug 主题命名空间,供应商和系统集成商可以无缝集成设备和软件解决方案,从而减少集成工作并确保 MQTT 基础 IIoT 部署中更可预测和可靠的通信。
回复