物聯(lián)網(wǎng) (IoT) 不只是新技術(shù), 還是與舊技術(shù)的集成,其關(guān)鍵在于通信。 可用的通信方法各不相同,但是,各種不同的協(xié)議在將海量“事物”連接到互聯(lián)網(wǎng)時(shí)發(fā)揮著重要的作用。 本文介紹了兩種物聯(lián)網(wǎng)補(bǔ)充協(xié)議: 用于短距離設(shè)備連接的本地協(xié)議 Modbus 以及支持物聯(lián)網(wǎng)進(jìn)行全局通信的可擴(kuò)展互聯(lián)網(wǎng)協(xié)議“消息隊(duì)列遙測傳輸 (MQTT)”。
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ī)模和連接性。
Modbus
自 1979 年首次出現(xiàn)至今,Modbus 已經(jīng)演變?yōu)橐惶兹嬷С侄喾N物理連接的協(xié)議集(如 RS-485)。 Modbus 的核心是一個(gè)串行通信協(xié)議,采用主從模式。 主機(jī)向從機(jī)發(fā)送請求,從機(jī)予以回復(fù)。
借助RS-485,主從機(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ā)布供用戶使用的信息。
MQTT溝通模型
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 倍。
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ì)人上退訂主題。
信息創(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ì)人將會將信息分享給所有訂閱該主題的用戶。
MQTT交互流程
與文件系統(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:
? QoS 0。該等級表示“最多一次”交付(最佳狀況)。 消息不會得到確認(rèn),因而,這是一種一勞永逸的方法。
? QoS 1。該等級表示“至少一次”交付。 用戶可能不止一次獲得消息,但是允許收到的人確認(rèn)已經(jīng)收到
? QoS 2。最慢但是最有保障的服務(wù)質(zhì)量等級即為等級 2。 QoS 2 表示“只有一次”,并包含四個(gè)階段的交付握手。 該等級最慢,但是最安全。
選擇的 QoS 等級將取決于數(shù)據(jù)及其交付的重要性。
消息隊(duì)列遙測傳輸經(jīng)紀(jì)人
隨著越來越多的物聯(lián)網(wǎng)采用 MQTT 作為支持協(xié)議,您將會發(fā)現(xiàn)許多開源應(yīng)用和產(chǎn)品中出現(xiàn)了 MQTT。物聯(lián)網(wǎng)網(wǎng)關(guān)解決方案則是其中一款采用 MQTT 的全面物聯(lián)網(wǎng)解決方案,支持將各種工控協(xié)議轉(zhuǎn)換為MQTT,實(shí)現(xiàn)云平臺直接調(diào)用現(xiàn)場設(shè)備的數(shù)據(jù)。