注:本文主要内容源自一篇Johnathan Hottell的ppt “Efficient IIoT Comunications”。
各种通讯协议
通讯协议是在应用层上定义报文结构和内容的约定。常见的如MODBUS、OPC UA、MQTT、CoAP等,他们的存在都有合理性,并没有绝对的好与坏。Modbus简单,OPC UA强大,MQTT灵活,要看具体的应用场景。本文重点介绍OPC UA、MODBUS、MQTT、SparkplugB在传感器数据传输的带宽占用。
流量干什么了
- 建立连接
- 传输数据
- 连接保活
- 关闭连接
建立连接
OPC 对于窄带、受限网络未必适用。一篇文章提到,向设备写数据,通过OPC UA非业务报文要600个字节,而MQTT只需要17个字节。
单点传输
无连接的HTTP和无连接的Modbus消耗更多流量,而MQTT和保持连接的Modbus要少得多。
保持连接
- 保持连接不是free的
- 需要定时发送ping包
MQTT的保活成本较低,PING包只有2个字节。
1小时的总流量消耗
假设保活心跳间隔5分钟。
5秒数据1天总流量消耗
假设保活心跳间隔5分钟,数据每天变化2次(阀门起、停)。
MQTT带宽大大少于其他协议,因为只在数据变化时需要发送publish包,相比Modbus Release,MQTT只占其0.5%!
9个点的情况
- Modbus Modpoll 比 Modbus ACM似乎多发送一次数据
- MQTT与 Modbus ACM带宽占用相同,多发送了3倍数据(时标,别名和值)
- SparkplugB数据比MQTT压缩了3倍!
油气田案例
389个标签,每分钟变化传输。其中,223个开关量变化频率慢于每小时1次,111个标签每小时变化,19个模拟量间歇变化,36个模拟量每分钟变化。59%的点位在1小时内不变!
SparkplugB 是Modbus的9%。
总结
- 流量节约主要来自变化时发送(report by exception)
- SparkplugB压缩3倍
- 与Modbus相比,采用SparkplugB可以节约75%~99.5%的网络带宽,不过这要看你的应用,多少个点,数据的重要程度等
- 网络带宽节约多少只有在实际做的时候才知道...
扩展阅读:Sparkplug规范