別志銘 辛勇軍
(珠海許繼芝電網自動化系統有限公司,廣東 珠海 519060)
隨著智能電網的不斷深入發(fā)展和計算機的可視化技術的不斷提高,采用2D圖形的配電網監(jiān)控系統,逐漸不能滿足用戶需求。2D的圖形會逐步向3D圖形系統過渡,先進的三維、動態(tài)、可視化技術將會被大量應用到配電網監(jiān)控中。
TOSCAN4000配網監(jiān)控系統的目標是打造“智能配電網”[1][2],本文從可視化,互動性[2]角度出發(fā),設計監(jiān)控系統的圖形系統。該系統的圖形引擎在opengl圖形庫上獨立開發(fā),支持海量圖形數據。它能給用戶提供更加個性化,量身定做的功能。該圖形系統采用分層設計,總體結構如圖1所示。
數據對象層是數據的提供方。它主要是管理3D地理背景信息,3D電氣圖符,電網的結構參數和拓撲數據,以及各種專題圖形,設備的實時信息等。數據的來源可以是多樣的,如數據庫、網絡、svg、3dmax文件等。它通過數據接口,用來屏蔽不同數據類型,給數據表示層提供統一的數據格式。它從根本上解決了數據的多樣化和不確定的問題,能很好的和其它系統的數據進行無縫連接,實現數據的共享,在該系統中實現地理數據和電氣數據的融合。
圖1 TOSCAN4000配網監(jiān)控系統的圖形系統總體結構
數據表示層是3D圖形引擎的核心層。它主要分為3部分:基本對象、設備對象和最優(yōu)空間樹。它通過數據對象層的數據接口獲取配電網數據后,把電氣設備和地理對象按空間劃分成最優(yōu)空間樹。
(1)基本對象
基本對象主要是點、線、曲面、平面、3角形、矩形、圖片等,它是構成圖形的基本元素。主要包括下列功能:①計算基本對象的AABB(Axis-Aligned Bounding Box簡稱AABB)和球形包圍體;②基本對象間的距離計算;③基本對象間碰撞相交計算、和射線相交計算等,以及獲取相交的頂點坐標等;④剔除不可見的頂點坐標;⑤基本對象的3角形的分解。例如把多邊形分解為一組 3角形等;⑥基本對象頂點的修改變更,高亮度顯示,簡單的運行控制;⑦基本對象保存到文件和從文件中讀取功能。
(2)設備對象
設備對象是由基本對象組合形成。每個設備對象具有特殊的含義,如變電站,電桿,居民樓,樹木等。設備對象提供的基本功能包括:①控制設備對象的顯示或不顯示;②設備對象選取以及和用戶的鍵盤鼠標交互的功能;③把設備對象分解為基本對象;④把設備對象和設備屬性,圖形數據及其拓撲數據,實時信息相關聯。
(3)最優(yōu)空間樹
最優(yōu)空間樹是分割3維空間后形成的樹。下面介紹形成最優(yōu)空間樹的過程:
1)獲取電氣設備和地理背景的最大空間范圍,作為樹的根節(jié)點的AABB。
2)把樹的根節(jié)點的 AABB按空間坐標平均分割為512個子AABB,每個子AABB作為樹的樹枝節(jié)點。這樣就生成了樹的第1層樹枝節(jié)點。
3)把上1層上的每個樹枝節(jié)點作為根節(jié)點,再平均分割為512個AABB,每個子AABB作為當前樹枝節(jié)點的下級樹枝節(jié)點。這樣就生成了樹的第2層樹枝節(jié)點。
4)循環(huán)3的步驟,創(chuàng)建4到6層樹枝節(jié)點。按照一個樹枝節(jié)點下面會掛4K到16K個樹葉,根據總的設備個數,就可以計算出實際需要的最大的樹枝節(jié)點層數。樹枝的層次不要太多,最好在10層以內,一般通過適當增加樹葉的個數,來解決海量的設備問題。
5)從數據接口獲取一個圖形信息(包括電氣圖形或地理圖形等),創(chuàng)建一個設備對象,計算出它的球形包圍體。采用深度優(yōu)先的算法,從樹根開始,比較每個樹枝AABB和該設備對象的球形包圍圈,如果樹枝包含該設備對象,繼續(xù)向下比較。如果樹枝和該設備相交,該設備就作為該樹枝的父節(jié)點的樹葉。
6)循環(huán)5的操作,直到所有設備都掛到樹上。
7)清除沒有樹葉的樹枝節(jié)點對象。
8)計算出所有的樹枝節(jié)點的實際的球形包圍體。
9)把樹枝、樹葉的所有內容(包括球形包圍體等)保存到文件(或者數據庫)中。在文件頭處保存每個樹枝節(jié)點內容和樹枝的樹葉在文件中的開始位置和長度。這樣方便下次把最優(yōu)空間樹的某樹枝中的樹葉全部讀取到內存。
最優(yōu)空間樹是在 4叉樹[3]基礎上進行改進后形成的樹。它只需要創(chuàng)建一次。把創(chuàng)建好的空間樹保存到文件(或數據庫)中,下次需要顯示圖形時,只需先讀取樹枝和樹枝中的樹葉在文件中的開始位置等信息到內存中,再確定讀取哪些葉子的內容。根據當前用戶的當前位置和需要顯示窗口的大小,可以得到一個AABB對象,采用深度優(yōu)先的算法,把當前用戶視口的AABB和空間樹每個樹枝的球形包圍體比較。如果當前用戶視口的AABB和某一個樹枝的球形包圍體相交或包含,讀取該樹枝的樹葉在文件中的偏移量,采用文件映射技術定位到文件的樹葉處,把樹葉內容讀取到內存,再把每個樹葉的球形包圍體和前用戶視口的AABB比較,如果它們是相交或包含關系,就把該樹葉內容顯示到屏幕上,否則就不顯示該樹葉內容。采用該方法,即使是海量的圖形數據,系統在顯示圖形時,占用pc機器的內存都是很小的,因此圖形也能很快速的顯示。
最優(yōu)空間樹的主要優(yōu)點如下:
1)采用數組存放每一層的樹枝,可以進行數據的快速查找。由于基本上等分的空間,所以可以根據用戶的視口AABB和縮放率,直接定位到某個樹枝,不需要從根節(jié)點遞歸查找,從而縮短查找時間。
2)對于大量變化的設備對象(如模擬移動汽車,局部雨雪等),都很方便在樹枝上進行修改。要顯示大量動態(tài)的設備,普通的4叉樹不是很適合。
3)對于不同的圖層設備(如開關圖層和配變圖層),可以共用一個最優(yōu)空間樹,這樣可以節(jié)省很多空間。對于普通的4叉樹在顯示不同圖層時需要對應構建不同的樹。
圖形渲染層也是3D圖形引擎的核心層。它主要分為2部分:圖形主表面和紋理生成器。圖形主表面接收到要渲染圖形的命令后,最優(yōu)空間樹剔除不可見的圖形坐標,把可見的圖形坐標發(fā)送給紋理生成器。紋理生成器接收到數據后,采用pbuffer或fbo等技術離屏繪制到顯示卡中(如果pc機器的opengl版本小于1.4,紋理生成器就會把圖形繪制到位圖中),圖形主表面根據共享上下文或紋理直接渲染到紋理的技術,把圖形顯示在屏幕上。
(1)紋理生成器
紋理生成器主要負責圖形的移動、特效以及生成紋理等功能。一個紋理生成器采用一個獨立線程,在自己獨立的空間運行。圖形數據可以在不同的紋理生成器中共享。紋理生成器在繪制圖形時,大部分時間是用在根據用戶視口的AABB查找要顯示的圖形頂點坐標上,小部分的時間用在顯示圖形上。因此,3D圖形引擎速度的關鍵在于生成最優(yōu)空間樹,以及充分利用CPU和顯示卡的性能。3D圖形引擎的紋理生成器的個數最好和CPU的核總數一樣多,這樣就可以實現并行繪制圖形,加快紋理生成的速度。如果計算機有多塊顯示卡,紋理生成器的繪制速度也會有明顯的提高。
(2)圖形主表面
圖形主表面采用一個獨立線程,主要管理紋理生成器和聲音等對象。它獲取當前圖形窗口的高和寬,然后把寬和高各自增加20%,得到一個屏幕矩形對象,再獲取當前PC機CPU的核的總個數(下面以2個核為例子),同時創(chuàng)建2個紋理生成器對象,同時把屏幕矩形對象分割為4到8塊瓦片(最好根據紋理生成器的個數來分割瓦片),然后把不同的瓦片分配給不同的紋理生成器。紋理生成器根據瓦片范圍生成對應的用戶視口的AABB來繪制紋理。圖形主表面采用紋理的方式把瓦片拼接起來,顯示到屏幕上。圖形數據的處理主要分為2類:
1)圖形操作,如圖形漫游,圖形縮放,圖形的高亮和灰化顯示,圖形的顏色閃爍等。圖形主表面是采用雙緩存紋理來顯示圖形。當后臺不可見的紋理生成器生成紋理后,把后臺紋理和前臺紋理相互替換,使后臺紋理變得可見,前臺紋理變得不可見。采用該技術,使圖形顯示更加平滑,并且可以留出更多時間讓紋理生成器去生成紋理。
什么叫好菜?符合酒店標準、客人滿意的菜品就是好菜;什么叫成功菜品?一道菜品客人能夠順利的吃下去,并感到非常舒服,意猶未盡的菜品就是成功菜品;什么是菜品質量內涵?有血有肉,通過味道能和客人交流的菜品就是有內涵的好菜品。
2)圖形查詢統計,如設備查詢,區(qū)域統計,容量統計,拓撲分析等。圖形主表面把查詢統計命令發(fā)給所有的紋理生成器。例如定位某一開關,把最優(yōu)空間樹的第1層不同的樹枝分給不同的紋理生成器,每個紋理生成器按深度優(yōu)先去查找開關。當某一個紋理生成器查找到該開關后,通知其他紋理生成器停止查找。把該開關進行適當縮放后,再移動到屏幕中心,進行高亮閃爍提醒用戶。
應用對象層主要負責界面的顯示和鍵盤鼠標輸入等功能,為用戶提供方便的操作,直觀的圖形顯示。因為采用了全新的3D內核圖形引擎,可以彌補原來傳統2D圖形的不足:
(1)可以直觀的看出架空線,地纜線的上下層次關系,以及同桿架設物左右等關系。
(2)可以清楚的查看到配電網接入的低壓設備,如居民樓上的電表。
(3)可以模擬河流,霧,雨,雪,冰凍,以及雷害區(qū)、鳥害區(qū)、污閃區(qū)等。
(5)通過逐漸透明化弱化地理背景,高亮度強調顯示電氣設備的充停電狀態(tài)等。
該圖形系統主要的特點有:
(1)圖形引擎是基于opengl開發(fā)的全3D內核圖形系統。在不損失性能的情況下,它可以移植到不同的操作系統上。
(2)圖形引擎能自動適應從低檔到高檔的pc機器,并且能自動根據不同顯示卡的配置,選擇最好的性能來顯示圖形。目前它能支持opengl的版本從1.1到3.0。
(3)由于采用分層設計,做到圖形數據和圖形顯示分開,并且具有良好的重用性和平臺的擴展性。
(4)對海量圖形數據的支持。圖形數據即使是100GB以上,圖形引擎也能在普通的pc機器上很快速的處理圖形。
(5)由于采用多線程繪制圖形和多線程查詢統計等技術,能充分利用多核CPU和多塊顯示卡的優(yōu)勢,進行并行顯示和查詢,能極大的提高了圖形處理速度。
(6)給用戶提供了更加真實,更加形象生動的,具有高度互動性的智能配網展示平臺。
隨著智能化電氣設備產品不斷豐富和發(fā)展,配電網的數字化、信息化水平也在迅速的提高。TOSCAN4000配網監(jiān)控系統,跟隨著時代的發(fā)展,升級改造圖形系統,是向著智能電網可視化發(fā)展的有益嘗試,對3D圖形在智能配網的應用和發(fā)展有一定的指導意義。
[1]李興源,魏巍,王渝紅等.堅強智能電網發(fā)展技術的研究[J].電力系統保護與控制,2009,37(17):1-6.
[2]施婕,艾芊.智能電網實現的若干關鍵技術問題研究[J].電力系統保護與控制.2009,37(19):1-4.
[3]Raphael Finkel and J.L. Bentley (1974). "Quad Trees:A Data Structure for Retrieval on Composite Keys".Acta Informatica 4 (1): 1-9. doi:10.1007/BF00288933.