冉躍龍,閆英敏
(軍械工程學院電氣工程系,石家莊 050051)
?
基于WPF的三維電路級虛擬維修訓練系統(tǒng)平臺
冉躍龍,閆英敏*
(軍械工程學院電氣工程系,石家莊 050051)
摘要:針對當前裝備虛擬維修訓練系統(tǒng)開發(fā)大多只針對機械部件的拆裝的問題,對基于WPF(Windows Presentation Foundation)的裝備三維電路級虛擬維修訓練平臺進行了研究,闡述了系統(tǒng)平臺包含的三維顯示層、邏輯交互層、數(shù)據(jù)保持層和電路仿真層4層結(jié)構(gòu),探討了系統(tǒng)平臺設計中的3項關(guān)鍵技術(shù)。介紹了系統(tǒng)平臺的總體結(jié)構(gòu)設計,設計開發(fā)了基于WPF的三維電路級虛擬維修訓練原型系統(tǒng)。該系統(tǒng)平臺實現(xiàn)了電路級虛擬維修,完善了裝備虛擬維修訓練系統(tǒng)的功能。
關(guān)鍵詞:虛擬維修;電路仿真;分層結(jié)構(gòu);模型-視圖模型-視圖;WPF;三維
虛擬維修(Virtual Maintenance)是通過采用計算機仿真和虛擬現(xiàn)實技術(shù)在計算機上真實展現(xiàn)裝備的維修過程。虛擬維修訓練系統(tǒng)是一種有效的訓練手段,它的開發(fā)能夠有效解決維修訓練中場地、數(shù)量和型號的限制以及訓練效率低等問題。但是,裝備的電氣化程度越來越高,目前成熟的虛擬維修訓練系統(tǒng)大多只是針對裝備零部件的拆裝訓練,很少涉及到裝備中電路的維修訓練[1-2]。因此,本文以某型裝備的電路級虛擬維修訓練系統(tǒng)為對象,以WPF為編程環(huán)境,采用分層結(jié)構(gòu),利用MVVM框架模式,設計實現(xiàn)了裝備電路級虛擬維修訓練系統(tǒng)平臺。
裝備電路級虛擬維修訓練平臺的任務為通過人機交互設備實現(xiàn)利用虛擬儀表工具對裝備電路模型進行仿真分析并排除故障的訓練。平臺的核心內(nèi)容包括電路及儀表的三維建模,電路模型描述,電路故障建模和電路仿真運算。
本文采用分層結(jié)構(gòu)來實現(xiàn)平臺的上述功能。電路級虛擬維修訓練平臺的體系結(jié)構(gòu)如圖1所示,分為4個層次結(jié)構(gòu),分別是三維顯示層、邏輯交互層、數(shù)據(jù)保持層和電路仿真層,每層的結(jié)構(gòu)及具體功能如下:
(1)三維顯示層:該層主要包括電路三維模型與虛擬儀表。它為參訓人員呈現(xiàn)電路的三維模型,利用3DS Max建模軟件,根據(jù)裝備電路結(jié)構(gòu)及外觀構(gòu)建裝備電路板的三維模型,同時定義節(jié)點與裝備電路模型的關(guān)聯(lián)關(guān)系。三維虛擬電路板經(jīng)WPF的3D繪圖功能實現(xiàn)顯示,并利用交互設備及WPF的3D命中測試幫助類實現(xiàn)三維虛擬電路的測量與交互。整個平臺的可視部分均由三維顯示層實現(xiàn)顯示輸出。
(2)邏輯交互層:當用戶使用鼠標或者其他交互設備在虛擬維修平臺中進行交互操作時,該層主要負責響應用戶的操作。在對虛擬電路板及元器件進行瀏覽查看時,該層將交互設備所選取的對象與數(shù)據(jù)保持層中的模型進行聯(lián)系對應;在對虛擬電路進行測量時,該層將虛擬儀表所測得的節(jié)點數(shù)據(jù)與數(shù)據(jù)保持層中的節(jié)點數(shù)據(jù)進行聯(lián)系對應。
(3)數(shù)據(jù)保持層:該層包含裝備電路模型、裝備電路故障模型,為電路仿真層提供仿真數(shù)據(jù)。裝備電路模型是由SPICE電路描述語言構(gòu)成的裝備電路描述,是面向仿真的裝備電路抽象。裝備電路模型以裝備電路為基本單元,描述電路的元器件電氣特性、器件連接關(guān)系、電路結(jié)構(gòu)、激勵源、虛擬測量設備、節(jié)點性能參數(shù)分析等。裝備故障模型描述裝備故障器件的失效狀態(tài)。虛擬故障設定就是根據(jù)裝備故障模型,修改裝備電路模型中對應器件的電路描述,以及模擬裝備電路的實際故障情況。裝備各電路的電路描述、故障描述、信號關(guān)系描述、電路工作過程描述構(gòu)成裝備電路模型,以網(wǎng)表文件(.CIR文件)格式存儲在數(shù)據(jù)保持層中。
(4)電路仿真層:該層主要負責對電路板上的電路進行實時的電路仿真。它的主要組成部分為NGSPICE電路仿真內(nèi)核動態(tài)鏈接庫,通過動態(tài)鏈接庫的接口進行數(shù)據(jù)交換。該層處理的對象是數(shù)據(jù)保持層所提供的電路描述語言,裝備電路描述、故障描述等信息作為NGSPICE仿真程序的輸入數(shù)據(jù),經(jīng)電路仿真后生成描述各節(jié)點電壓電流的仿真結(jié)果數(shù)據(jù)。
圖1 系統(tǒng)平臺體系結(jié)構(gòu)圖
2.1基于WPF的三維顯示技術(shù)
目前,三維模型的顯示,大多是利用DirectX和OpenGL來編程實現(xiàn)的。然而,使用這2種工具進行開發(fā)時,編程模型比較復雜,而且需要一定的數(shù)學知識來實現(xiàn)三維模型的控制,如平移、旋轉(zhuǎn)和縮放。若需要完成交互式的三維場景構(gòu)建,還需要編寫復雜的三維交互算法[3-4]。此外,這2種工具對顯卡的要求也比較苛刻。
WPF引入了一個新的擴展的三維模型,改變了上述所有這些問題。使用WPF,可以通過簡單的標記構(gòu)建復雜的三維場景。同時,幫助類提供了命中測試、基于鼠標的旋轉(zhuǎn)以及其他基本構(gòu)件。并且?guī)缀跛械挠嬎銠C都可以顯示3D內(nèi)容,這一點要歸功于當缺少顯卡支持時WPF退而使用軟件渲染的能力[5]。
WPF在三維顯示和交互方面的優(yōu)勢使得它成為電路級虛擬維修訓練平臺的理想開發(fā)工具。下面以運放LM747為例介紹基于WPF的三維顯示流程,如圖2所示。
圖2 三維電路模型顯示流程圖
首先,采用3DS Max對LM747進行三維模型的構(gòu)建。在進行三維建模時,需要注意以下兩點:(1)模型器件的主體和管腳必須是不同的幾何體,不能采用一個幾何體通過一定的修改來建立模型,這是由于在WPF進行三維交互時,只有不同的GeomrtryModel3D對象才能擁有不同的鼠標處理事件,即交互事件,而不同的幾何體可以轉(zhuǎn)換為不同的GeometryModel3D對象。(2)模型制作完成后,需要將整個模型的不同幾何體使用“成組”命令,這樣才能使三維模型轉(zhuǎn)換為WPF中的Model3DGroup對象,便于對器件模型整體進行選取。
然后,利用3DS Max中的導出工具導出為3DS文件。3DS文件是一種通用的保存三維模型的數(shù)據(jù)格式,是基于塊結(jié)構(gòu)存儲的,因此便于使用程序編程進行讀取。同時,文件的大小也比MAX文件小很多,對于大型三維模型,可以在很大程度上節(jié)省磁盤空間,并加快讀取三維模型的速度。
最后,將3DS文件形式的三維模型導入WPF工程中,即可在WPF環(huán)境中進行三維交互。對于3DS文件的讀取,目前已經(jīng)有了很多成熟的方法進行讀取分析[6]。AB4D公司的Ab3d.Reader3ds.dll是一個用于在WPF中讀取3DS文件的動態(tài)鏈接庫,可以在WPF應用程序中方便地對3DS讀取顯示,并提取模型對象的層次信息。圖2中顯示了模型的層次信息,可以看出,“LM747”是一個Model3DGroup對象,代表LM747這一器件模型整體,“LM747P1”至“LM747P14”均為GeomrtryModel3D對象,分別代表LM747的14個管腳。獲取了這些層次信息后,就可以利用WPF提供的三維命中測試類來進行3D場景的交互[7]。
2.2基于MVVM的程序設計模式
MVVM(Model-View-View Model)模式由視圖(View)、視圖模型(ViewModel)、模型(Model)三部分組成[5]。圖3所示為MVVM的結(jié)構(gòu)及其各部分之間的交互關(guān)系??梢钥闯?MVVM的三部分結(jié)構(gòu)實現(xiàn)了UI邏輯(UI Logic)、呈現(xiàn)邏輯(Presentation Logic)以及數(shù)據(jù)和業(yè)務邏輯(Business Logic and Data)的分離。
圖3 MVVM模式結(jié)構(gòu)及交互關(guān)系
View封裝了界面和界面邏輯:它的責任便是定義用戶在屏幕上能看到的一切結(jié)構(gòu)以及外觀。通過數(shù)據(jù)綁定(Data Binding),View可以將用戶操作和數(shù)據(jù)的改變傳遞到ViewModel,然后由ViewModel決定如何從Model獲取或改變數(shù)據(jù)。通過命令(Command),在View和ViewModel之間可以實現(xiàn)操作的調(diào)用。View背后的代碼是用來實現(xiàn)XAML很難表達的可視化行為。
ViewModel封裝了呈現(xiàn)邏輯和實現(xiàn)程序狀態(tài)維持:它負責協(xié)調(diào)視圖與任何需要的模型類的交互。ViewModel通過改變提醒事件(INotifyProperty Changed與INotifyCollectionChanged)通知View狀態(tài)的改變。該部分主要涉及到應用程序的工作流程、任務、用戶操作、應用程序邏輯行為和應用程序運行控制。ViewModel不是控件的后臺控制代碼,它不涉及任何具體界面外觀并獨立于具體的界面實現(xiàn)[8]。
Model封裝了業(yè)務邏輯及數(shù)據(jù):業(yè)務邏輯實現(xiàn)了像檢索和數(shù)據(jù)管理相關(guān)程序中的邏輯,用來確保數(shù)據(jù)的一致性和有效性。
MVVM的核心思想是將界面設計與控制代碼設計相分離,便于程序分工設計,增強測試的方便性,容易管理維護以及進行擴展。
虛擬維修訓練系統(tǒng)平臺涉及的功能較多,在功能設計時需要逐個進行測試,測試成功后進行組合;而且系統(tǒng)平臺需要滿足易修改和易擴展的要求,界面設計與程序行為設計的分離有助于減輕維護和改善平臺時的工作量。因此采用MVVM框架對系統(tǒng)平臺進行設計非常合適。圖4所示為平臺中所使用的MVVM框架(圖中僅顯示了平臺程序相關(guān)類的主要屬性、方法和事件)。其中,View部分位于三維顯示層,ViewModel部分位于邏輯交互層,Model部分位于數(shù)據(jù)保持層。
圖4 系統(tǒng)平臺中的MVVM框架
從圖中可以看出,CircuitModel(Model)完全獨立于CircuitViewModel(ViewModel)和CircuitView(View),它通過實現(xiàn)INotifyPropertyChanged接口,把電路模型數(shù)據(jù)(包括三維模型數(shù)據(jù)、電路網(wǎng)表文件數(shù)據(jù)和電路節(jié)點特性數(shù)據(jù))的改變傳送到CircuitView,使得CircuitModel具備良好的獨立性,便于維護擴展。
CircuitViewModel通過命令調(diào)用CircuitModel中公開的方法完成數(shù)據(jù)操縱,它不包含CircuitView的引用,因此CircuitModel獨立于CircuitView,具備適應不同UI界面的特點。
CircuitView通過屬性綁定和事件綁定的方式,獲取數(shù)據(jù)和執(zhí)行程序,在CircuitView中建立CircuitViewModel事例并賦值給DataContext屬性,給CircuitView提供數(shù)據(jù)源,CircuitView具備單獨設計,以達到界面設計與控制代碼設計的分離的目的。
由以上的分析可以看出,平臺采用MVVM框架模式設計,具備良好的可維護性和可擴展性。
2.3基于NGSPICE的電路仿真內(nèi)核
SPICE(Simulation Program with Integrated Circuit Emphasis)是目前應用廣泛的電路仿真引擎,Pspice、Hspice、Multisim等的核心算法均來自于SPICE算法。NGSPICE為SPICE仿真器家族中的一員,它是SPICE3F5的升級改進版,提高了程序的穩(wěn)定性,且整合了XSPICE,可進行數(shù)模混合仿真[9]。同時,NGSPICE還具有以下特點:(1)由于它是開放的源碼,能夠嵌入編寫的程序中獨立運行,不依賴其他任何電路仿真軟件;(2)運行時占用的計算機資源較少,能夠滿足虛擬電路模型及電路故障模型的實時仿真計算;(3)仿真輸出結(jié)果以文檔的形式輸出,可以很方便地進行讀取顯示。
綜上,NGSPICE是三維電路級虛擬維修訓練平臺的理想電路仿真內(nèi)核。
文獻[10]基于SPICE仿真引擎,提出了利用VC語言編寫接口程序?qū)崿F(xiàn)電路仿真的方法。本文采用上述文獻中的思想進行了進一步的研究,在NGSPICE源代碼的基礎上進行了改寫,編譯生成了可供外部程序調(diào)用的動態(tài)鏈接庫,實現(xiàn)了在WPF平臺中調(diào)用NGSPICE對電路模型進行仿真的方法。動態(tài)連接庫的接口函數(shù)為callNGSPICE(char* commandString),入口參數(shù)為SPICE命令字符串,出口參數(shù)為電路節(jié)點特性。
圖7 系統(tǒng)平臺使用使用流程
圖5所示為平臺電路仿真層的系統(tǒng)結(jié)構(gòu)框圖。
圖5 系統(tǒng)平臺電路仿真層結(jié)構(gòu)圖
當需要進行電路模型或者電路故障模型的仿真時,SPICE命令字符串將發(fā)送給系統(tǒng)平臺電路仿真層,從數(shù)據(jù)保持層提取與待仿真電路模型相對應的網(wǎng)表文件(.CIR格式文件),通過調(diào)用NGSPICE動態(tài)鏈接庫進行電路仿真分析,進而解算出電路節(jié)點的特性,即節(jié)點的瞬時電壓和電流值。仿真后得到的數(shù)據(jù)將傳送給數(shù)據(jù)保持層,供其他模塊的使用,如萬用表和示波器。
裝備三維電路級虛擬維修訓練系統(tǒng)平臺是一個組合式的分層結(jié)構(gòu)系統(tǒng),主要包含4層結(jié)構(gòu)。同時,通過利用相應的關(guān)鍵技術(shù),各層有機地組合了起來,各層的具體功能也以高效便捷的方式得到了實現(xiàn)。最后,本文以某型高炮裝備的電路板為例,采用3DS Max 2012進行電路三維建模,實現(xiàn)了基于WPF的三維電路級虛擬維修訓練原型系統(tǒng)。系統(tǒng)平臺運行界面如圖6所示。平臺具有以下特點:(1)平臺可運行于絕大部分普通主流PC,對PC的硬件要求不高。同時,平臺具有良好的可維護性和可擴展性;(2)訓練過程中,信息可以以動畫、圖像、影像、文字和三維模型等多媒體手段進行展示,使用者可以通過鼠標和鍵盤或手寫筆、觸摸屏、數(shù)據(jù)手套等外接交互設備進行交互;(3)平臺中的可視化電路器件模型的參數(shù)和電氣連接特性與后臺描述電路模型的網(wǎng)表文件(.CIR格式文件)相對應,可以對電路模型進行實時電路仿真。
圖6 系統(tǒng)平臺界面
平臺的使用流程如下:首先,組織訓練的人員可以瀏覽三維電路板,通過使用鼠標右鍵點擊相應的器件三維模型來進行故障的設置(圖7(a)),例如短路、斷路和參數(shù)漂移,以此來進行維修任務的設定。然后,受訓者即可參與該型裝備的電路級虛擬維修訓練。進行維修訓練時,受訓者通過對電路進行實時的仿真,并使用萬用表和示波器測量某些關(guān)鍵的節(jié)點(圖7(b)),從而推斷出電路故障所在并更換器件(圖7(c)),完成裝備電路維修訓練任務。
三維電路級虛擬維修訓練系統(tǒng)平臺的研究和開發(fā),實現(xiàn)了裝備的電路級虛擬維修。通過內(nèi)嵌的電路仿真內(nèi)核,系統(tǒng)實現(xiàn)了后臺對電路模型的實時仿真,完成了真正意義上的電路級虛擬維修,彌補了傳統(tǒng)虛擬維修訓練系統(tǒng)只針對機械部件拆裝訓練的不足。同時,系統(tǒng)采用WPF平臺進行開發(fā),具有良好的三維呈現(xiàn)功能和交互性;采用MVVM框架模式設計,實現(xiàn)系統(tǒng)軟件設計的模塊化,降低了各模塊之間的耦合度,系統(tǒng)具備良好的可維護性和可擴展性。該系統(tǒng)平臺在減少電路維修訓練損失,節(jié)約經(jīng)費,縮短維修培訓周期,提高相關(guān)人員維修水平方面具有重要意義。
參考文獻:
[1]王文舉,李光耀.虛擬維修仿真技術(shù)的研究與進展[J].系統(tǒng)仿真學報,2011,23(9):1751-1757.
[2]焦玉民,張琦,屈宏偉.虛擬維修技術(shù)研究與展望[J].中國工程機械學報,2011,9(3):359-366.
[3]劉效森,吳迺陵,陳碩西.基于OpenGL下的固體物理模型交互式仿真[J].電子器件,2007,30(5):1926-1929.
[4]郭艷霞,侯彤璞,杜園園.基于DirectX的三維場景實體的拾取[J].遼寧石油化工大學學報,2009,29(3):77-80.
[5]Matthew MacDonald.Pro WPF in C# 2010:Windows Presentation Foundation in.NET 4[M].Apress,Inc.,2010:770-774.
[6]劉芳,劉賢梅.3DS文件讀取、繪制與控制方法的研究與應用[J].計算機工程與設計,2009,30(19):4575-4578.
[7]Josh Smith.WPF Apps with the Model-View-ViewModel Design Pattern[EB/OL].http://msdn.microsoft.com/en-us/magazine/dd419663.aspx.
[8]程國雄,胡世清.基于Silverlight的RIA系統(tǒng)架構(gòu)與設計模式研究[J].計算機工程與設計,2010,31(8):1706-1709.
[9]Paolo Nenzi,Holger Vogt.Ngspice Users Manual Version 24 Plus[EB/OL].http://sourceforge.net/projects/ngspice.
[10]郝永生,韓路杰,王廣龍,等.基于SPICE的電路仿真系統(tǒng)接口程序設計[J].計算機工程,2010,36(12):253-255.
冉躍龍(1988-),男,土家族,貴州鳳岡人,現(xiàn)為中國人民解放軍軍械工程學院在讀碩士研究生,主要研究方向為電路故障仿真和電路虛擬維修,ranyuelong@163.com;
閆英敏(1970-),女,漢族,河北南宮人,現(xiàn)工作于中國人民解放軍軍械工程學院電氣工程教研室,副教授,博士學位。主要研究方向為裝備綜合電氣系統(tǒng)檢測與故障診斷技術(shù),yanyinming00@163.com。
3DCircuit-LevelVirtualMaintenanceTrainingSystemPlatform
RANYuelong,YANYingmin*
(Department of Electrical Engineering,Ordnance Engineering College,Shijiazhuang 050051,China)
Abstract:For the fact that the current equipment virtual maintenance training systems are almost all cornered with the disassembly of mechanical components,the research on 3D circuit-level equipment virtual maintenance training platform based on WPF(Windows Presentation Foundation)is developed.The platform contains a structure of 4 layers,namely 3D display layer,logic interaction layer,data persistence layer and circuit simulation layer.Three key technologies in the design of the platform are studied.The structure of the platform is introduced and the model of the 3D circuit-level virtual maintenance training system is designed and developed.Circuit-level virtual maintenance has been achieved,which improves the function of virtual maintenance training system.
Key words:virtual maintenance;circuit simulation;hierarchical structure;MVVM;WPF;3D
doi:EEACC:721010.3969/j.issn.1005-9490.2014.04.029
中圖分類號:TP391.9
文獻標識碼:A
文章編號:1005-9490(2014)04-0718-05
收稿日期:2013-07-18修改日期:2013-08-15