APP下载

基于XML的飞行仿真气动力模型存储格式

2020-12-01宋宏川詹浩魏中成任浩雷夏露

航空学报 2020年9期
关键词:气动力数据表气动

宋宏川,詹浩,魏中成,任浩雷,夏露

1. 西北工业大学 航空学院,西安 710072 2. 中国航空工业集团公司成都飞机设计研究所,成都 610091 3. 西安地平线电子科技有限公司,西安 710072

飞行仿真是以飞行器的运动情况为研究对象,面向复杂系统的仿真。它首先按照飞行器运动学、动力学、空气动力学以及飞行控制原理等有关理论建立起相关的数学模型,然后以这些模型作为依托进行模拟试验与分析研究[1]。

飞行仿真通过空气动力学的数学模型(简称气动力模型)计算飞机的气动力和力矩,飞机气动力/力矩决定了飞机的飞行性能、操纵性和稳定性,直接影响到飞行仿真器的质量认定。因而,气动力模型可能是飞行仿真系统中最重要的数学模型[2]。

一般来说,气动力和力矩是状态变量V、α、β、p、q、r和控制变量δ的泛函,可以表示为

FA=FA(V(τ),α(τ),β(τ),p(τ),q(τ),

r(τ),δ(τ)) -∞<τ≤t

(1)

式中:V表示飞行速度;α表示飞机迎角;β表示飞机侧滑角;p、q、r分别表示绕机体坐标轴系x、y、z轴的旋转角速度;δ表示飞机控制输入。常规气动布局的飞机δ包括升降舵δe、副翼δa和方向舵δr[3]。气动力不仅依赖于瞬时飞行状态的值还和其运动历程相关[4]。

实际应用使用的绝大多数都是基于准定常流动假设下的气动力数学模型。准定常流动假设下的气动力模型,忽略飞行状态时间历程对气动力/力矩的影响,气动力/力矩被表示成瞬时飞行状态变量的非线性函数,气动力数学模型一般采用满足相似律的无量纲气动力/力矩系数表示:

(2)

(3)

为了保证仿真实时性,飞行仿真器使用的程序语言基本是编译型程序语言(Fortran、C、C++和Ada等[5]),因此一旦修改程序就需要重新编译、链接、调试和测试程序。

然而不同气动布局的飞机,气动力模型一般不相同,使用飞行仿真器仿真不同气动布局的飞机,需要更换气动力模型。

此外,现代飞行器的方案论证、技术指标确定、设计分析、生产制造、试验测试、维护训练和故障处理等各个阶段都需要飞行仿真对飞行器进行全面的系统分析和评估[1]。在飞行器研制、生产和使用的各个阶段,飞行器气动力数学模型的来源包括气动估算、数值计算、风洞试验、系统辨识等[6]。在整个飞行器的生命周期内,除了气动力模型的来源不同外,由于飞机的研制、生产和使用是一个反复迭代的过程,为了让飞行仿真更加逼近飞机真实的性能和品质,需要基于不同来源的气动特性数据不断修正飞机的气动力数学模型。因此即使对同一型号的飞机进行仿真,飞行仿真器也需要频繁地修改和完善气动力数学模型。

飞行仿真系统的传统气动力/力矩求解方法把气动力数学模型(式(2))硬编码在气动力解算程序中进行求解,随着现代飞行仿真气动力模型的更换和修改变得越来越频繁,为了适应不同的气动力模型必须频繁地修改解算程序。因此传统方法在更换和修改气动模型时,过程繁琐、花费时间长、重复工作量大而且通用性低。综上所述,飞行仿真中传统的气动力/力矩解算方法逐渐无法满足现代飞行仿真频繁更换和修改气动力模型的需求。

本文提出气动力模型树的概念,用树形结构和节点的存储信息完整地描述气动力模型,并基于可扩展标记语言(eXtensible Markup Language,XML)设计了一种模型存储格式(Model Based on XML,MBX)来存储气动力模型树。探讨了MBX存储格式作为气动力模型数据交换标准的可能性以及MBX作为气动力模型交换标准对飞机研制、生产和使用的影响。

1 飞行仿真中的气动力模型

建立气动力数学模型的方法主要有气动估算、计算流体力学(Computation Fluid Dynamic,CFD)、风洞试验和飞机系统辨识等[5]。飞行仿真根据上述方法提供的气动力数学模型计算气动力和力矩,仿真飞机的性能、操纵性和稳定性。飞行仿真中常用的典型气动力数学模型如下所述。

1.1 气动导数表示的气动力模型

1911年Bryan提出的线性气动力模型,也称经典气动导数模型,它是在准定常假设下,将飞机的无量纲气动力/力矩系数表示成瞬时飞行状态变量的线性函数。经典气动导数模型一直是飞机操纵性、稳定性分析和制定飞行品质的基础[7],也是在飞行仿真中应用最广泛的气动力模型之一。

俯仰力矩系数的经典气动导数模型可以表示为

(4)

(5)

1.2 Digital Datcom的气动力模型

Digital Datcom(Data Compendium)计算程序是美国空军飞行力学实验室与麦道公司合作开发的适用于在飞机方案设计和初始设计阶段估算飞机气动特性的气动估算软件[9-11]。

Digital Datcom在每个输入文件设定的马赫数下,输出的气动力/力矩系数模型包括纵向静稳定性系数和纵向/横航向静稳定性导数、动稳定性导数、增升和控制输入引起的增量气动系数等[11]。Digital Datcom输出的俯仰力矩系数模型为

(6)

式中:Cmstatic表示俯仰静稳定性系数,在Digital Datcom中通常是关于迎角的一维表格;ΔCm(δ)表示纵向控制舵面偏转引起的俯仰力矩系数增量,是关于纵向控制舵面的一维表格[11]。

1.3 气动系数表示的气动力模型

风洞试验和CFD提供的气动特性数据,通常是以数据表的形式表示气动力的数学模型。一种典型的俯仰力矩系数的气动系数模型为

Cm=Cm(Ma,α,δe)

(7)

式中:Ma表示飞行马赫数;Cm(Ma,α,δe)表示当前飞行状态和控制输入下的俯仰力矩系数,它是关于Ma、α和δe的三维表。

1.4 飞机辨识领域中的非线性气动力模型

在飞行器辨识领域最常使用的非线性气动力模型有多项式模型和样条函数模型,以俯仰力矩系数为例,说明两种非线性模型的表达式。

俯仰力矩系数的多项式模型[3,8]为

Cm=Cm0+Cmαα+Cmα2α2+Cmα3α3+

(8)

式中:Cmα2是俯仰力矩系数对α2的气动导数;Cmα3是俯仰力矩系数对α3的气动导数。

样条函数俯仰力矩系数模型为

(9)

式中:Cm0(α)是关于α的三次样条函数[3]。

1.5 气动导数与系数混合表示的气动力模型

气动导数和气动系数混合表示的气动力模型也是飞行仿真中最为常见的气动力模型之一。一种气动系数和气动导数模型混合表示的俯仰力矩系数模型为

(10)

2 气动力/力矩的传统求解方法

飞行仿真中气动力/力矩的传统求解方法把气动力模型硬编码在求解程序中,这会造成当需要更换上述不同的气动力模型时,必须修改求解程序。以Digital Datcom估算方法建立的气动力模型(式(6)和表1)为例,说明气动力/力矩求解的传统方法以及其弊端。

飞机的俯仰力矩M与无量纲俯仰力矩系数Cm的关系可表示为

M=QScACm

(11)

式中:Q表示动压;S表示飞机参考面积。

1.initialize geometrical parameters of aircraft2.get inputs of aerodynamic force subsystem3.Cm_static←looking up table of CM from digital datcom’s output4.Cmq←value of CMQ5.q_bar←q*cA/2/V6.Cmad←value of CMAD7.ad_bar←ad*cA/2/V8.dCm←looking up table of DCM from digital datcom’s output9.Cm←Cm_static+Cmq*q_bar+Cmad*ad_bar+dCm10.M←Q*S*cA*Cm

上述步骤中,第3~10步都与具体气动力模型的数学表达式有关,数学表达式和表达式中各项求解方式被硬编码在求解程序中。如果需要更换气动力模型,上述求解步骤中的第3~10步都需要重新编写。在实际的飞机设计、生产和使用过程中,为了获得准确的飞机气动特性,气动力模型需要在不同方法得到气动特性数据的基础上进行不断的修正和优化。飞行仿真通过修改程序更换气动力模型的传统方法,要求飞行动力学研究人员在更换气动力模型时,进行大量的开发工作。因此飞行仿真求解气动力/力矩的传统方法已经不能满足现代飞行仿真频繁修改气动力模型以及气动力求解通用性的需求。

表1 Digital Datcom的气动估算数据[11]Table 1 Aerodynamic estimation data from Digital Datcom[11]

3 气动力模型树

为了避免硬编码求解气动力模型的弊端,提高气动力/力矩求解的通用性,飞行动力学研究人员期望飞机的气动力模型能够与求解程序分离开,气动力模型能够像气动数据一样在文件中存储。仿真程序在不需要修改代码的情况下,通过读取、解析不同的气动力模型存储文件来求解不同的气动力模型。

3.1 气动力模型的树形结构

飞行仿真中求解气动力的传统方法,是对气动力数学模型数学表达式的每一项进行求解,再按照表达式各项之间的运算关系,最终求解气动力。气动力模型的数学表达式和各项对应的各个变量,在传统方法的求解程序中是孤立的,只是按照程序的顺序结构进行求解。然而,气动力数学模型中的数学表达式之间以及表达式各项之间是存在联系的。

式(11)的树形结构如图1所示,表示动压Q、飞机参考面积S、平均气动弦长cA和俯仰力矩系数Cm是俯仰力矩M的数学表达式中的项。

图1 树形结构表示的俯仰力矩Fig.1 Pitch moment represented by tree structure

3.2 节点存储的求解信息

图2 俯仰力矩的气动力模型树Fig.2 Aerodynamic model tree of pitch moment

3.3 基于气动力模型树的求解器MbxSolver

传统求解方法中的气动力模型是根据求解程序以线性顺序结构描述气动力模型的气动系数、气动导数、飞机参考量、飞行状态、控制输入和气动数据表的关系,依赖于求解程序的顺序。气动力模型树用树形结构描述它们之间的层次关系,并用节点存储的内容描述了它们之间的运算关系和求解信息,这使得气动力模型不再依赖于求解程序,能够以气动力模型树的形式单独进行存储,实现了气动力模型与求解程序的分离。

飞行仿真中传统气动力/力矩求解程序无法求解上述的气动力模型树,所以本文专门编写MbxSolver求解器求解以MBX存储格式存储的气动力模型树。与传统方法相比,气动力模型不再被硬编码在程序中,而是通过加载以MBX存储格式存储的气动力模型树,解析气动力模型树,并最终求解气动力/力矩。

因此使用基于MBX存储格式的求解气动力方法后,更换或修改气动力模型,只需要更换或修改程序外部存储气动力模型树的文件,不用修改程序,避免了重新编译、链接、调试和测试程序的繁琐过程。

4 MBX存储格式设计

4.1 气动力模型树与XML

XML从标准通用表示语言SGML(Standard Generalized Markup Language)中派生而来,是W3C(万维网委员会)设计的可以记录、传输和理解多种数据的标准格式[13-15]。XML文档自身就是树形结构,与气动力模型树的树形结构完美契合。XML实质上是一种定义语言,它允许开发者通过自定义元素(Elements)、标签(Tags)和属性(Attributes)进行自我描述并创建符合XML语法规则的语言标准[16]。气动力模型树节点存储的求解信息可以通过自定义元素、标签和属性来设计存储格式,最后形成语言标准。很多学科和行业都基于XML设计存储格式制定了数据的交换和共享标准[17]。

4.2 气动力模型树节点的存储格式

气动力模型数学表达式中的项在气动力模型树中用节点表示,气动力模型树的各个节点对应MbxSolver程序中的变量,用来计算气动力/力矩。数学表达式的项、气动力模型树的节点和MbxSolver中的变量存在一一映射的关系。节点是树形结构的基本单位,节点的存储格式既要能描述自身存储的求解必要信息,还要能描述和其他节点之间的树形结构。

通过对典型气动力模型的求解方式的总结归纳,气动力模型树的节点根据求解方式可以分为4种,分别是常量(Const)、查表(Lookup)、公式(Eq)和输入(Input)。不同节点类型所需要的求解信息也不一样。MBX存储格式用Cell元素来存储气动力模型树的节点,Cell元素具有name、type和content等属性,分别表示Cell元素的名称、类型和求解信息。name属性表示节点名称,作为Cell元素的唯一标识;type属性表示节点的类型;content属性表示求解此节点所需的求解信息。

MbxSolver读取气动模型树常量节点对应的数值就可以完成对常量节点的求解,飞机的参考量如平均气动弦长cA和飞机参考面积S等都属于常量节点。常量类型节点存储的求解信息就是它表示物理量对应的数值。常量节点——飞机平均气动弦长cA在XML中存储格式如图3所示。

飞机气动模型树的查表节点表明此节点需要查找对应的气动数据表在当前飞行状态和控制输入下插值求解。它求解需要的信息是查表节点对应的整个气动数据表。如果把整个气动数据表都作为存储的求解信息,会造成气动力模型树在XML文件中篇幅臃肿,不利于使用者阅读、编辑气动力模型和表格的复用。MBX存储格式统一存储气动数据表,查表节点的求解信息简化为对应数据表的名称。MbxSolver在求解查表节点时,它通过查表节点存储的气动数据表名称,查询到相应的气动数据表,然后插值求解。查表节点和气动数据表的存储设计不仅可以显著减少气动力模型树在XML文件中存储的大小,还可以最大化的复用气动数据表。例如不同查表节点存储相同的数据表名称,表示不同节点都使用同一数据表进行插值,但是气动数据表在XML文件中只需要被存储一次。式(6)中俯仰静稳定系数Cmstatic查表节点在XML中存储的格式如图4(气动数据表来自表1)所示。

图3 常量节点的MBX存储格式Fig.3 MBX storage format of constant node

气动数据表的名称作为气动数据表的唯一标识,所以在同一个气动力模型存储文件中不能出现同名的气动数据表。

气动模型树的公式节点表明节点是通过数学表达式计算得到的,公式节点存储的求解信息为数学表达式。图2俯仰力矩系数Cm节点是公式节点,content属性存储的是式(6)等式右边的部分。

图4 查表节点的MBX存储格式Fig.4 MBX storage format of lookup node

气动模型树除了具有求解信息的节点外,还使用树形结构描述了节点之间的关系。所以Cell元素除了具有以上的属性外,为了描述气动模型树的树形结构,Cell元素可以包含所有类型的Cell子元素。Cell元素的结构见图6。

图3~图5都是单个节点的存储,是气动力模型树的叶节点。公式节点一般都会涉及若干个节点的运算关系,以图2俯仰力矩树的力矩系数Cm子树为例,说明公式节点以及气动力模型树的MBX存储格式(数据来自表1)。

图7表示在MBX存储格式中俯仰力矩系数Cm子树的树形结构是通过Cell 元素的树形结构进行存储的。根据图2表示的气动力模型树节点之间的关系,Cm数学表达式(式(6))的每一项都是MBX存储格式中Cm的子节点。图7的Cell元素与图2俯仰力矩系数Cm子树的节点具有一一对应的关系,所以Cm数学表达式的各项对应的Cell元素都是Cm元素的子元素。图2的气动力模型树完全可以使用常量、查表、公式、输入类型的节点以及它们之间的树形结构以MBX存储格式存储在XML文件中(图7)。

图6 Cell元素结构Fig.6 Cell element structure

图7 俯仰力矩系数子树的MBX存储格式Fig.7 MBX storage format of pitch moment coefficient subtree

4.3 MbxSolver对气动力模型树的求解

MbxSolver通过两步初始化建立气动力模型树,再根据初始化建立的气动力模型树和不断更新的飞行状态和控制输入,求解当前的气动力和气动力矩。

MbxSolver首先通过XML解析器,先序遍历[18]以MBX存储格式存储的Cell元素树,在程序中建立Cell元素的树形结构,创建相应的Cell对象。加载完MBX存储格式的Cell元素树后,完成第一步初始化。此时程序中只有气动力模型树的树形结构,并未解析节点的类型和存储的求解信息。

然后,MbxSolver先序遍历构建好的Cell元素树,解析气动模型树各个节点的类型和内容,根据节点各自的类型与求解信息,构建节点与气动数据表(查表类型节点)、输入(输入类型节点)和其他节点(公式类型节点)之间的关系,完成第2步初始化。在程序中形成多棵完整的气动力模型树。

在仿真计算中,MbxSolver根据当前的飞行状态和控制输入,反复后序遍历[18]构建好的气动力模型树,求解当前的气动力/力矩。

4.4 初步应用

飞行仿真求解气动力/力矩的传统方法首先要对气动力模型进行编码,在飞行仿真运行之前还需要编译、链接、调试和测试,具体流程如图8所示。

鉴于XML语言的特点以及其他学科(化学的ChemML语言中图形化的编辑器[19]),研发了基于MBX存储格式编辑气动力模型的图形化编辑器MbxEditor(如图9所示),降低了编辑气动力模型的难度,提高了工程人员编辑气动力模型的效率。

仿真程序只需要调用气动力求解器MbxSolver加载编辑好的MBX文件,即可求解飞机的气动力和气动力矩并进行仿真,不需要针对不同气动模型编写相应的求解程序。具体流程如图10 所示。

通过传统方法与基于MBX存储格式方法的对比(图8和图10),基于MBX存储格式建立气动力模型的流程不涉及到程序的编码,不要求飞行动力学研究人员精通相应的程序语言,还提供了编辑气动力模型的图形化界面,降低了建立、修改和更换气动力模型的难度;省略了编译、链接、调试和测试的流程,节省了建立、修改和更换气动力模型的时间。因此,MBX存储格式大幅提高了现代飞行仿真建立、修改和更换气动力模型的效率。

图8 飞行仿真中传统气动力/力矩求解流程Fig.8 Solution procedure of traditional method for aerodynamic force and moment in flight simulation

图9 MBX文件的编辑器——MbxEditorFig.9 Editor for MBX files——MbxEditor

图10 飞行仿真中基于MBX的气动力/力矩求解流程Fig.10 Solution procedure of MBX method for aerodynamic force and moment in flight simulation

5 气动力模型的数据交换标准

MBX存储格式除了成功分离气动力模型与求解程序外,它还能够作为气动力模型交换的标准用于气动力模型交换。不同气动力模型建立方法得到的气动力模型表达形式不同,气动数据存储格式不同,气动数据存储的文件格式一般也不同。没有统一的气动力模型的数据交换标准,使得气动模型在不同机构之间的交换效率非常低下,会造成时间和金钱的浪费。文献[20]曾经做过调查研究,如果在20个地点的59台飞行仿真器之间使用统一的标准移植高精度的飞行动力学仿真模型,可以节省约690万美元,移植模型花费的时间也会从几个月/人缩短至一周/人的时间。标准被应用的范围越广泛,经济效益会越明显。MBX存储格式是XML定义的语言标准,XML本身是一种用于数据交换的常用语言,许多学科基于XML制定了各自的数据交换标准,例如有限元标记语言——femML、化学标记语言——ChemML、数学标记语言——MathML等[19]。MBX存储格式也能够作为气动力模型存储的标准得以推广,不同方法得到的气动力模型都以MBX存储格式进行存储,有利于气动力模型的交换。MBX存储格式实现了气动力/力矩求解程序的通用性,标准化了气动力/力矩的求解。气动力模型与求解程序解耦之后,气动力/力矩的求解程序MbxSolver可以被设计为求解气动力/力矩的标准程序。飞机性能计算、飞行品质分析和飞行仿真软件可以内置标准化的求解程序MbxSolver,计算基于MBX存储格式的气动力模型的气动力/力矩。

当MBX存储格式成为气动力模型的数据交换标准时,不同方法建立气动力模型得到的气动力特性数据首先被图形化的编辑器(MbxEditor)编辑为MBX存储格式存储的气动力模型,在已知其他力/力矩特性的基础上,内置MbxSolver的飞行性能计算软件和飞行品质分析软件可以计算飞机的飞行性能和飞行品质,内置MbxSolver的飞行仿真软件可以用来对飞机进行仿真,如图11所示。因为上述软件都是以MBX存储格式作为气动力/力矩数据交换标准,所以更换或修改气动力/气动模型时,只需要通过MbxEditor编辑气动力模型,不涉及到程序的变化,可以实现快速优化和更换气动力/力矩模型。

图11 MBX存储格式作为气动力模型的数据交换标准Fig.11 MBX storage format as data exchange standard of aerodynamic model

图11中用于表示CFD计算结果的图来自于商用计算流体力学软件Fluent。系统辨识下图中的CIFER是频率响应综合辨识软件包,它是解决飞机辨识困难问题的有效工具。目前,CIFER已经被广泛用于固定翼飞机、旋翼机以及UAV项目中[21]。

MBX存储格式现在已经在国内研究院所、飞机制造厂商的某些部门进行了应用,从实践的效果来看,MBX存储格式标准可以加快飞机气动力模型交换的过程,从几周/人缩短至几天/人。同时,它还能够缩短逼近飞机真实气动特性的反复迭代过程,从而提高飞机设计的效率。

6 结 论

1) 提出气动力模型树的概念并通过MBX存储格式来实现飞行仿真中气动力求解程序和具体气动力模型的分离。更换和修改气动力模型时,只需要编辑和更换以MBX存储格式存储的气动力模型,不涉及到程序的修改,避免了重新编译、链接、调试和测试的过程,提高了优化和更换气动模型的效率。

2) 探讨了MBX存储格式作为气动力模型数据交换标准的可能性,MBX存储格式如果能成为气动力模型的数据交换标准,它可以促进不同气动力建模方法得到的不同气动力模型在风洞基地、科研院所、大学实验室、制造厂商、试飞基地和使用单位的交换与共享。

3) MBX存储格式提高了气动力求解的通用性,基于MBX存储格式开发了一系列的工具包括图形化编辑器MbxEditor、通用求解器MbxSolver等。MbxEditor用来编辑保存基于MBX存储格式的气动力模型,可以降低编辑不同气动力模型的难度,提高更换和修改气动力模型的效率。飞行性能、飞行品质和飞行仿真都可以使用标准求解程序MbxSolver对MbxEditor编辑好的气动力模型进行求解,这可以缩短飞机在设计和使用中反复迭代得到准确气动力模型的过程。

猜你喜欢

气动力数据表气动
基于卷积神经网络气动力降阶模型的翼型优化方法*
一种连翼飞行器气动和飞行力学迭代仿真方法
无人直升机系留气动载荷CFD计算分析
基于NACA0030的波纹状翼型气动特性探索
基于分层模型的非定常气动力建模研究
飞行载荷外部气动力的二次规划等效映射方法
基于谐波平衡法的尾流激励叶片气动力降阶模型的计算精度研究
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
湖北省新冠肺炎疫情数据表