李玉忍,魏寒冰,薛 晶
飞机刹车系统直接影响飞机的着陆安全,目前,飞机刹车半物理仿真的飞行过程和运动状态,大多是通过数据来显示的,该方式不易实时观察和分析。20世纪90年代以来,仿真可视化技术逐渐被人们所认知,由 MultiGen-Paradigm公司开发的高性能视景驱动软件平台Vega是一套完整的用于开发交互式、实时可视化仿真应用软件的平台和工具集。其在远程导弹、运载火箭、人造卫星等各类航天器的视景仿真中得以广泛应用。而将视景仿真系统应用到飞机刹车系统中是一种新的尝试。[1]
本文通过MATLAB建立飞机电动静液防滑刹车系统数学仿真模型,利用三维建模工具Creator创建飞机、机轮及跑道模型,借助视景仿真软件Vega进行场景管理,将虚拟和系统仿真技术结合在一起,提高了仿真的直观性和可信度。利用可视化的应用程序(Visual C++)编写基于 MFC的Vega应用程序,建立了飞机防滑刹车视景仿真系统,设计实现了MATLAB仿真数据对Vega中仿真模型的实时连接与控制。
鉴于Vega函数是用C++语言编写以及在Windows平台上进行开发,所以选择了Visual C++编译器作为开发工具。Visual C++中的MFC类库已是相当成熟的类库,包含强大的基于 Windows的应用框架,提供了丰富的窗口和事件管理函数。
该飞机刹车仿真系统利用MATLAB的强大计算能力作为后台进行实时计算,可视化软件Vega作为前台支撑,通过 C++接口来实现前后平台间的数据实时传输,综合了MATLAB、C++、Vega三种软件的优点,实现了飞机刹车可视化仿真。三种软件的结构关系如图1所示。
图1 MATLAB、C++、Vega结构图
控制飞机刹车的过程是:机轮速度和刹车压力经过速度传感器和压力传感器输入到刹车控制盒,将产生相应的信号输入到EHA(Electrical Hydrostatic Actuator)控制器,再由EHA控制器产生相应控制信号控制EHA作动器输出相应的刹车压力到刹车装置,产生刹车力矩。这样通过飞机电动静液刹车系统,就构成了以机轮速度和刹车压力为反馈量的双闭环控制系统。如图2所示:
图2 刹车控制系统原理图
由牛顿第二定律和转动定律可得出飞机动力学方程:
方程组(1)中 f1=μ1N1,f2=μ2N2,μ1和μ2分别为主、前轮的地面结合系数;M为飞机着陆时的质量;G为飞机着陆时的重量;VX为飞机纵向滑跑速度;VY为飞机垂直方向速度;θ为飞机俯仰角;I为飞机机体转动惯量;ht为发动机推力线距飞机水平轴下移距离;hs为阻力伞悬挂点距飞机水平轴上移距离;H为飞机重心距地面高度;a为主轮中心到飞机重心的水平距离;b为前轮中心到飞机重心的水平距离。
前两个方程是飞机纵向和垂直方向上运用牛顿运动定律得到的,其中风阻力、阻力伞阻力、主轮和前轮的地面结合力共同构成了飞机纵向的制动力;第三个方程是由转动定律得到的。将飞机纵向、垂直方向上的速度转化为地面坐标系下的速度得到方程组(2):
根据飞机三自由度的综合受力情况,在SIMULINK环境下,建立飞机机体动力学模型,由飞机机体综合受力模型和飞机机体运动模型(图 3、4)组成。模型中,飞机滑跑速度即作为模型输入变量,又作为模型输出变量。飞机机体综合受力模型中,飞机动力计算时所要参数按照下列公式计算:
公式中,V:飞机滑跑速度;T0:发动机剩余推力;KV:发动机剩余推力速度系数;J:飞机着陆时机场的空气密度;CX:飞机滑跑的阻力系数;CXS:阻力伞阻力系数;CY:飞机滑跑时的升力系数;S:飞机滑跑时的迎风面积;SY:飞机升力有效面积;SS:阻力伞面积。
图3 飞机机体综合受力模型
图4 飞机机体运动模型
飞机机体模型的输入变量有:飞机滑跑速度,前轮、主轮的支撑力、结合力,飞机中心高度和俯仰角。这些变量经过飞机综合受力模型,输出的变量有:飞机水平力、垂直方向力和俯仰角力矩。这3个变量作为飞机机体运动模型的输入变量,经过计算后输出飞机滑跑速度、滑跑距离、飞机重心高度、俯仰角以及重心高度变化率、俯仰角变化率和俯仰角加速度。其中,滑跑速度、重心高度以及俯仰角,又作为飞机机体运动模型的输入变量。
Multigen Creator 系列软件是Multigen -Paradigm公司专门针对可视化仿真行业应用特点推出的实时可视化三维建模软件系统,它是一个建立分层可视化的数据库的工具,使用户工作在所见即所得的三维实时的环境中。
在建立飞机模型时,需要保证飞机动态件与静态件之间、动态件与动态件之间的相互独立。给每个动态件建立独立的三维模型,这样在需要操纵动态件时,不会影响到静态件,而动态件之间也可以互不干涉。用Creator软件建立飞机、机轮以及跑道的三维模型时,尽量用少的面模拟各个子实体。模型建立越复杂,三角形和多边形越多,刷新的实时性就越差。但是面太少,仿真模拟的逼真效果就差,这就有个权衡的问题。
三维实体模型的创建是进行视景仿真的重要步骤之一。本文创建的三维模型中,主要包括飞机机体、起落架、机轮以及一些地景等。起落架和机轮部分是刻画的重点,分别加入了DOF(Degree of Freedom)节点。模型创建好之后,必须在Lynx加载,进行设置,如窗口、通道、观察者、环境等,之后生成ADF文件(myplanelanding.adf),它是仿真应用的初级配置,这些配置可以在仿真过程中得到改变。
在MATLAB/SIMULINK环境下,对整个飞机电动静液防滑、刹车系统的刹车过程进行了仿真研究。将飞机位姿的仿真结果保存在.mat文件[3],并通过C++开发的接口程序将数据传递到Vega,驱动由Creator建立飞机的三维仿真模型。同时MATLAB进行飞机机轮模型在降落以及着陆时各个作用力下的数学仿真计算,并将计算结果通过C++接口传递给Vega驱动程序,控制飞机刹车时机轮仿真几何模型的参数,从而实现飞机刹车时的视觉仿真效果。
MAT文件格式,是MATLAB专用的数据存储标准格式,它提供了一种简便的机制,允许在两个不同的平台或者不同的应用程序之间,以灵活的方式共享数据。MATLAB给出了一系列MATLAB API来完成MAT文件的读取与存储。在Windows系统下,与MAT文件有关的文件,需要包含的头文件主要有 matrix.h和 mat.h。库文件和平台有关,在Windows系统下,库文件有libmat.lib和libmx.lib。
Vega本质上是与图形硬件无关的开发高级视景仿真应用的软件,Vega API包含了大量用C语言编写的应用程序接口函数,可以通过这些函数,高效对虚拟场景进行实时交互控制。在程序设计过程中,必需在VC++编译器的工具选项下,正确添加Vega的头文件与库文件路径,同时也要将所需的静态库文件添加到工程中,在程序中要加入 vg.h等相关的头文件[4]。值得注意的是,C++中需要用mxGetPr函数才能将 mxArray格式的数据转变为 C++本身可以读取的数据,从而将MATLAB的数据在C++中进行处理运算,最终通过Vega的接口函数实现视觉仿真过程,程序中所涉及到接口的头文件与主要函数见表1。
表1 接口头文件与主要函数
本文将Vega、MATLAB、VC++相结合,实现飞机刹车视觉仿真系统,弥补了MATLAB与VC++进行仿真的不足。将MATLAB输出变量保存为.mat文件,由VC读取并存储在内存中,减少硬盘读写次数,提高仿真程序的效率。然后读取内存中的变量数据,将VC中控制飞机姿态的各自由度变量,传给Vega中的飞机模型,控制飞机每一路径控制点的位姿。下段代码表示如何在VC中读取一个.mat文件:
下段代码表示添加控制点到飞机的路径控制文件,创建路径,实现对vega中飞机的实时控制。轮胎的路径控制还要插入DOF节点的转动,通过控制Navigator导航的速度,控制飞机机体和机轮的滑跑速度。
为了使飞机自动飞行,实时读取飞机位姿并显示,在程序中还使用了时钟。把时钟相应的时间间隔设置为飞行轨迹数据中各采样点之间的时间间隔,这样可以实时反映飞机的降落过程。因此,飞机轨迹读取程序的采样时间间隔不能太小,当然也不能太长。
在视景仿真中,机轮是刻画的重点,创建机轮三维模型时添加DOF节点,从而可以控制机轮在其局部坐标系下的旋转。下段代码表示,通过VC接口将MATLAB仿真中对机轮角速度的控制输出量,传递给机轮模型,通过改变机轮的h值,控制机轮转速:
视景仿真的过程是从飞机准备着陆,机轮速度达到最大着陆速度、飞机以正常着陆重量着陆且前轮着地到刹停飞机结束。在刹车滑跑阶段,飞机速度减小,升力减小,作用于机轮的载荷缓慢增加,地面与轮胎的结合力矩逐渐增大,缓冲器的压缩量、起落架的支撑力也逐渐增大。由于防滑刹车装置的作用,飞机在滑跑时做一俯一仰的运动。刹车过程中的飞机姿态数据全部由 MATLAB数学模型仿真生成,输出.mat文件中的数据通过Vega API接口函数传递给飞机模型,按照仿真结果实时显示飞机姿态。
其他实现功能有全屏显示、飞机纹理显示、环境参数的实时控制等。由于篇幅所限,只给出MATLAB仿真结果中飞机与机轮速度波形仿真结果,如图5。
图5 飞机与机轮速度(m/s)
从视景仿真效果看出:采用EHA作动器刹车效果明显,仿真结果与实际刹车基本一致,尤其在低速阶段,证明所建系统模型正确有效。图6是飞机着陆,主机轮着地开始刹车时的视景仿真模型,MFC框架下的Vega仿真飞机模型,能够按照指定数据飞行着陆,并直观准确的显示了刹车各个时刻飞机的实时位姿。MATLAB与Vega相结合,充分利用各自的优势,形成了良好的视觉仿真效果,对于了解飞机着陆各个时刻姿态和刹车性能有很好的作用。
为了解决在基于MFC框架程序中调用位置函数对模型直接定位时,物体从场景中消失的现象,本文通过为物体附
图6 飞机着陆开始刹车时的视景模型
加Vega提供的Player类对象,并调用vgUpdate()函数,强制更新当前实例,达到了较好的效果。另外,用函数调用方式在程序中引进模型时。会出现内存大量被占用或者模型无法正确加载到场景中的现象。在需要引入大规模场景的情况下,用这种方式引入模型是不经济的,解决方法是在工程定义文件(.adf文件)中预先引进所有模型。但不要直接加入到场景中,而要在程序中根据需要对模型选择后再加入场景。最后利用Vega线程句柄强制结束线程,达到快速退出应用程序的目的。
通过以上问题的提出和解决,MFC下的Vega应用程序基本上能够稳定运行
通过仿真的方法,实现飞机实体模型在刹车过程中的运动视觉效果,使刹车过程可视化,对研究飞机刹车控制具有重要作用。在视觉仿真系统实现过程中,Vega可利用其API函数的调用来执行对场景的控制,即利用VC++程序,通过接口函数,对场景进行实时的控制,利用 VC++可以读取MATLAB变量生成的.mat文件数据,Vega也可以与VC++进行连接的方法,将Vega、MATLAB、VC++相结合,构成视觉仿真系统,实现飞机刹车过程的动态视景,从而可以弥补MATLAB与VC++进行仿真的不足。
[1]徐冬苓.飞机刹车系统的建模与地面结合系数的研究[D].西安:西北工业大学硕士论文,2005.
[2]袁朝辉,王卉,张明辉,张谦.基于 PC机的飞机刹车虚拟视景实现[J].微型电脑应用,2006,22(7):38-40.
[3]高成.Matlab接口技术与应用[M].北京:国防工业出版社,2007.
[4]Yang Weijia,Li Chenggui.Implementation of Flight Simulation System with Vega [J].CADDM,2007,17(1):50-53.
[5]王乘.Vega实时三维视景仿真技术[M].武昌:华中科技大学出版社,2005.