工业物联网协议对比:MQTT Sparkplug vs OPC-UA

简介: 本文将全面比较 MQTT Sparkplug 和 OPC UA 以及它们的衍生版本,帮助您更清楚地了解哪种协议更适合您的需求。

引言

工业系统需要确保数据的无缝交换,因此对于高效、安全的通信协议具有极高的依赖性。MQTT Sparkplug 和 OPC UA 是两个经常被提到的工业协议。本文将全面比较 MQTT Sparkplug 和 OPC UA 以及它们的衍生版本,帮助您更清楚地了解哪种协议更适合您的需求。

OPC Classic 和 OPC UA

OPC UA 的前身是 OPC Classic(也称为 OPC DA 或 OPC Data Access),是由 OPC 基金会开发的一套工业自动化标准。OPC Classic 规范于 1996 年首次发布,它定义了一种标准化的方法,用于在软件应用和工业硬件设备(如传感器、控制器和可编程逻辑控制器)之间交换数据。

然而,OPC Classic 有个明显缺点:它与微软 Windows 操作系统及其专有的 DCOM 技术紧密耦合。这种依赖性严重影响了协议的可用性、扩展性、互操作性、安全性和平台独立性,这对一个开放标准来说是巨大的制约。

为了克服这些限制,OPC 基金会于 2006 年开始开发了 OPC UA (OPC Unified Architecture) 作为 OPC Classic 规范的后继者。这两种规范在功能上是等效的,但使用不同的底层通信技术。此外,OPC Classic DA 3.0 也于同年发布,并且至今仍在使用中。

为物联网而生的协议:MQTT 的演进

在 20 世纪 90 年代末,Andy Stanford-Clark 和 Arlen Nipper 参与了一个关于管道监测的项目,该项目需要一种轻量级协议,用于与远程传感器和设备进行通信。该项目要求在低功耗、低带宽的环境下实现监测功能。然而,当时的消息传输协议,如 HTTP 和 SMTP,被认为过于臃肿和低效,不适合这种特殊的场景。

为了应对这些挑战,一种发布/订阅模式的消息传输协议 MQTT 应运而生。MQTT 以其精简的代码和极低的带宽消耗而著称,因此在低功耗、低带宽的场景下具有显著的优势。它的主要目标是实现设备和系统之间的大规模实时数据交换,即使面对不同的数据格式和结构,也能保证数据通信的标准化。这一特点使得 MQTT 成为物联网和机器对机器(M2M)应用的理想选择。

MQTT 于 2010 年被结构化信息标准促进组织(OASIS)发布为开放标准,从而使其成为各个组织和行业可使用的通信协议。随后,在 2014 年发布了 MQTT 3.1.1,引入了一些新的特性,例如改进的错误处理和对服务质量(QoS)级别的支持。再后来,在 2019 年发布了 MQTT 5.0,进行了重大的改进,包括对自定义属性的支持、持久会话的实现以及错误报告的优化。

优势互补:OPC UA over MQTT

MQTT 发布/订阅模型相比经典 OPC UA 客户端-服务器模型有以下几个优势:

  • 可扩展性:发布/订阅模型可以有效地处理大量的设备和系统,非常适合工业自动化和物联网应用。
  • 实时数据交换:发布/订阅模型是为实现实时数据交换而专门设计的,它能让设备和系统及时感知和适应环境变化。
  • 减少网络流量:发布/订阅模型通过只传递设备和系统需要的数据,而非所有数据,可以有效地降低网络流量。

2018 年,OPC 基金会发布了 OPC UA 发布/订阅规范,它为 OPC UA 制定了一种发布/订阅的通信模型,该模型可以采用 MQTT 协议作为传输方式。OPC UA 发布/订阅模型非常强大,为工业自动化和物联网应用带来了巨大的好处。

提升工业连接性:MQTT Sparkplug 规范

MQTT 协议在物联网场景中取得了巨大的成功,但由于互操作性不足,它在工业自动化系统中的应用受到了限制。为了解决这个问题,Cirrus Link Solutions 在 2016 年推出了 Sparkplug 规范,旨在简化 MQTT 在工业自动化系统中的部署和使用。该规范为 MQTT 消息定义了一个标准化的格式,使得不同设备和应用之间能够方便地进行数据交换。

Sparkplug 的一个显著特点是它支持设备之间的双向通信。这种能力使得设备不仅可以发送命令,还可以接收来自网络中其他设备的反馈。

这篇博客通过介绍 5 个关键概念,阐述了为何 MQTT Broker 是实现 Sparkplug 设计原则的理想选择:Sparkplug 规范中关于 MQTT Broker 的 5 个关键概念。

OSI 模型概述

MQTT 和 OPC UA 是工业自动化和物联网应用中常用的两种协议,它们拥有不同的架构和设计,体现了各自的用途。以下是 MQTT、OPC UA 及其变体在开放系统互联(OSI)模型方面的比较:

OSI 模型 MQTT OPC UA MQTT Sparkplug OPC UA over MQTT
应用层 发布/订阅机制 OPC UA 通信(60 种数据类型) Sparkplug 通信(18 种数据类型) OPC UA
发布/订阅通信
表示层 未定义 UA-JSON
UA-XML
UA-Binary
Protobuf UA-JSON
UA-XML
UA-Binary
会话层 无会话 客户端-服务器会话管理 Sparkplug 会话感知 无会话
传输层 TCP/IP TCP/IP MQTT MQTT

传输层:MQTT 和 OPC UA 都使用 TCP/IP 作为底层通信协议。MQTT Sparkplug 和 OPC UA over MQTT 则使用 MQTT 作为传输协议,它们都采用了 MQTT 的发布/订阅模型。

会话层:OPC UA 包含负责管理客户端和服务器之间连接的会话层,处理诸如会话建立、身份验证和加密等任务。相比之下,MQTT 不具备会话层管理功能。然而,MQTT Sparkplug 通过在会话层引入 Sparkplug 会话感知来弥补这个不足。

表示层:OPC UA 拥有定义良好的信息模型,该模型定义了客户端和服务器进行数据交换时数据的结构和语义,例如 UA-JSON 和 UA-binary。相比之下,MQTT 缺乏正式的信息模型,而是依赖于基于主题的消息来实现客户端和服务器之间的数据通信。MQTT Sparkplug 则是通过指定 Google Protobuf 作为消息格式来弥补这一差距,以增强 MQTT 的能力。

应用层:MQTT 和 OPC UA 在应用层协议上有明显的区别。MQTT 使用发布/订阅模型,通过主题来组织消息,而 OPC UA 使用客户端/服务器模型,通过分层对象模型来组织数据。OPC UA 发布/订阅规范是对 OPC UA 客户端/服务器模型的一种扩展。

MQTT Sparkplug 和 OPC UA 对比

MQTT Sparkplug 和 OPC UA 各有优劣,因此在不同的使用场景中,可能会出现某个协议比另一个更加适用的情况。这两种协议及其衍生协议之间的一些主要区别如下:

指标 MQTT MQTT Sparkplug OPC UA OPC UA over MQTT
消息传输模型 发布/订阅 发布/订阅 客户端/服务器 发布/订阅
带宽使用 开销最低,低带宽和低功耗 开销最低,低带宽和低功耗 高代码占用,高带宽 高代码占用,高带宽
消息载荷 未定义 轻量级消息,通常小于 OPC UA 复杂的数据类型,其消息大小可以远大于 MQTT Sparkplug 复杂的数据类型,其消息大小可以远大于 MQTT Sparkplug
互操作性 不具备互操作性 具备互操作性(18 种数据类型) 高度互操作性(60 种数据类型) 高度互操作性(60 种数据类型)
扩展性 高度可扩展 高度可扩展,每秒能处理百万级消息 可扩展性较好,但需要更复杂的架构来处理大量数据 比 OPC UA 客户端/服务器模型具有更好的可扩展性
集成便利性 使用简单,配置要求最少 使用简单,配置要求最少 需要较多的安装和配置 需要较多的安装和配置
服务质量 QoS 0(至多一次)、QoS 1(至少一次)和 QoS 2(仅一次) QoS 0(至多一次)、QoS 1(至少一次)和 QoS 2(仅一次) 提供可靠的传输层,确保消息传递有序且不丢失 提供可靠的传输层,确保消息传递有序且不丢失
状态感知
自动发现
应用领域 物联网、家庭自动化和 M2M 应用 工业物联网和 M2M 应用 工业自动化 工业自动化
实时性
安全性 安全性不如 OPC-UA 安全性不如 OPC-UA 数字证书、数字签名、数据加密和安全认证 数字证书、数字签名、数据加密和安全认证
信息模型 不具备内置的信息建模支持 支持复杂的信息建模,但不及 OPC UA 多 支持复杂的信息建模系统,允许创建复杂的数据结构和模型 支持复杂的信息建模系统,允许创建复杂的数据结构和模型

简而言之,OPC UA 是一个开放标准,它包含了一套定义明确的数据类型规范。而 MQTT Sparkplug 也是一个开放标准,但它在数据类型的标准化方面做得不够。因此,在数据传输过程中,MQTT Sparkplug 产生的协议开销更小。

结语

MQTT Sparkplug 使用了轻量级的消息传输协议,非常适合低带宽或不稳定的网络环境。而 OPC UA 使用了更强大的消息传输协议,能够处理更多的数据量,更适合高速和安全的网络环境。

OPC UA 和 MQTT 之间的竞争一直持续至今。目前,EMQ 正在推出针对汽车行业的 MQTT over QUIC 协议,而 OPC 基金会也发布了 OPC UA over TSN。OPC UA over TSN 提供了一种在以太网上传输实时数据的标准化方法,旨在简化复杂的工业自动化和控制系统。

版权声明: 本文为 EMQ 原创,转载请注明出处。
原文链接:https://www.emqx.com/zh/blog/a-comparison-of-iiot-protocols-mqtt-sparkplug-vs-opc-ua

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
3月前
|
监控 供应链 安全
物联网卡在工业领域的应用
物联网卡在工业领域的应用极大地推动了行业的智能化、自动化和高效化进程。以下是物联网卡在工业领域中各操作类型中的具体应用作用:
|
19天前
|
数据采集 传感器 监控
多协议网关BL110钡铼6路RS485转MQTT协议云网关
BL110钡铼6路RS485转MQTT协议云网关是一款高性能、易配置的工业级设备,适用于各种需要远程监控和数据采集的物联网应用场景。通过将传统RS485设备的数据转换为MQTT协议并上传至云平台,实现了设备的远程管理和智能控制,极大地提升了系统的管理效率和响应速度。
26 2
|
1月前
|
传感器 消息中间件 物联网
常用的物联网协议
常用的物联网协议包括:MQTT(消息队列遥测传输)、CoAP(受限应用协议)、HTTP/HTTPS、LWM2M(轻量级机器对机器)和Zigbee等。这些协议在不同的应用场景中发挥着重要作用,如数据传输、设备管理等。
|
2月前
|
网络协议 物联网 网络性能优化
物联网协议比较 MQTT CoAP RESTful/HTTP XMPP
【10月更文挑战第18天】本文介绍了物联网领域中四种主要的通信协议:MQTT、CoAP、RESTful/HTTP和XMPP,分别从其特点、应用场景及优缺点进行了详细对比,并提供了简单的示例代码。适合开发者根据具体需求选择合适的协议。
66 5
|
1月前
|
消息中间件 监控 物联网
物联网8大协议介绍及对比
根据具体的应用需求,选择合适的协议可以大幅提升系统的性能和可靠性。希望本文能为您在物联网协议的选择和应用中提供有价值的参考。
213 0
|
2月前
|
传感器 监控 供应链
物联网怎么推动工业数字化转型?
物联网(Internet of Things,loT)是指通过信息传感设备,如射频识别(RFID)、红外感应器、全球定位系统、激光扫描器等装置,按约定的协议,将任何物品与互联网连接起来,进行信息交换和通信,以实现智能化识别、定位、跟踪、监控和管理的一种网络。
41 0
|
3月前
|
消息中间件 监控 物联网
MQTT协议对接及RabbitMQ的使用记录
通过合理对接MQTT协议并利用RabbitMQ的强大功能,可以构建一个高效、可靠的消息通信系统。无论是物联网设备间的通信还是微服务架构下的服务间消息传递,MQTT和RabbitMQ的组合都提供了一个强有力的解决方案。在实际应用中,应根据具体需求和环境进行适当的配置和优化,以发挥出这两个技术的最大效能。
206 0
|
3月前
|
网络协议 物联网 网络性能优化
物联网江湖风云变幻!MQTT CoAP RESTful/HTTP XMPP四大门派谁主沉浮?
【9月更文挑战第3天】物联网(IoT)的兴起催生了多种通信协议,如MQTT、CoAP、RESTful/HTTP和XMPP,各自适用于不同场景。本文将对比这些协议的特点、优缺点,并提供示例代码。MQTT轻量级且支持QoS,适合大规模部署;CoAP基于UDP,适用于低功耗网络;RESTful/HTTP易于集成但不适合资源受限设备;XMPP支持双向通信,适合复杂交互应用。通过本文,开发者可更好地选择合适的物联网通信协议。
45 2
|
4月前
|
物联网 C# 智能硬件
智能家居新篇章:WPF与物联网的智慧碰撞——通过MQTT协议连接与控制智能设备,打造现代科技生活的完美体验
【8月更文挑战第31天】物联网(IoT)技术的发展使智能家居设备成为现代家庭的一部分。通过物联网,家用电器和传感器可以互联互通,实现远程控制和状态监测等功能。本文将探讨如何在Windows Presentation Foundation(WPF)应用中集成物联网技术,通过具体示例代码展示其实现过程。文章首先介绍了MQTT协议及其在智能家居中的应用,并详细描述了使用Wi-Fi连接方式的原因。随后,通过安装Paho MQTT客户端库并创建MQTT客户端实例,演示了如何编写一个简单的WPF应用程序来控制智能灯泡。
150 0
|
2月前
|
消息中间件 JSON Java
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
98 5
下一篇
DataWorks