




摘 要:基于Netty的智能抄表系統是一種具有高效、安全和可靠特性的物聯網應用。針對傳統抄表系統存在的問題,如數據傳輸不穩定、信息安全性差等,利用Netty網絡框架實現一套智能抄表系統,該系統具有數據采集、實時傳輸、數據處理等功能。通過對實驗結果的評估和分析,證明了該系統具有高效、安全和可靠特性,可以有效提高工作效率,在智能抄表系統領域具有廣泛的應用價值。
關鍵詞:智能抄表系統;Netty;Q/GDW 1376.1協議;協議解析;物聯網;電表
中圖分類號:TP29 文獻標識碼:A 文章編號:2095-1302(2024)09-0-03
DOI:10.16667/j.issn.2095-1302.2024.09.035
0 引 言
隨著物聯網技術的發展,智能抄表系統已成為現代城市建設必不可少的一部分。傳統的抄表系統在數據采集、存儲、傳輸等方面存在多種問題,如數據易丟失、傳輸不穩定、信息安全性差等,嚴重制約了物聯網應用的發展。因此,利用先進的網絡技術和通信協議,改進抄表系統的數據處理方式和傳輸方式,提高其安全性、可靠性和可擴展性,勢在
必行[1-3]。
Netty是一款基于Java NIO(Non-blocking IO)實現的高性能、異步事件驅動的網絡應用框架,具有良好的可擴展性和穩定性,能夠有效地實現網絡通信[4-5]。本文以Netty框架為基礎,針對傳統抄表系統的問題,設計并實現了一套智能抄表系統,具有高效、安全和可靠特性。該系統通過網絡通信技術,實現抄表數據的遠程傳輸和實時監測,并采用分布式結構、數據庫技術和多線程技術等來提高系統的穩定性、可靠性。
1 Netty框架介紹
Netty框架的主要特點是:高性能、異步、事件驅動、易擴展、可重用。它能夠輕松地實現各種TCP、UDP、HTTP協議,同時具有良好的拓展性和可重用性[6-7]。下面介紹其基本原理和實現技術。
1.1 非阻塞I/O模型
Netty框架采用基于NIO的非阻塞I/O模型,使用Java的原生Selector機制實現了事件驅動方式的I/O操作。這種模型可以實現高效的資源利用,降低服務器負載,提升系統的吞吐量。
1.2 多線程并發處理
Netty框架可以通過線程池的方式輕松地實現多線程并發處理。通常情況下,一個Netty應用程序會被分為若干Handler鏈路和若干EventLoop線程,每個EventLoop線程處理若干個Handler請求,從而實現了多個請求的同時
處理。
1.3 Channel技術
Netty框架采用Channel技術來處理底層的Transport,可以通過ChannelHandler對網絡事件和數據進行處理,并且支持多個Channel注冊到一個EventLoop上,以實現同一個EventLoop可以處理多個Channel的請求。
1.4 Codec技術
Netty框架的Codec技術主要包括Encoder和Decoder兩個部分。Encoder是將業務消息轉換為二進制數據,以便進行網絡傳輸;Decoder則將網絡接收到的二進制數據反序列化為應用程序能夠處理的業務消息。
除了上述優勢,Netty框架還有以下特點:并發能力高、安全性高、容錯能力強、自身網絡協議能力強,支持千萬級連接和管理、多種數據傳輸方式。Netty框架能夠較好地滿足智能抄表系統的通信需求[8-9]。
2 系統總體設計與實現
本文研究的智能抄表系統的整體架構如圖1所示,硬件部分包括電表、集中器,軟件部分包括數據采集模塊、數據傳輸模塊、數據處理模塊、應用界面4個模塊。通過集中器實現對電表電能信息的采集與管理,并由軟件部分實現數據的解析、處理和可視化。
2.1 數據采集模塊
數據采集模塊主要負責物聯網設備中數據的讀取和組織,并將其轉化為能夠在網絡中傳輸的二進制數據。該模塊采用Netty框架的非阻塞I/O模型和Channel技術,自定義ChannelHandler實現數據采集任務,將JSON格式的數據轉化為字節數組,并使用MD5算法進行加密。由于該算法具有很好的數據密度,因此可以有效保證數據的安全性。
2.2 數據傳輸模塊
數據傳輸模塊主要負責對采集的數據進行傳輸和處理,并保證在網絡通信環境不穩定的情況下,數據能夠可靠地到達服務器。該模塊使用Netty框架的多線程并發處理技術,在TCP協議的基礎上實現了數據的傳輸和重傳機制,保證了數據的穩定性和實時性。同時,在傳輸的過程中,還采用自定義ChannelPipeline來聚合不同階段的通道處理器,避免了系統資源的浪費。
2.3 數據處理模塊
數據處理模塊主要負責對服務器接收到的數據進行解碼、解密和解析操作,并將其轉換為可存儲的格式。該模塊使用Netty框架的Codec技術和異步線程池,實現了數據的快速處理和存儲,保證了數據的安全性和可靠性。同時,該模塊還實現了數據的多重校驗機制,包括CRC、MD5、RSA等多種算法,以確保數據的完整性和正確性。
2.4 應用界面
應用界面是智能抄表系統重要的管理和控制入口,用戶能夠通過應用界面遠程管理和監控物聯網設備。該界面采用了最新的Web技術和響應式設計,具有美觀、直觀的特點。同時,該界面還實現了數據可視化和遠程控制,用戶能夠實時查看抄表數據和對設備進行遠程操作。
3 協議解析及編碼
3.1 上行協議解析
智能抄表系統的上行協議是指系統從集中器上傳到服務器的數據格式和規范。本文基于Netty實現了DL/T 645—2007和Q/GDW 1376.1—2013協議的解析,從而實現準確的數據傳輸[10]。其中,Q/GDW 1376.1協議是國內電力行業用于數據傳輸的一種通信協議,其主要由幀頭、幀尾、數據域等組成,具體格式如下:
|幀頭|地址|功能碼|數據|數據長度|CRC|幀尾|
其中:幀頭和幀尾為固定數據;地址用于識別集中器;功能碼表示數據類型;數據長度表示數據域的長度;CRC用于校驗數據的完整性。
Netty提供了多種解碼器和編碼器,能夠實現對數據進行正確的解析和編碼。在Q/GDW 1376.1協議的解析中,可以使用Netty提供的ByteToMessageDecoder,它主要用于對字節流進行解碼,同時還可以方便地進行半包和粘包處理。協議解析的總體流程如圖2所示。
通過將Q/GDW 1376.1協議報文進行預解析,分解出幀頭、數據字段和幀尾,并核對校驗碼的正確性;然后,根據數據字段中的功能碼進行路由轉發,以分流到不同的數據控制器類進行處理。數據控制器根據不同的幀序列號將信息發給RabbitMQ,相應的功能實現類在監聽到消息后開始解析,最終實現消息解析保存。
Q/GDW 1376.1—2013協議格式如圖3所示。針對該協議格式,本文采用Netty框架進行數據解析和處理。具體實現過程如下:首先,將收到的數據放入緩存區中,使用自定義的字符解碼器將字節流解析為字符串。其次,根據字符串中的協議格式進行解析,得到幀頭、地址、功能碼、數據長度、數據、CRC和幀尾等數據。接著,對數據進行解密和反序列化,將其轉化為計量數據。然后,將計量數據存儲到數據庫,并記錄到日志中。最后,返回應答結果,表示數據處理
完成。
3.2 下行命令編碼
智能抄表系統的下行命令是指服務器向計量設備發送的控制指令,其主要包括讀取數據、修改參數、校時等功能。本文采用Netty框架將下行命令轉換為二進制數據,并通過TCP連接發送給集中器。下行命令拉閘通信流程如圖4
所示。
首先,構造下行命令對象,設置地址、功能碼、數據長度、數據等屬性。其次,將下行命令對象轉換為字節流,使用自定義的字符編碼器將其轉換為二進制數據。最后,發送二進制數據給集中器,等待響應。
Web端下發拉閘命令,緩存讀寫接口單元負責將命令放入指令緩存單元。拉閘線程掃描到拉閘命令緩存后,集中器通信代理對象執行指令拉取,通過封裝拉閘報文后下發拉閘命令給集中器,并清除拉閘緩存。集中器收到命令后,給電表下發拉閘指令并上報拉閘結果。結果報文經過路由服務解析,提取數據后發消息給消息服務的業務操作結果隊列。業務服務消息監聽線程監聽到拉閘隊列消息,根據路由鍵轉發到拉閘消息處理類,最后對數據報文進行解析,得到拉閘成功與否的結果并保存至數據庫。
4 結果與分析
本系統以某園區宿舍樓宇為例,共安裝25個集中器,500個電表。通過系統的數據采集、實時傳輸和數據處理功能,準確地獲取到每個電表的用電數據,包括累計電量、充值次數、剩余金額、電價、透支金額等。現場測試數據見表1所列。
實驗結果顯示,基于Netty的智能抄表系統具有較快的數據傳輸速度和相對較低的響應時間,能夠滿足大規模電表數據采集和傳輸的需求。
在系統運行過程中,通過對比實際用電情況和抄表系統采集到的數據,證明系統能夠準確地獲取電表讀數,并實時傳輸到服務器,避免了傳統抄表系統中數據傳輸不穩定的
問題。
此外,通過使用MD5算法對數據加密,并使用權限控制機制限制對系統的訪問,確保了系統數據的安全性。實驗結果表明,系統能夠有效地保護電表數據不被未經授權的訪問者獲取。
5 結 語
本文介紹了一種基于Netty的智能抄表系統的實現方法,針對數據采集、數據傳輸、數據處理、應用界面4個方面進行了詳細的分析。通過對Q/GDW 1376.1協議的關鍵技術進行探討,為基于Netty的智能抄表系統的實現提供了有力保障。最后,通過實驗驗證,本文的智能抄表系統具有穩定、可靠、安全的特點。未來,基于Netty的智能抄表系統將在城市能源管理、精細化管理等領域得到廣泛應用。
參考文獻
[1]錢亮,張嬴,左勇. 基于云平臺的數據保護功能智能電能表設計
[J].物聯網技術,2023,13(9):131-134.
[2]俞海猛,隋仕偉,劉夢爽,等.基于電力載波通信技術的智能小區抄表系統[J].計算機測量與控制,2022,30(11):251-256.
[3]張芹,夏水斌,許健.基于智能電表的電能信息采集系統的設計與研究[J].自動化儀表,2022,43(2):82-87.
[4]楊揚,田茂,高士木,等.基于Netty的城市智慧路燈管理系統
[J].物聯網技術,2018,8(4):84-86.
[5]凌敏,王驥.基于Netty和MongoDB的車聯網Web系統[J].測繪與空間地理信息,2021,44(10):55-58.
[6]王寧,張娜,于澤川,等.基于Netty的高性能消息中間件設計與實現[J].智能計算機與應用,2021,11(6):168-172.
[7]陳純純.基于Netty+WebSocket的社區增值服務平臺的推送設計[J].物聯網技術,2016,6(12):89-91.
[8]劉波,周浩宇,張歷卓.一種基于嵌入式系統的多維協同與對比教學模式探討[J].物聯網技術,2022,12(10):133-136.
[9]范華峰.一種基于Netty框架的網絡應用服務器設計方法[J].福建電腦,2015,31(10):33-34.
[10]國家電網公司. 電力用戶用電信息采集系統通信協議:Q/GDW 1376.1—2013 [S].北京:中國電力出版社,2013.
收稿日期:2023-09-27 修回日期:2023-10-26
作者簡介:范利良(1989—),男,碩士,工程師,研究方向為工業網絡與自動化控制。
高 平(1980—),男,碩士,高級工程師,研究方向為低壓電器智能配電技術。