《飞机虚拟仪表建模拟真研究.docx》由会员分享,可在线阅读,更多相关《飞机虚拟仪表建模拟真研究.docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、飞机虚拟仪表建模拟真研究(飞机设计杂志)2014年第三期1软件构造本课题研发的通用虚拟仪表设计/仿真系统基于如图1所示的构造设计思路。面板界面为用户与虚拟仪表系统的人机接口,提供接受输入、做出响应并显示结果的功能,用户能够通过点击响应的开关、按钮等进行人机交互的输入操作,仪外表板接受用户的输入操作,对输入操作向控制和响应模块进行数据传输,并接受控制和响应模块的响应反应。在用户界面的显示仪表上做出相应显示,如指针转动、数字数据变化、飞行姿态变化等。该模块对于用户体验有着重要意义,必须做到逼真度高,才能到达系统的沉浸性的要求。数据库模块有两方面功能。一方面,接受来自外部数据源的导入和仪表设计人员对
2、数据库的直接可视化修改。数据源来自文献资料、飞行器制造商手册、航空公司、机场、空管局等的来源。另一方面,接受控制和响应模块的查询,并反应出响应的数据信息。数据库的完善程度和准确性对于虚拟仪表系统的准确性和功能覆盖率有着重要意义。所以建立完善、准确的数据库是虚拟仪表设计系统必需要做的工作。控制和响应模块是虚拟仪表系统的核心部分,接收来自面板界面的消息响应,根据该消息向数据库模块发出查询命令,接收来自数据的返回数据,再向面板界面发出数据显示命令,控制面板界面的显示状态。控制和响应模块影响到虚拟仪表系统的系统性能,控制和查询算法的准确性和先进性直接影响到虚拟仪表系统的准确性和运行速度。所以建立准确并
3、采用先进算法的控制和响应模块也是虚拟仪表设计系统的关键部分。COM组件封装是虚拟仪表系统通用性和可移植性的保证。采用通用、跨平台的封装方式,使得虚拟仪表系统能够被多语言、多平台的软件调用,而且模块化设计的思路也为后续的升级、修改提供了便利。本通用虚拟仪表设计软件基于VC+MFC单文档,可视化创立仪外表板系统,可视化编辑仪表之间逻辑和函数关系,可视化修改仪表细节,可视化修改数据库,最后进行DLL模块封装,能够跨平台调用。2设计思路2.1静态元件制作部分为了保证仪外表板的逼真性,本课题在构建仪外表板上静态元件的时候采用真实照片,然后通过图片处理软件使静态元件的固定部分和拨动部分分离,再重新组合,在
4、仿真控制的时候进行调用加载。采用图层分层的方法6,构造图如图3所示。图4为一个静态元件由表盘和旋钮组成,先将表盘和旋转部分分离,再改变旋钮位置,指向不同的指示状态,使用图像处理软件进行处理,将各图保存成BMP格式,以保证在放大和缩小时不影响显示质量。2.2仪表的状态位设定通过纹理制作之后的表盘图片在虚拟仪表设计软件中加载,然后在表盘选取各个仪表单元进行单独定义,弹出信息录入界面进行各仪表单元的信息录入,包括名称、仪表类型、仪表位置、档位个数、逻辑上层元件、需要载入的该仪表纹理图片途径等。在定义完各个仪表单元之后定义各个仪表单元的状态位,包括状态位名称、对应该状态位的图片等。软件界面如图5所示。
5、2.3仪表逻辑的可视化编辑仪表元件之间逻辑关系的设定,是创立虚拟仪表系统的重要组成部分。在定义完各个仪表及状态位后,将数据库中的仪表元件及状态位信息整合,在可视化逻辑编辑界面图6进行显示,采用所见即所得的方法,仪表元件在逻辑树中能够动态拖曳,元件之间的函数关系能够自由设定,仪表单元之间的逻辑关系随着逻辑树中逻辑的变化自动生成,同时可以以查看各器件的具体信息、器件之间已设定的函数关系等。2.4动态显示仪表的多线程创立进程是计算机中已运行程序的实体,进程本身不会运行,是线程的容器。每个进程皆能够同步循序或不同步平行的方式独立运行。由于线程是操作系统能够进行运算调度的最小单位,被包容在进程之中,是进
6、程中的实际运作单位。本文在动态显示仪表的创立上选择多线程技术,考虑如下两方面:首先,每个进程需要占用很大的系统资源,而且进程之间分享资源、通信等也会增大系统开销,而线程能够分享同进程的内存等资源,通信也更为方便;其次,存在多个动态显示仪表需要同时响应的情况,把它们放在同一个进程里面,用不同线程创立能够采用分时的办法,加快响应速度,增加刷新频率。在飞机仪外表板上,通常会有多个仪表同时变化的情况,为了能够准确模拟这种情况,本文采用多线程技术进行虚拟航空仪表动态模拟。若按以往方法,采用单线程既增加了系统负担,又不能同时响应,不能实时模拟飞机当前状况;采用多线程既减小了系统负担,又能同时对当前状况做出
7、响应。在虚拟航空仪表建模与仿真经过中,涉及的显示仪表主要有指针表、数字表和飞行姿态表等,仪表单元模块的构造如图7所示。仿真进程中的主线程为面板响应程序,该程序基于Windows窗体框架,而虚拟显示仪外表板则作为辅线程被调用。该进程中的各线程通过线程间互相通信机制实现交互通信11,由面板响应程序完成该面板变量在各种状态下的仿真与交互。整个仿真系统的设计包含开发面板响应程序、设计虚拟显示仪表以及配置编译环境、设计和集成多线程等几个主要经过。2.4.1设计单线程虚拟显示仪外表板按照上一节中提到的设计经过,遵循设计与实际需求分析结果保持一致的原则,进行面板响应程序的设计,这是构造整套仿真系统的重要步骤
8、。详细讲来,就是要确保创立的虚拟显示仪外表板与实际设备的外观一致、功能一致,并且对虚拟仪外表板的电表操作、按键操作等功能反复进行试验,直至仿真效果知足实际需求。2.4.2实现控制函数和启动线程添加仪表响应函数主线程中虚拟面板程序经过如下:1添加线程控制函数控制函数定义线程。输入此函数后,线程开场,此函数退出时线程终止。2创立辅助线程通过AfxBeginThread创立CWinThread线程,并通过AfxBeginThread的参数传递来进行初始化。示例代码如下:3主辅线程间通信与辅线程间同步这里要解决主辅线程间通信与辅线程间同步的问题。由于辅线程中的虚拟显示仪表只是用作显示用,只存在主线程对
9、辅线程消息,辅线程对主线程没有消息12,因而能够采取全局变量和全局函数的方法,在主线程响应函数中,改变全局变量或全局函数的值即可改变辅线程中虚拟显示仪表的显示状态。由于存在主线程同时调用两个及以上辅线程的情况,线程有可能和其他线程分享一些资源,如内存,文件,数据库等。当多个线程同时读写同一份分享资源的时候,可能会引起冲突,所以对临界资源的访问应当采取互斥的机制。4在主线程中定义线程消息响应代码添加ON_THREAD_MESSAGE消息响应,详细经过分为两步:将消息响应函数在CWinApp的头文件里声明VoidOnThreadMsgPitchWPARAM,LPARAM;在对应的代码文件里添加对线
10、程消息响应的代码。3封装与3.1封装形式虚拟航空仪表系统设计和仿真完成后,使用DLL形式进行封装,主要有下面优点:能够提高重用性,能够在不同的仿真系统中调用同一套座舱仪表系统,只要它们与座舱仪表一致即可;提高移植性,方便以后座舱仪表系统的升级,只要重新加载封装好新座舱仪表系统的DLL,即可完成该仿真系统中仪表系统的更新和升级维护,见图8。3.2软件接口函数及功能在本文中,为了方便虚拟维修平台加载虚拟仪表系统后,能够很方便地调用该系统,提供多种多样的接口函数,在虚拟维修平台中使用这些接口函数能够对虚拟仪表系统进行访问、控制,能够根据不同的故障状况控制仪表系统显示相对应的仪表状态。本文出于模块化、封装性的考虑,设计了主要接口函数。在波音737飞机虚拟维修平台中的仿真结果如图10所示。4仿真效果在该虚拟仪表设计/仿真软件中进行的仿真测试结果如下,图9为空调仪表部分在仿真软件的仿真效果。5结论本文提出了一种低成本飞机虚拟仪表系统的通用建模方法。该方法注重通用性和可移植性,采用面向对象的设计思想,基于MFC完成仪表系统的设计与封装,并以COM组件的形式成功应用于仿真、测试等工程中。本文所提出的方法性能良好、设计周期短、代码重用率高、开发成本低、通用性强,设计者可根据本身情况选用多种集成开发环境,其设计思想亦可沿用至Linux、嵌入式系统等其它操作系统,具有一定实用价值。