





摘 要:為在網絡環境較差的情況下提供可靠的通信服務,設計并實現了一種基于消息隊列遙測傳輸(MQTT)協議的遠程數據采集與實時控制系統。MQTT協議作為一款輕量級的物聯網通信協議,為該系統實現高實時性的數據交互提供了有力支撐。在系統設計時引入了訂閱/發布模式。該設計模式可以有效地對系統功能進行解耦,并對數據進行異步處理,為系統提供靈活的數據處理機制。該系統目前已應用于工程勘探、地球物理探測等領域,在實際應用中驗證了系統的可靠性與穩定性。
關鍵詞:MQTT協議;訂閱/發布模式;遠程數據采集;實時控制;解耦;消息中間件
中圖分類號:TP393 文獻標識碼:A 文章編號:2095-1302(2025)04-00-04
0 引 言
目前,云計算、大數據、物聯網和人工智能等相關技術已逐步成熟,并加速推動各行各業的數智化轉型。其核心為利用互聯網信息化技術,提升產品的信息化和智能化水平,提高企業的生產效率,促進企業的高質量發展。《中國工業互聯網產業經濟發展白皮書(2023年)》報告指出,5G技術具有速率高、時延低、連接數大等特點。工業互聯網可以依托5G技術,實現工業網絡安全、效率和自動化水平的提升[1]。5G技術提供的高速網絡,使得實時數據傳輸、實時數據處理分析、實時決策成為了可能。施工作業現場實現了單獨作業向專家團隊協同作業模式的轉變,縮短了施工現場與辦公室之間的時空距離,完成了設備數據的快速采集、處理、分析、決策、反饋。
本研究設計并實現了一種基于MQTT的遠程數據采集與實時控制系統。MQTT協議作為一款輕量級物聯網通信協議,可以在網絡環境較差的情況下提供可靠的通信服務。依托5G技術提供的高速網絡,MQTT協議可以為施工作業現場設備與服務器之間的數據傳輸提供高可靠的通信服務。該系統目前已應用于工程勘探、地球物理探測等領域,實現了遠程監控設備狀態、遠程數據傳輸和遠程控制等功能。
1 系統設計
1.1 MQTT協議
1999年,IBM公司發布了MQTT(Message Queuing Telemetry Transport)協議。該協議是一種基于訂閱/發布(Subscribe/Publish)模式的通信協議,底層采用TCP/IP協議,其優點在于輕量、擴展性強,在物聯網、移動應用等方面應用廣泛。
MQTT協議基于二進制實現,是一種低開銷、低帶寬的即時通信協議,利用極少代碼和有限帶寬提供實時可靠的消息服務。MQTT協議可替代TCP Socket部分功能,用于手機推送等領域。相對HTTP和XML,MQTT協議可自定義數據通信格式,解析復雜度低[2]。
MQTT協議基于異步發布/訂閱模式實現,通過Broker代理服務器將二者關聯。其功能包括消息存儲和轉發,以及訂閱關系維護。一次典型的MQTT消息通信流程如圖1所示。
消息發布方將消息發送至服務器(Broker)中。當消息抵達服務器后,根據訂閱關系,服務器將消息轉發給訂閱方。目前有多款支持MQTT協議的中間件軟件,如ActiveMQ、RocketMQ和RabbitMQ等。
1.2 訂閱/發布模式
本研究在設計實時系統時引入了訂閱/發布模式。訂閱/發布模式作為一種軟件設計模式,被廣泛應用于基于事件驅動的軟件系統中。該設計模式可以對系統內復雜的功能進行解耦,并對數據進行異步處理,提高了系統的響應速度和可靠性[3]。訂閱/發布模式由發布者、訂閱者、消息和消息中間件構成,如圖2所示。
1.2.1 發布者
發布者為消息的生產者,負責產生和發送消息。
1.2.2 訂閱者
訂閱者為消息的消費者,負責訂閱和接收消息。
1.2.3 消息中間件
消息中間件的職責是提供消息緩存隊列、記錄消息訂閱關系以及轉發消息。作為消息中轉站,消息中間件對系統進行功能解耦,并對消息進行異步處理[4]。
1.2.4 消息
消息包含消息頭(header)和消息內容兩部分,消息頭又包含消息主題和發送時間等信息,消息中間件用消息主題維護消息訂閱關系。
系統工作時,發布者與訂閱者無需關心對方是否存在,只需與消息中間件連接即可。發布消息時,要攜帶消息主題。消息首先到達消息中間件,進入緩存隊列;然后根據訂閱關系,消息中間件將消息轉發給該消息主題的所有訂閱者。
1.3 系統架構
遠程數據采集與實時控制系統架構如圖3所示。該系統由采集端軟件、控制端軟件與服務端軟件組成。由于系統采用了訂閱/發布模式,所以系統允許多個采集端和控制端接入。
1.3.1 采集端軟件
采集端軟件部署在設備工作現場,與采集設備在同一現場工作,負責采集設備運行產生的各類數據,可采用ZigBee、CAN總線、串口、TCP/UDP、RS 232、RS 485等通信協議與設備進行數據交互。采集端軟件采集設備運行數據,然后發送至服務器消息中間件;消息中間件再把數據轉發到控制端,同時接收設備控制指令。
1.3.2 服務端軟件
服務端軟件包括Web軟件、消息中間件和數據服務。
(1)Web軟件
Web軟件用于系統用戶管理和設備注冊。只有授權的用戶和設備才能夠使用Web軟件。同時,Web軟件提供了可視化數據大屏,實時展示作業設備的運行狀態和采集的數據。
(2)消息中間件
消息中間件是實現高可靠性通信的關鍵,以及系統實現訂閱/發布模式的基礎。消息中間件記錄各子系統間消息訂閱的關系,提供了消息緩存隊列,實現了各子系統間消息中轉、消息異步處理以及內部功能解耦。
(3)數據服務
數據服務負責業務消息的預處理和存儲系統運行時產生的關鍵數據。將關鍵數據保存至數據庫中,可以回溯設備歷史數據,判斷設備運行狀態是否存在異常。后續可以對數據進行高級應用。
1.3.3 控制端軟件
控制端軟件通常部署在遠程控制大廳的專用計算機上,負責向采集端軟件發送控制指令,以及接收遠端設備回傳的各類數據。控制端軟件并不與采集端軟件直接通信,而是借助服務器的消息中間件接收采集端軟件上傳的采集數據以及下發的控制指令。
2 系統實現與關鍵技術
系統采用C/S和B/S混合架構進行開發,同時各子系統間采用MQTT協議傳輸數據。采集端與控制端使用C#語言開發;服務端Web軟件采用SpringBoot和Vue開發;消息中間件使用ActiveMQ開發;數據服務軟件使用SpringBoot和MySQL開發。系統開發遵循“約定gt;配置gt;編碼”原則,便于系統維護和功能擴展。
2.1 采集端軟件
采集端軟件負責采集/上傳設備數據、向設備下發控制指令以及接收服務器轉發的消息。采集端軟件支持本地采集和遠程采集。本地采集時無需連接服務器;遠程采集時使用設備編號作為自身唯一標識ClientID,服務器驗證無誤后開始作業。
采集端軟件內部通過多線程調度來保證系統的實時性。將采集的設備數據持久化存儲到本地硬盤,同時將采集數據格式化后上傳至消息中間件。此外,采集軟件還提供了一個指令接收線程,負責接收控制端發出的指令。
2.2 Web軟件
Web軟件采用SpringBoot框架+ Vue框架的前后端分離技術開發,對前后端功能進行解耦,降低后端服務器的壓力[5]。Web軟件實現了大屏可視化、設備管理、數據查詢、消息推送、權限管理和用戶管理等功能。Web軟件系統架構如圖4所示。
2.2.1 可視化數據大屏
可視化數據大屏展示設備的運行狀態和最新數據。系統定時讀取數據,使用Redis做高速緩存[6],采用可視化報表技術將數據進行渲染,實現了設備運行狀態的實時監控。
2.2.2 設備管理
為保證系統安全,只有在系統中注冊過的設備才能夠接入。通過對設備數據表的增加、刪除、修改、查詢操作,實現設備的注冊和注銷。
2.2.3 數據查詢
將設備運行期間產生的數據存儲到數據庫中。為了便于瀏覽設備歷史數據,判斷設備運行是否存在異常,系統提供了數據查詢接口和界面,允許用戶根據指定條件進行相關查詢。
2.2.4 消息推送
對設備運行期間的數據進行監測,通過內部數據處理機制,判斷設備運轉有無異常。當設備數據存在異常時,系統會主動推送消息給用戶。
2.2.5 權限管理與用戶管理
采用基于角色的訪問控制權限(RBAC),實現系統用戶訪問系統資源的權限控制。創建用戶并分配角色,為角色設置不同權限,不同角色用戶只能訪問特定資源。
2.3 消息中間件
本系統采用Apache ActiveMQ消息中間件。ActiveMQ支持JavaScript、C、C++、Python、.Net等編程語言,提供MQTT協議管理物聯網設備,具有強大的功能和靈活性[7]。
本系統采用MQTT+JSON方式,實現各子系統間的通信協議。JSON結構簡潔,序列化機制使機器易于解析和編碼。實驗表明,相較于XML和FSV,JSON擁有更高的傳輸效率[8]。因此,使用JSON搭配MQTT協議實現實時、高效的網絡通信是目前最優的方案。
一條基本的MQTT消息包括消息頭和負載(payload)。消息頭包括消息主題、消息發送時間等。消息主題分為多個層級。本系統設計的消息主題格式見表1,消息負載格式見表2。
2.4 數據服務軟件
數據服務軟件實現了ActiveMQ轉發、消息接收、消息處理以及設備狀態存儲和數據測量等功能。數據服務軟件訂閱了系統的所有消息,解析后使用MyBatis-Plus技術存儲在MySQL數據庫中。系統支持多個測量設備和多個遠程控制終端。若將所有設備的數據存放至一張數據表內,會導致表單數據量過大,查詢和存儲的效率低下[9]。因此每一個設備都獨立建立一張數據表。
2.5 控制端軟件
控制端軟件負責下發設備控制指令和接收采集端軟件上傳的數據,并對數據做持久化處理。控制端軟件提供用戶身份驗證功能,系統授權后才能夠遠程操控作業設備。
為保證系統的實時性,控制端軟件內部提供多線程方式進行數據處理。消息接收線程負責接收ActiveMQ消息。ActiveMQ消息接收后存放至緩存隊列,由數據處理線程處理。
3 系統應用
基于本研究設計的軟件系統架構已先后運用在遠程測井系統、遠程隨鉆數據傳輸系統、遠程錄井測控系統等項目中,涉及地球物理探測、工程勘探等多個領域。
3.1 遠程測井系統
遠程測井系統為XX油田搭建了遠程測井實時測控服務平臺,實現了現場設備的遠程操作、測井資料的實時分析和快速評價,并且支持一名操作員對多臺現場測井設備同時進行實時操控。該系統投入使用之后,已完成了100余口井的遠程測井實驗,使測井資料解釋評價處理的實時性得到了根本改變,同時也提高了操作員的工作效率[10]。
3.2 遠程隨鉆數據傳輸系統
遠程隨鉆數據傳輸系統是一套服務于XX能源科技股份有限公司的遠程隨鉆數據傳輸服務云平臺,可以遠程實時監控施工現場所有隨鉆測量設備的在線狀態、施工進度和實時測量數據,具備曲線繪制和數據查詢等功能。該系統目前已經正式投入使用,運行穩定可靠,為隨鉆測量服務的“提質增效”做出了較大貢獻。
3.3 遠程錄井測控系統
遠程錄井測控系統是一套服務于XX油田的遠程錄井測控服務云平臺,可以對XX公司各類綜合錄井設備的錄井采集軟件、傳感器采集系統,以及色譜分析儀進行遠程控制和遠程診斷,并對現場錄井設備進行數據采集和遠程傳輸。該系統目前已經正式投入使用,顯著提高了錄井現場問題的處理效率。
4 結 語
本文設計并實現了一種基于MQTT的遠程數據采集與實時控制系統,設計時引入了MQTT協議和訂閱/發布設計模式,提高了系統的響應速度和可靠性。該系統目前已應用于工程勘探、地球物理探測等領域,經現場試驗后取得了良好的應用效果,證明了該系統軟件架構的穩定性,為研發具備遠程數據采集和實時控制功能的物聯網軟件系統提供了借鑒思路。
參考文獻
[1]中國工業互聯網研究院.中國工業互聯網產業經濟發展白皮書(2023年)[EB/OL].(2023-12-25).https://caiijs.webtrn.cn/cms/whaty_editor/jsp/upload/file/20231227/1703664546179014747.pdf.
[2]林滸,張家銘,楊海波.基于MQTT協議的即時消息業務設計與實現[J].計算機系統應用,2017,26(3):219-224.
[3]王重楠,王宗陶,鮑忠貴,等.發布/訂閱模式測控消息中間件系統設計[J].計算機應用,2015,35(3):878-881.
[4]于江浩.面向RDMA高性能網絡的消息中間件低延遲優化研究[D].成都:電子科技大學,2023.
[5]李航,董安明,禹繼國,等.基于前后端分離架構的智慧農業物聯網系統設計[J].現代電子技術,2022,45(14):63-68.
[6]楊開振,周吉文,梁華輝,等. Java EE互聯網輕量級框架整合開發[M].北京:電子工業出版社,2017:136-138.
[7]熊涵.基于Redis分布式消息隊列的報文過濾系統的設計與實現[D].成都:電子科技大學,2021.
[8]高靜,段會川. JSON數據傳輸效率研究[J].計算機工程與設計,2011,32(7):2267-2270.
[9]樊榮,鄭剛,植耀玲.基于分表的閃電定位系統數據庫設計[J].計算機應用,2021,41(z2):136-138.
[10]劉永戰,劉信魯,姜景濤,等.一種網絡遠程測井實時數據傳輸系統:CN. 202121029694.3 [P]. 2022-02-01.