在Linux下用Qt開發(fā)新一代DTS圖形數(shù)據(jù)系統(tǒng)的分析
關(guān)鍵詞:DTS;圖形數(shù)據(jù)系統(tǒng); Qt;Linux
1 引言
調(diào)度員培訓模擬系統(tǒng)(Dispatcher Training Simu-lator,簡稱DTS)是一個計算機系統(tǒng),它可以按照被仿真的實際電力系統(tǒng)的數(shù)學模型來模擬各種調(diào)度操作和故障后的系統(tǒng)工況,并將這些信息送到電力系統(tǒng)控制中心的模型內(nèi),為調(diào)度員提供一個逼真的培訓環(huán)境,以達到既不影響實際電力系統(tǒng)的運行,又可以培訓調(diào)度運行人員的目的。
操作系統(tǒng)的發(fā)展,面對對象技術(shù)的出現(xiàn),以及電力系統(tǒng)國際標準IEC 61970的制定,都給DTS的發(fā)展提供了更廣闊的空間,其相應(yīng)的發(fā)展也迫在眉睫。圖形數(shù)據(jù)一體化支撐環(huán)境(DGSE)作為DTS(調(diào)度員培訓仿真系統(tǒng)Dispatcher Training Simulator?軟件的重要組成部分它的好壞直接影響到DTS上高級應(yīng)用軟件的開發(fā)及整個系統(tǒng)的成敗。在以往的軟件結(jié)構(gòu)上) DGSE通常僅包括底層通用圖形模塊、電力系統(tǒng)相關(guān)的圖形模塊、與離線庫和實時數(shù)據(jù)庫接口的支持模塊。本文第一次提出一個以Qt為底層圖形模塊、用C++和Qt圖形用戶界面類庫開發(fā)的DTS圖形數(shù)據(jù)一體化支撐環(huán)境的技術(shù)方案,本方案經(jīng)過反復(fù)測試以及用戶考驗證明,具有較高的穩(wěn)定性和可靠性。
2 相關(guān)技術(shù)分析
2.1 操作系統(tǒng)
在中國,EMS/DTS的主流操作系統(tǒng)是UNIX和NT。隨著計算機的發(fā)展,更多的用戶接受了Linux這種自由軟件形式。作為操作系統(tǒng)的替代品,把Linux用作EMS/DTS操作平臺中有很多的優(yōu)勢。因為,Linux的代碼是公開的,因而對Linux的改進更為容易,此外,Linux還有很多可以免費獲得的工具。更突出的優(yōu)勢是Linux硬件兼容性好,可以運行在絕大多數(shù)的現(xiàn)有計算機中。而不像UNIX必須運行在強大的服務(wù)器或RISC工作站上。另一方面,在Linux平臺下開發(fā)圖形界面程序比在UNIX平臺下相對簡單和快捷。用Linux來開發(fā)可降低硬件成本并提高軟件開發(fā)效率。實踐證明:當EMS/DTS運行在裝有Linux的PC機上時,它的速度比運行在裝有UNIX的RISC工作站上要快許多。
2.2 面向?qū)ο?/strong>技術(shù)
面向?qū)ο蠹夹g(shù)具有封裝性、繼承性、多態(tài)性三大特點。這些特性將大大提高軟件的可靠性、可維護性、重用性和擴充性。該技術(shù)在八十年代末逐漸為工業(yè)界所接受并開始得到應(yīng)用,且以其獨特的封裝性、繼承性和多態(tài)性為軟件工程帶來了一場革命。同傳統(tǒng)的軟件開發(fā)方法相比,面向?qū)ο蠹夹g(shù)可以更直觀地對現(xiàn)實世界進行抽象,因此更符合軟件開發(fā)的規(guī)律,同時可使軟件開發(fā)和調(diào)試更加規(guī)范化。進入九十年代以后,面向?qū)ο蟮募夹g(shù)更顯示出其強大的生命力和廣闊的發(fā)展前景。在電力工業(yè)方面,面向?qū)ο蠹夹g(shù)應(yīng)用于DTS可大大改善DTS開放性差、擴充性差、以及難維護等方面的不足。
2 .3 C++和Qt 3.0
在目前面向?qū)ο蟮木幊陶Z言中,C++具有執(zhí)行速度快、占用系統(tǒng)資源少的突出優(yōu)勢,DTS對系統(tǒng)的實時性要求很高,是開發(fā)DTS的首選語言。加之以往很多電力系統(tǒng)軟件采用C語言開發(fā),因此可以利用以往的工程成果,從而大大減少了開發(fā)的工作量。
Qt是Linux下的C++用戶界面開發(fā)包,它具有以下優(yōu)點:
(1)支持多平臺。其程序可在MS Windows系列(Windows 95、Windows 98、Windows NT、和Windows 2000)和UNIX/X11 系列(Linux、Sun Solaris、HP-UX、Digital UNIX、IBM AIX、SGI IRIX)等操作系統(tǒng)上進行方便地移植。
(2)國際化支持好。已經(jīng)有多個語言版本,包括中文,從而解決了漢化問題。
(3)高度面向?qū)ο?,模塊化高,編寫程序簡單明了。一般來說,用Motif?在UNIX上開發(fā)DTS用戶界面的主流類庫?編寫百行的代碼才可實現(xiàn)的功能,用Qt只用十幾行就能實現(xiàn),因而可使程序員從繁瑣的編程中解脫出來,以專注于程序本身的內(nèi)容。
(4)因為其類庫的本質(zhì)可以與Mofit類庫混編,且Qt具有不同的系統(tǒng)風格(包括UNIX),并能很好地和Motif用戶界面溶合在一起?因而它是很好的優(yōu)化DTS的工具。
2.4 SVG
SVG(可升級矢量圖形,Scalable Vector Graphics)是由國際WWW委員會(W3C)組織于2000年8月2日制定的一種新的二維矢量圖形格式。W3C對SVG的解釋是:“SVG是一種使用XML來描述二維圖形的語言。”目前,國外陸續(xù)涌現(xiàn)了許多SVG文檔的顯示、編輯和轉(zhuǎn)換工具,也包括瀏覽器插件。例如,在Windows中裝上Adobe的SVG Viewer后,SVG文件就能在IE中被瀏覽。
因為SVG本身也是XML,它同時也可以包含數(shù)據(jù)信息,所以,它能夠?qū)ⅲ模裕又械膱D形信息以SVG格式進行輸出,同時可向同一個文件中以XML格式輸出數(shù)據(jù)信息,這樣不僅可供Web調(diào)用或供第三方應(yīng)用軟件使用,還有利于與不同開發(fā)商的EMS/DTS進行信息交換。此外,也可以向國際標準IEC 61970靠攏。
2.5 圖形、數(shù)據(jù)維護現(xiàn)狀
DTS的數(shù)學模型比較復(fù)雜,畫面信息量大,操作種類多,數(shù)據(jù)維護量大。以往的維護都是通過圖形維護數(shù)據(jù)庫等工具和手段來進行。由于圖形和數(shù)據(jù)是分開輸入和維護的,因此二者無法直接對應(yīng)和同步,圖形修改與設(shè)備、網(wǎng)絡(luò)模型、系統(tǒng)參數(shù)等數(shù)據(jù)修改不能同步進行?從而影響了數(shù)據(jù)維護的形象直觀性。另外,不直接面向電力設(shè)備對象也導(dǎo)致了分散的數(shù)據(jù)庫中過多的交叉信息,因而造成大量冗余信息的輸入和維護,數(shù)據(jù)庫間數(shù)據(jù)一致性也難以保證,數(shù)據(jù)的維護也極困難。由于沒有標準的信息交換接口及文件格式,所以各廠家的數(shù)據(jù)交互比較困難。
而本系統(tǒng)則將原有UNIX下Motif開發(fā)的系統(tǒng)向Linux下移植,并用更為結(jié)構(gòu)化的C++語言和更方便的Qt 3.0圖形界面類庫來對其進行修改并完善其功能,從而使之向國際標準IEC61970靠攏,同時也提高了與其它系統(tǒng)的互操作性。
3 體系結(jié)構(gòu)設(shè)計
選擇合適的體系結(jié)構(gòu),對于軟件開發(fā)者來說是最重要的決策之一。良好的軟件體系結(jié)構(gòu)可以降低軟件系統(tǒng)的復(fù)雜性,這對大規(guī)模的并行開發(fā)起著舉足輕重的作用。
新一代的DTS圖形數(shù)據(jù)系統(tǒng)體系結(jié)構(gòu)設(shè)計如圖1所示。其中,Qt庫是Linux操作系統(tǒng)預(yù)裝的C++圖形用戶界面類庫,它包含了對話框、菜單、字體、基本圖形(直線、矩形、圓等)的繪制等等圖形界面基礎(chǔ)類,是系統(tǒng)界面的基礎(chǔ)。
繪圖操作模塊包含有繪圖中各種操作的實現(xiàn)模式,包括對各種基本圖形及電氣圖元進行編輯操作,例如:區(qū)域或單元多單元,文件內(nèi)及文件間的選擇、復(fù)制、剪切、粘貼、縮放、旋轉(zhuǎn)、變形、恢復(fù)、撤消等基本操作。
圖形庫模塊可在Qt庫和繪圖操作模塊的基礎(chǔ)上進行開發(fā),它可以提供給用戶制作、使用、維護電氣圖元的功能。圖形庫模塊包含有表示電力系統(tǒng)設(shè)備的基本要素類,如一個圖形元件的形狀、連接點、數(shù)據(jù)庫關(guān)聯(lián)等。用面向?qū)ο蟮姆椒▉矸庋b電力系統(tǒng)中的這些要素,并以這些要素去繪制電力系統(tǒng)中的電氣設(shè)備(如開關(guān)、刀閘、發(fā)電機等),以制作一個可以整體使用的,并具有電網(wǎng)屬性的電氣圖元,可以大大提高系統(tǒng)的可擴展性和用戶的自適應(yīng)性。
繪圖模塊是構(gòu)建在Qt庫、繪圖操作模塊和圖形庫模塊基礎(chǔ)上的,主要用于在基本圖形和圖形庫中實現(xiàn)電氣的圖元繪制及維護系統(tǒng)圖、廠站圖及初始化曲線以及棒圖等功能。
數(shù)據(jù)維護模塊主要實現(xiàn)對初始化模塊初始實時數(shù)據(jù)庫數(shù)據(jù)的調(diào)用、實時數(shù)據(jù)庫的訪問以及實時數(shù)據(jù)庫的修改等功能。它采用三層架構(gòu)方式來將用戶界面、業(yè)務(wù)邏輯、數(shù)據(jù)訪問分離開來,而它們彼此間則通過接口交互。在這種架構(gòu)下,用戶通過中間層來訪問和修改數(shù)據(jù)庫,這樣有利于保持數(shù)據(jù)的一致性和正確性。由于用戶不直接訪問數(shù)據(jù)庫,因此,數(shù)據(jù)庫結(jié)構(gòu)的改變不會引起用戶服務(wù)程序的修改,而只需修改中間層。
圖形、數(shù)據(jù)維護模塊負責繪圖模塊和數(shù)據(jù)維護模塊的協(xié)調(diào)工作,它可在繪圖的同時通過圖形及友好的人機界面輸入相應(yīng)的設(shè)備參數(shù)和運行參數(shù),并具有合理性校驗、自動生成網(wǎng)絡(luò)拓撲結(jié)構(gòu)等功能,該模塊是本系統(tǒng)的核心部分。
DTS潮流計算及仿真培訓模塊嚴格地說不屬于圖形數(shù)據(jù)一體化支撐平臺,它是基于圖形數(shù)據(jù)一體化支撐平臺的高級應(yīng)用,是圖形數(shù)據(jù)一體化支撐平臺服務(wù)的對象。
4 圖形數(shù)據(jù)的維護
圖形、數(shù)據(jù)維護是本系統(tǒng)的核心部分。結(jié)合DTS系統(tǒng)以往的數(shù)據(jù)維護方式,考慮到各種維護工作側(cè)重點的不同,本系統(tǒng)具有三種維護使用方式:交互式、圖庫一體化、批處理。這三種維護方式各有其特點和應(yīng)用范圍。交互式能提供友好界面以供用戶瀏覽、查詢、維護,該方式側(cè)重于對少量數(shù)據(jù)的錄入修改;圖庫一體化方式可將圖形與數(shù)據(jù)庫中的設(shè)備、網(wǎng)絡(luò)模型、系統(tǒng)參數(shù)等數(shù)據(jù)關(guān)聯(lián)起來,該方式側(cè)重于設(shè)備、電力網(wǎng)絡(luò)模型的維護。批處理方式側(cè)重數(shù)據(jù)的大批量裝入和導(dǎo)出,當然,批量的導(dǎo)入僅限于一些不改變關(guān)聯(lián)關(guān)系的操作。對于不同類型的用戶,可以根據(jù)所維護工作的特點選用不同的維護方式。通常,普通用戶可使用交互式,同時僅使用數(shù)據(jù)瀏覽權(quán)限;圖庫一體化用戶由于要維護系統(tǒng)設(shè)備參數(shù)和網(wǎng)絡(luò)拓撲結(jié)構(gòu),因而可使用圖庫一體化方式;而對于數(shù)據(jù)庫維護人員,則應(yīng)使用批處理、交互式方式或圖庫一體化方式。
4.1 交互式
交互式可提供統(tǒng)一的、面向調(diào)度自動化系統(tǒng)的數(shù)據(jù)維護工具,以幫助用戶透明地維護所有的數(shù)據(jù)庫,其中包括計算機通信系統(tǒng)以及SCADA系統(tǒng)、特殊計算、報警管理、網(wǎng)絡(luò)拓撲、設(shè)備參數(shù)、模擬盤等數(shù)據(jù)庫。交互式主要實現(xiàn)瀏覽查詢和數(shù)據(jù)維護兩項功能,其中瀏覽查詢可提供一致和透明的工具,以供使用人員瀏覽查詢數(shù)據(jù)庫信息,它包含兩種方式:一是表格瀏覽器方式,該方式可供維護人員和系統(tǒng)管理員對系統(tǒng)的各個具體數(shù)據(jù)庫進行瀏覽查詢;另一種是整體數(shù)據(jù)查詢方式,可供使用人員或調(diào)度員瀏覽查詢電力系統(tǒng)結(jié)構(gòu)和全部數(shù)據(jù),該方式支持層次、關(guān)系的瀏覽查詢。
數(shù)據(jù)維護可使維護人員編輯和修改各種數(shù)據(jù)參數(shù),如增加計算點,修改采集點等。
4.2 圖庫一體化
圖庫一體化方式就是自動保持圖形與數(shù)據(jù)庫數(shù)據(jù)的一致。該方式可在圖形編輯器繪制單線圖的同時將對應(yīng)的電力網(wǎng)絡(luò)中的數(shù)據(jù)庫數(shù)據(jù)一并填寫完畢,并進行校驗以保證數(shù)據(jù)庫填寫的正確性。這種方式面向設(shè)備圖元,形象直觀,設(shè)備之間的連接關(guān)系比較清晰,且圖形和數(shù)據(jù)同步,能解決以往系統(tǒng)中圖形、數(shù)據(jù)庫和網(wǎng)絡(luò)建模因多次輸入而可能造成的數(shù)據(jù)不一致的問題,從而提高了系統(tǒng)的整體水平。
4.3 批處理
批處理方式主要用于大批量數(shù)據(jù)的維護,主要包括導(dǎo)入和導(dǎo)出功能。導(dǎo)入主要用于實現(xiàn)數(shù)據(jù)庫的批量生成,即利用準備好的數(shù)據(jù)文件填寫離線庫的數(shù)據(jù);導(dǎo)出則是利用離線庫數(shù)據(jù)生成批量裝入文件。其中數(shù)據(jù)文件具有文本文件和XML(Extensible Markup Language,可擴展標記語言)文件兩種形式。
文本文件形式簡單直觀、導(dǎo)入導(dǎo)出快捷,但是不同廠商獨立開發(fā)的DTS 應(yīng)用數(shù)據(jù)的描述方式不盡相同,故該文件形式不適用于廣泛的信息交換。
以SVG格式表達圖形信息的XML文件格式來表達數(shù)據(jù)信息可使信息組織高度結(jié)構(gòu)化。XML 是不同應(yīng)用系統(tǒng)之間的數(shù)據(jù)接口標準,是所有信息的中間層表示,可解決信息表示、關(guān)聯(lián)的統(tǒng)一,實現(xiàn)跨平臺、跨操作系統(tǒng)的信息交互。XML 的HTML 標準信息傳輸格式還擴大了網(wǎng)絡(luò)傳輸和信息共享范圍。當XML與控制中心接口的公用信息模型(CCAPI —CIM)結(jié)合(即在應(yīng)用程序或構(gòu)件接口語義級上基于CIM)時,不同廠商開發(fā)的應(yīng)用程序或不同系統(tǒng)的應(yīng)用軟件間就可以用統(tǒng)一的XML文件方式實現(xiàn)正確的信息交換。
5 結(jié)論
本系統(tǒng)以Linux為平臺,具有較高的穩(wěn)定性,硬件兼容性好,價格低廉,速度快。將面向?qū)ο?/strong>技術(shù)應(yīng)用于DTS可大大改善DTS開放性差、擴充性差、難維護等不足。而采用C++和Qt類庫編程,則可利用前人已有的成果進一步降低開發(fā)難度,提高開發(fā)效率。同時也很容易向UNIX移植,以適應(yīng)一些用戶的特殊要求。由于該系統(tǒng)在圖形數(shù)據(jù)維護上對老系統(tǒng)進行了完善,因而大大減少了原有DTS數(shù)據(jù)維護的工作量及繁雜度。另外,與EMS API IEC 61970標準相結(jié)合還可導(dǎo)出XML數(shù)據(jù)文本和SVG格式畫面,從而可方便地與其它系統(tǒng)實現(xiàn)互操作。目前,此系統(tǒng)已應(yīng)用于山東臨沂的DTS中,并得到調(diào)度員和專業(yè)人士的好評,同時也證明了此方案的可行性與實用性。