Skip to content

对接工业物联网平台(统一命名空间)

厂内部署了 Ignition、Cogent DataHub 等 IIoT 平台,或需要按 Sparkplug B 规范建立**统一命名空间(UNS,Unified Namespace)**时,使用这一类北向应用。

与普通 MQTT 的差别

MQTT 规定了消息发往哪个主题,不规定消息的结构。由此产生三个问题:payload 的字段命名与数据类型需要收发双方事先约定,网关侧一旦调整格式,平台侧的解析随之改动;平台无法得知新接入设备有哪些点位,需要人工建模;平台也无法区分数据是新值还是陈旧值——收不到数据可能是设备停机、网关掉线,也可能是该点位本就不上报。

Sparkplug B 是建立在 MQTT 3.1.1 之上的工业物联网数据传输规范,用四个机制解决上述问题:

机制作用
BIRTH 消息设备上线时声明自身的点位清单、数据类型和初始值,平台据此自动建模,新增设备无需在平台侧修改配置
DEATH 消息网关异常断开时由 Broker 通过 MQTT 遗嘱机制代发,平台立即得知该设备数据不再可信
序号与 bdSeq每条消息携带递增序号,平台可据此发现消息丢失并请求重新 BIRTH,保持模型与现场一致
别名(Alias)以短整数代替点位全名传输,点位数量大时可显著减小报文体积

这四项共同使 MQTT 网络具备状态感知与结构自描述能力,即统一命名空间的基础:全厂维护单一数据来源,上层各系统从该来源读写,而非两两点对点对接。

命名空间结构

EMQX Neuron 作为 Sparkplug B 的**边缘节点(Edge Node)**接入,将每个南向驱动映射为其下的一台设备:

spBv1.0 / {组 ID} / DDATA / {节点 ID} / {南向驱动名}
             ↑                 ↑             ↑
        工厂或车间           本网关        一台设备
字段来源
组 ID应用配置项,命名空间的最顶层分组,通常对应工厂或车间
节点 ID应用配置项,本 EMQX Neuron 实例的唯一标识
{南向驱动名}被订阅的南向驱动节点名称,一个驱动即一台设备

组 Path 参数默认开启,此时采集组名作为指标名的起始路径,平台侧看到的树状结构与现场的组织结构一致。

组 ID 与节点 ID 的变更会触发重新 BIRTH,批量部署前应先确定两者的命名规则。

完整的主题清单见 Sparkplug B · 主题结构

反控设备

上层平台通过 DCMD 命令向指定南向驱动的点位写值,NCMD 用于边缘节点级命令。目标点位须在南向驱动中配置 write 属性,见组与点位 · 点位属性

选择应用

应用适用情形
Sparkplug B平台侧支持 Sparkplug B 规范时的首选。连接参数(服务器地址、端口、用户名密码、SSL、离线缓存)与 MQTT 应用一致,仅组 ID节点 ID 来自 Sparkplug B 规范本身

连接示例