

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