喬 卉,龔慶武,江傳文
(武漢大學 電氣工程學院,湖北 武漢 430072)
電力培訓仿真系統(tǒng)是電力企業(yè)進行員工培訓的主要手段,具有結(jié)果真實、效果逼真及易于維護和升級等特點。隨著計算機硬件成本的不斷下降及計算性能的不斷增強,虛擬現(xiàn)實技術(shù)已逐步應用于電力培訓仿真系統(tǒng)的開發(fā)與實現(xiàn),三維虛擬場景和實時交互提高了電力培訓仿真系統(tǒng)的現(xiàn)場表現(xiàn)力和真實感[1-2]。
現(xiàn)有的電力培訓三維交互仿真系統(tǒng)側(cè)重于利用三維仿真形式增強仿真環(huán)境及仿真實體外觀和動作過程外在表現(xiàn)的真實性,對用戶模擬操作過程的控制邏輯處理簡單,系統(tǒng)的交互模擬操作體驗性較弱、且不符合用戶的操作行為特點是其最大的不足。將教育游戲設計思想和實現(xiàn)模式引入電力三維仿真培訓系統(tǒng)[3]的設計和開發(fā)過程是其未來發(fā)展的方向。這要求電力三維仿真培訓系統(tǒng)在三維視景規(guī)模、表現(xiàn)逼真性及模擬操作控制復雜性和靈活性等方面大幅度提高性能,因此,面向電力培訓的三維交互仿真平臺應能滿足上述系統(tǒng)開發(fā)要求。
但是著重于支持虛擬世界表示、發(fā)布和渲染等功能需求的三維仿真開發(fā)平臺,例如VRML編輯器、virtools和VR-Platform都沒有支持完全的編程功能,不適用于描述隨機屬性和復雜的控制邏輯,而且這些平臺在大規(guī)模三維場景實時渲染和優(yōu)化、三維場景和資源管理等方面尚有許多改進之處,因此并不適用于操作模式和交互控制邏輯復雜的電力三維仿真應用開發(fā)。而商業(yè)三維游戲引擎的展示大規(guī)模、高質(zhì)量的三維場景支持功能雖然很強,但是對復雜操作交互過程和邏輯控制的功能整合不強,人機交互模式不適合電力仿真培訓系統(tǒng)所需的模擬操作方式,并且價格非常昂貴,對于電力仿真培訓系統(tǒng)的開發(fā)和實現(xiàn)而言成本過高。
因此項目組成員結(jié)合電力三維交互仿真培訓系統(tǒng)的應用需求和功能特點,基于XNA Framework,研究并自主開發(fā)了面向電力培訓仿真應用的三維交互仿真平臺PowerX。
XNA Framework是微軟發(fā)布的.NET環(huán)境下基于DirectX的三維游戲開發(fā)類庫。XNA Framework的基本框架包括Graphic Engine、Game Application Model和Content Pipeline 3個部分,所包含的DLL文件可以全部使用C#編寫,并且是完全的托管動態(tài)庫,大部分方法通過調(diào)用DirectX的DLL實現(xiàn)相應的功能。
每個XNA項目都使用一個Game類,它包含了所有重要的游戲組件,如圖形設備(Graphic Device)、窗口設置以及內(nèi)容管理器,同時還可以添加用戶輸入、聲音處理等。Game類中包含的基本方法及代碼執(zhí)行流程如圖1所示。其中,Initialize()方法用來設置啟動參數(shù)、初始化邏輯等;LoadContent()方法用來加載游戲所需要的模型、貼圖、音效等資源;Unload-Content()方法用來卸載游戲資源,托管機制下該方法一般不需調(diào)用;Update()方法在游戲的每一幀重繪之前被調(diào)用,來更新游戲時間、用戶輸入、聲音以及其他后臺數(shù)據(jù);Draw()方法用來在每一幀重繪時把三維場景繪制到屏幕。
圖1 XNA程序執(zhí)行流程Fig.1 Flowchart of XNA program execution
雖然XNA Framework降低了三維游戲編程開發(fā)的難度,但是它也僅僅提供了一些基礎功能,不具備直接開發(fā)復雜應用功能的能力。例如,XNA只提供最簡單的模型導入與顯示,不提供三維場景框架構(gòu)建功能,而這是實現(xiàn)大規(guī)模三維場景編輯和管理的重要功能;同時,XNA自身不提供與三維仿真對象的交互功能,但這是電力仿真培訓系統(tǒng)支持模擬操作必須具備的功能。
電力培訓仿真系統(tǒng)要對電力運行環(huán)境和電氣設備進行三維仿真,尤其要對電氣設備的外觀結(jié)構(gòu)、操作元件及動作過程進行精細仿真和實時模擬,仿真場景具有規(guī)模大、節(jié)點多、操作邏輯復雜等特點,對仿真平臺的三維渲染實時性、操作交互過程復雜邏輯控制的處理能力要求較高。針對以上特點,為了實現(xiàn)代碼復用,降低功能耦合度,實現(xiàn)高度面向?qū)ο蟮囊?,三維交互仿真平臺PowerX的功能架構(gòu)分為通用三維仿真引擎和電力仿真框架2層,見圖2。
圖2 PowerX體系架構(gòu)Fig.2 PowerX architecture
通用三維仿真引擎是與仿真應用邏輯無關(guān)的三維交互仿真運行與開發(fā)平臺,主要實現(xiàn)三維虛擬場景的構(gòu)建、管理和顯示以及三維交互等功能的抽象,包含圖形渲染、場景管理、資源管理、交互控制、動畫系統(tǒng)和網(wǎng)絡通信等公共模塊。
作為仿真應用開發(fā)平臺的電力仿真框架層包含設備管理及邏輯控制、任務系統(tǒng)、仿真場景管理和仿真用戶管理等功能模塊。
實際作業(yè)過程中工作人員操作和交互的對象主要是電氣設備、儀器儀表和作業(yè)工器具,其中電氣設備和儀器儀表具有復雜的內(nèi)在動作邏輯,而作業(yè)工器具只具有簡單的操作模式和邏輯。電力三維交互仿真應用實現(xiàn)中,將具有復雜動作邏輯的仿真實體抽象為虛擬設備,電氣設備和儀器儀表基于抽象的虛擬設備類描述其視覺屬性和動作邏輯。視覺屬性包括節(jié)點名稱、節(jié)點坐標、旋轉(zhuǎn)及縮放等,以保證設備動作狀態(tài)三維顯示正確;動作邏輯包含設備操作元件的動作條件和動作結(jié)果。虛擬設備視覺屬性和動作邏輯的分離提高了邏輯代碼的復用性。
根據(jù)電力系統(tǒng)作業(yè)過程的內(nèi)在特征,電力三維交互仿真系統(tǒng)的模擬操作控制邏輯由虛擬設備操作邏輯模型和任務模型共同描述。
a.任務模型是對仿真作業(yè)過程的整體抽象描述,PowerX將其定義為一個或多個虛擬設備操作過程及其變化狀態(tài)的有序組合,其屬性包括關(guān)鍵點狀態(tài)、開始狀態(tài)和結(jié)束狀態(tài),其中關(guān)鍵點狀態(tài)是根據(jù)任務內(nèi)容選定的虛擬設備動作過程狀態(tài)。
b.虛擬設備操作邏輯模型描述了針對使虛擬設備達到某個特定的狀態(tài)而實施執(zhí)行的動態(tài)行為的順序控制和響應邏輯。作業(yè)工器具的操作過程根據(jù)作業(yè)過程被當作虛擬設備操作和動作過程的一部分,例如,變壓器絕緣電阻測試實驗仿真中,絕緣電阻測試儀(或搖表)作為虛擬設備模擬其屬性和動作邏輯,實驗放電過程所用的放電棒并不作為虛擬設備,放電棒及其放電過程只作為絕緣電阻測試儀實驗過程中的一個元器件及其動作步驟。
設備管理及邏輯控制模塊的功能為:通過列表統(tǒng)一對虛擬設備所定義的屬性參數(shù)進行定義和匹配,包括視覺屬性、電氣關(guān)聯(lián)參數(shù)、設備動作邏輯;提供設備動作和狀態(tài)更新所需的公共功能和功能擴展的公共接口,例如,更新電氣關(guān)聯(lián)參數(shù),實現(xiàn)三維交互仿真過程和電氣仿真計算程序互聯(lián),發(fā)送設備消息等;同時,根據(jù)設定的操作響應模型控制虛擬設備的動作邏輯,實現(xiàn)虛擬設備的模擬操作功能。
任務系統(tǒng)模塊對任務模型的關(guān)鍵屬性參數(shù)和任務實施過程進行管理和控制。受訓人員一次只能激活一個任務,當任務被激活后,每個操作都被任務系統(tǒng)檢查,若滿足當前關(guān)鍵點所需狀態(tài),則自動進入下個關(guān)鍵點,直到完成全部關(guān)鍵點,即認為任務完成[3]。
仿真場景管理模塊整合仿真場景所包含的模型、設備和任務信息,通過加載場景地圖、設備及任務信息的配置文件和設備動作邏輯的動態(tài)鏈接庫,構(gòu)建電力培訓所需的三維交互仿真場景;管理和控制多場景數(shù)據(jù)的有序讀取和加載,實現(xiàn)場景跳轉(zhuǎn)和切換等公共功能。
仿真用戶管理模塊主要對用戶個人信息及考核過程信息進行管理,提供用戶使用權(quán)限識別及信息查詢和編輯功能。
對于電力仿真培訓系統(tǒng),其三維虛擬場景的特點是仿真場景范圍較大,仿真對象數(shù)量多,而且仿真對象還要能夠根據(jù)人機交互操作產(chǎn)生空間運動,因此不能把全部對象保存在一個渲染列表中直接繪制出來,這會導致渲染效率低下而且過程難以控制。
對于場景對象,PowerX采用渲染對象和空間節(jié)點分離的策略,將三維仿真對象劃分為可移動對象和可渲染對象。其中,場景對象的三維模型基本數(shù)據(jù)作為可渲染對象處理,只具備顯示的能力;可移動對象是能夠在三維空間中運動的對象,利用節(jié)點空間坐標矩陣的遞歸相乘使可移動對象根據(jù)空間節(jié)點關(guān)系實現(xiàn)層次動畫,從而模擬虛擬設備動作元件的空間運動變化。對于空間節(jié)點的管理采用經(jīng)典場景圖和數(shù)據(jù)字典結(jié)合的方式,本質(zhì)上是一個多叉樹和一個鏈表,多叉樹能方便地進行空間層次變換,鏈表的使用能高效查找節(jié)點而避免緩慢的遞歸搜索,加快渲染過程。當場景節(jié)點數(shù)量達到一定程度時,采用靜態(tài)場景對象和動態(tài)場景對象分離的優(yōu)化策略[12],只更新動態(tài)場景對象的空間信息,而靜態(tài)場景對象只需要在加載的時候更新空間信息,節(jié)約計算資源。
另外,隨著三維場景中獨立渲染對象數(shù)量的增多,顯卡數(shù)據(jù)處理速度會快速下降[13]。因此,為保證大規(guī)模場景渲染的實時性,必須控制三維場景中獨立渲染對象的數(shù)量。PowerX根據(jù)仿真對象的分布密度,設置隱藏距離,然后利用場景樹進行仿真對象可見性判斷和裁剪,減少仿真過程中同時處理的對象數(shù)量,保證應用程序運行的實時性和流暢性。針對仿真場景中需要操作的數(shù)量眾多的小物體,采用智能合并小物體的思想,利用幾何體打包技術(shù)來處理[13]。
電力仿真操作過程應支持操作者的開放式操作行為[14],即虛擬設備操作邏輯要按照操作規(guī)程對操作者的隨機操作和自由判斷給予反饋。相較于僅支持封閉式操作行為的控制邏輯,復雜程度大幅提高。PowerX基于有限狀態(tài)機控制原理,采用用戶動作事件觸發(fā)的操作響應控制方法,使操作模擬過程由用戶的動作來推動。
PowerX中的有限狀態(tài)機可表示為四元組S=(Q,∑,δ,q0),其中全部狀態(tài)集 Q 描述仿真操作過程所有狀態(tài)變量的取值空間;開始狀態(tài)集q0∈Q描述任務開始和任務操作所涉及的虛擬對象的狀態(tài)變量值;∑為輸入控制變量,PowerX中將用戶操作所引發(fā)的動作事件作為有限狀態(tài)機的輸入控制變量,操作者通過選擇虛擬場景的操作菜單引發(fā)動作事件;狀態(tài)轉(zhuǎn)移函數(shù)δ在PowerX中由必要狀態(tài)集合和消息處理函數(shù)2個部分組成。必要狀態(tài)集描述了允許虛擬對象狀態(tài)變化的必要條件,即變化前對象狀態(tài)變量的必要值;作為狀態(tài)機輸入控制變量的動作事件產(chǎn)生動作消息,PowerX根據(jù)消息將當前設備狀態(tài)與必要狀態(tài)集進行匹配,依據(jù)匹配結(jié)果執(zhí)行消息處理函數(shù)完成虛擬設備的狀態(tài)轉(zhuǎn)變,模擬虛擬設備的操作動作過程,或者根據(jù)不匹配狀態(tài)對用戶操作行為給予提示和引導,保證仿真動作邏輯的完整性。作為有限狀態(tài)機狀態(tài)變化結(jié)束的判據(jù),終止狀態(tài)集在PowerX中由任務系統(tǒng)的關(guān)鍵點描述,當操作過程狀態(tài)變量值等于系統(tǒng)關(guān)鍵點所描述的數(shù)值時,有限狀態(tài)機停止狀態(tài)變化過程,系統(tǒng)確認操作者完成任務的模擬操作,否則操作者必須繼續(xù)操作,直到操作過程狀態(tài)變量等于必要狀態(tài)集中的賦值。
這種操作響應控制方法有以下優(yōu)點:由用戶根據(jù)自己的意向進行操作,具有更好的靈活性,避免重復死板的操作流程;操作錯誤能夠被警告,無效操作予以提示,易于實現(xiàn)系統(tǒng)的智能培訓輔導功能。
PowerX利用對象-屬性-事件機制[15]來維護三維虛擬環(huán)境中虛擬對象特征和行為的一致性,對象表示虛擬環(huán)境中的仿真實體,屬性描述對象的特征和行為。
虛擬電氣設備是電力仿真培訓系統(tǒng)最重要的仿真對象,除了系統(tǒng)坐標、顏色、貼圖、縮放比例等屬性,設備電氣狀態(tài)(對應開關(guān)量表示)及關(guān)聯(lián)電氣參數(shù)是虛擬電氣設備的主要屬性之一。例如,高壓開關(guān)柜的停送電狀態(tài)、開關(guān)分斷或閉合狀態(tài)以及電壓表或電流表顯示讀數(shù)。設備的電氣屬性通過電氣屬性列表存儲,設備管理器也維護一個全局設備電氣參數(shù)列表,其中保存有全部虛擬設備電氣狀態(tài)及其電氣運行參數(shù)。
圖3為虛擬設備電氣屬性同步聯(lián)動示意圖。三維虛擬世界中的仿真操作導致虛擬設備電氣狀態(tài)發(fā)生變化時,相應的設備電氣屬性列表中的值會發(fā)生變化,從而引起全局設備電氣參數(shù)列表相應的值發(fā)生改變,設備管理器得到通知,調(diào)用配網(wǎng)電氣仿真計算程序,使其根據(jù)全局設備電氣參數(shù)列表反映的電網(wǎng)拓撲結(jié)構(gòu)重新對電網(wǎng)參數(shù)進行分析計算,并改變?nèi)衷O備電氣參數(shù)列表中的值,產(chǎn)生狀態(tài)更新事件,共享變化屬性的設備電氣屬性列表響應這個事件,更新對應的值,并通知共享該屬性的客戶端進行狀態(tài)變化和場景更新。通過設置設備電氣屬性列表和全局設備電氣參數(shù)列表,使配網(wǎng)電氣仿真計算程序?qū)崿F(xiàn)功能模塊化,和仿真系統(tǒng)在架構(gòu)上呈現(xiàn)松耦合關(guān)系,可以靈活變更和擴充。
圖3 虛擬設備電氣屬性同步聯(lián)動Fig.3 Synchronous interlock of electrical properties of virtual equipment
三維交互功能是指用戶通過鼠標點擊三維場景中的某一特定的物體時,系統(tǒng)能檢測到該特定物體被點擊并得到預設的信息內(nèi)容,從而使系統(tǒng)能夠獲得用戶發(fā)出的信息實現(xiàn)人機交互。XNA自身不提供與三維仿真對象的交互功能,根據(jù)電力仿真操作的需要,PowerX定義并實現(xiàn)了電力仿真操作過程的三維交互方式,即將菜單消息作為用戶操作虛擬設備的接口,當用戶用鼠標點擊操作對象時,鼠標點擊處會創(chuàng)建Windows控件并加入操作選項,用戶選擇操作選項,PowerX能檢測到該特定物體被點擊并得到預設的菜單消息,從而獲得用戶發(fā)出的信息,啟動并執(zhí)行操作控制邏輯,形成人機協(xié)同運動。這種方式可以讓用戶點擊同一物體而有多種動作選擇,以滿足電力仿真操作行為復雜的特點。
三維場景中虛擬電氣設備可操作的元器件大小各異,PowerX必須保證用戶能夠?qū)λ鼈冞M行快速精確的選擇操作。三維物體選擇一般采用射線相交原理判斷,基本方法是通過鼠標位置發(fā)射一條垂直于屏幕的視空間深度射線和場景對象進行相交計算,遍歷每個對象的每個三角形,檢測到有交點就取得該對象的位置標識,相交并且最近的物體就是被選擇的操作對象。直接執(zhí)行三角形級別的檢測過程會占用較多計算資源,影響交互過程的實時性。因此,實際應用中常用一個近似的球體來包圍物體,射線只需要和包圍球體進行相交計算,但這會導致無法精確選擇距離很近的物體,影響操作對象選擇的準確性。PowerX采用包圍球體和三角形混合檢測的方法:首先判斷物體的包圍球體和射線是否相交,如果沒有相交,那么不再對該物體進行檢測計算;如果相交,接著對相交坐標所標識的物體進行三角形級別的檢測分析,根據(jù)檢測相交的結(jié)果判斷被選擇的具體操作對象,這樣既保證了計算速度,又確保能夠精確地選擇到三維操作對象。
PowerX主要解決了碰撞檢測的實時性和精確性之間的矛盾以及碰撞的合理響應。根據(jù)電力仿真操作仿真的特點,采用修改后的包圍盒[16]來進行碰撞檢測,即由一系列的小區(qū)域組成一個場景內(nèi)視點的允許移動區(qū)域(以不穿透設備或物體為要求),這樣滿足了實際需求,而且計算量小,可以實時計算是否發(fā)生碰撞檢測。
為了增強虛擬場景的真實感,檢測到碰撞后,物體還應按照物理規(guī)律做出合理的碰撞響應,包括改變運動、形狀及其他行為屬性。如圖4所示,假設移動對象是沒有彈性的剛體,以速度v和墻壁發(fā)生碰撞,則垂直于碰撞面的速度分量v1將直接被取消,但平行于碰撞面的速度分量v2被保留,即使得移動對象沿著碰撞面滑動,實現(xiàn)快速、平滑、自然的碰撞效果。
圖4 碰撞檢測及處理Fig.4 Collision detection and processing
基于PowerX支持的底層功能,項目組還自主開發(fā)了降低仿真應用實現(xiàn)難度的可視化開發(fā)工具,主要包含設備邏輯編輯器、場景編輯器、地圖編輯器。
a.設備邏輯編輯器根據(jù)操作響應控制模型將設備動作邏輯的編程實現(xiàn)過程轉(zhuǎn)化為可視化編輯過程。設備邏輯編輯器根據(jù)輸入信息能夠自動生成代碼文件,實現(xiàn)設備仿真操作動作響應控制功能。采用可視化編輯結(jié)合代碼自動生成的模式既有利于設備邏輯控制代碼的規(guī)范編寫,又增強了PowerX的編程功能,便于靈活適應仿真應用開發(fā)需求的變化。
b.場景編輯器提供三維場景框架構(gòu)建功能,即創(chuàng)建三維場景的樹狀層次關(guān)系,提供對三維場景中各種節(jié)點的添加、刪除和控制,用以快速構(gòu)建和編輯三維場景。
c.地圖編輯器允許開發(fā)人員通過鼠標的拖放完成三維場景的布置,并能實時觀看編輯結(jié)果。
基于PowerX及其開發(fā)工具,筆者及其項目組針對配電和變電領域操作技能仿真培訓需求研發(fā)了配電網(wǎng)生產(chǎn)運行仿真培訓系統(tǒng)(圖5)、配網(wǎng)狀態(tài)檢修仿真培訓系統(tǒng)(圖6)和電力安全事故模擬系統(tǒng)(圖7—9)。其中,配電運行仿真培訓系統(tǒng)實現(xiàn)了某城區(qū)10 kV配電運行培訓的仿真應用功能。該系統(tǒng)構(gòu)建了一個配電運行設備和城市場景的三維虛擬配電運行環(huán)境,受訓人員可以在虛擬場景中漫游,根據(jù)操作任務,選取操作對象,并按照對操作任務的認知水平自主實施模擬操作步驟,虛擬設備能夠跟蹤用戶的操作動作,隨著操作過程發(fā)生實時狀態(tài)變化,使用戶獲得對電氣設備現(xiàn)場工作狀態(tài)、操作響應及動作過程的直觀、形象的認識。
圖5 配電運行仿真培訓系統(tǒng)的操作界面Fig.5 Interactive interface of simulative training system for power distribution operation
圖6 配網(wǎng)狀態(tài)檢修仿真培訓系統(tǒng)的操作界面Fig.6 Interactive interface of simulative training system for distribution network maintenance
圖7 變電站220 kV線路事故模擬操作界面Fig.7 Interactive interface of simulative training system for line accident of 220 kV substation
圖8 誤操作事故狀況模擬效果(拉?。〧ig.8 Simulation effect of misoperation(arcing)
圖9 誤操作事故狀況模擬效果(爆炸)Fig.9 Simulation effect of misoperation(explosion)
以上系統(tǒng)均采用C#語言開發(fā),可以運行于PC機和Windows NT操作系統(tǒng)環(huán)境,所有系統(tǒng)都已投入運行,使用效果良好。
PowerX是針對電力培訓三維仿真的特點和仿真需求開發(fā)的三維交互仿真開發(fā)平臺,它較好地整合了大規(guī)模場景實時渲染、復雜人機交互及復雜操作過程邏輯控制等功能,能夠很好地支持電力培訓三維交互仿真系統(tǒng)的開發(fā)和運行。配電運行仿真培訓系統(tǒng)等案例的成功開發(fā)證明PowerX對加快系統(tǒng)開發(fā)進度、優(yōu)化系統(tǒng)體系結(jié)構(gòu)、提高電力培訓仿真系統(tǒng)的穩(wěn)定性和擴展性具有重要的作用。