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