隨著電網(wǎng)調(diào)度自動化水平的提高及計算機(jī)技術(shù)的發(fā)展,發(fā)展信息管理系統(tǒng)已成為趨勢[1]。但是要在原有的電力監(jiān)控系統(tǒng)上增加擴(kuò)充功能以及實(shí)現(xiàn)信息系統(tǒng)的集成,通常建立功能相對獨(dú)立的子系統(tǒng),子系統(tǒng)之間通過網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)交換[2][3],實(shí)現(xiàn)數(shù)據(jù)共享。這種系統(tǒng)的數(shù)據(jù)共享能力十分有限,系統(tǒng)維護(hù)工作重,軟、硬件重復(fù)投資,資源浪費(fèi)。
本文設(shè)計了電力監(jiān)控系統(tǒng)數(shù)據(jù)共享中間件,該中間件完成數(shù)據(jù)的網(wǎng)絡(luò)傳輸、刷新及保持?jǐn)?shù)據(jù)的一致性,為應(yīng)用軟件提供統(tǒng)一的數(shù)據(jù)訪問接口,應(yīng)用軟件通過該接口訪問中間件數(shù)據(jù)庫的數(shù)據(jù),這使得系統(tǒng)的應(yīng)用開發(fā)變得簡單。整個系統(tǒng)分為數(shù)據(jù)服務(wù)器,數(shù)據(jù)共享中間件和應(yīng)用軟件三大部分。三部分協(xié)同完成系統(tǒng)的功能。這種軟件結(jié)構(gòu)可以明顯地提高系統(tǒng)的可靠性,降低軟件的開發(fā)和維護(hù)成本,使今后的軟件升級、增加功能等變得容易,并為以后進(jìn)一步集成信息管理打下良好基礎(chǔ)。
1 系統(tǒng)總體結(jié)構(gòu)
中間件是指一種軟件[4],用于放在系統(tǒng)軟件和應(yīng)用軟件之間,有了這層處于中間的軟件,就能使處于遠(yuǎn)距離相隔離的應(yīng)用軟件協(xié)同工作(互操作),這樣應(yīng)用層就可以實(shí)現(xiàn)分布式處理。本文利用中間件技術(shù),設(shè)計了一個網(wǎng)絡(luò)分布式監(jiān)控系統(tǒng),以實(shí)現(xiàn)各應(yīng)用成分之間可以跨網(wǎng)絡(luò)協(xié)同工作。實(shí)現(xiàn)各應(yīng)用所涉及的“系統(tǒng)結(jié)構(gòu),操作系統(tǒng),數(shù)據(jù)庫等”各不相同。
系統(tǒng)按完成的功能可以分成三大部分:數(shù)據(jù)共享中間件、數(shù)據(jù)服務(wù)器和應(yīng)用軟件,如圖1所示。數(shù)據(jù)服務(wù)器主要對應(yīng)用軟件改寫的數(shù)據(jù)進(jìn)行集中處理,得到各應(yīng)用軟件可以使用的數(shù)據(jù)保存在數(shù)據(jù)中心,數(shù)據(jù)中心再刷新各共享中間件的數(shù)據(jù)供應(yīng)用軟件使用。應(yīng)用軟件對數(shù)據(jù)的讀寫操作實(shí)際上是通過共享中間件實(shí)現(xiàn)的。應(yīng)用軟件無需關(guān)心數(shù)據(jù)服務(wù)器和其它應(yīng)用軟件的物理位置。
圖1 軟件系統(tǒng)結(jié)構(gòu)
這種結(jié)構(gòu)充分利用了中間件技術(shù)的特點(diǎn),對應(yīng)用軟件屏蔽了系統(tǒng)的網(wǎng)絡(luò)通信問題及各應(yīng)用軟件間數(shù)據(jù)通信問題,數(shù)據(jù)共享能力強(qiáng),軟件系統(tǒng)的運(yùn)行基于數(shù)據(jù)驅(qū)動。分布在網(wǎng)絡(luò)上不同節(jié)點(diǎn)的應(yīng)用軟件協(xié)同工作,完成復(fù)雜的功能。也可以將數(shù)據(jù)共享中間件提供給第三方,作為數(shù)據(jù)共享接口,進(jìn)行信息系統(tǒng)集成。下面介紹各部分的結(jié)構(gòu)及技術(shù)處理。
2 模塊結(jié)構(gòu)
2.1 數(shù)據(jù)中心和數(shù)據(jù)共享中間件
數(shù)據(jù)中心和數(shù)據(jù)共享中間件是系統(tǒng)的關(guān)鍵模塊,二者建立了網(wǎng)絡(luò)監(jiān)控系統(tǒng)中各節(jié)點(diǎn)應(yīng)用軟件聯(lián)絡(luò)的橋梁,數(shù)據(jù)中心位于服務(wù)器節(jié)點(diǎn),中心數(shù)據(jù)庫保存了整個系統(tǒng)運(yùn)行的實(shí)時數(shù)據(jù)和最近一段時間的歷史數(shù)據(jù),并對數(shù)據(jù)進(jìn)行分組。其它應(yīng)用節(jié)點(diǎn)配置數(shù)據(jù)共享中間件,它的數(shù)據(jù)庫根據(jù)該節(jié)點(diǎn)的需要配置若干組數(shù)據(jù),這些數(shù)據(jù)是數(shù)據(jù)中心的拷貝。結(jié)構(gòu)如圖2所示。
(1) 數(shù)據(jù)中心和數(shù)據(jù)共享中間件結(jié)構(gòu)
數(shù)據(jù)中心和數(shù)據(jù)共享中間件的結(jié)構(gòu)和功能是一樣的,只是配置不同,所起的作用不一樣。它們分為5層。
圖2 數(shù)據(jù)中心和數(shù)據(jù)共享中間件的結(jié)構(gòu)
? 網(wǎng)絡(luò)中間件 用組播技術(shù)[7]開發(fā)的網(wǎng)絡(luò)通信中間件,用于發(fā)送組播數(shù)據(jù)和接收組播數(shù)據(jù)。
? 寫數(shù)據(jù)庫接口和組播數(shù)據(jù)接口 寫數(shù)據(jù)庫接口用于取出要改寫的數(shù)據(jù)進(jìn)行合法性檢查,數(shù)據(jù)合法即寫入中心數(shù)據(jù)庫。組播數(shù)據(jù)接口用于當(dāng)數(shù)據(jù)中心的數(shù)據(jù)變化后,調(diào)用網(wǎng)絡(luò)中間件組播變化的數(shù)據(jù)記錄,供其他節(jié)點(diǎn)的中間件刷新數(shù)據(jù)。
? 數(shù)據(jù)庫 為一內(nèi)存庫,用于存放系統(tǒng)的實(shí)時數(shù)據(jù),以多個表的形式存放,表中每一記錄用組號、廠站號、變量號作為識別,其余的列為該變量定義的屬性和數(shù)據(jù)。
? 數(shù)據(jù)交換管理 用于服務(wù)器讀取數(shù)據(jù)時將所需要的數(shù)據(jù)從中心數(shù)據(jù)庫拷貝到共享內(nèi)存區(qū),服務(wù)器寫入數(shù)據(jù)后,負(fù)責(zé)檢查數(shù)據(jù)的合法性和該條記錄的改寫標(biāo)記,若允許改寫,再寫入數(shù)據(jù)庫,否則丟棄數(shù)據(jù)。
? 共享內(nèi)存區(qū) 一片共享內(nèi)存區(qū)域,用于與服務(wù)器或應(yīng)用軟件交換數(shù)據(jù)的區(qū)域,分為兩個小區(qū),讀區(qū)域用于讀取數(shù)據(jù)庫的數(shù)據(jù),寫區(qū)域用于寫入數(shù)據(jù)。
數(shù)據(jù)中心和數(shù)據(jù)共享中間件不同體現(xiàn)在2、3層的配置不同,共享中間件組只針對數(shù)據(jù)中心組播數(shù)據(jù),所有的共享中間件使用同樣的組號組播,且只有數(shù)據(jù)中心接收該組數(shù)據(jù)。而數(shù)據(jù)中心按分組組播數(shù)據(jù)記錄。中心數(shù)據(jù)庫配置系統(tǒng)的所有數(shù)據(jù),而共享中間件的數(shù)據(jù)庫配置該節(jié)點(diǎn)所需要的數(shù)據(jù)。
數(shù)據(jù)共享中間件與數(shù)據(jù)中心的通信是通過組播技術(shù)實(shí)現(xiàn)的,在調(diào)度系統(tǒng)中,數(shù)據(jù)的實(shí)時性非常重要,組播技術(shù)可以實(shí)現(xiàn)一發(fā)多收,從而減少時延和節(jié)省帶寬和提高系統(tǒng)實(shí)時性[7],數(shù)據(jù)中心把數(shù)據(jù)分成組,如節(jié)點(diǎn)的應(yīng)用軟件需要該組的數(shù)據(jù),配置數(shù)據(jù)共享中間件時加入該組,即可接收到該組的數(shù)據(jù),一個數(shù)據(jù)共享中間件可以根據(jù)需要加入多個組。為提高組播的可靠性,在組播數(shù)據(jù)接口內(nèi)建有一緩沖區(qū),暫存組播完的數(shù)據(jù),用于對第一次組播沒有接收到的節(jié)點(diǎn)進(jìn)行單獨(dú)組播。
數(shù)據(jù)中心或數(shù)據(jù)共享中間件是獨(dú)立運(yùn)行的程序,與服務(wù)器和應(yīng)用軟件處于不同的地址空間。服務(wù)器和應(yīng)用軟件使用讀寫共享內(nèi)存接口完成與數(shù)據(jù)中心和共享中間件中的數(shù)據(jù)交換,該接口用動態(tài)鏈接庫實(shí)現(xiàn),供服務(wù)器或應(yīng)用軟件加載調(diào)用。
(2) 數(shù)據(jù)處理流程
應(yīng)用軟件對數(shù)據(jù)庫的寫操作會引起一系列的數(shù)據(jù)處理和更新操作。一個典型的數(shù)據(jù)處理過程一般有8個步驟:
? 應(yīng)用軟件改寫共享中間件中的數(shù)據(jù);
? 共享中間件組播該數(shù)據(jù);
? 數(shù)據(jù)中心接收該數(shù)據(jù);
? 數(shù)據(jù)中心將該數(shù)據(jù)送到共享內(nèi)存區(qū);
? 服務(wù)器處理數(shù)據(jù),并將結(jié)果寫回數(shù)據(jù)中心;
? 數(shù)據(jù)中心組播該數(shù)據(jù)記錄;
? 各共享中間件刷新該數(shù)據(jù)記錄;
? 各應(yīng)用軟件取得新的數(shù)據(jù)做處理(顯示等)。
(3) 系統(tǒng)數(shù)據(jù)安全和可靠性方案
為保證系統(tǒng)的數(shù)據(jù)安全,對中間件數(shù)據(jù)庫表中的每一條數(shù)據(jù)記錄有一寫控制字節(jié),配置為0時,表示該節(jié)點(diǎn)禁止改寫該記錄,共享中間件將丟棄應(yīng)用軟件對該條數(shù)據(jù)的寫操作,配置為1時,應(yīng)用軟件可以對該條數(shù)據(jù)進(jìn)行寫操作。在重要的場合,為保證系統(tǒng)的可靠性及無間斷運(yùn)行,服務(wù)器可配備雙機(jī)熱備用(兩套獨(dú)立)。必要時配備第三數(shù)據(jù)服務(wù)器(可以與其他模塊共用硬件)。
除以上的基本功能外。數(shù)據(jù)中心和共享中間件還需完成以下功能:
① 共享中間啟動后數(shù)據(jù)初始化,用于該中間件啟動完成后,向數(shù)據(jù)中心請求一份完整的數(shù)據(jù)拷貝;
② 網(wǎng)絡(luò)監(jiān)視及切換,當(dāng)監(jiān)控網(wǎng)絡(luò)為雙以太網(wǎng)時,判斷各節(jié)點(diǎn)與服務(wù)器的網(wǎng)絡(luò)鏈接狀態(tài),應(yīng)用節(jié)點(diǎn)啟用一個網(wǎng)絡(luò)主用,另外一個網(wǎng)絡(luò)備用,主用網(wǎng)絡(luò)故障時,自動切換到備用網(wǎng)絡(luò),并將網(wǎng)絡(luò)狀態(tài)寫入數(shù)據(jù)中心;
③ 數(shù)據(jù)中心之間的數(shù)據(jù)拷貝功能。數(shù)據(jù)中心啟動后,如果已有數(shù)據(jù)中心在線運(yùn)行,應(yīng)從在線的數(shù)據(jù)中心取得一份完整的數(shù)據(jù)拷貝;
④ 數(shù)據(jù)中心的主備切換,數(shù)據(jù)中心一套在線運(yùn)行,一套熱備用。發(fā)生故障時自動切換,也可以人工切換。
2.2 數(shù)據(jù)服務(wù)器和應(yīng)用軟件的結(jié)構(gòu)
數(shù)據(jù)服務(wù)器和應(yīng)用軟件只是功能不同,它們具有統(tǒng)一的軟件結(jié)構(gòu),現(xiàn)以服務(wù)器為例介紹其結(jié)構(gòu)。
圖3 數(shù)據(jù)服務(wù)器
數(shù)據(jù)服務(wù)器用于數(shù)據(jù)的計算和處理,同時完成歷史數(shù)據(jù)的保存。服務(wù)器由3部分組成:數(shù)據(jù)中心、運(yùn)行管理器和功能構(gòu)件。服務(wù)器的的功能構(gòu)件是數(shù)據(jù)處理構(gòu)件、歷史數(shù)據(jù)保存構(gòu)件及歷史數(shù)據(jù)庫,其中的歷史數(shù)據(jù)庫采用商用數(shù)據(jù)庫,如圖3所示。一個數(shù)據(jù)處理構(gòu)件一般負(fù)責(zé)完成1~2類數(shù)據(jù)的處理功能,用動態(tài)鏈接庫或類實(shí)現(xiàn),掛接在軟件數(shù)據(jù)總線上,每一構(gòu)件有一數(shù)據(jù)緩沖區(qū)用于接收軟件數(shù)據(jù)總線的數(shù)據(jù)。系統(tǒng)運(yùn)行控制器是服務(wù)器的樞紐,該控制器通過接口檢測數(shù)據(jù)中心的數(shù)據(jù)變化,將變化的數(shù)據(jù)通過軟件數(shù)據(jù)總線分發(fā)到各數(shù)據(jù)處理構(gòu)件的緩沖區(qū),系統(tǒng)運(yùn)行控制器也有一數(shù)據(jù)緩沖區(qū),用于接收各個數(shù)據(jù)處理構(gòu)件的產(chǎn)生的數(shù)據(jù)寫入數(shù)據(jù)中心,服務(wù)器的主備運(yùn)行也在該控制器內(nèi)實(shí)現(xiàn)。服務(wù)器中各功能構(gòu)件和控制器以線程方式實(shí)現(xiàn)。
中心數(shù)據(jù)庫中保持了所有的運(yùn)行數(shù)據(jù),包括原始數(shù)據(jù)、分析處理得到的數(shù)據(jù)和統(tǒng)計數(shù)據(jù),這些數(shù)據(jù)以表的形式放在內(nèi)存中。目前,該軟件主要針對電力監(jiān)控系統(tǒng),中心數(shù)據(jù)庫的數(shù)據(jù)表可以歸納到以下幾類。
? 主站系統(tǒng)運(yùn)行表 保存主站運(yùn)行的數(shù)據(jù)信息;
? 被控站數(shù)據(jù)表 保存被控廠站的實(shí)時運(yùn)行數(shù)據(jù);
? 設(shè)備參數(shù)表 保存主站和被控廠站系統(tǒng)網(wǎng)絡(luò)和設(shè)備列表,這部分?jǐn)?shù)據(jù)為靜態(tài)數(shù)據(jù);
? 控制表 保存優(yōu)化計算,控制策略,控制方案等。
應(yīng)用軟件的節(jié)點(diǎn)配備數(shù)據(jù)共享中間件,各應(yīng)用軟件的結(jié)構(gòu)與服務(wù)器一致,只是軟件數(shù)據(jù)總線上掛接的功能構(gòu)件不一樣,所完成的功能不同。
3 系統(tǒng)升級、功能擴(kuò)充及應(yīng)用
系統(tǒng)的升級可以在構(gòu)件級和模塊級進(jìn)行,只要保持接口不變,新開發(fā)的構(gòu)件可以與早期開發(fā)的構(gòu)件集成在一個模塊中,數(shù)據(jù)服務(wù)器目前的功能在將來可能不夠用,通過增加新的功能構(gòu)件解決。各個時期開發(fā)的模塊可以集成在一個系統(tǒng)中。對于已經(jīng)在現(xiàn)場運(yùn)行的系統(tǒng),可以進(jìn)行在線升級和在線擴(kuò)容,以保持系統(tǒng)的連續(xù)運(yùn)行。
系統(tǒng)已用于2002年投入的粵海鐵路貫通配電調(diào)度自動化系統(tǒng),2003~2004年系統(tǒng)進(jìn)行了兩次擴(kuò)容及功能擴(kuò)充,經(jīng)過兩年的運(yùn)行,證明該系統(tǒng)實(shí)時性好、運(yùn)行可靠、功能擴(kuò)充方便,達(dá)到了設(shè)計的目標(biāo)。
4 結(jié)語
本文利用組播技術(shù)設(shè)計開發(fā)了數(shù)據(jù)共享中間件以完成實(shí)時數(shù)據(jù)的共享。功能模塊直接利用已處理好的數(shù)據(jù),用于完成特定的功能。這種軟件結(jié)構(gòu)的具有以下的特點(diǎn):
(1) 基于公共的實(shí)時數(shù)據(jù)服務(wù)器,具有較強(qiáng)的數(shù)據(jù)處理能力,使得功能模塊不再作數(shù)據(jù)處理而致力于功能實(shí)現(xiàn)。
(2) 實(shí)時數(shù)據(jù)和歷史數(shù)據(jù)方便與信息系統(tǒng)進(jìn)行數(shù)據(jù)共享,實(shí)現(xiàn)與信息系統(tǒng)的無縫集成。
(3) 數(shù)據(jù)中心可以增加數(shù)據(jù)表,增加數(shù)據(jù)處理構(gòu)件達(dá)到加強(qiáng)服務(wù)器的功能。而外圍的功能模塊,可以通過不斷開發(fā)功能構(gòu)件和功能模塊的方法增加軟件系統(tǒng)的功能。
(4) 使用中間件技術(shù),使得數(shù)據(jù)服務(wù)器移植到UNIX操作系統(tǒng)也變得容易些。移植完成后,該系統(tǒng)可以在多操作系統(tǒng)下運(yùn)行。