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