韓宏文,韓沛岑
(中國商飛上海飛機制造有限公司航研所,上海 200436)
飛機上電纜眾多,而且線路自身交聯程度十分復雜,每當遇到故障現場需要排故,相對于目前而言,主要是借助于紙版的原理圖、線束圖,還有各種Excel表格。即使是有經驗的工人師傅也得花費很長的時間去逐根分析每一根電纜中的各芯導線,而且會容易出錯。為了提高機載電纜完整性測試以及排故的工作效率,基于數據庫技術的電纜信息查詢與管理系統的研究將更具有實際應用價值[1]。本文研究的內容是在數據庫查詢的基礎上,基于C#和Silverlight,根據待測電纜的構型、連接器位置等信息,建立了可視化的仿真軟件。客戶端瀏覽器只要安裝了Silverlight插件就可以通過本仿真軟件,顯示故障電纜的所有的連接器,并通過點擊連接器可以顯示連接器順序以及連接器位置等等信息。
為了能夠無縫銜接到所開發的數據庫查詢系統中,系統采用B/S模式,用戶通過瀏覽器便可直接訪問。本軟件采用Microsoft Visual Studio 2010作為開發工具,它能很好的支持C#。并利用第三方軟件3DMax制作了連接頭的三維模型,通過Balder引擎將所做的模型加入工程[2]。
Silverlight是微軟最新的Web用戶界面技術,能夠跨瀏覽器、跨平臺運行,可以作為一個瀏覽器的插件,集成了多種Web技術和設備,可以顯示矢量圖形、動畫和視頻,給用戶全新的視覺體驗;也可以作為組件嵌入其它程序中運行,給程序設計帶來很大的方便[3]。本文所研究的內容就是作為機載電纜連接關系數據庫系統的一個組件,通過運行該組件就可以顯示相關故障電纜的所有信息。
初始的線纜連接關系的可視化仿真方案是建立真3D仿真,即將每一個連接器按照真實的位置關系置于立體的ARJ模型的機體中。后來經過深入的了解,現在所用的所有圖紙都是二維的平面圖紙,只能獲得每個連接器的連接關系,還有連接器所在飛機的某個位置的位置信息,所以結合課題進展進度以及必要性兩方面的因數,決定就以二維的ARJ的俯視平面圖代替了立體模型。
在所建工程中使用用戶控件,通過Image控件將ARJ21.JPG圖片加入工程,再加上可以顯示連接器信息的Label控件。
下一步就是將連接器模型加入工程,這里需要Balder引擎的幫助。Balder是一款開源的3D圖形引擎,它支持Silverlight、Windows、XNA和OpenGL。方法是將Balder引擎引用到項目中,它有兩個文件,Balder.dll和Ninject.dll。其中Balder.dll是主要的引擎框架和程序集,Ninject.dll是一個.net的輕量級開發框架,Balder使用了其中的一些方法,如圖1所示。

圖1 解決方案示意圖
使用using將Balder的程序引用增加到控件的代碼窗口中,其中Balder.Execution提供了主要的Game類,Balder.Lighting提供了燈光的有關命名空間,View是視圖,而Balder.Math提供了很多3D數學相關的類和方法,Balder.Objects.Geometries則包含了很多模型。
雖然Balder.Objects.Geometries提供了很多已有的模型,但主要的還是諸如立方體、圓柱體等,而比較復雜的模型如本工程用到的連接器模型以及將來可能用到的更加復雜的大型客機模型等都需要另用其他3D建模工具。
本工程中使用的連接器的模型是使用3DMax制作的,參考某連接器的大致外觀制作的模型如圖2所示,將其導出為ASE文件格式。然后將該文件加入工程,并將該文件的編譯方式設置為Resource即資源方式[4]。

圖2 連接器模型
為了增加所繪制的連接器的視覺效果,將每一個所繪制的連接器的位置增加一個閃爍的動畫效果。在定義為Star的用戶控件中 兩個一模一樣的矩形框,這兩個矩形框是通過CompositeTransform復合變形和漸變得到一個中心白色,外層漸變透明的小圓圈。控制其中一個矩形框小圓圈的直徑沿X、Y方向在一秒內從0.3倍變到6倍,而另一個矩形框的小圓圈直徑則沿相同方向由6倍變到0.3倍,這樣就得到一個閃動的點。主要Xaml代碼如下:
……
……
閃動動畫效果如下:

圖3 閃動效果示意圖
系統工作流程為,現場導通測試發現某一根電纜有故障,則將電纜兩端地址輸入數據庫,通過查詢便能顯示該故障電纜途經連接器的順序以及連接器的位置,同時將搜索到的所有連接器的定義的坐標賦給本軟件中定義的連接器的位置坐標變量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);
……
點擊所加入工程的連接器模型就可以顯示連接器的信息,主要代碼如下:
……
Connector.MouseLeftButtonDown += new Balder.Input.MouseButtonEventHandler(Connector_MouseLeftButtonDown);
……
最終仿真效果如圖4所示,通過鼠標點擊每一個連接器就可以在左上角的框中顯示其信息。

圖4 仿真結果示意圖
由故障電纜的兩端地址就可以直接將故障電纜的所有連接器都顯示出來,并且點擊每一個顯示的連接器就可以獲得其所屬信息,大大方便了對交聯電纜的查詢工作,提高了工作效率。
本論文結合實際工作中遇到的問題,在數據庫查詢的基礎上,基于C#和Silverlight建立了電纜可視化的仿真軟件。在以后的工作中,針對不同的飛機型號實際情況,可以開發真三維的仿真軟件,真正實現線纜在機體內的可視化仿真效果。
[1]畢大園,李秋艷,敖凱軍.飛機電纜連接關系數據庫的設計與實現[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.