?

基于Modbus與MQTT融合工業能耗網關系統設計

2019-07-25 01:44胡存駱德漢童懷
物聯網技術 2019年4期
關鍵詞:線程網關消息

胡存 駱德漢 童懷

摘 要:針對傳統工業數據監控系統采集設備數量少、通信距離短、抗干擾性差、實時性差等問題,文中設計了一款基于Modbus和MQTT融合的工業能耗網關系統。該系統可以支持多個設備同時進行數據采集,集成度高。通過4G模塊,采用無線方式支持遠距離數據傳輸。通過Modbus協議和MQTT協議融合方式提高數據采集和傳輸效率,進一步提高系統實時性。采用線程池技術提高系統運行效率,支持多臺設備并發采集??稍诮K端對設備進行反向控制,使系統更加智能化。經驗證,系統運行穩定可靠,具有廣闊的應用前景。

關鍵詞:工業能耗;Modbus;JSON;MQTT;4G;線程池

中圖分類號:TP393文獻標識碼:A文章編號:2095-1302(2019)04-00-06

0 引 言

隨著“物聯網+”的發展,物聯網技術得到了廣泛應用。物聯網是指通過各種信息傳感設備,實時采集任何需要監控、連接設備等信息,與互聯網結合形成巨大的網絡[1-2]。為了構造節能環保的工業系統,該系統基于Modbus與MQTT融合的方式,通過4G模塊,采用無線方式對工業用電量、溫度、壓力等能耗設備進行遠程監控。

本文設計了一種Modbus和MQTT融合的工業能耗網關系統。系統采用Modbus與MQTT融合的方式,使用Modbus線程采集底層數據,MQTT線程與服務器負責接收和發送數據,采集與傳輸分別使用不同線程,充分利用CPU,從總體上提高智能網關采集和傳輸速度。通過JSON模塊解析不同設備的名稱,進入線程池,一臺設備占用一條線程,支持多臺設備同時采集,提高系統并發性和集成度。支持反向控制,可以控制設備開關、設定溫度值、設定壓力等,提高系統的智能化水平。

1 系統總體架構設計

該網關系統由Modbus,JSON,MQTT模塊組成,結構如圖1所示。

(1)Modbus模塊將網關系統通過Modbus RTU經RS 485總線接口或Modbus TCP經網口鏈接到工業設備的儀器和傳感器,采集或控制電流、電壓、溫度、壓力值等。

(2)JSON模塊用來連通Modbus和MQTT模塊,通過JSON解析函數,解析MQTT的msg消息,告知Modbus模塊需要采集或控制設備的名稱與對應協議點。JSON封裝函數把Modbus模塊采集的協議點數值封裝的JSON格式數據包作為為MQTT模塊傳輸進行的準備。

(3)MQTT模塊通過MQTT接收Web端或APP端發送至服務器的訂閱消息,將JSON格式數據包發送到終端設備。

2 Modbus協議

Modbus協議是工業通信的一種通用標準,是電子控制器領域的通用語言??刂破鹘浻删W絡和機器設備進行通信[3],它制定了消息域格局和內容的公共格式。當在Modbus網絡上通信時,此協議決定了每個控制器需要知道的設備地址,識別按地址發送的消息,決定要產生哪種行為。如果需要回應,控制器將生成反饋信息并用Modbus協議發出。Modbus通用協議棧,協議數據單元由地址碼、功能數據單元(由功能碼和數據域組成)、校驗碼構成。Modbus協議幀如圖2所示。

Modbus RTU采用異步串行傳輸,物理層為RS 485,數據鏈路層為Modbus的串行傳輸協議。Modbus RTU采用二進制表現形式與緊湊的數據結構在數據鏈路層上進CRC校驗。Modbus RTU具備抗干擾性強、通信效率高等特點,應用廣泛。

Modbus TCP結合了以太網物理網絡和網絡標準TCP/IP及以Modbus作為應用協議標準的數據表示方法。Modbus TCP報文被封裝于以太網TCP/IP數據包中。Modbus TCP 利用IP地址尋址服務器,Modbus TCP協議在RTU協議基礎上加一個MBAP報文頭,由于TCP是基于可靠連接的服務,所以在Modbus TCP協議中沒有CRC校驗碼。Modbus TCP具備抗干擾性強、遠距離傳輸和穩定性好等優點。

該系統主要使用Modbus協議03和10功能碼,對應可讀取單個或多個保持寄存器和單個或多個寫多個保持寄存器,對應網關采集和反向控制功能。

3 JSON

JSON(JavaScript Object Natation,JSON)作為一種輕量級數據交換格式,支持多種語言間的數據傳輸。目前很多應用程序服務器都基于JSON格式交互,方便實現多層應用架構[4]。

傳統的數據采集網關多采用XML技術,該技術在Modbus數據解碼方面難度較高,導致解析代碼復雜,開發效率極低。該系統使用JSON數據格式,相比XML,JSON 更簡單、靈活。通過傳輸數據量來看,同一份數據信息,使用XML描述和JSON描述時,JSON比XML更加高效。XML的子節點、父節點解析難度高,而JSON的解析難度低。這一點JSON較XML優勢明顯,有利于在代碼開發階段提高開發效率,提高數據傳輸效率。

4 MQTT協議

MQTT是一種基于主題發布/訂閱的輕量級消息傳輸協議,以其開銷小、及時性好、可靠性高等優勢在物聯網系統中得到廣泛應用[6]。它專為M2M通信設計,由IBM開發,覆蓋全平臺,可連接絕大部分聯網設備和外部設備[7]。

客戶端通過訂閱相應消息主題來接收其他客戶端推送的消息,服務器作為訂閱方和發布方的中介,接收客戶端(發布方)發布的消息,根據訂閱主題把消息推送到相應的客戶端(訂閱方)[8-9]。MQTT結構如圖3所示。

圖3 MQTT結構圖

傳統系統采集傳輸使用HTTP協議。對比MQTT協議和HTTP協議數據包長度,發現MQTT的固定頭長度僅為2 B,協議簡潔,可降低網絡流量。HTTP協議使用輪循方式,導致系統的實時性較差,通信效率低下。

在消息推送方案上,HTTP協議開發消息推送非常繁瑣,無論是iOS(蘋果)還是Android(安卓),如果采用“拉取”推送方式,則程序中信息的更新通知需要持續檢查,獲取消息時需給服務器發送拉取請求[10],信息無法直接通過服務器主動發送給用戶,交互多次增加了移動資源開銷[11]。MQTT還支持三個級別的QoS,無需自己寫確認重傳機制。此外,為保障通信安全,MQTT也會采用SSL/TLS,以提高數據的安全性。

5 系統硬件設計

系統硬件結構如圖4所示。

圖4 系統硬件結構圖

該系統主要的核心處理器為TQ2416 ARM芯片,2416主頻400 MHz,單位功耗比2440小,且CPU支持4個串口。

RS 485是一種通信接口,用以接收Modbus協議傳輸的數據。RS 485采用平衡發送和差分接收接口標準。發送端將電平信號轉換成差分信號,經A,B兩端通過雙絞線傳輸,到接收端再將差分信號轉換成電平信號。

4G模塊采用SIM7100C模塊,通過TCP/IP把數據上傳到服務器或用來接收服務器數據。

5.1 系統軟件設計

物聯網關系統主流程:當物聯網關MQTT與服務器建立連接后,網關訂閱Web端或APP端發布的消息,通過JSON模塊解析判斷Modbus協議方式。協議地址的10萬位為相應的功能碼類型標志,判斷采集或控制讀取相對應寄存器地址或將數值寫入相對應的寄存器地址。將采回數值與協議點封裝JSON格式數據包通過MQTT發布函數將消息發送到客戶端。系統軟件流程如圖5所示。

5.2 系統測試與分析

通過MQTT.fx模擬Web端或APP端發送和接收數據。通過Modbus Slave模擬一臺工業能耗設備,設備參數用不同的協議點標識,如中央空調主電機用電量、冷疑器出水溫度、蒸發器進水溫度對應協議點為400001,400001,400003。協議地址以10萬位為相應的功能碼類型,標志為“4”表示數據采集功能,標志為“5”則表示控制功能。

5.2.1 MQTT.fx基本功能介紹

(1)按工具條的設置按鈕進行本地測試,連接到本地服務器192.168.16.212。MQTT.fx鏈接配置如圖7所示。

(2)點擊下級菜單項 Subscribe,在下拉框中選擇或輸入自己希望的主題,比如系統使用/EOSLink004,通過按其右側按鈕Subscribe來訂閱消息,點擊下級菜單項 Publish,在下拉框中選擇或者輸入自己發布的主題,如/EOSLink004/5D52964D8081,再點擊其右側的按鈕Publish發布主題消息。MQTT.fx功能板如圖8所示。

5.2.2 Modbus Slave功能

Slave ID代表從設備ID,Address代表協議點起始地址為400000,Quantity代表協議點數量。Modbus Slave連接配置如圖9所示。

5.2.3 數據采集具體測試流程

用MQTT.fx的Publish功能來仿真服務器向網關系統發送的消息,/EOSLink004/5D52964D8081是MQTT服務器訂閱的主題,5D52964D8081是網關設備ID,400000~400031是協議點,需采集32個協議點的數據。MQTT.fx模擬服務器發送數據界面如圖10所示。

用MQTT.fx的Subscribe功能來仿真服務器接收智能網關系統發送的消息:采集到400000~400031協議地址對應的數值,采用十六進制采集方式,協議地址40000對應的數值30以十六進制方式采集,把30轉化成十進制,數值為48,與Modbus Slave協議地址400000中的數值對應。Modbus Slave模擬設備數據界面如圖11所示。

5.2.4 反向控制具體測試流程

用MQTT.fx的Publish功能來仿真服務器向智能網關系統發送的消息:/EOSLink004/5D52964D8081為消息主題,控制網關型號為5D52964D8081的設備,把協議點0地址的數值設置為56,之后將56轉化成十六進制數值,為38。MQTT.fx發送數據界面如圖12所示。采用功能10,組合協議點為500000。

5.2.5 關鍵技術和重要指標

(1)硬件層采集:具有RS 485接口和以太網接口,既適用于舊設備的485接口也適用于現代工業的以太網接口,使用SIM7100C 4G無線模塊進行TCP/IP數據傳輸,提高傳輸距離以及系統的可移動性。

(2)傳輸格式:系統采用JSON格式進行數據交換,在數據格式、占用空間、解析速度方面都具備較好的優勢,提高了傳輸速度和質量。

(3)軟件設計:采用Modbus與MQTT融合的方式,數據采集和數據傳輸使用不同線程,以提高采集和傳輸效率。采用線程池技術,支持多臺設備同時采集。MQTT替換傳統HTTP協議,具有低功耗、低流量、簡單高效等特點。

(4)智能化程度:系統具備遠距離反向控制功能,通過Web端或APP端發送控制指令,可以開啟、關閉工業設備或設定數值,從而實現智能化控制。

6 結 語

本文設計了一款新型Modbus與MQTT融合的工業能耗網關系統,可解決傳統數據采集設備數量少、距離短、實時性差、效率低、通用性差等問題。在設備接口方面,不僅適用于傳統工業的RS 485接口,也可以用網口采集數據。本系統不僅適用于工業能耗設備遠程監控,還可以應用于農業、商業、校園設備數據遠程監控。同時還能通過終端設備實現遠程智能控制。經過測試系統與服務器鏈接驗證,系統運行正常、穩定。

參 考 文 獻

[1]董朝陽,趙俊華,文福拴,等.從智能電網到能源互聯網:基本概念與研究框架[J].電力系統自動化,2014,38(15):1-11.

[2] CHANG M,ZHANG T.Fog and IoT:an overview of research opportunities[J].IEEE Internet of things journal,2016,3(6):854-864.

[3]范學佳,趙斌,衣淑娟,等.基于 Modbus 的寒地水稻育秧環境智能監控系統[J].農機化研究,2016(2):201-204.

[4]張濤,黃強,毛磊雅,等.一個基于JSON的對象序列化算法[J].計算機工程與應用,2007,43(15):98-100.

[5]張滬寅,屈乾松,胡瑞蕓.基于 JSON 的數據交換模型[J].計算機工程與設計,2015,36(12):3380-3384.

[6]姚丹,謝雪松,楊建軍.基于 MQTT 協議的物聯網通信系統的研究與實現[J].信息通信,2016(3):33-35.

[7] MALONE T,GRANT K,TURBAK F,et al.Intelligent information sharing systems comm.[J].ACM,1987,30(5):390-402.

[8]任亨.基于MQTT協議的消息推送服務器[J].計算機系統應用,2014,23(3):77-82.

[9]馬躍,孫翱,賈軍營,等.MQTT協議在移動互聯網即時通信中的應用[J].計算機系統應用,2016,25(3):124-135

[10]劉軍霞,熊選東,付建丹.基于發布/訂閱的推模式服務調用[J].計算機系統應用,2012(12):196-199.

[11]鐘良驥,桂學勤,廖海斌,等.基于 MQTT 的物聯網平臺設計與分析[J].鄖陽師范高等??茖W校學報,2014,34(6):52-55.

猜你喜歡
線程網關消息
淺談linux多線程協作
應對氣候變化需要打通“網關”
消息
消息
消息
一種實時高效的伺服控制網關設計
基于Zigbee與TCP的物聯網網關設計
基于上下文定界的Fork/Join并行性的并發程序可達性分析*
Linux線程實現技術研究
么移動中間件線程池并發機制優化改進
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合