王 敏,王彪任
(1.安徽工商職業學院,安徽 合肥230041;2.合肥工業大學,安徽 合肥230009)
基于Socket技術的高校建筑能耗采集系統設計
王 敏1,王彪任2
(1.安徽工商職業學院,安徽 合肥230041;2.合肥工業大學,安徽 合肥230009)
就當前建筑能耗采集系統的研究現狀問題,在對目前流行的幾種能耗采集技術比較分析的基礎上,針對高校建筑能耗系統的業務需要和功能需求,提出了基于多線程Socket編程接口的能耗數據采集系統設計,并針對網絡通信傳輸中存在的數據丟包現象提出了相應的解決方案,以保證數據的穩定、安全傳輸。
建筑能耗;網絡通信;數據采集;Socket
隨著高校學生規模的不斷擴大,水、電、氣等基本能源消耗總量不斷增加。因此,如何提高能源的利用效率,避免浪費成為開展“節約型校園”建設工作的重要內容。目前,大部分高校建筑能耗尚未實現有效的信息化管理,能耗數據采集工作基本由人工抄表方式來實現,缺乏實時性,很難真實反映高校建筑能耗使用情況。近年來,隨著住房與城鄉建設部、教育部聯合開展的“建設節約型校園”工作的逐步推進,很多高校加大了對建筑能耗監測、采集的信息化工作。為了滿足建筑能耗監管的需要,各種數字式能耗采集系統的研究應用越來越廣泛[1]。目前,國內外應用的能耗數據采集方式主要有:
1.1 以太網遠程數據采集 采用基于TCP/IP協議的以太網進行數據通信傳輸,具有傳輸速度快、傳輸容量大、可靠性高等優點,是目前應用最多的數據采集方式[2]。
1.2 無線遠程數據采集 利用空間的無線信道實現數據的通信傳輸,只需要小功率的無線發送器和接收器便可,具有系統結構清晰、施工方便等優點。但是,無線電信號會受到建筑物的反射、吸收等作用干擾,影響信號傳輸的穩定性。
1.3 電力載波遠程數據采集 主要利用現有輸電線路實現數據傳輸,目前我國電網還沒有專門的濾波系統,脈沖信號、電磁信號以及無線電信號對電網的干擾很大,致使數據錯碼、丟碼情況時有發生[3]。
基于以太網的遠程數據采集方式由于其具有數據傳輸速度快、傳輸容量大、可靠性高等許多優點,在建筑能耗采集系統的設計中得到了廣泛的應用[2][4]。
使用Java語言設計高校建筑能耗采集系統,運用多線程Socket編程接口完成通信層服務的設計編程。服務端與客戶端使用心跳包技術保持Socket長連接,減少因為頻繁建立、撤銷Socket連接帶來的系統開銷。對傳輸的能耗數據采用MD5、DES加密技術來保證能耗數據準確性和安全性。目前,系統運行情況良好,基本滿足應用需求,能夠實現對校園建筑能耗數據的采集、整理和存儲,為相關管理部門統計分析校園各建筑能耗情況,制定節能管理辦法提供數據支持和決策依據。
建筑能耗數據采集系統結構主要包括:能耗計量裝置(如電表)、數據采集網關(IG)和數據中心(IC)三個模塊。如圖1所示:
(1)數據采集中心,負責管理、授權下屬數據采集網關,向其下發數據采集指令,對采集到的能耗數據進行處理和存儲,為高校的能源管理提供數據支撐(包含樓宇用電信息,電能質量信息等);

圖1 系統架構圖
(2)數據采集網關,是一個嵌入式設備,以較快的頻率定時(本系統設置為2分鐘)從下屬電表(每個數據采集網關通過485串行總線連接若干電表,本系統支持32路電表)獲取電能讀數,并存儲在本地閃存。當接收到上層采集中心的采集指令時,按照預定義的通信報文協議將最新一次能耗讀數傳送至數據中心。數據采集網關和上層數據采集中心之間通過校園以太網作為通信線路傳輸數據;
(3)能耗計量裝置,由智能電表組成,負責根據預定義的通信報文協議上報即時讀數給數據采集網關,智能電表和數據采集網關之間通過485串行總線傳輸電表能耗讀數數據。
高校建筑能耗采集系統的通信層負責從智能網關(IG)采集能耗數據到信息中心(IC),考慮到對能耗數據進行實時點播查詢的需求以及降低因頻繁建立、銷毀Socket而帶來的系統開銷,IC與IG之間采用Socket長連接方式進行通信。IC通過Socket監聽服務來監聽來自IG的Socket連接請求,IC定時向IG發送能耗采集指令Batch_Query,IG接收到采集指令后再從電表中查詢其讀數,并返回給IC。若IC連續幾次都未收到響應,則可判定IG與IC尚未建立連接或者連接已斷,需要重新建立連接。如果需要點播查詢,則可向IC發送查詢請求Node_Query,IC將返回指定電表的電能數據,其工作過程如圖2所示:
2.2.1 通信協議的技術約定:
(1)IG與IC之間采用Socket長連接;
(2)Socket通信采用字符流,其中IG客戶端為C語言實現,IC服務端采用Java語言實現;
(3)每個消息根據業務需要分為若干個域,每個域之間采用分隔符‘|’分割;

圖2 通信協議工作過程
(4)消息采用XML標簽格式,標簽分為三種:a、消息頭:用<Head>和</Head>括起“消息頭”的內容;b、數據:用<Data>和</Data>括起“消息體”的內容;c、校驗值:用<MD5>和</MD5>括起32位MD5校驗碼的內容;
2.2.2 通信協議的消息定義
通信協議的每個消息都由消息頭和消息體組成,消息頭主要包含命令或響應類型,消息體主要包含實際的業務數據。消息格式為:
<Head>命令或響應類型</Head><Data>消息體</Data><MD5>校驗碼</MD5>。
其中,命令或響應類型為兩字節的ASCII碼字符,各個消息的數據格式以及定義說明如下:
(1)Node_Login:數據采集網關向信息中心發送登錄請求消息(IG→IC)。消息定義為:<Head>00</Head><Data>網關編號|登錄密碼</Data>。例如:在建立與“0012”號IG的Socket連接后,第一次請求數據前,IG先請求登錄該數據包的基本樣式為:<Head>00</Head><Data>0012|000000</Data>。
(2)Node_Query:信息中心向數據采集網關發送單一電表電能查詢請求消息(IC→IG)。消息定義為:<Head>10</Head><Data>taskid|待查電表編號</Data><MD5>ABC123</MD5>(假設MD5校驗值為ABC123)。例如:查詢連接在某IG上,編號為00022號電表的三項數據,該數據包的基本樣式為:<Head>10</Head><Data>taskid|00022</Data><MD5>ABC123</MD5>。
(3)Node_Result:數據采集網關向信息中心發送對單一電表電能查詢結果(IG→IC)。消息定義為:<Head>20</Head><Data>taskid|讀表時間*|所查電表編號*|采集的電流值*|采集的電壓值*|采集的電度值*</Data><MD5>ABC123</MD5>。例如:某IG返回IC對自己所接編號為00022號電表的查詢數據,“02.3安培220.1伏特123456.7度”,該數據包的基本樣式為:<Head>20</Head><Data>taskid|2010-05-0611:22:30|00022*023*2201*01234567*</Data><MD5>ABC123</MD5>。
(4)Batch_Query:信息中心向數據采集網關發送查詢所接所有電表電能數據請求消息(IC→IG)。該消息無消息體,只包含taskid,消息定義為:<Head>30</Head><Data>taskid</Data><MD5>ABC123</MD5>。
(5)Batch_Result:數據采集網關向信息中心發送批量查詢結果消息(IG→IC)。消息定義為:<Head>40</Head><Data>taskid|讀表時間|所查該網關所接電表總數|電表1編號*采集的電流值*采集的電壓值*采集的電度值@電表2編號……</Data><MD5>ABC123</MD5>。
(6)HeartBeat:數據采集網關向信息中心發送心跳包,表明自己在線(IG→IC),該消息無消息體。消息定義為:<Head>50</Head><MD5>0…0</MD5>(MD5校驗值為“全零”)。
服務端IC采用多線程方式處理來自客戶端IG的的Socket連接請求。服務端啟動一個主線程用于監聽來自客戶端的Socket連接請求,每建立一個與IG端的Socket連接便創建一個新的工作線程,以負責該IG端之間的數據接收、發送及處理。服務端啟動監聽主線程的同時啟動一個定時數據采集任務,輪詢所有已連接并登陸的網關IG,向其發送批量數據采集指令,IG收到指令后便會返回該網關下所有電表該時刻的能耗電能數據。系統通信層主要架構如圖3所示:

圖3 通信層服務架構
①啟動監聽線程和批量數據查詢任務。
②客戶端IG發起Socket連接請求并登陸。
③服務器將每個客戶端創建的Socket新建一個工作線程處理,并將每個工作線程保存在集合Vector中。
④批量數據查詢任務定期掃描Vector中保存的客戶端IG并將批量數據采集指令加入到待發信息隊列中。
⑤Vector中的工作線程啟動發送線程。
⑥發送線程將待發送消息隊列中的消息發送給客戶端。
⑦客戶端IG向服務端中的工作線程返回信息。
由于校園網環境的復雜性,本系統在實際應用中需要解決諸如斷線重連、數據重發等關鍵問題,以保證數據采集的穩定性、準確性。
根據技術需求分析,采用長連接Socket數據通信實現能耗數據采集。系統通過需要引入心跳包來維持IC端、IG端的數據鏈接通道。具體實現是IG端每隔幾分鐘發送心跳包給IC服務端,IC端收到信息后回復一個響應包給IG。對于IC端,如果在超過N(N一般為2)個心跳周期后仍沒有收到IG端心跳包,則可以判斷IG端已經斷開。對于IG端,在發送心跳包后,沒有收到響應,則可以判斷與IC服務器的連接已經斷開,需要重新發起連接。通過上述斷線重連機制,可以很好地保持IC與IG端之間的Socket長連接,保證能耗數據的穩定傳輸。
在復雜的校園網環境下,能耗數據在通信傳輸中偶爾會出現數據丟包、MD5驗證錯誤等現象,這將會直接影響數據傳輸的準確性和完整性,因此在高校建筑能耗采集系統中加入了數據重發機制。具體實現:在服務端與客戶端建立Socket連接后,服務端主動輪詢所有在線的客戶端,向其發送能耗數據采集請求消息,同時將這些請求消息保存在一個重發隊列中,啟動一個線程定時檢查重發隊列中的消息,在指定時間內重新發送。在服務端收到能耗數據信息后,經過MD5校驗后,數據出現異常則丟棄這條信息,如果數據正確則將重發隊列中相應的采集請求消息移除,不用重發。通過數據重發機制,保障了所采集能耗數據的準確性和完整性。
為了測試本文Socket通信服務設計的性能,作者建立了如表1所示的測試環境對Socket通信服務的響應時間、吞吐量等關鍵技術指標進行測試??蛻舳瞬l請求模擬工具采用Apache JMeter,測試時可通過設置JMeter的參數,來模擬不同并發量的客戶端,測試Socket通信服務的性能。

表1 測試環境
測試方法:首先啟動Socket服務,再分別啟動Socket客戶端1和Socket客戶端2的JMeter測試程序。每個客戶端啟動連接到服務端后,每間隔6秒向服務端發送一次數據,總共發送10次。JMeter會計算出各個Socket連接的響應時間以及吞吐量(單位時間內處理的請求數)。Socket通信服務測試結果如下:

表2 本文通信服務測試結果
表2的測試數據表明:Socket服務在200個并發客戶端連接時最大響應時間和最小響應時間基本接近,兩個客戶端的吞吐量也基本一致,即系統服務可以很好地響應多客戶的連接請求。當客戶端并發連接增至250個時,第二批發送連接請求的客戶端2的最大響應時間出現明顯增大的趨勢,但是其吞吐量仍然維持在1.5~2.0/秒。表2表明,本文基于多線程的Socket通信服務設計達到了系統設計目標:同時承載200個以上的客戶端并發請求。
本文詳細介紹了校園建筑能耗監測系統的架構設計、通信協議設計,并對系統設計中遇到的關鍵問題進行了分析并給出了解決方案。最后給出了系統的運行結果,對不同并發客戶端連接請求下,服務端的響應時間、吞吐量等技術指標進行對比分析,結果表明系統設計能夠有效滿足校園能耗數據采集的設計需求。如何在保證系統功能的前提下,采用非阻塞式IO設計對系統進行重構,進一步提高系統的并發性能,是我們需要進一步深入研究的課題[5]。
[1]Khalifa T,Naik K,Nayak A.A Survey of Communication Protocols for Automatic Meter Reading Applications[J].Industrial Electronics.2011,13(2):168-182.
[2]彭蓓蓓,曾春年.基于以太網傳輸的遠程抄表系統的研究[J].武漢理工大學學報(信息與管理工程版),2005,28(3):39-42.
[3]楊輝.電力載波遠程抄表系統提高利用率的研究[J].機電信息,2010,(6):61-62.
[4]周汗卿.JDBC數據庫編程的研究[J].中小企業管理與科技,2010,(4):212.
[5]劉芳,陳偉青,周孝清,等.廣州地區寫字樓類建筑能耗調查與分析[J].建筑節能,2007,23(18):57-60.
Design of Collecting System of the Building Energy Consumption in Higher Education Based on Socket Technology
WANG Min1,WANG Biao-ren2
(1.Anhui Vocational College of Industry and Commerce,Hefei 230041,China;2.Hefei University of Technology,Hefei 230009,China)
This paper,based on the comparison with the present sorts of the energy consumption collecting technology,analyzes the current research situation of the collecting system of building energy consumption.According to the practical requirements of the system of building energy consumption in higher education,the author designs the data collecting system of the energy consumption based on multi-thread socket API,and puts forward the program of how to solve the packet loss problem in network communication transmission in order to ensure a safe and steady data transmission.
energy consumption;network communication;data collecting;Socket
TN919
A
1009-9735(2012)02-0048-04
2012-01-10
安徽省高等學校省級質量工程項目(20101726,20101720)。
王敏(1977-),女,安徽六安人,碩士,研究方向:自然語言處理,電子商務。