到目前为止,我们已经说明了:
- 主应用
- MQTT服务器
- 网络边缘(EoN)节点
- 设备
- 主题名
- 上线消息
- 下线消息
- 状态消息
- 主应用、边缘节点和设备会话建立
所有这些规范和定义都是为了达到Sparkplug的目标,即高效地将丰富的实时设备检测数据分发给企业里各个数据使用者,同时提供一流的命令/控制SCADA/IIoT系统。
IIoT颠覆性的理念是,智能设备应该在需要时向网络发送测点数据。然而现实却是,100%现有的、成百上千万智能设备,只能通过请求-响应协议被“询问”是否有变化,这就是工业领域边缘设备出现的原因。在设备制造商内置IIoT技术之前的十年或更长时间里,现实的解决方案是把这一能力放到靠近数据源的小型嵌入式设备中。在Sparkplug规范中,这些设备称为网络边缘节点(EoN),代表这类新型网关、边缘控制器、边缘网络节点、协议转换网关,和许多同类设备的代称。这些设备的性能跨度很大,从低功耗单片机到多核Intel和ARM处理器。操作系统从嵌入式Linux内核、嵌入式Windows,到小型裸机实时操作系统(Real Time Operating System,RTOS)。不论什么类型的网关设备,MQTT和Sparkplug规范都适用。
本节Sparkplug规范详述测点如何在MQTT网络中实时的发布/订阅,以及主应用如何读写测点信息。
9.1 EoN NDATA和NCMD消息
先讲边缘节点如何发布测点信息给主应用。边缘节点通常定义为与传统设备接口的实物“边缘网关”设备,以及内部实现了Sparkplug规范的设备的逻辑MQTT终结点。7.3.1节定义了上线消息MQTT负载,可以提供任意数量的测点给主应用,其中一些“只读”测点如:
- EoN制造商ID
- EoN设备类型
- EoN序列号
- EoN软件版本号
- EoN配置变更次数
- EoN位置(如果带GPS功能)
- EoN移动网络信号强度RSSI(如果使用了移动网络)
- EoN电源电压
- EoN温度
其他可变“读写”测点如:
- EoN重连命令,重新发布所有EoN和设备上线消息
- EoN切换服务器命令,转到下一个可用MQTT服务器
- EoN重启命令,重启EoN节点
- EoN设置主网络(PRI_NETWORK)1=移动网络,2=以太网
实现中的要点是,主应用的测点完全取决于边缘节点上线时发布的测点信息。每个边缘节点决定要发布什么和如何发布,测点会自动出现在主应用的测点树中。测点甚至可以在运行时通过上线消息动态添加,这些测点会自动添加到主应用测点树上。
另一个很重要的区分是,边缘节点NDATA和NCMD消息与设备的DDATA和DCMD是分开的,这种主题名解耦是重要的,允许(达到权限和应用级别)系统中的所有MQTT客户端与边缘节点交互,但不能发送设备命令。主应用可以提供要给配置参数,不让DDATA和DCMD消息通过,但允许NDATA和NCMD消息通过。这样,多应用系统可以连接到同一MQTT网络,但只有允许DCMD的能发布设备命令。
下图说明用来更新主应用移动RSSI值的消息,和从主应用发送给边缘节点的变更主网络路径命令。
图 6 边缘节点NDATA和NCMD消息流
- 假设MQTT服务器可用。
- 假设主应用与MQTT服务器建立了MQTT会话。
- 边缘节点已建立MQTT会话,NBIRTH已经发布,主应用获得了所有测点和它们的当前值。
- 边缘节点监视移动网络信号强度,强度变化时边缘节点发布新值给主应用中的相关测点。
- 根据操作需求,需要通知边缘节点把主网落从移动网络切换到以太网。主应用节点相关测点值更改,并自动给边缘节点参数发布新值。
链接:
0. 目录
8. Sparkplug MQTT会话管理和消息流
10. 多MQTT服务器下的主应用状态