基于Silverlight对飞机电缆连接关系的仿真研究
2015-07-07韩宏文韩沛岑
韩宏文,韩沛岑
(中国商飞上海飞机制造有限公司航研所,上海 200436)
0 引言
飞机上电缆众多,而且线路自身交联程度十分复杂,每当遇到故障现场需要排故,相对于目前而言,主要是借助于纸版的原理图、线束图,还有各种Excel表格。即使是有经验的工人师傅也得花费很长的时间去逐根分析每一根电缆中的各芯导线,而且会容易出错。为了提高机载电缆完整性测试以及排故的工作效率,基于数据库技术的电缆信息查询与管理系统的研究将更具有实际应用价值[1]。本文研究的内容是在数据库查询的基础上,基于C#和Silverlight,根据待测电缆的构型、连接器位置等信息,建立了可视化的仿真软件。客户端浏览器只要安装了Silverlight插件就可以通过本仿真软件,显示故障电缆的所有的连接器,并通过点击连接器可以显示连接器顺序以及连接器位置等等信息。
1 开发环境
为了能够无缝衔接到所开发的数据库查询系统中,系统采用B/S模式,用户通过浏览器便可直接访问。本软件采用Microsoft Visual Studio 2010作为开发工具,它能很好的支持C#。并利用第三方软件3DMax制作了连接头的三维模型,通过Balder引擎将所做的模型加入工程[2]。
Silverlight是微软最新的Web用户界面技术,能够跨浏览器、跨平台运行,可以作为一个浏览器的插件,集成了多种Web技术和设备,可以显示矢量图形、动画和视频,给用户全新的视觉体验;也可以作为组件嵌入其它程序中运行,给程序设计带来很大的方便[3]。本文所研究的内容就是作为机载电缆连接关系数据库系统的一个组件,通过运行该组件就可以显示相关故障电缆的所有信息。
2 系统设计与实现
初始的线缆连接关系的可视化仿真方案是建立真3D仿真,即将每一个连接器按照真实的位置关系置于立体的ARJ模型的机体中。后来经过深入的了解,现在所用的所有图纸都是二维的平面图纸,只能获得每个连接器的连接关系,还有连接器所在飞机的某个位置的位置信息,所以结合课题进展进度以及必要性两方面的因数,决定就以二维的ARJ的俯视平面图代替了立体模型。
2.1 系统实现关键技术
在所建工程中使用用户控件,通过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);
……
2.2 系统实现结果
最终仿真效果如图4所示,通过鼠标点击每一个连接器就可以在左上角的框中显示其信息。
图4 仿真结果示意图
由故障电缆的两端地址就可以直接将故障电缆的所有连接器都显示出来,并且点击每一个显示的连接器就可以获得其所属信息,大大方便了对交联电缆的查询工作,提高了工作效率。
3 结束语
本论文结合实际工作中遇到的问题,在数据库查询的基础上,基于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.