物聯網行業最重要的就是通信技術,物聯網發展至今,出現了許多種協議,無論何種協議作用無外乎都是將”各類事物”通過各種協議連接到物聯網中,以實現物與物之間的通信。今天,本文介紹兩種物聯網協議中的補充協議——MQTT和Modbus協議,幫助大家快(kuai)速(su)了解這兩(liang)種協議。
Modbus是一(yi)個串行通信協議(yi),首次出(chu)現于1979年(nian),是連接(jie)行業(ye)設備實(shi)際使(shi)用的標準(zhun)協議(yi)。MQTT早在(zai)20年(nian)前便已出(chu)現,但是將這兩個協議(yi)結(jie)合在(zai)一(yi)起使(shi)用,能(neng)夠為深(shen)度嵌入式設備提供物聯網的規模(mo)和連接(jie)性。下圖展(zhan)示了(le)這些協議(yi)之間(jian)的一(yi)般關(guan)系,同時介紹了(le)連接(jie)的支持解決方(fang)案:物聯網網關(guan)。
物聯網(wang)網(wang)關作為物聯網(wang)通信的支持解(jie)決方案,現在讓我們(men)來看一下Modbus和MQTT,以了(le)解(jie)其(qi)區別以及(ji)如何在物聯網(wang)中(zhong)互相補充。
Modbus
自1979年首次出現至今,Modbus已經演變(bian)為一(yi)套全面的(de)支持多種物理鏈(lian)接的(de)協議(yi)集(如RS485)。Modbus的(de)核(he)心是一(yi)個串行通信協議(yi),采用主從(cong)模式。主機(ji)向從(cong)機(ji)發送(song)請求,從(cong)機(ji)予以回復。在標準Modbus網絡(luo)中(zhong),有一(yi)臺(tai)主機(ji)以及最多247臺(tai)從(cong)機(ji)(但是,如果采用2字節尋址,則可顯著提(ti)高這一(yi)界限)。
借助RS485,主從(cong)(cong)機(ji)之間的通信發生在指(zhi)示(shi)功(gong)能碼(ma)的幀中。該功(gong)能碼(ma)可(ke)識別要操作的功(gong)能,如讀取獨立輸入(ru);讀取先進先出隊列;或執行診斷函數。然后,從(cong)(cong)機(ji)根據收到的功(gong)能碼(ma)進行響(xiang)應,該響(xiang)應較為簡單(dan),由一(yi)組字節指(zhi)示(shi)。因此,從(cong)(cong)機(ji)可(ke)以是(shi)智(zhi)能設(she)備,也可(ke)以是(shi)只有一(yi)個傳感器(qi)的簡單(dan)設(she)備。
從該描(miao)述中,您可以看到Modbus協議非常簡單(dan),但(dan)是(shi)其(qi)(qi)作為協議的(de)開放性(xing)使其(qi)(qi)成為整(zheng)個行業或SCADA系(xi)統的(de)實際通信協議。
消息隊列遙測傳輸
MQTT是一個開放的輕量級機器對(dui)機器協議,專為物聯網(wang)交互設計。MQTT網(wang)絡包含一個MQTT經紀(ji)人(ren)(broker),負責(ze)協調MQTT代理(li)之間的交互。代理(li)是發(fa)布器,負責(ze)發(fa)布供用戶使用的信息(xi)(參(can)見下圖(tu))。
消息隊列遙測傳輸網(wang)絡中的(de)作用因素
MQTT的要求非(fei)常(chang)少,因為(wei)它專為(wei)資源有限的嵌入式設(she)備設(she)計(ji)。除了(le)占地(di)空間少之外,MQTT還可提(ti)供出色的通信高效性(即(ji)使(shi)通過(guo)低帶寬網絡進行(xing)通信)和(he)非(fei)常(chang)少的開銷(較之HTTP等協議)。即(ji)使(shi)是(shi)在3G網絡中,MQTT的吞吐量速(su)度(du)是(shi)使(shi)用HTTP的表述(shu)性狀態轉(zhuan)移(REST)的93倍,5G/4G下(xia)的提(ti)升將會更大。
MQTT可使用最少的方法(fa)指(zhi)示要在特定(ding)主題上(shang)實施(shi)(shi)的操作,進而實施(shi)(shi)發布(bu)/訂閱模式。代理先(xian)連接到(dao)經紀人,然(ran)后(hou)再發布(bu)或訂閱主題。完成后(hou),代理將從經紀人上(shang)斷(duan)開連接。MQTT方法(fa)定(ding)義(yi):
連接-建立與(yu)MQTT經紀(ji)人之間(jian)的連接。
斷開(kai)連(lian)接-斷開(kai)與MQTT經紀人之間的(de)連(lian)接。
發(fa)布(bu)(bu)-在MQTT經(jing)紀人上(shang)發(fa)布(bu)(bu)主(zhu)題。
訂閱-從(cong)MQTT經紀人(ren)上訂閱主題。
退(tui)訂(ding)-從(cong)MQTT經紀(ji)人上退(tui)訂(ding)主題。
又如下圖(tu)所示,下圖(tu)展示了發(fa)布(bu)者(zhe)與(yu)訂閱者(zhe)使用MQTT經(jing)紀(ji)人進行(xing)的(de)簡單交(jiao)互。如圖(tu)所示,信(xin)息(xi)創建者(zhe)(producer)連接至(zhi)MQTT經(jing)紀(ji)人。同(tong)樣,信(xin)息(xi)消(xiao)費(fei)者(zhe)(consumer)連接至(zhi)MQTT經(jing)紀(ji)人。消(xiao)費(fei)者(zhe)訂閱主(zhu)題(此(ci)處定義為/home/alarms/1/status)。本示例主(zhu)題可識別主(zhu)頁(ye)上針(zhen)對區(qu)域(yu)1的(de)警(jing)報系統的(de)狀態(tai)變化。當創建者(zhe)有(you)信(xin)息(xi)要分享時(shi),它會(hui)向經(jing)紀(ji)人發(fa)布(bu)一(yi)條消(xiao)息(xi),然后經(jing)紀(ji)人將(jiang)(jiang)會(hui)將(jiang)(jiang)信(xin)息(xi)分享給(gei)所有(you)訂閱該主(zhu)題的(de)用戶(hu)。
消息隊列遙(yao)測傳輸代理(li)之間的簡單(dan)交互
請注意此(ci)處(chu)分(fen)享(xiang)的主(zhu)題結構(gou)。它與文(wen)件系統層次結構(gou)相似,這(zhe)可簡化(hua)主(zhu)題的結構(gou)。這(zhe)種(zhong)資源層次形(xing)式也常見于協議架構(gou)中(zhong),如(ru)REST。
MQTT甚至允許使(shi)用(yong)通配符的形式,以簡化(hua)(hua)訂(ding)(ding)(ding)閱流(liu)程。如果用(yong)戶想要獲取所有警(jing)報(bao)的狀態(tai)(tai),則可直接訂(ding)(ding)(ding)閱/home/alarms/+/status,該主題可通知(zhi)用(yong)戶所有的警(jing)報(bao)狀態(tai)(tai)變化(hua)(hua)。整個子樹(shu)還(huan)可使(shi)用(yong)主題/home/#進(jin)行訂(ding)(ding)(ding)閱,該主題可以訂(ding)(ding)(ding)閱/home下(xia)的所有事(shi)件。
服務質量
MQTT允許(xu)定(ding)義服務質量(QoS)。MQTT中有三個等級(ji)的QoS:
1、QoS0。該等級表(biao)示(shi)“最多一次(ci)”交付(最佳狀況(kuang))。消息不會得(de)到(dao)確認(ren),因而,這是一種一勞(lao)永與(yu)的方法。
2、QoS1。該等級表示“至少(shao)一次”交付。用戶(hu)可能不止一次獲得消(xiao)息,但是允許收(shou)到的人(ren)確(que)認已經收(shou)到。
3、QoS2。最慢(man)但是最有保(bao)障的服(fu)務質量(liang)等級(ji)(ji)即(ji)為等級(ji)(ji)2。QoS2表示“只有一次”,并(bing)包含四個(ge)階(jie)段的交付握手(shou)。該等級(ji)(ji)最慢(man),但是最安(an)全。
您選擇的(de)QoS等級(ji)將取決于數據及其交付的(de)重要性。
隨著越來越多的物聯網設備采用MQTT作為支持協議,作為支持傳感器、設備和云之間安全交互的愛陸通物聯網(wang)網(wang)關不僅(jin)支持MQTT和(he)Modbus協議,還(huan)支持ZigBee、5G/4G/3無(wu)線網(wang)絡、藍牙、USB、WiFi等多種(zhong)通信協議,完美的兼容了各(ge)類前端設備.