比較MQTT與OPC-UA

在今天的博客中,我們將比較工業物聯網(IIoT)環境中最流行的兩種協議:MQTTOPC-UA,以試圖闡明它們的區別和用途。讓我們從這兩個衆所周知的消息交換協議的主要特徵的簡短摘要開始,其中MQTT是IoT世界中最受歡迎的協議之一,並且在幾年前,還是工業環境中的OPC UA。

MQTT

MQTT(消息隊列遙測傳輸)是一種輕量級的消息協議,該協議基於訂閱發佈模型,其中發佈者將消息發送到服務器,並且該發佈者將消息轉發給訂閱者,從而避免了訂閱者和發佈者之間的點對點連接,這使訂閱者不需要知道誰提供了所訂閱的信息。MQTT旨在在低資源設備,低帶寬網絡和高延遲中實現。

遵循訂閱發佈模型的MQTT協議在網絡中定義了兩個實體:代理(也稱爲服務器)和客戶端。客戶端是將與代理進行交互的任何設備,可以發佈消息或訂閱主題。主題是在代理中發佈消息的路由。這有助於我們對信息進行分類並更好地管理消息。

消息遵循以下格式:

Company/oven1/temperature

通過使用此結構定義自己,主題使我們可以使用通配符來增加其靈活性,從而使我們可以預訂多個主題。
#-通配符多級

±通配符單級

讓我們假設我們現在有以下主題:

company/oven2/temperature

company/oven/humidity

在這裏插入圖片描述
使用通配符,我們可以訂閱 "company/oven1/ 中的所有消息,選擇主題 company/oven1/#,如果現在我們只想接收烤箱的所有溫度,則只需訂閱該主題 company/*/temperature。在代理髮布了它們各自主題內的所有消息之後,代理負責接收消息並將它們轉發給訂閱了這些主題的客戶。

如果需要發送安全消息,則通過TCP連接或加密的TLS連接建立用於發送消息的客戶端-服務器連接。

該消息可以是有效負載的任何數據格式,例如JSONXML加密的二進制Base64。這爲協議提供了很大的靈活性,但是目標客戶端必須能夠分析負載的類型。

該協議支持發送具有服務質量的消息,剩下三個不同的級別可供選擇:

  • 0,無服務質量。該消息僅發送一次,以防客戶端不可用,該消息將丟失。
  • 1,消息將被重新發送,直到至少到達一次,這可能導致消息接收中的某些重複。
  • 2,該消息將僅到達客戶端一次。

對於所有這些功能(例如低帶寬消耗),其在設計消息內容時的靈活性使其成爲低功耗設備的理想選擇,可以將信息發送到服務器,例如ArduinoRaspberry Pi商用家庭自動化解決方案,其中平臺開發人員本身知道其消息內容應如何。

OPC-UA

OPC UA(開放平臺通信統一體系結構)是一種獨立於平臺的標準,通過該標準,各種類型的系統和設備可以通過在客戶端和服務器之間發送請求和響應消息進行通信,或者通過訂閱發佈模型與MQTT類似地進行通信。

OPC UA服務器定義了可以提供給客戶端的服務,可以由客戶端動態發現的對象模型以及遵循協議本身定義的數據類型的數據模型。

一個客戶端可以與一個或多個服務器通信,一個服務器可以相同的方式與多個客戶端通信。服務器可以充當與其他服務器通信的客戶端。

在這裏插入圖片描述
OPC UA提供了一致且集成的地址空間(AddressSpace)和服務模型。這使單個服務器可以將數據,警報和事件集成到該地址空間中,並使用其集成服務提供對它們的訪問,該集成服務包含用於客戶檢測和恢復通信故障的機制。

在這裏插入圖片描述

OPC UA提供了用於對用戶,客戶端和服務器進行身份驗證,檢查通信的完整性並通過加密和簽名消息在傳輸級別提供安全性的安全性機制。

OPC UA尋求通過建立通用的通信形式來促進不同製造商的設備之間的操作方式,這使其在不同製造商的設備可以共存的工業環境中特別有用,允許所有這些設備與單個客戶端進行通信。 ,甚至設備之間也是如此。

比較

當前,在看到它們的主要特徵之後,我們可以肯定地說,對這兩個協議進行比較並不完全公平。

MQTT是一種協議,其中數據字段編碼及其內容特定於每個應用程序,因此,當消息的通信用於針對那些數據字段開發的特定應用程序時,它將很有用。

OPC UA(統一體系結構)是一個完整的體系結構,其中通信協議只是一部分。OPC UA應用程序允許查看所有網絡節點,方法,數據結構。通信既可以基於已發佈的訂閱模型,也可以基於客戶端服務器模型,在該模型中,服務器顯示一組服務來訪問網絡的節點,從而使服務器的讀取,寫入,調用方法等成爲可能。

現在讓我們舉一個例子,例如編寫PLC中託管的變量。

正如我們前面所看到的,MQTT被設計爲輕量級且節能的。因此,它沒有實現對主題的搜索,也沒有實現對消息發佈位置的代理的搜索,這樣做的前提是客戶必須事先知道它。同樣,它沒有爲在機器中寫入變量實現任何機制。

因此,對於此實現,我們將需要一個客戶端程序,該客戶端程序已預訂代理中的主題,該程序必須處理髮布的消息,訪問PLC並寫入變量。

這有幾個問題:

在處理消息時,發佈的消息沒有特定的格式,因此,訂戶必須知道他將接收消息的格式。
根據製造商的不同,在PLC中寫入數據的方式也有所不同。
解決了這些問題後,我們的客戶端程序將僅對特定的計算機和發佈者有效。

所有這些問題都可以通過OPC UA解決。爲了在OPC UA服務器中寫入變量,只需來自OPC客戶端本身的一系列請求即可。協議將遵循的步驟是:打開安全通道,查看可用端點的列表,創建會話,寫入變量的值,關閉會話並關閉通道。

另一方面,不發送寫請求的發送而進行寫操作的帶寬消耗在使用MQTT協議發送要寫的變量時消耗了約600字節,大約消耗了17個字節。

我們得出的結論是,每種協議都必須按其設計目的使用。MQTT適用於資源少,帶寬低,網絡延遲高的設備,或者適用於需要該協議和OPC UA適用於工業環境的靈活性的應用程序,因爲它尋求統一與不同工業設備製造商的操作方式,這是一個完整的解決方案,從設備的通信到它們的互操作性,這些方面的帶寬消耗的增長並不是至關重要的,以至於不能彌補OPC UA帶給我們的所有優勢。

Muutech基於Zabbix和Grafana的Minerva平臺可同時使用這兩種協議,因此,如果您需要一個將IoT世界與工業和IT系統世界結合在一起的監控平臺,請隨時與我們聯繫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章