天天看點

工業物聯網協定對比:MQTT Sparkplug vs OPC-UA

作者:EMQ映雲科技

引言

工業系統需要確定資料的無縫交換,是以對于高效、安全的通信協定具有極高的依賴性。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 提供了一種在以太網上傳輸實時資料的标準化方法,旨在簡化複雜的工業自動化和控制系統。

繼續閱讀