物聯(lián)網(wǎng)網(wǎng)關(guān)協(xié)議MQTT和Modbus:用于短距離設(shè)備連接的本地協(xié)議Modbus以及支持物聯(lián)網(wǎng)進(jìn)行全局通信的可擴(kuò)展互聯(lián)網(wǎng)協(xié)議“消息隊(duì)列遙測(cè)傳輸 (MQTT),兩種網(wǎng)關(guān)協(xié)議有什么區(qū)別。
Modbus協(xié)議
Modbus已經(jīng)演變?yōu)橐惶兹娴闹С侄喾N物理鏈接的協(xié)議集(如RS-485)。Modbus的核心是一個(gè)串行通信協(xié)議,采用主從模式。主機(jī)向從機(jī)發(fā)送請(qǐng)求,從機(jī)予以回復(fù)。在標(biāo)準(zhǔn)Modbus網(wǎng)絡(luò)中,有一臺(tái)主機(jī)以及最多247臺(tái)從機(jī)(但是,如果采用2字節(jié)尋址,則可顯著提高這一界限)。
借助 RS-485,主從機(jī)之間的通信發(fā)生在指示功能碼的幀中。 該功能碼可識(shí)別要操作的功能,如讀取獨(dú)立輸入;讀取先進(jìn)先出隊(duì)列;或執(zhí)行診斷函數(shù)。 然后,從機(jī)根據(jù)收到的功能碼進(jìn)行響應(yīng),該響應(yīng)較為簡(jiǎn)單,由一組字節(jié)指示。 因此,從機(jī)可以是智能設(shè)備,也可以是只有一個(gè)傳感器的簡(jiǎn)單設(shè)備。
從該描述中,您可以看到Modbus協(xié)議非常簡(jiǎn)單,但是其作為協(xié)議的開(kāi)放性使其成為整個(gè)行業(yè)或SCADA系統(tǒng)的實(shí)際通信協(xié)議。
消息隊(duì)列遙測(cè)傳輸
MQTT是一個(gè)開(kāi)放的輕量級(jí)機(jī)器對(duì)機(jī)器協(xié)議,專為物聯(lián)網(wǎng)交互設(shè)計(jì)。MQTT網(wǎng)絡(luò)包含一個(gè)MQTT經(jīng)紀(jì)人(broker),負(fù)責(zé)協(xié)調(diào)MQTT代理之間的交互。代理是發(fā)布器,負(fù)責(zé)發(fā)布供用戶使用的信息。
MQTT的要求非常少,因?yàn)樗鼘橘Y源有限的嵌入式設(shè)備設(shè)計(jì)。除了占地空間少之外,MQTT還可提供出色的通信高效性(即使通過(guò)低帶寬網(wǎng)絡(luò)進(jìn)行通信)和非常少的開(kāi)銷(較之HTTP等協(xié)議)。在3G網(wǎng)絡(luò)中,MQTT的吞吐量速度是使用HTTP的表述性狀態(tài)轉(zhuǎn)移(REST)的93倍。
MQTT可使用最少的方法指示要在特定主題上實(shí)施的操作,進(jìn)而實(shí)施發(fā)布/訂閱模式。代理先連接到經(jīng)紀(jì)人,然后再發(fā)布或訂閱主題。完成后,代理將從經(jīng)紀(jì)人上斷開(kāi)連接。
MQTT方法定義:
連接–建立與MQTT經(jīng)紀(jì)人之間的連接。
斷開(kāi)連接–斷開(kāi)與MQTT經(jīng)紀(jì)人之間的連接。
發(fā)布–在MQTT經(jīng)紀(jì)人上發(fā)布主題。
訂閱–從MQTT經(jīng)紀(jì)人上訂閱主題。
退訂–從MQTT經(jīng)紀(jì)人上退訂主題。
MQTT允許定義服務(wù)質(zhì)量(QoS)。MQTT中有三個(gè)等級(jí)的QoS:
QoS 0。該等級(jí)表示“最多一次”交付(最佳狀況)。消息不會(huì)得到確認(rèn),因而,這是一種一勞永與的方法。
QoS 1。該等級(jí)表示“至少一次”交付。用戶可能不止一次獲得消息,但是允許收到的人確認(rèn)已經(jīng)收到。
QoS 2。最慢但是最有保障的服務(wù)質(zhì)量等級(jí)即為等級(jí)2。 QoS 2表示“只有一次”,并包含四個(gè)階段的交付握手。該等級(jí)最慢,但是最安全。
您選擇的QoS等級(jí)將取決于數(shù)據(jù)及其交付的重要性。
MQTT和Modbus能夠互相補(bǔ)充提高物聯(lián)網(wǎng)的性能。使用Modbus作為本地接口來(lái)管理設(shè)備,使用MQTT作為全局協(xié)議來(lái)擴(kuò)展設(shè)備的范圍,二者都起到了重要的作用。