未来自动化,受工业4.0、物联网(IIoT)、智能工厂和智能设备等概念的影响。这个新技术时代的核心是互联互通——僵化、分层的自动化金字塔式结构正逐渐被更大的网络结构所取代,该结构中各个节点相互连接并交换数据。为了实现这种智能网络,设备必须具备 IIoT 功能,即标准化、可扩展性、与 IT 和 OT 系统的兼容性以及互操作性。此外,还必须确保能够安全地进行通信。
可以通过多种通信协议来实现这种智能通信,如 MQTT、OPC UA、AMQP 和 REST API。通过对倍加福四种基于 TCP 的通信协议的介绍和分析,您可以了解到这些 IIoT 通信协议的特性,以及其适用于哪些应用。
通过下文,了解该系列的第一部分—— MQTT 通信协议。
MQTT(消息队列遥测传输)是一种紧凑、二进制、开放、易于实现的消息发布/订阅传输协议。它是由 OASIS 技术委员会管理、且经过认证的 OASIS 和 ISO 标准(ISO/IEC 20922:2016)。MQTT 于1999年作为石油管道带宽和电池能效监控问题的技术解决方案而诞生。2013年,IBM 将 MQTT 提交给 OASIS 规范委员会,并于2014年作为OASIS 标准正式发布。此后,MQTT 广泛投入使用,在工业市场中占据一席之地,特别是在精简代码、大幅减少开销和网络流量受限等限制条件要求较高的领域。MQTT 的基本工作原理如下图所示(见图 1)。MQTT 客户端(包括发布者和订阅者)连接到 MQTT 代理。一些 MQTT 客户端通过订阅一个特定主题,例如下图中的主题为温度值:MQTT 客户端(发布者)向代理发送数据,然后代理将此消息发送到所有订阅的 MQTT 客户端。这种拓扑结构的显著优势在于发布者和订阅者的解耦。代理只负责将数据从一端传输到另一端,无需在它们之间建立大量连接。
MQTT 协议中的基本要素。通过网络发送的每条信息除了报头信息外,还包括一个主题和一个有效载荷。主题是代理用于过滤的信息,也是订阅者订阅的信息。主题可以包含多个层级,例如 “home/sensor1/identification”包含三个主题层级,“home/sensor1/data/temperature”包含四个主题层级。每个主题层级之间用“/”分隔,主题结构还需要区分大小写。还可以在一个或多个主题层级上使用占位符。在单个层级上使用占位符是通过“+”来实现的,如下所示:"home/+/data/temperature”。为此,所有温度值都将由所有内部传感器进行记录,并在订阅的 MQTT 客户端上发布。第二种类型的占位符是使用“#”标签图标的多层级占位符。例如,“home/sensor1/#”可将 sensor1 发布的所有数据传输到订阅的 MQTT 客户端。
使用此功能可设置每条信息的传送安全性。该功能的目的是定义不同的安全级别,以确保消息到达订阅端。级别分为 QoS 0(至多一次)、QoS 1(至少一次)和 QoS 2(仅一次)。QoS 2 作为最高级别的质量,需要的通信确认和实施措施也最多。
MQTT中有几种机制可以确保代理与发布者/订阅者之间的连接保持完好。最基本的机制是保持连接消息。客户端将不时发送一条保持激活的消息,向代理确认连接仍然有效。这样,代理就能知道客户端是否已离线。此外,客户端(发布者)在初始连接过程中会向代理提供 “遗嘱消息”(LWT)。在客户端离线后,该信息将由代理发送给网络上订阅的其他客户端,告知该客户端(发布者)已离线。
在代理和订阅者之间建立了持久会话以后,代理将存储所有信息,直到订阅者准备好接收这些信息。这个特性对于不稳定的网络特别有用。
MQTT 是所有协议中非常紧凑的一种,没有定义任何标准化层级。有效载荷(消息)被发送到特定主题,主题拼写错误或发送的数据格式与所需格式不同,不会被认定为是错误。从 MQTT 5 开始,元数据可以在报头信息中发送。但是,并不能阻止个别设备使用完全不同的命名约定和不同的元数据信息。除非所有主题和信息都已经由人定义,否则 MQTT 无法满足机器与机器之间的交互。对于人与机器之间的交互,我们第一步应该调查确定哪些主题可用,以及其数据结构如何,然后再与机器交互。机器无法确定用户可以订阅的主题。
MQTT 非常经济高效,且传输时间短。如果发布者和代理之间没有延迟,并且订阅者连接到代理并主动接收,那么理论上可以实现所承诺的“接近实时”和“无延迟”的响应能力。
MQTT 提供了在连接初始化阶段通过用户名和密码进行身份验证的功能。从 MQTT 5 开始,只有 密码字段可以用于令牌传输,并且需要额外的安全机制,例如质询响应验证。
MQTT 是所有协议中非常紧凑的一种。与所有其他协议相比,MQTT 在实施过程中所需的工作量非常小,运行时所需的存储空间、计算能力和传输容量等系统资源也会显著减少。只有额外的安全措施可能会增加工作量。
如果只需要一个简单紧凑的解决方案时,可以选择MQTT作为理想方案。例如,需要从多个传感器收集数据或同时向多个同类型传感器发送相同信息时,或者需要满足低功耗和非常低的内存要求时,MQTT 就是理想选择。MQTT可应用于车联网、军事应用、工业设备网络、无人机控制等各种场景。