蔡伟健

(中国直升机设计研究所,江西 景德镇333000)

0 引言

直升机飞行模拟训练设备(FSTD)包括飞行模拟机(FFS)、飞行训练器(FTD)和综合程序训练器(IPT)等。在飞行模拟训练设备的研制中,飞行仿真模型是其核心的组成部分,对模拟器的逼真度起到了关键作用。 在相关标准中,对模拟器的客观测试大部分也都是针对飞行仿真模型的,主要包括飞行性能和飞行品质两大部分。

目前国内外建立飞行仿真模型的方法基本上都是采用部件法分别建立旋翼、尾桨、机身、起落架等的部件模型,基于力学原理进行物理建模。 完成基础模型的构建后, 根据试飞数据和飞行员主观评估对模型进行参数调整,反复迭代,最终达到满足鉴定标准的相关要求。

国外已经有很多用于直升机飞行仿真模型开发的软 件 平 台, 包 括FLIGHTLAB[1]、GENHEL[2]、ARMCOP[3]等,在飞行力学模型、飞行控制系统、视景系统等方面都自成体系,甚至,有些直升机设计过程中所需完成的计算也可以通过这些软件平台来完成。 但所有的建模过程均需要在平台规定的范围内完成,可做的核心部分调整非常有限,这对于建立功能完善的飞行模拟训练设备来说是一个很大的障碍。

借助于MATLAB/Simulink 平台,使用直升机空气动力学、飞行力学、涡轮轴发动机、飞行控制技术等相关理论,也可以搭建直升机飞行动力学模型、发动机模型,飞控系统模型等。 其框图式的用户使用界面让所要开发模型的构建、修改、集成都变得很方便。 结合其RTW 工具,可以自动生成实时仿真代码,供仿真程序调用,与模拟器其他分系统进行实时通讯,非常适合模拟器的飞行仿真软件开发。

1 飞行仿真模型的构建

1.1 MAT LAB/Simulink 简介

MATLAB 是美国MathWorks 公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB 和Simulink 两大部分。 Simulink 是一个基于MATLAB 平台用来对动态系统进行建模、仿真和分析的面向结构图方式的仿真环境。[4]

用Simulink 所建立的模型,各个具体环节的动态细节一目了然, 而且能清晰的了解各部件和子系统间的信息交换,掌握各部分之间的交互影响。 系统建模方法为自上而下(Top-down)的设计流程,先确定系统的原理基础从而确定系统的功能,然后在Simulink 中使用相应的部件建立不同功能的子系统,从而构成整个仿真模型。

更为重要的是,在Simulink 中集成了很多专业领域仿真模型包, 其中就包括了AeroSpace Blockset, 它提供了很多在气动建模方面非常实用的模块,如六自由度运动方程、大气环境、飞行参数计算、常用单位转换等。

1.2 模型组成

飞行仿真模型根据飞行仿真过程中直升机的当前运动状态,以及飞行的操纵输入,利用特定的算法和直升机的基本数据,实时解算出旋翼、尾桨、机身、气动面以及起落架所产生的作用力, 使用六自由度运动方程,解算出直升机下一迭代步的飞行状态。

其框图组织形式如图1 所示:

图1 飞行仿真模型总体框图

模型每个仿真周期运行一次,解算出当前的状态,并用于下一步解算。 每个仿真周期的运行过程如下:

首先,接收外部输入的操纵量送给控制系统和发动机模块,结合上一帧大气环境模块输出的空速、姿态、角速度等信息,计算出主旋翼变距角、尾桨变距角以及发动机输出;然后,旋翼气动模块、尾桨气动模块、机身气动模块、起落架动力学模块接收飞控系统模块的变距角、姿态、角速度、空速、大气密度等数据后,解算全机所受到的外部力和力矩;最后,通过六自由度运动模块,计算出当前帧的位置、速度、加速度、姿态、角速度、角加速度等数据输出。

1.3 旋翼模型

旋翼模型包括气动力模型、诱导速度模型和挥舞动力学模型,其模型组织形式和对外数据交互如图2 所示。

旋翼气动力模型采用叶素理论,根据旋翼挥舞运动状态、变距角、桨盘处诱导速度等参数,计算叶素受力,并对整片桨叶进行积分得到合理。 具体计算公式及其推导过程在很多文献中都有描述,这里不做赘述[5][6]。

诱导速度模型采用滑溜理论计算,它给出了桨盘平面的等效诱导速度值, 虽然无法精确计算沿半径的诱导速度分布,但由于其计算过程耗时少,通过调参也可以达到比较准确的结果,适合作为训练模拟器的入流模型。

挥舞动力学模型采用准静态法[6],假设挥舞方程的解为一阶谐波加稳态项的形式, 带入方程后得到3 个代数方程,从而得到可用于气动计算的旋翼挥舞运动信息。

图2 旋翼模型框图

1.4 尾桨模型

尾桨的作用是抵抗旋翼反扭矩, 并控制直升机偏航操纵。 为简化尾桨气动力的计算,采用线性Bailey 模型[7],它是一个经验模型,只考虑尾桨的拉力分量,并与尾桨总距联系,而不涉及挥舞运动等参数。

1.5 机身模型

机身的空气动力计算非常复杂, 在工程上一般使用风洞试验数据,通过插值的方法得到不同迎角和侧滑角的气动力系数,再经过换算得到作用到直升机重心的气动力。

平尾和垂尾作为机身的一部分在包含在其中,如果使用的吹风数据包含这些气动面,则直接使用,如果不包含,或需要精确计算气动面的力,则可以单独建立平尾和垂尾的气动模型。 后者还有一个优势:可以将旋翼下洗流考虑在内,准确模拟过渡速度等飞行状态。

2 模型测试及代码生成

2.1 模型测试

完成飞行仿真模型的构建后,需要在Simulink 环境中对模型做一个初步验证。 包括三个方面。

一是单独模块测试,主要完成对各模块和子模块进行功能性测试。 通过给定值的输入或规律变化的曲线输入,查看一定时间内的模块输出结果,看是否满足该模块所需完成的功能。

二是采用数值输入的办法,通过MATLAB 脚本语言,给SIMULINK 框图输入数据,查看相应输出数据或中间计算所产生的状态参数变化曲线,进行模型或模块的测试。这种方法也是模型单独调试和修正的主要方式, 通过设置SIMULINK 模型的配置参数,使之可以从MATLAB 工作空间读入输入参数。 编写相应的脚本程序,使用合适的输入数据,观察各参数曲线变化,对模型进行相应修正。

三是使用VR Sink 工具, 结合驾驶杆的输入, 使用直观的方式,进行仿真模型的测试。 在基本完成模型的开发时, 有时仅适用曲线和数值的测试还不够直观,这时,可以使用VR Sink 模块所提供的功能,结合使用游戏杆操纵, 真正在电脑上 “飞行”, 完成简单的主观评估,如图3 所示。 虽然这个简单的视景所构建的模型不是直升机的,但能够粗略地体现飞行过程中姿态和位置的变化,对模型的修改和改进有很大帮助。

图3 可视化测试

2.2 代码生成

完成模型构建和初步的测试后,使用RTW 工具生成C/C++源代码。 在所生成的代码中,可以在外部使用的数据和函数都包含在头文件中,其中部分代码如图4下所示:

其中,HeliModel_P 结构中包含模型运行过程中所有的参数, 在调试过程中可以对其中的数据进行修改,也用于初始化数据的设置等。

HeliModel_U 结构中包含模型的所有输入数据,在调用模型运行函数前对其进行赋值。

HeliModel_Y 结构中包含模型的所有输出数据,在调用模型运行函数后从其中得到模型运算一步得到的结果。

HeliModel_initialize(void)函数用于模型代码初始化。HeliModel_step(int_T tid)函数用于外部代码调用,将模型代码进行一步迭代运算。

HeliModel_terminate(void) 函数用于终止模型解算。其他代码均为参与解算的部分,其计算结果与在SIMULINK 环境中的仿真结果相同,可以不用考虑。

图4 生成的接口代码

3 系统集成及客观测试

3.1 系统集成

直升机模拟器是一个复杂的系统,由不同的软件和硬件组成,包括视景系统、运动系统、教员台、操纵负荷、座舱设备、振动系统、飞行仿真、航电仿真、声音模拟等,各系统之间通过UDP 协议进行数据交互,实时运行。

以某型民用直升机模拟器的研制为背景,将上述方法开发的飞行仿真软件集成到模拟器中,作为飞行状态模拟的数据来源, 其逼真程度对飞行训练有重大影响,是评价训练设备是否达标的重要标准。 飞行仿真模型联入整个模拟器仅需要与主控软件进行数据通讯,在系统集成的过程中, 主要工作集中在对功能和性能的调试。经过反复迭代修正,参数调整,功能优化,完成仿真模型的最终确认。

3.2 客观测试

在模拟器教员台上使用测试软件按照CCAR-60部的相关要求对飞行仿真模型进行客观测试。

测试过程全自动完成,根据试飞数据的相关参数完成模拟器的驱动过程。 测试完成后,软件自动给出测试报告,同时绘制试飞数据曲线和模拟机上飞行曲线。下图为起飞过程的测试结果图:

图5 测试曲结果示例

4 结论

本文所描述的基于MATLAB/Simulink 进行直升机飞行仿真模型的构建方法,可以快速完成直升机模拟器的飞行仿真软件开发,不依赖国外专用软件,具备自主知识产权。 并在模拟器上得到验证,进行了相关的客观测试,证明了其有效性和先进性。