摘 要 MQTT協(xié)議是物聯(lián)網(wǎng)領(lǐng)域中應(yīng)用最多的開放協(xié)議之一,不僅可以應(yīng)用在不可靠的網(wǎng)絡(luò)中,而且還可以保證高質(zhì)量傳輸[1-2]。但是MQTT的低帶寬傳輸導(dǎo)致MQTT傳輸數(shù)據(jù)量受到限制,而且一個主題一般只能發(fā)布64個變量,為了高質(zhì)量傳輸更多數(shù)據(jù),筆者將主題名作為變量,通過計數(shù)器,來定時發(fā)布不同的主題,進(jìn)而實現(xiàn)發(fā)布多條數(shù)據(jù)的目的。本文選擇井深信息科技(上海)有限公司研發(fā)的WR100網(wǎng)關(guān)為例,通過在江寧水務(wù)信息采集系統(tǒng)中采集不同工藝流程中的數(shù)據(jù),來驗證該方法的可行性。
關(guān)鍵詞 MQTT;物聯(lián)網(wǎng);網(wǎng)關(guān)
1MQTT協(xié)議概述
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展和移動終端的出現(xiàn),人們迫切要求一種低帶寬、高質(zhì)量的傳輸協(xié)議,MQTT(消息隊列遙測傳輸)是ISO 標(biāo)準(zhǔn)(ISO/IEC PRF 20922)下基于發(fā)布/訂閱范式的消息協(xié)議。它工作在TCP/IP協(xié)議族上,是為硬件性能低下的遠(yuǎn)程設(shè)備以及網(wǎng)絡(luò)狀況糟糕的情況下而設(shè)計的發(fā)布/訂閱型消息協(xié)議,為此,它需要一個消息中間件。MQTT是一個基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議。MQTT協(xié)議是輕量、簡單、開放和易于實現(xiàn)的,這些特點使它適用范圍非常廣泛。
2MQTT協(xié)議特點
MQTT協(xié)議是為大量計算能力有限,且工作在低帶寬、不可靠的網(wǎng)絡(luò)的遠(yuǎn)程傳感器和控制設(shè)備通訊而設(shè)計的協(xié)議,它具有以下主要的幾項特性:①使用發(fā)布/訂閱消息模式,提供一對多的消息發(fā)布,解除應(yīng)用程序耦合;②對負(fù)載內(nèi)容屏蔽的消息傳輸;③使用 TCP/IP 提供網(wǎng)絡(luò)連接;④有三種消息發(fā)布服務(wù)質(zhì)量:“至多一次”,消息發(fā)布完全依賴底層 TCP/IP 網(wǎng)絡(luò)。會發(fā)生消息丟失或重復(fù);“至少一次”,確保消息到達(dá),但消息重復(fù)可能會發(fā)生;“只有一次”,確保消息到達(dá)一次。⑤小型傳輸,開銷很小,協(xié)議交換最小化,以降低網(wǎng)絡(luò)流量;⑥使用 Last Will 和 Testament 特性通知有關(guān)各方客戶端異常中斷的機制。
3設(shè)計思路
本次應(yīng)用場景是在南京江寧水務(wù)管理局,目的需求很明確,就是將江寧水務(wù)四期所有工藝流程的數(shù)據(jù)都上傳到固定的服務(wù)器。但是經(jīng)過現(xiàn)場調(diào)查,發(fā)現(xiàn)所有計算機都沒有連接互聯(lián)網(wǎng)外網(wǎng),重新連接到外網(wǎng)不僅會增加資金成本、勞動力負(fù)擔(dān)而且還有信息泄露的風(fēng)險,于是決定利用網(wǎng)關(guān)采集工程師站的相關(guān)數(shù)據(jù),然后上傳到服務(wù)器,過程中發(fā)現(xiàn)網(wǎng)絡(luò)不穩(wěn)定,于是決定采用MQTT協(xié)議恰好可以解決這一問題?,F(xiàn)場組態(tài)軟件應(yīng)用的是Wonderware公司開發(fā)的Intouch軟件,由于WR100網(wǎng)關(guān)不支持OPC通信,從節(jié)約成本的角度考慮,需要在工程師站安裝一個“軟網(wǎng)關(guān)”即OPC2Modbus軟件,將OPC協(xié)議轉(zhuǎn)化為Modbus協(xié)議。首先利用Intouch組態(tài)軟件的OPC通信,通過在本地計算機安裝軟件網(wǎng)關(guān)進(jìn)行協(xié)議轉(zhuǎn)換,再利用WR100網(wǎng)關(guān)利用Modbus協(xié)議采集各工藝流程的數(shù)據(jù),最終通過MQTT協(xié)議傳輸至服務(wù)器平臺。
4具體方法
第一步:OPC轉(zhuǎn)Modbus操作。
首先設(shè)置模擬設(shè)備的地址,然后導(dǎo)入點表,將江寧水務(wù)的每個位號轉(zhuǎn)換成Modbus對應(yīng)的寄存器地址,最后可通過Modbus調(diào)試軟件測試軟件是否正常運行。
第二步:編寫WR100網(wǎng)關(guān)數(shù)據(jù)采集工程。
以中間提升泵房為例,首先填寫工程師站的IP地址、端口號、模擬設(shè)備地址等,然后導(dǎo)入上一步完成的點表名稱以及對應(yīng)的Modbus地址。
其次利用FBD語言編寫計數(shù)函數(shù),初始值為1,每秒增加1,用于分段發(fā)送數(shù)據(jù)。
最后用ST語言編寫定時上傳函數(shù),每兩秒上傳一次數(shù)據(jù),用于上傳所采集到的中間提升泵房數(shù)據(jù),同時為避免沖突,當(dāng)計數(shù)器的值到達(dá)10的時候,將計數(shù)器清零。如圖1所示:
第三步:查看服務(wù)器端收到的數(shù)據(jù)情況。
利用MQTT fx調(diào)試軟件充當(dāng)MQTT客戶端,通過輸入服務(wù)器端的IP地址以及端口號來連接至服務(wù)器,然后通過訂閱網(wǎng)關(guān)發(fā)送數(shù)據(jù)的主題來進(jìn)行查看網(wǎng)關(guān)發(fā)送的數(shù)據(jù)。服務(wù)器端接收到的消息如圖2所示。服務(wù)器端接收到的數(shù)據(jù)與工程師站提供的數(shù)據(jù)一致。
5結(jié)束語
在南京江寧水務(wù)工藝流程數(shù)據(jù)的采集中,通過在網(wǎng)關(guān)中編寫定時函數(shù)來定時發(fā)布不同的主題,將所有變量分主題發(fā)布,每組主題發(fā)布64個變量,該方法為MQTT協(xié)議傳輸大量數(shù)據(jù)提供了參考,并且經(jīng)過現(xiàn)場實踐,證明了該方法的可行性。
MQTT協(xié)議作為物聯(lián)網(wǎng)技術(shù)的標(biāo)準(zhǔn)協(xié)議,正在不斷發(fā)展,目前已經(jīng)出現(xiàn)了5.0版本的協(xié)議標(biāo)準(zhǔn)。雖然當(dāng)前使用最廣泛的仍是3.1.1版本,5.0版本暫時還沒有大規(guī)模地實現(xiàn)和應(yīng)用,但這是未來的發(fā)展方向[3]。
參考文獻(xiàn)
[1] 龔永罡,付俊英,汪昕宇,等.MQTT協(xié)議在物聯(lián)網(wǎng)中的應(yīng)用研究[J].電腦與電信,2017(11):89-91,94.
[2] 周超,陳建輝,駱紹燁.物聯(lián)網(wǎng)環(huán)境下HTTP與MQTT通信協(xié)議比較探究[J].莆田學(xué)院學(xué)報,2017,24(5):57-60.
[3] 張航. MQTT協(xié)議擴展與協(xié)議優(yōu)化的研究與應(yīng)用[D].北京:北京郵電大學(xué),2019.
作者簡介
郝澤華(1995-),男,河北保定人;學(xué)歷;碩士研究生,安徽工業(yè)大學(xué)學(xué)校在讀,研究方向:電氣自動化控制。