基于Python的航空发动机仿真平台开发

2021-06-21 01:53
计算机应用与软件 2021年6期
关键词:数控系统涡轮部件

肖 力

(无锡工艺职业技术学院 江苏 无锡 214200)

0 引 言

航空发动机数字电子控制系统(数控系统)涉及自动控制、电子、软件、机械液压等众多学科领域,是一个多变量、非线性、多功能的复杂系统,且朝着综合化、小型化、智能化和分布式的方向发展[1-5]。由于航空发动机台架试验和试飞试验的高投入和高风险,在数控系统装机之前的研发活动中,需要进行一系列仿真实验,其中主要包括数控系统全数字仿真、硬件在回路仿真和半物理仿真三个环节[6]。随着计算机技术的发展和应用,基于数字计算技术的航空发动机建模、控制算法和系统仿真对航空发动机数控系统的研制起到了重要的助推作用。数字仿真技术的应用主要体现在控制算法和控制逻辑的缺陷识别、复杂环境模拟、故障注入和极限边界逼近等方面,从而达到提升控制系统质量、提高研发效率和降低验证成本的目的[7-8]。因此,开发可靠高效的数字仿真平台对航空发动机数控系统的设计和验证起到十分关键的支撑作用。

Python语言是一种解释型的动态语言,既支持面向过程的编程又支持面向对象的编程[9]。Python在数值计算和仿真方面有强大的第三方开源库支撑,开发人员可以自行更改Python开源算法的细节,与航空发动机仿真平台开发常用的传统的MATLAB或VC++环境相比较,在GUI设计、数据库开发和可移植性方面,Python优于MATLAB;在灵活性、易用性和开源支持方面,Python优于VC++。结合航空发动机数控系统仿真验证的需要,本文开发基于Python的航空发动机全数字仿真平台,从整体框架、发动机模型和数据库等方面进行阐述,并通过发动机仿真实验验证了平台的正确性。

1 仿真平台总体架构设计

仿真平台的总体架构见图1,是由发动机数学模型、仿真数据库、数据分析与图形化显示、人机交互界面和仿真调度等功能模块构成的综合化纯数字仿真环境。

图1 仿真平台整体结构图

数据库管理模块完成数据库创建、更新和检索等功能,数据库包含的主要信息有用户数据、发动机特性数据和故障数据等。发动机模型模块是包含发动机部件级模型的发动机模型库,采用Python类对发动机各部件的气动热力学模型和通用算法进行设计和封装,支持接口调用和继承,可以方便地进行扩展。数据分析和显示模块综合使用Python的矩阵运算库Numpy、数据运算库SciPy、数据处理库Pandas和可视化绘图库Matplotlib对数据进行处理,并包括仿真报告生成等功能。人机交互模块提供统一的界面管理能力,具有输入参数设置、用户信息配置、工具条等多种界面能力支持。任务管理模块完成仿真平台的任务调度和任务管理功能。

2 发动机建模

航空发动机模型是仿真系统的核心组成部分,发动机建模方法通常有理论分析法和试验法,航空发动机部件级建模的方法属于理论分析法,它是根据航空发动机在工作过程中所遵守的热力学和动力学原理,把发动机工作表示成一组非线性方程组。这种建模方法以发动机各部件特性数据为依据,按部件间的共同工作关系来建立发动机的动态或稳态数学模型。部件法建模包括两方面工作:(1) 发动机工作部件流道的气动热力计算;(2) 建立反映发动机动态、稳态工作中各个部件共同工作关系的控制方程并求解[10]。本文研究的某型涡喷发动机,结构见图2。工作部件主要包括进气道、压气机、燃烧室、涡轮和尾喷管。部件级模型的输入参数是飞行高度(H)、马赫数(Ma)、环境压力(P0)、环境温度(T0)和燃油流量(WF)。输出参数为发动机各部件的截面参数(转速、温度、压力等)和性能参数(推力等)。

图2 某航空发动机结构示意图

图2中,截面①为进气道进口,截面②为进气道出口(压气机进口),截面③为压气机出口(燃烧室进口),截面④为燃烧室出口(涡轮进口),截面⑤为涡轮出口,截面⑥为尾喷口。

2.1 部件模型设计

根据发动机工作过程的气动热力学关系,建立各个部件的模型,再按照各部件的数据流交互关系将建好的各部件模型进行调度组合,形成层次结构的发动机部件模型。

本文的部件模型程序设计采用了面向对象的设计方法,面向对象技术具有封装、继承、派生等特点,可以自定数据结构或模块。使用面向对象方法的方法进行航空发动机部件建模,使得模型程序各模块功能具有相对独立性和可扩展性,以适应未来不断升级的仿真需求。按照发动机部件、工质以及求解通用算法,设计不同的Python类,见图3。PyClass_Solver是算法求解库类,包含了三角函数算法、查找算法、非线性方程组数值求解算法等的实现和封装。PyClass_Map类包含了发动机部件特性插值算法。PyClass_Interface类属于数据交换类,对接口进行有效的数据封装,使得程序有良好的可扩展性。

图3 部件模型程序设计

2.2 发动机稳态和动态模型

航空发动机在运转过程中,所有部件协同工作,形成一个有效的整体,各个部件必须共同满足一定的协同工作条件。其中发动机稳态工作必须同时满足压力平衡、功率平衡和流量连续三大条件[8]。

根据涡轮进口截面流量连续可得控制方程,即:

(Wg4T-W4c)/Wg4T=0

(1)

式中:Wg4T是涡轮特性数据插值得到的涡轮进口流量;W4c是经过压气机、燃烧室等部件计算传递到涡轮进口的流量。

根据尾喷口压力平衡可得控制方程,即:

P6c/P6-1=0

(2)

式中:P6c是尾喷管出口的大气压力;P6是经过各部件特性计算传递到尾喷管出口的压力。

根据发动机转子功率平衡可得控制方程,即:

PT/PC-1=0

(3)

式中:PT是涡轮产生的功;PC是压气机消耗的功。

式(1)-式(3)共同组成了发动机的稳态控制方程。

发动机动态工作过程是涡轮和压气机扭矩差产生转动加速度的过程,因此涡轮和压气机的转动功率不再平衡(但压力平衡和流量连续仍然成立)。根据动力学原理,得到如下表达式:

(4)

式中:MT是燃气涡轮的扭矩;ηT是燃气涡轮效率;MC是压气机扭矩;J是转动惯量;Ng是转速。代入功率与转矩的关系,可得转子加速度与功率的关系表达式。

(5)

因此,式(1)、式(2)和式(5)共同组成了发动机的动态控制方程。

2.3 发动机模型求解

部件级模型由许多非线性方程及图表、曲线等组成,因此无法给出一个闭合形式的解析解,必须采用数值解法进行求解计算。本文使用Newton-Raphson方法(牛顿-拉夫逊法),这种方法的实质是迭代求解,基本思想是不断对初猜值进行修正,使之逼近真实解。具体过程为:根据经验先确定一组初猜值(每个方程一个),将初猜值及其他已知参数代入方程,计算出发动机各个截面的参数;将相关参数代入控制方程中检查控制方程是否成立;如果成立,初猜值即为方程的解;否则,通过迭代对初猜值进行修正;将修正后的参数代入部件模型进行气动热力计算,检查控制方程是否成立。如此反复,通过不断修正初猜值,使其逼近方程的真正解[8,10-13]。

本文稳态模型的求解即为用牛顿-拉夫逊方法修正初值n1、n2、n3,控制方程组如下:

fi(n1,n2,n3)=εi

(6)

在一定精度(本文用εmin=10-5)意义下成立,即:

fi(n1,n2,n3)=εi≤εmin

(7)

式中:i=1,2,3;ε为相对误差。

假设第K步计算后相对误差不满足期望,即:

fi(n1,n2,n3)=εi|K≥εmin

(8)

则根据牛顿-拉夫逊法按偏导数方向修正初猜值,得到下一步初猜值。

ni|K+1=ni|K+Δni

(9)

式中:

(10)

A为雅可比矩阵,表达式为:

(11)

发动机仿真时,初猜值选择压气机换算转速Nc,涡轮落压比Zg和压气机压比系数Zc。

稳态仿真的计算求解流程如图4所示。

图4 发动机模型稳态求解流程

3 数据库设计

传统的发动机仿真平台的各类数据基本都是采用文本形式存储,文本形式的数据在存储和读写等方面存在数据冗余量大、数据交互性差等不足。本仿真平台为了减少数据冗余、实现数据资源的充分共享、提高数据的组织和管理能力、实现数据与应用程序的物理独立,采用了数据库的方式对数据进行存储和管理。数据库包括用户信息数据、发动机特性数据和发动机性能数据和故障数据等。本文采用SQLite数据库进行设计,SQLite是一款轻量级嵌入式关系型数据库,具有开源、系统开销小、检索效率高等特点,实现了高效存储中小规模的数据,它支持SQL的大多数公共特性[14-16]。Python中内置了SQLite3,可以方便地进行数据库操作。

数据库模块见图5,该模块的输入有XML数据格式的文件(发动机特性数据和用户信息数据等)和仿真数据文件,对XML文件使用Python的Pandas库进行XML解析,为提高解析大型XML数据文件的速度,提高数据库创建和更新效率,采用了Pandas模块对XML文件进行分块,以1 MB为单位分块读取并解析XML。启动仿真时,仿真模块访问数据库中的数据,获取仿真需要的特性数据,仿真过程产生的仿真数据(包含发动机性能数据、故障数据等)实时更新到数据库中。图6展示了数据库中的数据表设计以及故障信息表中的数据。

图5 数据库模块结构图

图6 数据库设计示意图

4 数据分析与显示

该模块支持数据分析、图形显示和报表生成,其中数据分析是对仿真后的数据的离线分析,数据来源于数据库。数据显示包括仿真过程中的实时数据显示和事后数据分析显示。分析和显示的数据包括发动机各截面的参数,此外还包括发动机性能指标的分析,如仿真过程中的调节时间、超调量和稳态误差等。数据分析综合使用Python的矩阵运算库Numpy、数据运算库SciPy和数据处理库Pandas来实现,图形化显示使用Python数据可视化绘图库Matplotlib。Matplotlib源于模仿MATLAB,但是它依托于Python语言,继承了Python语法面向对象、易读、代码简洁等优点,是Python的开源拓展库。Matplotlib可独立地用于绘图,也可嵌入在应用程序中,作为一个功能被使用。此外,数据分析与显示还包含报表生成功能,可生成Excel格式的数据报表和Word文档,这些形式的报表和文档,对故障分析、仿真结果评审等可以提供很大便利。生成的报表和文档作为数控系统适航认证的证据链数据进行归档,并与数控系统的其他数据项一起进行全生命周期的配置管理。

5 人机交互模块设计

人机交互模块负责平台与用户的人机交互,为用户提供友好、可靠、灵活易用的人机交互功能,主要包括用户参数录入、数据显示、系统参数设置等功能,人机交互模块结构图见图7。其中,菜单栏主要用于信息配置,包括用户信息、项目信息和仿真参数等。对界面进行功能区域划分,主要分为数据显示(包括关键参数、动态曲线和实时故障信息三部分)、用户输入操作和子窗体操作几个部分。

图7 人机交互模块界面结构图

6 仿真实验

仿真验证分为模块级验证和系统闭环仿真验证两部分,前者是对仿真平台自身的单独验证,后者主要是对控制系统和控制软件的功能和性能验证。

模块级验证的核心是对发动机模型的验证,首先验证模型与理论计算的符合性,选择阶跃信号作为燃油输入量,部分数据的仿真结果如图8所示。可以看出,Python开发的发动机模型与理论计算分析的结果相符合,涡轮出口温度、发动机转速和推力都具有较好的动态响应。其次,在相同条件下,该模型的仿真结果与发动机地面台架实验的真实数据对比如表1所示。可以看出数据误差均在0.5%以内,充分满足项目数字仿真的精度要求。其他功能模块的验证主要通过调试和代码审查的方式进行,均满足平台需求。

(a) 供油量曲线(b) 涡轮出口温度曲线

(c) 发动机转速曲线(d) 发动机推力曲线图8 模块仿真结果

表1 300ml/min供油量下稳态结果对比

系统闭环仿真验证是将发动机控制软件和仿真平台构成闭环系统开展闭环仿真验证,根据系统研制任务书和软件需求规格说明,设计和编写系统验证用例,包括基本功能集、故障用例集等内容,并对验证用例和验证结果进行专家评审。对于其中某型号发动机控制系统的闭环仿真验证,读取数据库中的故障数据,部分结果见图9,其中的故障发生时间和故障消失时间是指相对于启动仿真时刻的时间。

图9 闭环实验故障数据记录图

与基于MATLAB开发的航空发动机全数字仿真平台相比,本仿真平台在人机界面、数据管理和可移植性等方面有明显的优势,而MATLAB/Simulink环境中自带的开发人员可以直接使用的部分航空类和执行机构类(惯性环节、二阶系统等)的数学模型,目前尚缺少Python开源库,在本平台开发时采用Python编码实现该类模型。与基于VC++开发的全数字仿真平台相比较,本仿真平台在数值分析、报表生成和可维护性方面更具优势。但C/C++语言更接近计算机底层,基于C/C++语言开发的仿真平台对底层驱动(如DFTI通信驱动等)有更多的支持,易于与硬件实物相结合,容易实现从全数字仿真平台到硬件在回路仿真平台的切换和资源重用。综合分析,在全数字仿真层级,本平台能充分满足当前项目的仿真需要,且与传统平台相比较,具有多方面的优势。

7 结 语

本文采用模块化设计,同时又采用面向对象的建模方法完成航空发动机数控系统全数字仿真平台的开发,充分结合Python语言的特点和优势,全数字仿真平台集成了航空发动机数据库、模型库、人机交互界面等功能模块,具有低耦合、数据与程序相分离等优点。通过模块验证和系统闭环仿真实验验证了仿真平台的正确性。目前,该平台已应用于某系列型号航空发动机数控系统原型设计过程中的全数字仿真。该平台现阶段仅支持发动机稳态和动态过程的仿真,后续将结合项目进度需要,加入发动机启动过程模型等,形成可支撑发动机全状态仿真的全数字仿真平台。在模型的使用和继承方面,未来考虑将MATLAB/Simulink环境中自带的和已自定义开发的部分数学模型通过MATLAB/Simulink的RTW自动代码生成工具自动生成源代码,并将源代码封装成动态链接库(Dynamic Link Library,DLL),在本平台中直接对该动态链接库进行集成和调用。

猜你喜欢
数控系统涡轮部件
基于FMECA与FTA的数控磨床数控系统可靠性分析
对涡轮增压器进行高效加工的应用
奥迪e-tron纯电动汽车的高电压部件(下)
一种陀飞轮表的双秒轮结构
现代汉字的两种分析法与国家文字规范(四)
古文字中“口”部件的作用研究
涡轮的乌托邦时代到来了吗?
AUDISQ7映射未来的电心术
涡轮的乌托邦时代到来了吗?
华中数控在CIMT 2015上展示3C钻攻生产线