什么是 MQTT,工业自动化公司如何使用它?
如果您完全涉足工业物联网 (IIoT),您一定会看到一个新的首字母缩略词被到处使用:MQTT。虽然 MQTT 对自动化来说还很新,但它已经存在了 20 多年。它最初是作为一种从偏远油田获取数据的协议而开发的,但直到最近,它才在这个利基应用程序之外获得广泛采用。它现在正在成为制造业数字化转型项目的主要协议之一。
什么是MQTT?
MQTT 代表消息队列遥测传输。它是一种客户端服务器发布/订阅消息传输协议,被认为是一种轻量级消息协议,用于在有限带宽的应用程序中发送小信息包。从本质上讲,它被认为是物联网连接的核心 OASIS 标准。
历史
在 1990 年代后期,需要一种轻量级通信协议,该协议能够以极低的连接速度(可能低至 300 波特)从远程石油站点传输数据。该策略是利用传输层中已经提供的功能,该传输层使用 TCP 协议。提议的应用协议将删除添加到传输有效负载的任何冗余。它还需要是有状态的,并且只报告异常。考虑到这些限制,Phillips 66 与 Cirrus Link Solutions 的 Arlen Nipper 和 IBM 的 Andy Stanford-Clark 合作开发了现在称为 MQTT 协议。
早期商业用途
虽然自动化公司在 2000 年代初接触了 MQTT 协议,但它唯一的其他商业用途是与 Facebook Messenger 和 Apple Messages 应用程序一起使用。感兴趣的主要特征是该协议确保数据的状态和质量。当发送者打字时,接收者会在屏幕上看到现在非常熟悉的三个点。它也被用于一些家庭监控和天气数据应用中,但在那个时候,MQTT 的使用是相当有限的。
自动化采用
在 2010 年代中期,Arlen Nipper 再次与自动化公司接洽,以推广 MQTT 的使用。在没有大量网络需求的情况下,越来越需要汇总额外的制造数据。但是,为了在制造中获得认可,还需要开发一些额外的功能。 Cirrus Link Solutions 与 Inductive Automation 一起开发了现在的 Sparkplug 标准,其中包括自动化所需的属性,即一组定义的主题、标准负载和消息压缩。
结构概述
MQTT 使用类似于计算机文件夹结构的结构。我将以 Windows 桌面为例。桌面有一个名为 My Documents 的文件夹。在我的文档中,还有一个名为 Family 的文件夹,该文件夹中是每个家庭成员的文件夹。我的文件夹的路径是 Desktop/My Documents/Family/David。我会将我所有的文档保存(发布)给大卫。任何想阅读我的文件的人都会打开(订阅)David。
使用 MQTT 协议的设备将发布和订阅类似的主题路径,称为命名空间。就像计算机一样,它的组织方式从最一般到最具体。我订阅的级别越高,我收到的数据就越多。还有一些通配符可用于帮助定义主题路径。星号 (*) 包括当前级别及以下级别的所有内容。加号 (+) 将路径向下移动一级。我在文章的下方提供了几个示例。
符合 ISA 标准
ISA-95 标准在制造业中广为人知。它描述了企业和控制系统之间接口的标准模型和术语。虽然它通常被实现为一个层次结构,从顶部的 ERP 和底部的设备开始,该标准主要处理制造数据及其结构。因为 MQTT 使用主题名称空间,所以这些名称空间可以很容易地与 ISA-95 层次结构对齐。建议主题命名空间在构建时应遵循 Enterprise、Site、Area、Line 和 Cell。发布者/订阅者的根文件夹也应该存在于适当的级别。例如,控制单元的 PLC 应在 Enterprise/Site/Area/Line/Cell 的主题中发布其数据。如果进程历史库特定于某个区域,它应该订阅企业/站点/区域级别的所有数据。
架构
使用 MQTT 引起的常见问题之一是连接丢失时会发生什么。有几个选项可用于缓解这些情况。一种常见的解决方案是使用“存储转发”方法。例如,处于控制层的 SCADA 系统将继续收集数据,直到与 MQTT 代理的连接恢复。需要注意的是,当broker连接恢复时,所有存储数据的时间戳保持不变。
MQTT 还支持使用备份代理。当有主代理时,如果此连接丢失,连接的节点将自动切换到另一个代理。关系一般通过支持此功能的应用程序(如 SCADA 系统)配置。
另一种解决方案是通过使用集群实现的。这对于无法承受任何数据丢失的应用程序来说是典型的。一种常见的设置是将多个 MQTT 代理安排在一个集群中。所有这些代理都相互了解,并将在集群内共享消息。当连接中断时,数据的发布者和订阅者将无缝地将数据路由到另一个代理,而不会造成任何损失。
企业应用程序使用来自其所有工厂的数据是很常见的。对于这种情况,MQTT 支持使用类似于存储转发系统的桥接。在此架构中,一个代理将其部分或全部命名空间发布或桥接到另一个代理。换句话说,工厂经纪人将连接到企业经纪人。可以定义发布的主题和命名空间结构。这既限制了发布的数据量,又为接收代理提供了上下文。
使用星号 (*) 按原样发布所有数据并且不定义任何结构是最简单的方法,但这可能会导致大量不必要且可能令人困惑的数据。为了提供一些数据上下文,可以将主题添加到已发布主题命名空间的开头。例如,可以将 Enterprise/Site 添加到工厂 Area/+/Cell 命名空间,这将导致 Enterprise/Site/Area/+/Cell 被发送到 Enterprise 代理。结果是所有行的单元级别数据都可以从这个系统获得(注意使用 + 通配符)。
所有这些场景都可以部署。 SCADA 系统可以使用存储转发到 MQTT 集群。可能有主集群和备份集群,但这可能会增加不必要的复杂性。最后,工厂集群可以桥接到企业集群,以最大限度地提高数据的完整性。这非常适合企业分析和机器学习,因为它们需要大量优质数据。
安全
通过互联网发送和接收制造数据的主要问题之一是网络安全。虽然真正确保安全的唯一方法是使用气隙,但这将阻止组织进行数字化转型的能力。 MQTT 的主要优势之一是安全性。虽然其他通信协议需要开放网络端口,但 MQTT 只需要到代理的出站连接。工厂不需要打开任何入站端口,这对 IT 组织非常有吸引力。
未来考虑
在以后的文章中,我将探讨 MQTT 的常见应用。虽然该协议旨在实现即插即用,但可能会对其他技术细节感兴趣。业务领导者可能想要考虑 MQTT 将如何影响他们当前的数字化转型工作。当然,工程领导者肯定想知道 MQTT 将如何影响他们。
最后,不应将 MQTT 视为现有架构的替代品。根据工业 4.0 的要求,它利用了已有的东西。将继续需要 OPC UA 和其他协议,因为它们对于控制应用程序更加冗长。但是,在聚合大量数据时,MQTT 是一个很好的选择。
工业技术