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

?

基于Android的電力分界開關(guān)監(jiān)控系統(tǒng)設(shè)計(jì)與分析

2014-11-12 20:30:09李冰朱巖
無(wú)線互聯(lián)科技 2014年10期

李冰 朱巖

摘 要:應(yīng)用目前普及率較高的Android系統(tǒng)作為電力分界開關(guān)監(jiān)控軟件的移動(dòng)端系統(tǒng),該軟件能夠與各種平臺(tái)服務(wù)端之間進(jìn)行通信,實(shí)現(xiàn)對(duì)柱上開關(guān)數(shù)據(jù)的遠(yuǎn)程監(jiān)控。本文著重介紹了系統(tǒng)的通信模塊的設(shè)計(jì)和實(shí)現(xiàn),其中主要利用Socket通信實(shí)現(xiàn)服務(wù)端的實(shí)時(shí)“推送”,并進(jìn)行了相關(guān)的優(yōu)化。

關(guān)鍵詞:Android;分界開關(guān)監(jiān)控;Socket

近年來(lái),電力分界開關(guān)在電網(wǎng)中的應(yīng)用逐漸普及,極大的增強(qiáng)了各支網(wǎng)的智能化管理,相應(yīng)的監(jiān)控系統(tǒng)也為電力監(jiān)管部門提供了遠(yuǎn)程了解電力現(xiàn)場(chǎng)工況、故障排查、減小故障范圍等諸多功能[1]。但目前大部分監(jiān)控軟件都運(yùn)行在PC機(jī)上,監(jiān)控人員需要固定在監(jiān)控室中進(jìn)行查看操作,極為不便[2]。而移動(dòng)端恰好解決以上難題,通過(guò)相對(duì)較小的硬件開銷,獲得更為便捷的體驗(yàn)。

本文設(shè)計(jì)的Android軟件通過(guò)與轉(zhuǎn)發(fā)中心服務(wù)器通信來(lái)獲取遠(yuǎn)程開關(guān)RTU(Remote Terminal Unit)的實(shí)時(shí)數(shù)據(jù)并動(dòng)態(tài)顯示在界面上,本文將就通信方式的設(shè)計(jì)和實(shí)現(xiàn)重點(diǎn)分析。

1 系統(tǒng)總體結(jié)構(gòu)

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

整個(gè)分界開關(guān)監(jiān)控系統(tǒng)由轉(zhuǎn)發(fā)中心、遠(yuǎn)程控制單元、監(jiān)控平臺(tái)組成。架構(gòu)圖如圖1所示。

由系統(tǒng)架構(gòu)圖來(lái)看,RTU將采集到的數(shù)據(jù)通過(guò)GPRS發(fā)送到轉(zhuǎn)發(fā)中心,轉(zhuǎn)發(fā)中心將接收到的數(shù)據(jù)解析、存儲(chǔ),并分發(fā)到各監(jiān)控終端。與此同時(shí),轉(zhuǎn)發(fā)中心還需要將監(jiān)控端發(fā)來(lái)的控制數(shù)據(jù)經(jīng)過(guò)同樣步驟分發(fā)給各RTU。依次完成相應(yīng)的控制分合閘及參數(shù)設(shè)定。

1.2 Android監(jiān)控端的設(shè)計(jì)

監(jiān)控端主要由以下核心功能:

⑴實(shí)時(shí)狀態(tài)監(jiān)控。能準(zhǔn)確、即時(shí)的查看RTU的實(shí)時(shí)數(shù)據(jù),如:電壓、電流數(shù)據(jù)。

⑵設(shè)置工作參數(shù)??梢园葱柙O(shè)置諸如過(guò)流電流、零序電流流及重合閘時(shí)間等參數(shù)。

⑶控制分合閘。通過(guò)監(jiān)控端遠(yuǎn)程控制各RTU的分合閘。

⑷故障報(bào)警。由轉(zhuǎn)發(fā)中心推送報(bào)警信息,及時(shí)更新在UI上通知監(jiān)控人員。

⑸查詢歷史數(shù)據(jù)。可以從Android自帶的SQLite數(shù)據(jù)庫(kù)中查詢RTU在某段時(shí)間內(nèi)的運(yùn)行數(shù)據(jù),當(dāng)數(shù)據(jù)庫(kù)中沒(méi)有時(shí),再利用WebService向轉(zhuǎn)發(fā)中心請(qǐng)求獲取。

根據(jù)以上功能分析,Android監(jiān)控端的模塊大體可以分為數(shù)據(jù)顯示模塊,網(wǎng)絡(luò)通信模塊,數(shù)據(jù)處理模塊,數(shù)據(jù)存儲(chǔ)模塊。

2 網(wǎng)絡(luò)通信模塊設(shè)計(jì)

2.1 通信方式選擇

目前,在基于C/S的軟件結(jié)構(gòu)中,客戶端進(jìn)行網(wǎng)絡(luò)請(qǐng)求主要通過(guò)Http協(xié)議的“拉”[3],即客戶端按照一定時(shí)間周期性的向服務(wù)器發(fā)送http請(qǐng)求,但是通常如果這個(gè)周期很短,會(huì)增加客戶端開銷;而太長(zhǎng),則會(huì)造成數(shù)據(jù)延遲,這對(duì)于本系統(tǒng)也是致命性的,本系統(tǒng)由于對(duì)RTU數(shù)據(jù)實(shí)時(shí)性要求較高,實(shí)時(shí)性、準(zhǔn)確性也是該系統(tǒng)的最重要的功能性要求,所以客戶端與轉(zhuǎn)發(fā)中心做到要“數(shù)據(jù)同步”—即轉(zhuǎn)發(fā)中心接收RTU實(shí)時(shí)數(shù)據(jù)第一時(shí)間推送到Android客戶端,所以采用了Socket長(zhǎng)連接來(lái)實(shí)現(xiàn)[4][5]。需要開通一個(gè)信道保持Android端和轉(zhuǎn)發(fā)中心的的持久連接,雙方可在此連接上發(fā)送多個(gè)數(shù)據(jù)包。一旦連接建立,Android端會(huì)即時(shí)收到轉(zhuǎn)發(fā)中心發(fā)送的數(shù)據(jù)包。

Socket描述了服務(wù)端地址和端口,有無(wú)連接(UDP)和面向連接(TCP)兩種通信方式[6]??紤]到UDP協(xié)議傳輸?shù)牟豢煽啃裕趥鬏斶^(guò)程中易于丟失數(shù)據(jù),雖然 TCP相對(duì)于UDP的時(shí)間開銷大,但由于本系統(tǒng)單次傳輸數(shù)據(jù)量不大,只有幾十K,所以時(shí)間上的開銷并不會(huì)影響數(shù)據(jù)的實(shí)時(shí)性。所以基于傳輸數(shù)據(jù)的可靠性、時(shí)效性的綜合考慮,選擇TCP協(xié)議來(lái)建立一個(gè)Socket長(zhǎng)連接。

2.2 加入多線程

如果把讀取數(shù)據(jù),接收數(shù)據(jù)等所有操作都放在UI主線程中進(jìn)行,會(huì)造成UI無(wú)法響應(yīng)或者ANR(Application Not Respond),造成線程堵塞,所以需要開啟多個(gè)線程,并且線程間要通過(guò)Handler來(lái)完成數(shù)據(jù)傳遞[7],實(shí)時(shí)的將數(shù)據(jù)更新到UI上。

Android Socket通信流程圖如圖2所示:

2.3 通信類圖設(shè)計(jì)

Socket通信連接建立后,力求在Activity切換或者程序進(jìn)入后臺(tái)時(shí)候都能保持持續(xù)性的連接。而Activity是有生命周期的,當(dāng)被其他Activity覆蓋或者程序進(jìn)入后臺(tái)時(shí),當(dāng)前Activity進(jìn)入OnStopped停止?fàn)顟B(tài),當(dāng)前Activity中的Socket通信也隨之關(guān)閉。而本文中我們引入Application類來(lái)解決以上問(wèn)題。

Application類也是Android框架的一個(gè)組件,當(dāng)Android程序啟動(dòng)時(shí)會(huì)創(chuàng)建一個(gè)Application對(duì)象且只創(chuàng)建一個(gè),所以Application生命周期是等同于程序的生命周期的,所以把Socket連接操作類和IO數(shù)據(jù)讀寫類封裝到MyApplication類下,MyApplication繼承Application類即可,這樣Socket連接就可以貫穿整個(gè)程序,解決了一個(gè)socket在多個(gè)界面切換時(shí)不能保持鏈接的問(wèn)題。MyApplication類代碼如下:

public class MyApplication extends Application{

//SocketUtils類封裝了程序Socket連接和異步讀寫數(shù)據(jù)類;

private RTU rtu;

@override

Public void onCreate(){

//將SocketUtils實(shí)例化并調(diào)用構(gòu)造函數(shù),傳入建立Socket連接的IP地址和端口;

socketUtils =new SocketUtils(“SERVER_IP”;”SERVER_PORT”);

super.onCreate();

}

//只需要在別的Activity通過(guò)下面代碼將MyApplication實(shí)例化即可;MyApplication myApplication=

(MyApplication)this.getApplicationContext();

解決以上幾個(gè)問(wèn)題之后,充分考慮到軟件可擴(kuò)展和可復(fù)用的原則,我們簡(jiǎn)單的把Socket通信模塊部分類圖設(shè)計(jì)如下[8]:

3 客戶端通信功能測(cè)試

通過(guò)Socket傳過(guò)來(lái)的二進(jìn)制流實(shí)時(shí)數(shù)據(jù)存在系統(tǒng)內(nèi)存中,執(zhí)行相應(yīng)的操作就會(huì)將進(jìn)行數(shù)據(jù)解析,通過(guò)適配器類SimpleAdapter與前臺(tái)控件ListView進(jìn)行數(shù)據(jù)綁定,開啟Service,通過(guò)BroadCastReceiver進(jìn)行監(jiān)聽(tīng)并實(shí)時(shí)刷新到界面顯示。下面我們以獲取所有RTU概覽實(shí)時(shí)狀態(tài)數(shù)據(jù)為例,序列圖如下圖所示:

經(jīng)過(guò)測(cè)試,該軟件通信模塊較好的完成了RTU實(shí)時(shí)數(shù)據(jù)展示,數(shù)據(jù)推送等功能,10個(gè)節(jié)點(diǎn)的大約40K的RTU數(shù)據(jù)能夠在0.5s內(nèi)刷新,且數(shù)據(jù)準(zhǔn)確,達(dá)到了實(shí)時(shí)性的要求。

4 結(jié)束語(yǔ)

本文介紹一種基于Android平臺(tái)的遠(yuǎn)程單元數(shù)據(jù)監(jiān)控通信模塊的設(shè)計(jì),隨著智能電網(wǎng)的大力普及和無(wú)線網(wǎng)絡(luò)的飛速發(fā)展,該移動(dòng)端軟件相對(duì)于傳統(tǒng)的PC監(jiān)控軟件有著更大的發(fā)展前景,符合未來(lái)監(jiān)控便攜化、移動(dòng)化的需求。

[參考文獻(xiàn)]

[1]陳什.基于.NET的電力分界開關(guān)監(jiān)控系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn).南京理工大學(xué)碩士論文.2012.

[2]彭鑫,黃文君,譚彰,等.基于Android的工業(yè)控制軟件設(shè)計(jì)[J].計(jì)算機(jī)工程.2013,39(7):87-89.

[3]邵維忠,麻志毅,馬浩海,劉輝.UML用戶指南(第二版)[M].北京:人民郵電出版.2006.

[4]李芝興,主編.Java程序設(shè)計(jì)之網(wǎng)絡(luò)編程[M].清華大學(xué)出版社.2006.

[5]李新良,羅戈夕.用Socket的編程機(jī)制實(shí)現(xiàn)網(wǎng)上交談[J].電腦知識(shí)與技術(shù).2006(29).

[6]何進(jìn),謝松巍.基于Socket的TCP/IP網(wǎng)絡(luò)通訊模式研究[J].計(jì)算機(jī)應(yīng)用研究.2001,08:134-135.

[7]駱斌,費(fèi)翔林.多線程技術(shù)的研究與應(yīng)用[J].計(jì)算機(jī)研究與發(fā)展.2000,04:407-412.

[8]陳娟.基于UML的面向?qū)ο蟮南到y(tǒng)分析與設(shè)計(jì)[D].武漢理工大學(xué).2005.

泰顺县| 罗山县| 吉木萨尔县| 昂仁县| 贵州省| 舞钢市| 文安县| 阳江市| 鄄城县| 东海县| 江孜县| 启东市| 丰顺县| 平湖市| 临潭县| 郎溪县| 南宁市| 汾西县| 安平县| 连城县| 恩平市| 开平市| 如东县| 潞城市| 漳浦县| 鄂托克前旗| 阿城市| 南开区| 罗城| 盐边县| 泰安市| 农安县| 社会| 贵定县| 云霄县| 大荔县| 浦城县| 呼伦贝尔市| 莱州市| 子洲县| 定兴县|