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