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