許曉飛
摘要:該文針對目前電力系統(tǒng)關(guān)口電力計(jì)量裝置數(shù)據(jù)采集系統(tǒng)中存在的通信規(guī)約不統(tǒng)一、重復(fù)開發(fā)、維護(hù)困難的問題設(shè)計(jì)完成了一種通用性的通信規(guī)約轉(zhuǎn)換模塊,該模塊基于代理模式,采用分層設(shè)計(jì)思想,可以適用于現(xiàn)行的大多數(shù)規(guī)約,規(guī)約接口的維護(hù)相對簡單,提高了電力系統(tǒng)的工作效率。使用該設(shè)計(jì)模塊的關(guān)口電力計(jì)量裝置數(shù)據(jù)采集系統(tǒng)已經(jīng)在山西、四川等地運(yùn)行。
關(guān)鍵詞:數(shù)據(jù)采集;規(guī)約轉(zhuǎn)換;代理模式;分層設(shè)計(jì)
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)30-0253-02
自2011年以來,“全國一張網(wǎng)”工程的實(shí)施、鞏固,中國國家電網(wǎng)提出堅(jiān)強(qiáng)智能電網(wǎng)概念[1-2]。智能電網(wǎng)要求“電力流、信息流、業(yè)務(wù)流”的高度一體化融合即數(shù)據(jù)的集成,但是由于之前國家電網(wǎng)已建成的變電站采用的電能表廠商不一,各個廠商使用的電能表協(xié)議規(guī)范也不統(tǒng)一,使得在數(shù)據(jù)采集系統(tǒng)為不同終端設(shè)備解析其通信規(guī)約相當(dāng)復(fù)雜[3-4],堅(jiān)強(qiáng)智能電網(wǎng)計(jì)劃的數(shù)據(jù)集成面臨著嚴(yán)峻的問題。
目前看來,規(guī)約轉(zhuǎn)換在解決數(shù)據(jù)集成問題中是不可或缺的。為了解決規(guī)約轉(zhuǎn)換系統(tǒng)開發(fā)問題,文獻(xiàn)[5]采用基于模板的通信規(guī)約設(shè)計(jì)思想,實(shí)現(xiàn)了使用103這一標(biāo)準(zhǔn)規(guī)約模板的不同廠家的設(shè)備接入了變電站自動化系統(tǒng);文獻(xiàn)[6]將基于CORBA技術(shù)的軟件平臺和分布式硬件平臺相結(jié)合,應(yīng)用在了IEC61850的規(guī)約轉(zhuǎn)換裝置中,解決了在采用IEC61850通訊體系變電站自動化系統(tǒng)中接入非IEC61850協(xié)議的智能設(shè)備的問題;文獻(xiàn)[7]通過使用XML技術(shù)對協(xié)議映射建模,利用以太網(wǎng)通信來設(shè)計(jì)規(guī)約轉(zhuǎn)換模塊,以此傳統(tǒng)的104通信協(xié)議與IEC61850協(xié)議的轉(zhuǎn)換。從實(shí)際開發(fā)看,基于模板的思想僅適用如部分規(guī)約解析,基于CORBA技術(shù)的規(guī)約轉(zhuǎn)換裝置雖然使其變得靈活方便,互操作性良好,但是并沒有給出通用的規(guī)約轉(zhuǎn)換方法和具體的轉(zhuǎn)換過程,而且CORBA沒有和開發(fā)工具緊密耦合,給CORBA應(yīng)用帶來了問題;同時基于XML技術(shù)和以太網(wǎng)通信技術(shù)的規(guī)約轉(zhuǎn)換器雖然符合工業(yè)以太網(wǎng)的發(fā)展方向,但是也只能完成104規(guī)約與IEC61850協(xié)議的無縫轉(zhuǎn)換。為此,本文提出一種采用分層結(jié)構(gòu)的設(shè)計(jì)思想,基于代理模式的規(guī)約轉(zhuǎn)換模塊,該模塊組件可以與大多數(shù)現(xiàn)行規(guī)約通信,添加新的通信規(guī)約僅需要少量代碼,并且在系統(tǒng)更新或者軟件升級時也可以保持組件接口不變,不會影響到相鄰層實(shí)現(xiàn),維護(hù)相對簡單。
1 分層設(shè)計(jì)的軟件結(jié)構(gòu)
為了與現(xiàn)行規(guī)約進(jìn)行轉(zhuǎn)換通信,實(shí)現(xiàn)數(shù)據(jù)的集成,本模塊采用分層的設(shè)計(jì)思想將軟件分為三層。業(yè)務(wù)處理層主要完成業(yè)務(wù)轉(zhuǎn)發(fā)功能,完成數(shù)據(jù)采集系統(tǒng)獲取的主站任務(wù)或者獲取關(guān)口電力計(jì)量裝置上傳的數(shù)據(jù)信息后進(jìn)行綜合處理,將之上傳給主站系統(tǒng)。規(guī)約層主要通過兩層間接口接收關(guān)口電力計(jì)量裝置等硬件介質(zhì)的信息數(shù)據(jù),按照規(guī)約的處理流程分析數(shù)據(jù)包,之后將數(shù)據(jù)與業(yè)務(wù)處理層通過接口完成交互。硬件抽象層覆蓋在關(guān)口電力計(jì)量裝置等硬件介質(zhì)上,通過通道號選擇不同的關(guān)口電力計(jì)量裝置,在此基礎(chǔ)上負(fù)責(zé)各個通道關(guān)口電力計(jì)量數(shù)據(jù)的收發(fā)。分層設(shè)計(jì)的軟件結(jié)構(gòu)如圖1所示。
三層軟件結(jié)構(gòu)中的規(guī)約層是規(guī)約轉(zhuǎn)換的核心。系統(tǒng)配置主要配置系統(tǒng)中的設(shè)備信息、規(guī)約信息和轉(zhuǎn)發(fā)信息。數(shù)據(jù)采集與處理負(fù)責(zé)數(shù)據(jù)的交互,將上行和下行的數(shù)據(jù)按照一定的格式發(fā)送出去。中間數(shù)據(jù)處理組件是專門的用來進(jìn)行規(guī)約解析的,按照系統(tǒng)配置完成不同設(shè)備間的通信。持久化組件將處理過的數(shù)據(jù)作持久化處理,以便隨時保存和讀取采集到的數(shù)據(jù)。配置腳本保存的是規(guī)約的一些定義信息。
圖1 分層設(shè)計(jì)的軟件結(jié)構(gòu)
2 設(shè)計(jì)模式的運(yùn)用
設(shè)計(jì)模式從本質(zhì)上講,描述了在某一背景下某個問題的解決方案的核心,是解決面向?qū)ο笾蟹磸?fù)出現(xiàn)問題的最佳方案,它使我們不必去一次又一次地使用該方案,而是將其總結(jié)歸納成為一種模式,形成可復(fù)用的面向?qū)ο筌浖?。可?fù)用的面向?qū)ο筌浖c不使用設(shè)計(jì)模式的軟件系統(tǒng)相比,可以降低軟件系統(tǒng)設(shè)計(jì)的復(fù)雜度,并且可以提高代碼復(fù)用率,使對象建模更合理。
在數(shù)據(jù)采集系統(tǒng)中,不論是在線監(jiān)測任務(wù)還是在線校驗(yàn)業(yè)務(wù),都需要跟電能表進(jìn)行信息、數(shù)據(jù)的交換,規(guī)約轉(zhuǎn)換模塊是需要頻繁調(diào)用的,這種情況下,使用設(shè)計(jì)模式設(shè)計(jì)規(guī)約轉(zhuǎn)換模塊就很有必要了。
如圖2所示,本文使用的設(shè)計(jì)模式主要是繼承式代理模式?,F(xiàn)實(shí)的采集系統(tǒng)中,種類繁多的規(guī)約遠(yuǎn)遠(yuǎn)多于通信的方式,在本系統(tǒng)中,將不同的規(guī)約抽象成為一個統(tǒng)一的接口ICommonProtocol,在其中定義了初始化方法和請求數(shù)據(jù)方法,分別是init()和requestData();通信的通道參數(shù)寫在協(xié)議接口的實(shí)現(xiàn)類AbstractProtocolTargetImpl中,數(shù)據(jù)采集系統(tǒng)接收到具體的在線抄表或者二次回路檢測任務(wù)時,通過具體的電能表號獲取相應(yīng)的協(xié)議和通道參數(shù)。協(xié)議接口的實(shí)現(xiàn)類的子類則是具體的協(xié)議,當(dāng)需要添加新的規(guī)約時,也是在實(shí)現(xiàn)類的子類添加的。從OCP原則來講,協(xié)議類定義成了一個統(tǒng)一的接口。如果遇到需求變化,需要新增規(guī)約時,只需要增加該類型對應(yīng)的子類,而不必去修改原來的代碼,這樣代理的設(shè)計(jì)就可以擴(kuò)展了,符合了對擴(kuò)展開放,對修改封閉的原則。
3 規(guī)約轉(zhuǎn)換實(shí)現(xiàn)示例
規(guī)約轉(zhuǎn)換是數(shù)據(jù)采集系統(tǒng)中的一個重要的組成部分,而數(shù)據(jù)采集系統(tǒng)中的基礎(chǔ)功能是在線監(jiān)測功能,包括在線抄表和二次回路檢測。在線監(jiān)測可能面臨著不同廠家的電能表,這些電能表使用著標(biāo)準(zhǔn)不一的規(guī)約,只有將不同廠家的電能表數(shù)據(jù)采集上報給主戰(zhàn)系統(tǒng),才能說明規(guī)約轉(zhuǎn)換模塊設(shè)計(jì)是成功的,圖3顯示的是97表在線抄表時獲取交流模擬量數(shù)據(jù)的時序圖。
當(dāng)主站系統(tǒng)開啟了交流模擬量任務(wù)即在線抄表任務(wù)時,大體可以歸結(jié)為以下三個步驟:
1) 首先要獲取電能表標(biāo)識號sn和電能表的資源信息MeterResource。在此之前需要判斷標(biāo)識號是否屬于電能表MeterManage,從MeterResourceCache中獲取Map
2) 從電能表的資源信息MeterResource獲取該電能表的協(xié)議信息,通過協(xié)議值可以從枚舉中取得協(xié)議name,然后從spring初始化中的protocolMap中取得交流模擬量對應(yīng)的ICommonProtocol,同時通過協(xié)議類型數(shù)值可以在CommConfCache中獲取對應(yīng)的通信通道參數(shù),由此就可以采用具體的通信接口發(fā)送請求數(shù)據(jù)指令。
3) SerialCommChanelMessageMonitor類接收到通道消息,然后在本類中的doBeforeNotify()方法中將接收到的消息添加到messageQueue隊(duì)列中,接著在doBeforeWait()方法中進(jìn)行消息消費(fèi),然后調(diào)用MessageCommonUtil中的reflectParser()方法反射出相應(yīng)的具體協(xié)議解析者,然后調(diào)用parserData()方法,實(shí)現(xiàn)報文的解析,最后由具體的規(guī)約類調(diào)用buildMessage()構(gòu)建報文,發(fā)送報文。至此,完成了97表的交流模擬量數(shù)據(jù)的采集。
4 總結(jié)
采用三層設(shè)計(jì)結(jié)構(gòu)的規(guī)約轉(zhuǎn)換模塊,將之分割成了相對獨(dú)立的功能模塊,當(dāng)需要更新硬件或者平臺移植時,需要改動的僅僅是硬件抽象層,規(guī)約層僅需要較小的改動或者保持不變,實(shí)現(xiàn)了軟件的模塊化,繼承性強(qiáng)。同時,代理模式完成了多種不同規(guī)約的通信問題,彌補(bǔ)了以前添加新規(guī)約、代碼改動量大的問題,保證實(shí)用性、重用性的同時,也符合了開閉原則。采用該設(shè)計(jì)的數(shù)據(jù)采集系統(tǒng)已在四川、山西等地的變電站運(yùn)行,驗(yàn)證了方案的通用性和有效性。
參考文獻(xiàn):
[1] IEA.Smart grid roadmap[R/OL].2011.www.iea.org/ publications/.../smartgrids_roadmap.pdf.
[2] 張東霞, 姚良忠, 馬文媛. 中外智能電網(wǎng)發(fā)展戰(zhàn)略[J]. 中國電機(jī)工程學(xué)報, 2013, 33(31):1-14.
[3] 蔣湘濤, 賀建飚, 李楠. 電力信息采集的通用型通信規(guī)約解析系統(tǒng)研究與設(shè)計(jì)[J]. 電力系統(tǒng)保護(hù)與控制, 2012, 40(9):118-122.
[4] 王瑞雪, 林其友. 以太網(wǎng)103規(guī)約在黑龍江省保信主站和齊齊哈爾熱電廠子站之間通信的工程應(yīng)用[J]. 電力系統(tǒng)保護(hù)與控制, 2010, 38(19):195-198.
[5] 張艷林, 李紹滋. 基于模板的電力保護(hù)系統(tǒng)通信規(guī)約研究[J]. 電力系統(tǒng)保護(hù)與控制, 2007, 35(22):23-26.
[6] 李強(qiáng), 朱永利, 董志敏. 104規(guī)約向IEC61850信息模型轉(zhuǎn)換的研究與實(shí)現(xiàn)[J]. 華北電力大學(xué)學(xué)報:自然科學(xué)版, 2008, 35(2):98-102.
[7] 王文龍, 徐廣輝, 朱中華. 基于CORBA技術(shù)的IEC61850規(guī)約轉(zhuǎn)換裝置[J]. 電力系統(tǒng)保護(hù)與控制, 2009, 37(7):63-66.endprint