物聯(lián)網(wǎng)網(wǎng)關(guān)中的MQTT協(xié)議和Modbus協(xié)議介紹
掃描二維碼
隨時(shí)隨地手機(jī)看文章
物聯(lián)網(wǎng)行業(yè)最重要的就是通信技術(shù),物聯(lián)網(wǎng)發(fā)展至今,出現(xiàn)了許多種協(xié)議,無論何種協(xié)議作用無外乎都是將”各類事物”通過各種協(xié)議連接到物聯(lián)網(wǎng)中,以實(shí)現(xiàn)物與物之間的通信。今天,本文介紹兩種物聯(lián)網(wǎng)協(xié)議中的補(bǔ)充協(xié)議——MQTT和Modbus協(xié)議,幫助大家快速了解這兩種協(xié)議。
Modbus是一個(gè)串行通信協(xié)議,首次出現(xiàn)于1979年,是連接行業(yè)設(shè)備實(shí)際使用的標(biāo)準(zhǔn)協(xié)議。MQTT早在20年前便已出現(xiàn),但是將這兩個(gè)協(xié)議結(jié)合在一起使用,能夠?yàn)樯疃惹度胧皆O(shè)備提供物聯(lián)網(wǎng)的規(guī)模和連接性。下圖展示了這些協(xié)議之間的一般關(guān)系,同時(shí)介紹了連接的支持解決方案:物聯(lián)網(wǎng)網(wǎng)關(guān)。
物聯(lián)網(wǎng)網(wǎng)關(guān)作為物聯(lián)網(wǎng)通信的支持解決方案,現(xiàn)在讓我們來看一下Modbus和MQTT,以了解其區(qū)別以及如何在物聯(lián)網(wǎng)中互相補(bǔ)充。
Modbus
自1979年首次出現(xiàn)至今,Modbus已經(jīng)演變?yōu)橐惶兹娴闹С侄喾N物理鏈接的協(xié)議集(如RS485)。Modbus的核心是一個(gè)串行通信協(xié)議,采用主從模式。主機(jī)向從機(jī)發(fā)送請求,從機(jī)予以回復(fù)。在標(biāo)準(zhǔn)Modbus網(wǎng)絡(luò)中,有一臺主機(jī)以及最多247臺從機(jī)(但是,如果采用2字節(jié)尋址,則可顯著提高這一界限)。
借助RS485,主從機(jī)之間的通信發(fā)生在指示功能碼的幀中。該功能碼可識別要操作的功能,如讀取獨(dú)立輸入;讀取先進(jìn)先出隊(duì)列;或執(zhí)行診斷函數(shù)。然后,從機(jī)根據(jù)收到的功能碼進(jìn)行響應(yīng),該響應(yīng)較為簡單,由一組字節(jié)指示。因此,從機(jī)可以是智能設(shè)備,也可以是只有一個(gè)傳感器的簡單設(shè)備。
從該描述中,您可以看到Modbus協(xié)議非常簡單,但是其作為協(xié)議的開放性使其成為整個(gè)行業(yè)或SCADA系統(tǒng)的實(shí)際通信協(xié)議。
消息隊(duì)列遙測傳輸
MQTT是一個(gè)開放的輕量級機(jī)器對機(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ā)布供用戶使用的信息(參見下圖)。
消息隊(duì)列遙測傳輸網(wǎng)絡(luò)中的作用因素
MQTT的要求非常少,因?yàn)樗鼘橘Y源有限的嵌入式設(shè)備設(shè)計(jì)。除了占地空間少之外,MQTT還可提供出色的通信高效性(即使通過低帶寬網(wǎng)絡(luò)進(jìn)行通信)和非常少的開銷(較之HTTP等協(xié)議)。即使是在3G網(wǎng)絡(luò)中,MQTT的吞吐量速度是使用HTTP的表述性狀態(tài)轉(zhuǎn)移(REST)的93倍,5G/4G下的提升將會更大。
MQTT可使用最少的方法指示要在特定主題上實(shí)施的操作,進(jìn)而實(shí)施發(fā)布/訂閱模式。代理先連接到經(jīng)紀(jì)人,然后再發(fā)布或訂閱主題。完成后,代理將從經(jīng)紀(jì)人上斷開連接。MQTT方法定義:
連接-建立與MQTT經(jīng)紀(jì)人之間的連接。
斷開連接-斷開與MQTT經(jīng)紀(jì)人之間的連接。
發(fā)布-在MQTT經(jīng)紀(jì)人上發(fā)布主題。
訂閱-從MQTT經(jīng)紀(jì)人上訂閱主題。
退訂-從MQTT經(jīng)紀(jì)人上退訂主題。
又如下圖所示,下圖展示了發(fā)布者與訂閱者使用MQTT經(jīng)紀(jì)人進(jìn)行的簡單交互。如圖所示,信息創(chuàng)建者(producer)連接至MQTT經(jīng)紀(jì)人。同樣,信息消費(fèi)者(consumer)連接至MQTT經(jīng)紀(jì)人。消費(fèi)者訂閱主題(此處定義為/home/alarms/1/status)。本示例主題可識別主頁上針對區(qū)域1的警報(bào)系統(tǒng)的狀態(tài)變化。當(dāng)創(chuàng)建者有信息要分享時(shí),它會向經(jīng)紀(jì)人發(fā)布一條消息,然后經(jīng)紀(jì)人將會將信息分享給所有訂閱該主題的用戶。
消息隊(duì)列遙測傳輸代理之間的簡單交互
請注意此處分享的主題結(jié)構(gòu)。它與文件系統(tǒng)層次結(jié)構(gòu)相似,這可簡化主題的結(jié)構(gòu)。這種資源層次形式也常見于協(xié)議架構(gòu)中,如REST。
MQTT甚至允許使用通配符的形式,以簡化訂閱流程。如果用戶想要獲取所有警報(bào)的狀態(tài),則可直接訂閱/home/alarms/+/status,該主題可通知用戶所有的警報(bào)狀態(tài)變化。整個(gè)子樹還可使用主題/home/#進(jìn)行訂閱,該主題可以訂閱/home下的所有事件。
服務(wù)質(zhì)量
MQTT允許定義服務(wù)質(zhì)量(QoS)。MQTT中有三個(gè)等級的QoS:
1、QoS0。該等級表示“最多一次”交付(最佳狀況)。消息不會得到確認(rèn),因而,這是一種一勞永與的方法。
2、QoS1。該等級表示“至少一次”交付。用戶可能不止一次獲得消息,但是允許收到的人確認(rèn)已經(jīng)收到。
3、QoS2。最慢但是最有保障的服務(wù)質(zhì)量等級即為等級2。QoS2表示“只有一次”,并包含四個(gè)階段的交付握手。該等級最慢,但是最安全。
您選擇的QoS等級將取決于數(shù)據(jù)及其交付的重要性。
隨著越來越多的物聯(lián)網(wǎng)設(shè)備采用MQTT作為支持協(xié)議,作為支持傳感器、設(shè)備和云之間安全交互的計(jì)訊物聯(lián)網(wǎng)網(wǎng)關(guān)不僅支持MQTT和Modbus協(xié)議,還支持ZigBee、5G/4G/3無線網(wǎng)絡(luò)、藍(lán)牙、USB、WiFi等多種通信協(xié)議,完美的兼容了各類前端設(shè)備。除此之外計(jì)訊物聯(lián)網(wǎng)網(wǎng)關(guān)支持IPsec/L2TP/PPTP/OpenVPN/GRE/l2tpoverIpsec等VPN協(xié)議和運(yùn)營商APN專網(wǎng)接入并指定IP等多種協(xié)議保障數(shù)據(jù)在傳輸過程中的安全。