韓宏文,韓沛岑
(中國商飛上海飛機(jī)制造有限公司航研所,上海 200436)
飛機(jī)上電纜眾多,而且線路自身交聯(lián)程度十分復(fù)雜,每當(dāng)遇到故障現(xiàn)場(chǎng)需要排故,相對(duì)于目前而言,主要是借助于紙版的原理圖、線束圖,還有各種Excel表格。即使是有經(jīng)驗(yàn)的工人師傅也得花費(fèi)很長的時(shí)間去逐根分析每一根電纜中的各芯導(dǎo)線,而且會(huì)容易出錯(cuò)。為了提高機(jī)載電纜完整性測(cè)試以及排故的工作效率,基于數(shù)據(jù)庫技術(shù)的電纜信息查詢與管理系統(tǒng)的研究將更具有實(shí)際應(yīng)用價(jià)值[1]。本文研究的內(nèi)容是在數(shù)據(jù)庫查詢的基礎(chǔ)上,基于C#和Silverlight,根據(jù)待測(cè)電纜的構(gòu)型、連接器位置等信息,建立了可視化的仿真軟件??蛻舳藶g覽器只要安裝了Silverlight插件就可以通過本仿真軟件,顯示故障電纜的所有的連接器,并通過點(diǎn)擊連接器可以顯示連接器順序以及連接器位置等等信息。
為了能夠無縫銜接到所開發(fā)的數(shù)據(jù)庫查詢系統(tǒng)中,系統(tǒng)采用B/S模式,用戶通過瀏覽器便可直接訪問。本軟件采用Microsoft Visual Studio 2010作為開發(fā)工具,它能很好的支持C#。并利用第三方軟件3DMax制作了連接頭的三維模型,通過Balder引擎將所做的模型加入工程[2]。
Silverlight是微軟最新的Web用戶界面技術(shù),能夠跨瀏覽器、跨平臺(tái)運(yùn)行,可以作為一個(gè)瀏覽器的插件,集成了多種Web技術(shù)和設(shè)備,可以顯示矢量圖形、動(dòng)畫和視頻,給用戶全新的視覺體驗(yàn);也可以作為組件嵌入其它程序中運(yùn)行,給程序設(shè)計(jì)帶來很大的方便[3]。本文所研究的內(nèi)容就是作為機(jī)載電纜連接關(guān)系數(shù)據(jù)庫系統(tǒng)的一個(gè)組件,通過運(yùn)行該組件就可以顯示相關(guān)故障電纜的所有信息。
初始的線纜連接關(guān)系的可視化仿真方案是建立真3D仿真,即將每一個(gè)連接器按照真實(shí)的位置關(guān)系置于立體的ARJ模型的機(jī)體中。后來經(jīng)過深入的了解,現(xiàn)在所用的所有圖紙都是二維的平面圖紙,只能獲得每個(gè)連接器的連接關(guān)系,還有連接器所在飛機(jī)的某個(gè)位置的位置信息,所以結(jié)合課題進(jìn)展進(jìn)度以及必要性兩方面的因數(shù),決定就以二維的ARJ的俯視平面圖代替了立體模型。
在所建工程中使用用戶控件,通過Image控件將ARJ21.JPG圖片加入工程,再加上可以顯示連接器信息的Label控件。
下一步就是將連接器模型加入工程,這里需要Balder引擎的幫助。Balder是一款開源的3D圖形引擎,它支持Silverlight、Windows、XNA和OpenGL。方法是將Balder引擎引用到項(xiàng)目中,它有兩個(gè)文件,Balder.dll和Ninject.dll。其中Balder.dll是主要的引擎框架和程序集,Ninject.dll是一個(gè).net的輕量級(jí)開發(fā)框架,Balder使用了其中的一些方法,如圖1所示。
圖1 解決方案示意圖
使用using將Balder的程序引用增加到控件的代碼窗口中,其中Balder.Execution提供了主要的Game類,Balder.Lighting提供了燈光的有關(guān)命名空間,View是視圖,而Balder.Math提供了很多3D數(shù)學(xué)相關(guān)的類和方法,Balder.Objects.Geometries則包含了很多模型。
雖然Balder.Objects.Geometries提供了很多已有的模型,但主要的還是諸如立方體、圓柱體等,而比較復(fù)雜的模型如本工程用到的連接器模型以及將來可能用到的更加復(fù)雜的大型客機(jī)模型等都需要另用其他3D建模工具。
本工程中使用的連接器的模型是使用3DMax制作的,參考某連接器的大致外觀制作的模型如圖2所示,將其導(dǎo)出為ASE文件格式。然后將該文件加入工程,并將該文件的編譯方式設(shè)置為Resource即資源方式[4]。
圖2 連接器模型
為了增加所繪制的連接器的視覺效果,將每一個(gè)所繪制的連接器的位置增加一個(gè)閃爍的動(dòng)畫效果。在定義為Star的用戶控件中 兩個(gè)一模一樣的矩形框,這兩個(gè)矩形框是通過CompositeTransform復(fù)合變形和漸變得到一個(gè)中心白色,外層漸變透明的小圓圈??刂破渲幸粋€(gè)矩形框小圓圈的直徑沿X、Y方向在一秒內(nèi)從0.3倍變到6倍,而另一個(gè)矩形框的小圓圈直徑則沿相同方向由6倍變到0.3倍,這樣就得到一個(gè)閃動(dòng)的點(diǎn)。主要Xaml代碼如下:
……
……
閃動(dòng)動(dòng)畫效果如下:
圖3 閃動(dòng)效果示意圖
系統(tǒng)工作流程為,現(xiàn)場(chǎng)導(dǎo)通測(cè)試發(fā)現(xiàn)某一根電纜有故障,則將電纜兩端地址輸入數(shù)據(jù)庫,通過查詢便能顯示該故障電纜途經(jīng)連接器的順序以及連接器的位置,同時(shí)將搜索到的所有連接器的定義的坐標(biāo)賦給本軟件中定義的連接器的位置坐標(biāo)變量Coordinate(double x, double y, double z),然后將所有搜索到的連接器繪制出來。
……
Mesh Connector = new Mesh();
Connector.Position = new Coordinate(double x, double y, double z);
Connector.AssetName = new Uri("/feijishiyan1;component/Res/Connector.ase", UriKind.Relative);
……
點(diǎn)擊所加入工程的連接器模型就可以顯示連接器的信息,主要代碼如下:
……
Connector.MouseLeftButtonDown += new Balder.Input.MouseButtonEventHandler(Connector_MouseLeftButtonDown);
……
最終仿真效果如圖4所示,通過鼠標(biāo)點(diǎn)擊每一個(gè)連接器就可以在左上角的框中顯示其信息。
圖4 仿真結(jié)果示意圖
由故障電纜的兩端地址就可以直接將故障電纜的所有連接器都顯示出來,并且點(diǎn)擊每一個(gè)顯示的連接器就可以獲得其所屬信息,大大方便了對(duì)交聯(lián)電纜的查詢工作,提高了工作效率。
本論文結(jié)合實(shí)際工作中遇到的問題,在數(shù)據(jù)庫查詢的基礎(chǔ)上,基于C#和Silverlight建立了電纜可視化的仿真軟件。在以后的工作中,針對(duì)不同的飛機(jī)型號(hào)實(shí)際情況,可以開發(fā)真三維的仿真軟件,真正實(shí)現(xiàn)線纜在機(jī)體內(nèi)的可視化仿真效果。
[1]畢大園,李秋艷,敖凱軍.飛機(jī)電纜連接關(guān)系數(shù)據(jù)庫的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì).2006.
[2]http://balder.codeplex.
[3]Matthew MacDonald.Pro Silverlight4 in C#[M].APress.2010.
[4]http://www.cnblogs.com/vimsk/archive/2011/01/19/1939552.html.