應(yīng)用

技術(shù)

物聯(lián)網(wǎng)世界 >> 物聯(lián)網(wǎng)新聞 >> 物聯(lián)網(wǎng)熱點(diǎn)新聞
企業(yè)注冊(cè)個(gè)人注冊(cè)登錄

工業(yè)物聯(lián)網(wǎng)最常用的消息傳遞協(xié)議——MQTT

2019-08-27 10:53 控制工程中國(guó)

導(dǎo)讀:消息隊(duì)列遙測(cè)傳輸(MQTT)已成為過(guò)去五年中跨多個(gè)行業(yè)應(yīng)用的主要物聯(lián)網(wǎng)消息傳輸方式之一。考慮到大多數(shù)云服務(wù)提供本機(jī)MQTT 功能,越來(lái)越多的設(shè)備制造商、軟件和服務(wù)正在實(shí)施基于MQTT 的產(chǎn)品。

MQTT作為物聯(lián)網(wǎng)消息傳輸?shù)闹匾獏f(xié)議之一, 其最初的設(shè)計(jì)始于管道SCADA系統(tǒng)的工業(yè)通信器。經(jīng)過(guò)增強(qiáng)后的MQTT,可以適用于執(zhí)行更多關(guān)鍵任務(wù)的IIoT應(yīng)用。

消息隊(duì)列遙測(cè)傳輸(MQTT)已成為過(guò)去五年中跨多個(gè)行業(yè)應(yīng)用的主要物聯(lián)網(wǎng)消息傳輸方式之一??紤]到大多數(shù)云服務(wù)提供本機(jī)MQTT 功能,越來(lái)越多的設(shè)備制造商、軟件和服務(wù)正在實(shí)施基于MQTT 的產(chǎn)品。

MQTT的設(shè)計(jì)初衷

信息技術(shù)(IT)領(lǐng)域的Facebook、云服務(wù)提供商以及許多其它公司對(duì)MQTT 的采用,可能會(huì)讓大家認(rèn)為MQTT 是針對(duì)IT 解決方案的,但MQTT 的起源卻是由工業(yè)通信問(wèn)題驅(qū)動(dòng)的。

1997 年,Phillips 66 公司安裝了市場(chǎng)上第一個(gè)基于傳輸控制協(xié)議/ 網(wǎng)絡(luò)協(xié)議(TCP/IP)的極小孔徑終端(VSAT)系統(tǒng),用于其管道SCADA 系統(tǒng)。要有效地使用這種網(wǎng)絡(luò)基礎(chǔ)設(shè)施,需要解決許多挑戰(zhàn)。在實(shí)施該系統(tǒng)之前,輪詢(xún)/ 響應(yīng)協(xié)議是任何SCADA 系統(tǒng)實(shí)施的標(biāo)準(zhǔn)。

然而,由于極小孔徑終端系統(tǒng)通信固有的傳播延遲,以及與可能未改變的過(guò)程變量持續(xù)輪詢(xún)相關(guān)的成本,Phillips 66 公司正在尋找一種更好的方法來(lái)優(yōu)化其網(wǎng)絡(luò)基礎(chǔ)設(shè)施。

到目前為止,IT 部門(mén)使用面向消息的中間件(MOM)軟件來(lái)為應(yīng)用程序解耦。它們是高效的基礎(chǔ)架構(gòu),使用消息代理來(lái)確?!耙寻l(fā)布”信息的應(yīng)用程序可以連接到“訂閱”該信息的應(yīng)用程序。信息可以在例外情況下發(fā)布給任何有興趣并訂閱該信息的應(yīng)用程序。

該想法是將這些相同類(lèi)型的基礎(chǔ)設(shè)施用于實(shí)時(shí)SCADA 系統(tǒng)。唯一的問(wèn)題是當(dāng)時(shí)市場(chǎng)上的MOM 產(chǎn)品不適合在SCADA 環(huán)境中使用?;谶@些要求,項(xiàng)目開(kāi)始開(kāi)發(fā)適合在類(lèi)似工業(yè)環(huán)境中使用的MOM 規(guī)范。

「深度解讀」工業(yè)物聯(lián)網(wǎng)最常用的消息傳遞協(xié)議——MQTT

圖1 :根據(jù)Eclipse 基金會(huì)的調(diào)查,MQTT是物聯(lián)網(wǎng)解決方案中最常用的消息傳遞協(xié)議。圖片來(lái)源:Eclipse 基金會(huì)

這最終導(dǎo)致了MQTT 設(shè)計(jì)初衷的形成。MQTT 的最初設(shè)計(jì)目標(biāo)是簡(jiǎn)單、高效、狀態(tài)和開(kāi)放。

簡(jiǎn)單。當(dāng)MQTT 首次出現(xiàn)時(shí),市場(chǎng)上可用于遠(yuǎn)程邊緣計(jì)算的硬件平臺(tái)很少; 具有64KB 內(nèi)存的8 位微處理器是常態(tài)。MQTT 必須以最少的計(jì)算資源實(shí)現(xiàn)。即使在2018年,Arduino 微控制器也可以提供完整的MQTT 通信棧。

高效。早期的極小孔徑終端系統(tǒng)提供商對(duì)發(fā)送和接收的每個(gè)字節(jié)信息收費(fèi)。MQTT 傳輸必須在網(wǎng)絡(luò)上提供最小的開(kāi)銷(xiāo)。一旦建立了MQTT會(huì)話(huà),發(fā)布的消息中只有2 字節(jié)的開(kāi)銷(xiāo)。

狀態(tài)。如果用戶(hù)為關(guān)鍵任務(wù)提供實(shí)時(shí)基礎(chǔ)架構(gòu),那么MQTT TCP/IP 連接的“狀態(tài)”至關(guān)重要。MQTT 提供了一種稱(chēng)為“連續(xù)會(huì)話(huà)感知”的機(jī)制,可通知所有關(guān)心MQTT 連接的實(shí)時(shí)狀態(tài)信息的客戶(hù)。

開(kāi)放。上世紀(jì)90 年代后期,SCADA、分布式控制系統(tǒng)(DCS)以及遙測(cè)產(chǎn)品主要基于專(zhuān)有的傳統(tǒng)輪訓(xùn)/ 響應(yīng)協(xié)議。應(yīng)當(dāng)明白,為了使MQTT 對(duì)整個(gè)行業(yè)有用,它需要成為一個(gè)任何人都可以免費(fèi)使用的開(kāi)放規(guī)范。

除了這些標(biāo)準(zhǔn),也很容易遺漏一些重要方面,例如:

安全。很多人都注意到MQTT 規(guī)范沒(méi)有定義任何安全性。這是因?yàn)镸QTT 規(guī)范基于TCP/IP。應(yīng)該時(shí)刻記住,最新的TCP/IP 安全實(shí)踐適用于MQTT 基礎(chǔ)設(shè)施。其范圍從對(duì)安全性沒(méi)有要求的專(zhuān)用網(wǎng)絡(luò),到用于連接的完整傳輸層安全性(TLS)證書(shū)。由于MQTT 是遠(yuǎn)程發(fā)起的連接,因此邊緣設(shè)備和客戶(hù)端甚至不必打開(kāi)任何TCP/IP 端口,這就大大減少了整體網(wǎng)絡(luò)安全的范圍。

有效載荷數(shù)據(jù)格式。當(dāng)涉及MQTT 有效負(fù)載中包含的信息時(shí),MQTT 與數(shù)據(jù)無(wú)關(guān)。它們可以是來(lái)自可編程邏輯控制器(PLC)的二進(jìn)制消息、JPEG 圖像、可擴(kuò)展標(biāo)記語(yǔ)言(XML)文檔或JavaScr ipt 對(duì)象表示法(JSON)字符串。MQTT 將有效載荷的編碼和解碼留給軟件提供者。

工業(yè)強(qiáng)度的MQTT

隨著使用MQTT 的物聯(lián)網(wǎng)(IoT)解決方案,開(kāi)始向執(zhí)行更多關(guān)鍵任務(wù)的工業(yè)物聯(lián)網(wǎng)(IIoT)遷移,市場(chǎng)需要一個(gè)允許基于MQTT的供應(yīng)商能夠輕松實(shí)現(xiàn)互操作的規(guī)范。盡管MQTT 規(guī)范沒(méi)有規(guī)定任何消息主題命名空間或數(shù)據(jù)表示,但I(xiàn)IoT 空間需要一個(gè)命名規(guī)范。Sparkplug 規(guī)范為IIoT 市場(chǎng)實(shí)現(xiàn)了這一點(diǎn)。

「深度解讀」工業(yè)物聯(lián)網(wǎng)最常用的消息傳遞協(xié)議——MQTT

圖2 :根據(jù)Eclipse基金會(huì)的調(diào)查, 自2016 年以來(lái),MQTT呈上升趨勢(shì), 超過(guò)62%的應(yīng)用使用消息傳遞作為標(biāo)準(zhǔn)。

開(kāi)發(fā)Sparkplug 規(guī)范是為了幫助定義在關(guān)鍵任務(wù)實(shí)時(shí)應(yīng)用程序中,如何最好地開(kāi)始使用MQTT。Sparkplug 規(guī)范定義:

1. 眾所周知的MQTT 主題名稱(chēng)空間,因此信息的發(fā)布者和訂閱者可以提前知道主題名稱(chēng)空間以實(shí)現(xiàn)互操作性。

2. 針對(duì)工業(yè)過(guò)程變量?jī)?yōu)化的二進(jìn)制有效負(fù)載。Sparkplug 規(guī)范承認(rèn)工業(yè)基礎(chǔ)設(shè)施沒(méi)有無(wú)限的帶寬,在極小孔徑終端系統(tǒng)、無(wú)線(xiàn)電和蜂窩基礎(chǔ)設(shè)施上必須運(yùn)行良好。

3.MQTT 中的“狀態(tài)”管理如何工作以及如何在SCADA、DCS 系統(tǒng)和工業(yè)控制系統(tǒng)解決方案中有效地使用它,以實(shí)時(shí)了解所有MQTT 客戶(hù)端的狀態(tài)。