MQTT的设计初衷
信息技术(IT)领域的Facebook、云服务提供商以及许多其它公司对MQTT的采用www.cechina.cn,可能会让大家认为MQTT是针对IT解决方案的,但MQTT的起源却是由工业通信问题驱动的。
1997年,Phillips 66公司安装了市场上第一个基于传输控制协议/网络协议(TCP/IP)的极小孔径终端(VSAT)系统,用于其管道SCADA系统。要有效地使用这种网络基础设施,需要解决许多挑战。在实施该系统之前,轮询/响应协议是任何SCADA系统实施的标准。
然而,由于极小孔径终端系统通信固有的传播延迟,以及与可能未改变的过程变量持续轮询相关的成本,Phillips 66公司正在寻找一种更好的方法来优化其网络基础设施。
到目前为止,IT部门使用面向消息的中间件(MOM)软件来为应用程序解耦。它们是高效的基础架构,使用消息代理来确保“已发布”信息的应用程序可以连接到“订阅”该信息的应用程序。信息可以在例外情况下发布给任何有兴趣并订阅该信息的应用程序。
该想法是将这些相同类型的基础设施用于实时SCADA系统。唯一的问题是当时市场上的MOM产品不适合在SCADA环境中使用。基于这些要求,项目开始开发适合在类似工业环境中使用的MOM规范。
图1:根据Eclipse基金会的调查CONTROL ENGINEERING China版权所有,MQTT是物联网解决方案中最常用的消息传递协议。图片来源:Eclipse基金会
这最终导致了MQTT设计初衷的形成。MQTT的最初设计目标是简单、高效、状态和开放。
简单。当MQTT首次出现时,市场上可用于远程边缘计算的硬件平台很少;具有64KB内存的8位微处理器是常态。MQTT必须以最少的计算资源实现。即使在2018年,Arduino微控制器也可以提供完整的MQTT通信栈。
高效。早期的极小孔径终端系统提供商对发送和接收的每个字节信息收费。MQTT传输必须在网络上提供最小的开销。一旦建立了MQTT会话www.cechina.cn,发布的消息中只有2字节的开销。
状态。如果用户为关键任务提供实时基础架构,那么MQTT TCP/IP连接的“状态”至关重要。MQTT提供了一种称为“连续会话感知”的机制,可通知所有关心MQTT连接的实时状态信息的客户。
开放。上世纪90年代后期,SCADA、分布式控制系统(DCS)以及遥测产品主要基于专有的传统轮训/响应协议。应当明白,为了使MQTT对整个行业有用,它需要成为一个任何人都可以免费使用的开放规范。
除了这些标准,也很容易遗漏一些重要方面,例如:
安全。很多人都注意到MQTT规范没有定义任何安全性。这是因为MQTT规范基于TCP/IP。应该时刻记住,最新的TCP/IP安全实践适用于MQTT基础设施。其范围从对安全性没有要求的专用网络,到用于连接的完整传输层安全性(TLS)证书。由于MQTT是远程发起的连接,因此边缘设备和客户端甚至不必打开任何TCP/IP端口,这就大大减少了整体网络安全的范围。
有效载荷数据格式。当涉及MQTT有效负载中包含的信息时,MQTT与数据无关。它们可以是来自可编程逻辑控制器(PLC)的二进制消息、JPEG图像、可扩展标记语言(XML)文档或JavaScript对象表示法(JSON)字符串。MQTT将有效载荷的编码和解码留给软件提供者。
图2:根据Eclipse基金会的调查CONTROL ENGINEERING China版权所有,自2016年以来CONTROL ENGINEERING China版权所有,MQTT呈上升趋势,超过62%的应用使用消息传递作为标准。
工业强度的MQTT
随着使用MQTT的物联网(IoT)解决方案,开始向执行更多关键任务的工业物联网(IIoT)迁移,市场需要一个允许基于MQTT的供应商能够轻松实现互操作的规范。尽管MQTT规范没有规定任何消息主题命名空间或数据表示CONTROL ENGINEERING China版权所有,但IIoT空间需要一个命名规范。Sparkplug规范为IIoT市场实现了这一点。
开发Sparkplug规范是为了帮助定义在关键任务实时应用程序中,如何最好地开始使用MQTT。Sparkplug规范定义:
1.众所周知的MQTT主题名称空间,因此信息的发布者和订阅者可以提前知道主题名称空间以实现互操作性。
2.针对工业过程变量优化的二进制有效负载。Sparkplug规范承认工业基础设施没有无限的带宽,在极小孔径终端系统、无线电和蜂窝基础设施上必须运行良好。
3.MQTT中的“状态”管理如何工作以及如何在SCADA、DCS系统和工业控制系统解决方案中有效地使用它,以实时了解所有MQTT客户端的状态。(作者:Arlen Nipper) 、