了解消息队列遥测传输协议 (MQTT) 在工业自动化行业的应用

发布者:EEWorld资讯最新更新时间:2021-07-01 来源: EEWORLD关键字:MQTT 手机看文章 扫描二维码
随时随地手机看文章

消息队列遥测传输 (MQTT) 的历史


MQTT 由 Andy Stanford-Clark 与 IBM 和 Arlen Nipper 于 1999 年开发,用于通过卫星将石油管道上的测量设备连接到他们的 SCADA(监督控制和数据采集)系统。他们开发这个协议是因为他们需要一些轻量级、带宽资源丰富且消耗很少功耗的协议来通过卫星链路。


2014年,MQTT正式成为OASIS(结构化信息标准促进组织)开放标准。它旨在保持开源实现,以确保在机器对机器 (M2M) 行业中得到广泛采用。


2019年,OASIS发布了官方更新的MQTT 5.0标准。5.0 版包括诸多新功能:例如原因代码、共享订阅、消息到期和主题别名。


如今,MQTT 已被许多工业领域采用,包括汽车、公用事业、物流、制造、智能家居、消费品和运输,连接全球数百万台设备。


什么是消息队列遥测传输 (MQTT)?


MQTT 代表消息队列遥测传输,是一种使用发布/订阅 (PubSub) 模型用于物联网 (IoT) 和工业 4.0 的通信协议。它非常轻量级,在 TCP/IP 堆栈之上执行,并且设计用于连接需要开发人员最少编码的分布式设备。


MQTT 具有带宽效率且不占用资源。它还可以在安全套接字层 (SSL)/传输层安全 (TLS)(一种建立在 TCP/IP 上的安全协议)上运行,以确保设备之间的所有数据消息都是加密和安全的。


发布订阅模型


在 MQTT PubSub 模型中,客户端是消息生产者(发布者)或消费者(订阅者)。客户端之间不建立直接链接,也不知道彼此的位置或 IP 地址。相反,它们都连接到一个 MQTT 代理,该代理仅充当流量(消息)存储和导向器,如图 1 所示。


image.png

图 1. MQTT 中的发布/订阅模型。图片由 Behr Technologies 提供

 

在这个例子中,有一个发布者和两个订阅者订阅了同一个发布者获得相同的信息。但是,在许多应用程序中,经常会看到多对多关系,如图 2 所示。


image.png

图 2. MQTT 中的多对多关系。图片由 ResearchGate 提供

 

MQTT 代理只将它从发布者接收到的消息发送给订阅了 MQTT 主题的订阅者。接下来我们将讨论 MQTT 主题。


消息队列遥测传输 (MQTT) 的内部


消息队列遥测传输 (MQTT) 主题


在 MQTT 中,主题是指一个分层的 UTF-8 文本字符串,代理使用它来过滤消息并将消息传递给每个订阅者。主题由一个或多个主题级别组成,每个主题级别用正斜杠分隔。所有消息都必须包含一个主题,并且订阅者必须订阅该主题。主题示例以以下格式呈现(重要的是要注意主题区分大小写)。


我的房子/一楼/房间1/温度


我的房子/一楼/房间4/温度


我的房子/二楼/房间2/湿度


MQTT 是一种支持异步通信的消息传递协议。它通过只知道代理的 IP 地址和端口号来发布或订阅消息,从而在空间上解耦消息的生产者和使用者。它还通过在网络断开时为客户端存储消息来解耦时间。这使得该协议在不稳定的网络(如蜂窝和无线电网络)中具有很强的可扩展性。


MQTT 以纯文本形式发送连接凭证,因此不提供安全措施和身份验证本身。这可以通过使用带有用户名、密码保护连接的 TLS 加密并要求客户端提供与代理证书匹配的证书来解决。


默认的未加密 MQTT 端口为 1883。加密端口为 8883。


消息队列遥测传输 (MQTT) 服务质量 (QoS)


MQTT 中的服务质量 (QoS) 是发布者和订阅者之间关于保证传递消息的协议。


QoS分为三个级别:


0–最多一次,代理不确定

1–至少一次,代理向发布者发送确认

2 – 恰好一次,发布者和订阅者之间的握手


当发布者向 MQTT 代理发布消息时,它会确定该消息的 QoS 级别。当代理将消息转发给订阅者时,它也会发送与发布者设置的相同的 QoS。


级别 0 对带宽的负担较小,并在认为连接可靠时使用。使用最高级别 2 可以保证交付,但会增加负载数据传输。


消息队列遥测传输 (MQTT) Sparkplug B


Eclipse Foundation 管理着一个与 MQTT 兼容的 Sparkplug 协议规范,其中 MQTT 是通信协议,Sparkplug 定义了数据结构。通过在 MQTT 之上添加新的要求和功能,为实时和关键任务工业应用选择了该规范。


Sparkplug B 向 MQTT 实现添加了三个主要要求:


强制状态意识。发布者必须在连接时发布证明,定义所有主题,并通过代理向订阅者广播其在线状态。如果与网络断开连接,它还会向代理提交证明以进行分发。图 3 描述了与 MQTT 代理建立设备通信的过程。

 

image.png

图 3. MQTT Sparkplug 中的设备会话建立。图片由 Eclipse 基金会提供 [PDF]

 

有效载荷定义。MQTT 是数据不可知的,可以与任何客户端一起运行,但同时增加了订阅者将增加数据的负担。Sparkplug 将 MQTT 负载与结构化元数据打包在一起,以便任何 Sparkplug 客户端都可以识别消息。然后将整个有效载荷压缩成更小的占地面积。


标准主题格式。 MQTT 中的主题可能会掩盖互操作性,因为不同的边缘设备可以使用不同的命名约定。 Sparkplug 定义了一种标准的主题格式,以减少客户端之间的不一致并使其能够正确解释数据。

 

边缘到云的连接


MQTT 是跨平台的。代理可以在 Windows、Linux 和其他平台上安装和运行。展望未来,越来越多的安装将在 Azure 和 Google Cloud 等云服务器上运行。在云上托管代理允许开发人员快速启动、轻松管理和监控代理,并在需要连接更多设备时进行扩展。


当数据通过云时,安全性变得更加重要。开发者必须注意并正确配置和处理安全连接、认证、授权和加密,以维护数据的安全性和完整性。


MQTT 于 1999 年开发用于将石油管道连接到 SCADA,并且一直用于工业环境。它是一种用于各种工业行业的通信协议。


关键字:MQTT 引用地址:了解消息队列遥测传输协议 (MQTT) 在工业自动化行业的应用

上一篇:MIKROE 的新SiBRAIN MCU 开发标准,轻松更换 MCU 而无硬件代价
下一篇:Intel官宣开发RISC-V处理器:明年首发7nm工艺

推荐阅读最新更新时间:2024-11-13 10:21

基于STM32实现MQTT
1、MQTT协议 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的 轻量级 通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。 协议详情: MQTT Version 3.1.1(英文版) (中文版) 2、STM32实现的自我理解 既然是一个协议,所以有一个基本的物理网络
[单片机]
基于STM32实现<font color='red'>MQTT</font>
无线传输技术如何助力风力发电的创新
本文编译自u-blox Ping Monitor、Lattech Systems 与 u-blox 合作,将声学传感器数据连接到云端,以持续监测风力涡轮机叶片的健康状况,从而改变清洁能源设备的运维方式。 物联网设备和企业之间很难进行数据通信 从表面上看,数据传输似乎很简单。有一些物联网传感器设备、一些重要数据、一个网络和一个接收数据的云平台。但在启动任何物联网项目之前,都需要解决一系列复杂的问题。什么连接标准?哪个网络?如何规模化?安全吗?功耗和数据传输率如何?数据接口是什么?成本如何?找到正确答案对于项目的成功至关重要。 Ping Monitor 和 Lattech Systems 与 u-blox 合作,将声
[物联网]
无线传输技术如何助力风力发电的创新
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多往期活动
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved