国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Socket技術(shù)的高校建筑能耗采集系統(tǒng)設(shè)計

2012-09-15 11:45王彪任
皖西學(xué)院學(xué)報 2012年2期
關(guān)鍵詞:服務(wù)端電表線程

王 敏,王彪任

(1.安徽工商職業(yè)學(xué)院,安徽 合肥230041;2.合肥工業(yè)大學(xué),安徽 合肥230009)

基于Socket技術(shù)的高校建筑能耗采集系統(tǒng)設(shè)計

王 敏1,王彪任2

(1.安徽工商職業(yè)學(xué)院,安徽 合肥230041;2.合肥工業(yè)大學(xué),安徽 合肥230009)

就當(dāng)前建筑能耗采集系統(tǒng)的研究現(xiàn)狀問題,在對目前流行的幾種能耗采集技術(shù)比較分析的基礎(chǔ)上,針對高校建筑能耗系統(tǒng)的業(yè)務(wù)需要和功能需求,提出了基于多線程Socket編程接口的能耗數(shù)據(jù)采集系統(tǒng)設(shè)計,并針對網(wǎng)絡(luò)通信傳輸中存在的數(shù)據(jù)丟包現(xiàn)象提出了相應(yīng)的解決方案,以保證數(shù)據(jù)的穩(wěn)定、安全傳輸。

建筑能耗;網(wǎng)絡(luò)通信;數(shù)據(jù)采集;Socket

1 引言

隨著高校學(xué)生規(guī)模的不斷擴(kuò)大,水、電、氣等基本能源消耗總量不斷增加。因此,如何提高能源的利用效率,避免浪費成為開展“節(jié)約型校園”建設(shè)工作的重要內(nèi)容。目前,大部分高校建筑能耗尚未實現(xiàn)有效的信息化管理,能耗數(shù)據(jù)采集工作基本由人工抄表方式來實現(xiàn),缺乏實時性,很難真實反映高校建筑能耗使用情況。近年來,隨著住房與城鄉(xiāng)建設(shè)部、教育部聯(lián)合開展的“建設(shè)節(jié)約型校園”工作的逐步推進(jìn),很多高校加大了對建筑能耗監(jiān)測、采集的信息化工作。為了滿足建筑能耗監(jiān)管的需要,各種數(shù)字式能耗采集系統(tǒng)的研究應(yīng)用越來越廣泛[1]。目前,國內(nèi)外應(yīng)用的能耗數(shù)據(jù)采集方式主要有:

1.1 以太網(wǎng)遠(yuǎn)程數(shù)據(jù)采集 采用基于TCP/IP協(xié)議的以太網(wǎng)進(jìn)行數(shù)據(jù)通信傳輸,具有傳輸速度快、傳輸容量大、可靠性高等優(yōu)點,是目前應(yīng)用最多的數(shù)據(jù)采集方式[2]。

1.2 無線遠(yuǎn)程數(shù)據(jù)采集 利用空間的無線信道實現(xiàn)數(shù)據(jù)的通信傳輸,只需要小功率的無線發(fā)送器和接收器便可,具有系統(tǒng)結(jié)構(gòu)清晰、施工方便等優(yōu)點。但是,無線電信號會受到建筑物的反射、吸收等作用干擾,影響信號傳輸?shù)姆€(wěn)定性。

1.3 電力載波遠(yuǎn)程數(shù)據(jù)采集 主要利用現(xiàn)有輸電線路實現(xiàn)數(shù)據(jù)傳輸,目前我國電網(wǎng)還沒有專門的濾波系統(tǒng),脈沖信號、電磁信號以及無線電信號對電網(wǎng)的干擾很大,致使數(shù)據(jù)錯碼、丟碼情況時有發(fā)生[3]。

基于以太網(wǎng)的遠(yuǎn)程數(shù)據(jù)采集方式由于其具有數(shù)據(jù)傳輸速度快、傳輸容量大、可靠性高等許多優(yōu)點,在建筑能耗采集系統(tǒng)的設(shè)計中得到了廣泛的應(yīng)用[2][4]。

2 高校建筑能耗采集系統(tǒng)設(shè)計

使用Java語言設(shè)計高校建筑能耗采集系統(tǒng),運用多線程Socket編程接口完成通信層服務(wù)的設(shè)計編程。服務(wù)端與客戶端使用心跳包技術(shù)保持Socket長連接,減少因為頻繁建立、撤銷Socket連接帶來的系統(tǒng)開銷。對傳輸?shù)哪芎臄?shù)據(jù)采用MD5、DES加密技術(shù)來保證能耗數(shù)據(jù)準(zhǔn)確性和安全性。目前,系統(tǒng)運行情況良好,基本滿足應(yīng)用需求,能夠?qū)崿F(xiàn)對校園建筑能耗數(shù)據(jù)的采集、整理和存儲,為相關(guān)管理部門統(tǒng)計分析校園各建筑能耗情況,制定節(jié)能管理辦法提供數(shù)據(jù)支持和決策依據(jù)。

2.1 系統(tǒng)結(jié)構(gòu)

建筑能耗數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)主要包括:能耗計量裝置(如電表)、數(shù)據(jù)采集網(wǎng)關(guān)(IG)和數(shù)據(jù)中心(IC)三個模塊。如圖1所示:

(1)數(shù)據(jù)采集中心,負(fù)責(zé)管理、授權(quán)下屬數(shù)據(jù)采集網(wǎng)關(guān),向其下發(fā)數(shù)據(jù)采集指令,對采集到的能耗數(shù)據(jù)進(jìn)行處理和存儲,為高校的能源管理提供數(shù)據(jù)支撐(包含樓宇用電信息,電能質(zhì)量信息等);

圖1 系統(tǒng)架構(gòu)圖

(2)數(shù)據(jù)采集網(wǎng)關(guān),是一個嵌入式設(shè)備,以較快的頻率定時(本系統(tǒng)設(shè)置為2分鐘)從下屬電表(每個數(shù)據(jù)采集網(wǎng)關(guān)通過485串行總線連接若干電表,本系統(tǒng)支持32路電表)獲取電能讀數(shù),并存儲在本地閃存。當(dāng)接收到上層采集中心的采集指令時,按照預(yù)定義的通信報文協(xié)議將最新一次能耗讀數(shù)傳送至數(shù)據(jù)中心。數(shù)據(jù)采集網(wǎng)關(guān)和上層數(shù)據(jù)采集中心之間通過校園以太網(wǎng)作為通信線路傳輸數(shù)據(jù);

(3)能耗計量裝置,由智能電表組成,負(fù)責(zé)根據(jù)預(yù)定義的通信報文協(xié)議上報即時讀數(shù)給數(shù)據(jù)采集網(wǎng)關(guān),智能電表和數(shù)據(jù)采集網(wǎng)關(guān)之間通過485串行總線傳輸電表能耗讀數(shù)數(shù)據(jù)。

2.2 通信協(xié)議設(shè)計

高校建筑能耗采集系統(tǒng)的通信層負(fù)責(zé)從智能網(wǎng)關(guān)(IG)采集能耗數(shù)據(jù)到信息中心(IC),考慮到對能耗數(shù)據(jù)進(jìn)行實時點播查詢的需求以及降低因頻繁建立、銷毀Socket而帶來的系統(tǒng)開銷,IC與IG之間采用Socket長連接方式進(jìn)行通信。IC通過Socket監(jiān)聽服務(wù)來監(jiān)聽來自IG的Socket連接請求,IC定時向IG發(fā)送能耗采集指令Batch_Query,IG接收到采集指令后再從電表中查詢其讀數(shù),并返回給IC。若IC連續(xù)幾次都未收到響應(yīng),則可判定IG與IC尚未建立連接或者連接已斷,需要重新建立連接。如果需要點播查詢,則可向IC發(fā)送查詢請求Node_Query,IC將返回指定電表的電能數(shù)據(jù),其工作過程如圖2所示:

2.2.1 通信協(xié)議的技術(shù)約定:

(1)IG與IC之間采用Socket長連接;

(2)Socket通信采用字符流,其中IG客戶端為C語言實現(xiàn),IC服務(wù)端采用Java語言實現(xiàn);

(3)每個消息根據(jù)業(yè)務(wù)需要分為若干個域,每個域之間采用分隔符‘|’分割;

圖2 通信協(xié)議工作過程

(4)消息采用XML標(biāo)簽格式,標(biāo)簽分為三種:a、消息頭:用<Head>和</Head>括起“消息頭”的內(nèi)容;b、數(shù)據(jù):用<Data>和</Data>括起“消息體”的內(nèi)容;c、校驗值:用<MD5>和</MD5>括起32位MD5校驗碼的內(nèi)容;

2.2.2 通信協(xié)議的消息定義

通信協(xié)議的每個消息都由消息頭和消息體組成,消息頭主要包含命令或響應(yīng)類型,消息體主要包含實際的業(yè)務(wù)數(shù)據(jù)。消息格式為:

<Head>命令或響應(yīng)類型</Head><Data>消息體</Data><MD5>校驗碼</MD5>。

其中,命令或響應(yīng)類型為兩字節(jié)的ASCII碼字符,各個消息的數(shù)據(jù)格式以及定義說明如下:

(1)Node_Login:數(shù)據(jù)采集網(wǎng)關(guān)向信息中心發(fā)送登錄請求消息(IG→IC)。消息定義為:<Head>00</Head><Data>網(wǎng)關(guān)編號|登錄密碼</Data>。例如:在建立與“0012”號IG的Socket連接后,第一次請求數(shù)據(jù)前,IG先請求登錄該數(shù)據(jù)包的基本樣式為:<Head>00</Head><Data>0012|000000</Data>。

(2)Node_Query:信息中心向數(shù)據(jù)采集網(wǎng)關(guān)發(fā)送單一電表電能查詢請求消息(IC→IG)。消息定義為:<Head>10</Head><Data>taskid|待查電表編號</Data><MD5>ABC123</MD5>(假設(shè)MD5校驗值為ABC123)。例如:查詢連接在某IG上,編號為00022號電表的三項數(shù)據(jù),該數(shù)據(jù)包的基本樣式為:<Head>10</Head><Data>taskid|00022</Data><MD5>ABC123</MD5>。

(3)Node_Result:數(shù)據(jù)采集網(wǎng)關(guān)向信息中心發(fā)送對單一電表電能查詢結(jié)果(IG→IC)。消息定義為:<Head>20</Head><Data>taskid|讀表時間*|所查電表編號*|采集的電流值*|采集的電壓值*|采集的電度值*</Data><MD5>ABC123</MD5>。例如:某IG返回IC對自己所接編號為00022號電表的查詢數(shù)據(jù),“02.3安培220.1伏特123456.7度”,該數(shù)據(jù)包的基本樣式為:<Head>20</Head><Data>taskid|2010-05-0611:22:30|00022*023*2201*01234567*</Data><MD5>ABC123</MD5>。

(4)Batch_Query:信息中心向數(shù)據(jù)采集網(wǎng)關(guān)發(fā)送查詢所接所有電表電能數(shù)據(jù)請求消息(IC→IG)。該消息無消息體,只包含taskid,消息定義為:<Head>30</Head><Data>taskid</Data><MD5>ABC123</MD5>。

(5)Batch_Result:數(shù)據(jù)采集網(wǎng)關(guān)向信息中心發(fā)送批量查詢結(jié)果消息(IG→IC)。消息定義為:<Head>40</Head><Data>taskid|讀表時間|所查該網(wǎng)關(guān)所接電表總數(shù)|電表1編號*采集的電流值*采集的電壓值*采集的電度值@電表2編號……</Data><MD5>ABC123</MD5>。

(6)HeartBeat:數(shù)據(jù)采集網(wǎng)關(guān)向信息中心發(fā)送心跳包,表明自己在線(IG→IC),該消息無消息體。消息定義為:<Head>50</Head><MD5>0…0</MD5>(MD5校驗值為“全零”)。

2.3 通信層服務(wù)架構(gòu)

服務(wù)端IC采用多線程方式處理來自客戶端IG的的Socket連接請求。服務(wù)端啟動一個主線程用于監(jiān)聽來自客戶端的Socket連接請求,每建立一個與IG端的Socket連接便創(chuàng)建一個新的工作線程,以負(fù)責(zé)該IG端之間的數(shù)據(jù)接收、發(fā)送及處理。服務(wù)端啟動監(jiān)聽主線程的同時啟動一個定時數(shù)據(jù)采集任務(wù),輪詢所有已連接并登陸的網(wǎng)關(guān)IG,向其發(fā)送批量數(shù)據(jù)采集指令,IG收到指令后便會返回該網(wǎng)關(guān)下所有電表該時刻的能耗電能數(shù)據(jù)。系統(tǒng)通信層主要架構(gòu)如圖3所示:

圖3 通信層服務(wù)架構(gòu)

①啟動監(jiān)聽線程和批量數(shù)據(jù)查詢?nèi)蝿?wù)。

②客戶端IG發(fā)起Socket連接請求并登陸。

③服務(wù)器將每個客戶端創(chuàng)建的Socket新建一個工作線程處理,并將每個工作線程保存在集合Vector中。

④批量數(shù)據(jù)查詢?nèi)蝿?wù)定期掃描Vector中保存的客戶端IG并將批量數(shù)據(jù)采集指令加入到待發(fā)信息隊列中。

⑤Vector中的工作線程啟動發(fā)送線程。

⑥發(fā)送線程將待發(fā)送消息隊列中的消息發(fā)送給客戶端。

⑦客戶端IG向服務(wù)端中的工作線程返回信息。

3 關(guān)鍵問題

由于校園網(wǎng)環(huán)境的復(fù)雜性,本系統(tǒng)在實際應(yīng)用中需要解決諸如斷線重連、數(shù)據(jù)重發(fā)等關(guān)鍵問題,以保證數(shù)據(jù)采集的穩(wěn)定性、準(zhǔn)確性。

3.1 斷線重連

根據(jù)技術(shù)需求分析,采用長連接Socket數(shù)據(jù)通信實現(xiàn)能耗數(shù)據(jù)采集。系統(tǒng)通過需要引入心跳包來維持IC端、IG端的數(shù)據(jù)鏈接通道。具體實現(xiàn)是IG端每隔幾分鐘發(fā)送心跳包給IC服務(wù)端,IC端收到信息后回復(fù)一個響應(yīng)包給IG。對于IC端,如果在超過N(N一般為2)個心跳周期后仍沒有收到IG端心跳包,則可以判斷IG端已經(jīng)斷開。對于IG端,在發(fā)送心跳包后,沒有收到響應(yīng),則可以判斷與IC服務(wù)器的連接已經(jīng)斷開,需要重新發(fā)起連接。通過上述斷線重連機(jī)制,可以很好地保持IC與IG端之間的Socket長連接,保證能耗數(shù)據(jù)的穩(wěn)定傳輸。

3.2 數(shù)據(jù)重發(fā)

在復(fù)雜的校園網(wǎng)環(huán)境下,能耗數(shù)據(jù)在通信傳輸中偶爾會出現(xiàn)數(shù)據(jù)丟包、MD5驗證錯誤等現(xiàn)象,這將會直接影響數(shù)據(jù)傳輸?shù)臏?zhǔn)確性和完整性,因此在高校建筑能耗采集系統(tǒng)中加入了數(shù)據(jù)重發(fā)機(jī)制。具體實現(xiàn):在服務(wù)端與客戶端建立Socket連接后,服務(wù)端主動輪詢所有在線的客戶端,向其發(fā)送能耗數(shù)據(jù)采集請求消息,同時將這些請求消息保存在一個重發(fā)隊列中,啟動一個線程定時檢查重發(fā)隊列中的消息,在指定時間內(nèi)重新發(fā)送。在服務(wù)端收到能耗數(shù)據(jù)信息后,經(jīng)過MD5校驗后,數(shù)據(jù)出現(xiàn)異常則丟棄這條信息,如果數(shù)據(jù)正確則將重發(fā)隊列中相應(yīng)的采集請求消息移除,不用重發(fā)。通過數(shù)據(jù)重發(fā)機(jī)制,保障了所采集能耗數(shù)據(jù)的準(zhǔn)確性和完整性。

4 系統(tǒng)運行結(jié)果與分析

為了測試本文Socket通信服務(wù)設(shè)計的性能,作者建立了如表1所示的測試環(huán)境對Socket通信服務(wù)的響應(yīng)時間、吞吐量等關(guān)鍵技術(shù)指標(biāo)進(jìn)行測試??蛻舳瞬l(fā)請求模擬工具采用Apache JMeter,測試時可通過設(shè)置JMeter的參數(shù),來模擬不同并發(fā)量的客戶端,測試Socket通信服務(wù)的性能。

表1 測試環(huán)境

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

表2 本文通信服務(wù)測試結(jié)果

表2的測試數(shù)據(jù)表明:Socket服務(wù)在200個并發(fā)客戶端連接時最大響應(yīng)時間和最小響應(yīng)時間基本接近,兩個客戶端的吞吐量也基本一致,即系統(tǒng)服務(wù)可以很好地響應(yīng)多客戶的連接請求。當(dāng)客戶端并發(fā)連接增至250個時,第二批發(fā)送連接請求的客戶端2的最大響應(yīng)時間出現(xiàn)明顯增大的趨勢,但是其吞吐量仍然維持在1.5~2.0/秒。表2表明,本文基于多線程的Socket通信服務(wù)設(shè)計達(dá)到了系統(tǒng)設(shè)計目標(biāo):同時承載200個以上的客戶端并發(fā)請求。

5 總結(jié)

本文詳細(xì)介紹了校園建筑能耗監(jiān)測系統(tǒng)的架構(gòu)設(shè)計、通信協(xié)議設(shè)計,并對系統(tǒng)設(shè)計中遇到的關(guān)鍵問題進(jìn)行了分析并給出了解決方案。最后給出了系統(tǒng)的運行結(jié)果,對不同并發(fā)客戶端連接請求下,服務(wù)端的響應(yīng)時間、吞吐量等技術(shù)指標(biāo)進(jìn)行對比分析,結(jié)果表明系統(tǒng)設(shè)計能夠有效滿足校園能耗數(shù)據(jù)采集的設(shè)計需求。如何在保證系統(tǒng)功能的前提下,采用非阻塞式IO設(shè)計對系統(tǒng)進(jìn)行重構(gòu),進(jìn)一步提高系統(tǒng)的并發(fā)性能,是我們需要進(jìn)一步深入研究的課題[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]彭蓓蓓,曾春年.基于以太網(wǎng)傳輸?shù)倪h(yuǎn)程抄表系統(tǒng)的研究[J].武漢理工大學(xué)學(xué)報(信息與管理工程版),2005,28(3):39-42.

[3]楊輝.電力載波遠(yuǎn)程抄表系統(tǒng)提高利用率的研究[J].機(jī)電信息,2010,(6):61-62.

[4]周汗卿.JDBC數(shù)據(jù)庫編程的研究[J].中小企業(yè)管理與科技,2010,(4):212.

[5]劉芳,陳偉青,周孝清,等.廣州地區(qū)寫字樓類建筑能耗調(diào)查與分析[J].建筑節(jié)能,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

安徽省高等學(xué)校省級質(zhì)量工程項目(20101726,20101720)。

王敏(1977-),女,安徽六安人,碩士,研究方向:自然語言處理,電子商務(wù)。

猜你喜歡
服務(wù)端電表線程
巧判電表測量對象
電表“對”與“錯”歸類巧掌握
基于C#線程實驗探究
基于國產(chǎn)化環(huán)境的線程池模型研究與實現(xiàn)
Cartoons
新時期《移動Web服務(wù)端開發(fā)》課程教學(xué)改革的研究
在Windows Server 2008上創(chuàng)建應(yīng)用
淺談linux多線程協(xié)作
摸清黑客套路防范木馬侵入
如何測電表的量程