導(dǎo)讀:消息隊列遙測傳輸(MQTT)已成為過去五年中跨多個行業(yè)應(yīng)用的主要物聯(lián)網(wǎng)消息傳輸方式之一??紤]到大多數(shù)云服務(wù)提供本機(jī)MQTT 功能,越來越多的設(shè)備制造商、軟件和服務(wù)正在實施基于MQTT 的產(chǎn)品。
MQTT作為物聯(lián)網(wǎng)消息傳輸?shù)闹匾獏f(xié)議之一, 其最初的設(shè)計始于管道SCADA系統(tǒng)的工業(yè)通信器。經(jīng)過增強(qiáng)后的MQTT,可以適用于執(zhí)行更多關(guān)鍵任務(wù)的IIoT應(yīng)用。
消息隊列遙測傳輸(MQTT)已成為過去五年中跨多個行業(yè)應(yīng)用的主要物聯(lián)網(wǎng)消息傳輸方式之一??紤]到大多數(shù)云服務(wù)提供本機(jī)MQTT 功能,越來越多的設(shè)備制造商、軟件和服務(wù)正在實施基于MQTT 的產(chǎn)品。
MQTT的設(shè)計初衷
信息技術(shù)(IT)領(lǐng)域的Facebook、云服務(wù)提供商以及許多其它公司對MQTT 的采用,可能會讓大家認(rèn)為MQTT 是針對IT 解決方案的,但MQTT 的起源卻是由工業(yè)通信問題驅(qū)動的。
1997 年,Phillips 66 公司安裝了市場上第一個基于傳輸控制協(xié)議/ 網(wǎng)絡(luò)協(xié)議(TCP/IP)的極小孔徑終端(VSAT)系統(tǒng),用于其管道SCADA 系統(tǒng)。要有效地使用這種網(wǎng)絡(luò)基礎(chǔ)設(shè)施,需要解決許多挑戰(zhàn)。在實施該系統(tǒng)之前,輪詢/ 響應(yīng)協(xié)議是任何SCADA 系統(tǒng)實施的標(biāo)準(zhǔn)。
然而,由于極小孔徑終端系統(tǒng)通信固有的傳播延遲,以及與可能未改變的過程變量持續(xù)輪詢相關(guān)的成本,Phillips 66 公司正在尋找一種更好的方法來優(yōu)化其網(wǎng)絡(luò)基礎(chǔ)設(shè)施。
到目前為止,IT 部門使用面向消息的中間件(MOM)軟件來為應(yīng)用程序解耦。它們是高效的基礎(chǔ)架構(gòu),使用消息代理來確?!耙寻l(fā)布”信息的應(yīng)用程序可以連接到“訂閱”該信息的應(yīng)用程序。信息可以在例外情況下發(fā)布給任何有興趣并訂閱該信息的應(yīng)用程序。
該想法是將這些相同類型的基礎(chǔ)設(shè)施用于實時SCADA 系統(tǒng)。唯一的問題是當(dāng)時市場上的MOM 產(chǎn)品不適合在SCADA 環(huán)境中使用。基于這些要求,項目開始開發(fā)適合在類似工業(yè)環(huán)境中使用的MOM 規(guī)范。
圖1 :根據(jù)Eclipse 基金會的調(diào)查,MQTT是物聯(lián)網(wǎng)解決方案中最常用的消息傳遞協(xié)議。圖片來源:Eclipse 基金會
這最終導(dǎo)致了MQTT 設(shè)計初衷的形成。MQTT 的最初設(shè)計目標(biāo)是簡單、高效、狀態(tài)和開放。
簡單。當(dāng)MQTT 首次出現(xiàn)時,市場上可用于遠(yuǎn)程邊緣計算的硬件平臺很少; 具有64KB 內(nèi)存的8 位微處理器是常態(tài)。MQTT 必須以最少的計算資源實現(xiàn)。即使在2018年,Arduino 微控制器也可以提供完整的MQTT 通信棧。
高效。早期的極小孔徑終端系統(tǒng)提供商對發(fā)送和接收的每個字節(jié)信息收費(fèi)。MQTT 傳輸必須在網(wǎng)絡(luò)上提供最小的開銷。一旦建立了MQTT會話,發(fā)布的消息中只有2 字節(jié)的開銷。
狀態(tài)。如果用戶為關(guān)鍵任務(wù)提供實時基礎(chǔ)架構(gòu),那么MQTT TCP/IP 連接的“狀態(tài)”至關(guān)重要。MQTT 提供了一種稱為“連續(xù)會話感知”的機(jī)制,可通知所有關(guān)心MQTT 連接的實時狀態(tài)信息的客戶。
開放。上世紀(jì)90 年代后期,SCADA、分布式控制系統(tǒng)(DCS)以及遙測產(chǎn)品主要基于專有的傳統(tǒng)輪訓(xùn)/ 響應(yīng)協(xié)議。應(yīng)當(dāng)明白,為了使MQTT 對整個行業(yè)有用,它需要成為一個任何人都可以免費(fèi)使用的開放規(guī)范。
除了這些標(biāo)準(zhǔn),也很容易遺漏一些重要方面,例如:
安全。很多人都注意到MQTT 規(guī)范沒有定義任何安全性。這是因為MQTT 規(guī)范基于TCP/IP。應(yīng)該時刻記住,最新的TCP/IP 安全實踐適用于MQTT 基礎(chǔ)設(shè)施。其范圍從對安全性沒有要求的專用網(wǎng)絡(luò),到用于連接的完整傳輸層安全性(TLS)證書。由于MQTT 是遠(yuǎn)程發(fā)起的連接,因此邊緣設(shè)備和客戶端甚至不必打開任何TCP/IP 端口,這就大大減少了整體網(wǎng)絡(luò)安全的范圍。
有效載荷數(shù)據(jù)格式。當(dāng)涉及MQTT 有效負(fù)載中包含的信息時,MQTT 與數(shù)據(jù)無關(guān)。它們可以是來自可編程邏輯控制器(PLC)的二進(jìn)制消息、JPEG 圖像、可擴(kuò)展標(biāo)記語言(XML)文檔或JavaScr ipt 對象表示法(JSON)字符串。MQTT 將有效載荷的編碼和解碼留給軟件提供者。
工業(yè)強(qiáng)度的MQTT
隨著使用MQTT 的物聯(lián)網(wǎng)(IoT)解決方案,開始向執(zhí)行更多關(guān)鍵任務(wù)的工業(yè)物聯(lián)網(wǎng)(IIoT)遷移,市場需要一個允許基于MQTT的供應(yīng)商能夠輕松實現(xiàn)互操作的規(guī)范。盡管MQTT 規(guī)范沒有規(guī)定任何消息主題命名空間或數(shù)據(jù)表示,但I(xiàn)IoT 空間需要一個命名規(guī)范。Sparkplug 規(guī)范為IIoT 市場實現(xiàn)了這一點(diǎn)。
圖2 :根據(jù)Eclipse基金會的調(diào)查, 自2016 年以來,MQTT呈上升趨勢, 超過62%的應(yīng)用使用消息傳遞作為標(biāo)準(zhǔn)。
開發(fā)Sparkplug 規(guī)范是為了幫助定義在關(guān)鍵任務(wù)實時應(yīng)用程序中,如何最好地開始使用MQTT。Sparkplug 規(guī)范定義:
1. 眾所周知的MQTT 主題名稱空間,因此信息的發(fā)布者和訂閱者可以提前知道主題名稱空間以實現(xiàn)互操作性。
2. 針對工業(yè)過程變量優(yōu)化的二進(jìn)制有效負(fù)載。Sparkplug 規(guī)范承認(rèn)工業(yè)基礎(chǔ)設(shè)施沒有無限的帶寬,在極小孔徑終端系統(tǒng)、無線電和蜂窩基礎(chǔ)設(shè)施上必須運(yùn)行良好。
3.MQTT 中的“狀態(tài)”管理如何工作以及如何在SCADA、DCS 系統(tǒng)和工業(yè)控制系統(tǒng)解決方案中有效地使用它,以實時了解所有MQTT 客戶端的狀態(tài)。