TTECTrA

涡喷发动机闭环稳态分析工具箱(TTECTrA)

MATLAB代码

大致框架

大致框架

读取控制器数据

首先是选择读取控制器数据(默认为TTECTrA_example_design.mat里的数据),或者选择默认TTECTrA_Inputs里的值,数据包括:

  • 环境变量:高度、马赫数、与标准大气的温度差、仿真总时间
  • 设计点功能配置:燃油流量范围、慢车推力、起飞推力和设计点个数
  • 设计点控制器配置:线性状态空间模型、反馈滤波器的带宽、预滤波器的带宽、控制器带宽、相角裕度、燃油作动筒的带宽等
  • 瞬态限制器配置:最小HPC喘振裕度、最小LPC喘振裕度
  • 预定义的加速控制计划

具体变量名和定义可参见文档3.1节。

设计点计算

这里可以自行设置飞行条件以及控制量和折合推力之间的关系。

设计点计算两种模式:推力定值模式(loop=2)和燃油定值模式(loop=3)。推力定值模式需要指定慢车推力、最大起飞推力以及设计点的个数。在每个设计点会根据推力或燃油计算相应的控制量;燃油定值模式则需要指定最小燃油量、最大燃油量和设计点个数。除了燃油定值模式(loop=3),其他两种模式都按照推力的需求来进行设计点的数据计算。

点击Calculate按钮时,会根据设定的输入和模式通过sim函数运行simulink模型,模型输出的结果会保存至工作区,最后会画出控制量(风扇转速或EPR)与推力之间的关系。如果不合适,可以继续重新设定输入和模式计算。

控制器增益计算

该工具里的设计点的控制器是一个带有积分饱和的PI控制器,其中的比例积分系数是利用Matlab控制工具箱里的pidtune和pidtuneOptions函数、根据设计点的控制量来规划的。在规划之前,需要指定回路的带宽和相位裕度。

加减速限制器计算

最大最小选择器:最大不能超过加速调节规划值(acceleration schedule),这个加速调节规划是为了满足最小的高压压气机喘振裕度;最小不能小于WfPs3\frac{W_f}{Ps_3}Ps3Ps_3(高压压气机出口压力)的乘积,这个乘积是为了满足低压压气机的喘振裕度。

Simulink模型

Simulink模型

TTECTrA Simulink Block

瞬态性能分析工具箱的核心模块,主要是设计点控制器、瞬态限制逻辑两部分。

TTECTrA Simulink Block

Setpoint Controller

Setpoint Controller

CV_dmd,即control variable demand是控制量的需求量,这个变量的数值线性化模型中没有直接给出,是通过设计点计算得出。它与控制量的反馈值做差后,得到控制量的误差值。如果用户设置了反馈滤波的带宽,那么Fdbk_flag标志位为1,误差经离散传递函数再进入后面带积分饱和的PI控制器中得到控制所需的燃油量,否则直接进入。这里的离散传递函数的分子和分母都默认为1eωBTs1-e^{-\omega_BTs}

Transient Limiter Logic

Transient Limiter Logic
就是一个一般的最小最大选择器。

模式选择

模式选择

从这个模块可以很明显看出loop这个模式选择参数的作用。

Engine Model

Engine Model

在Engine Model这个子模块中,有三个重要的S函数。S函数的参数通过Mask中的S-function parameters一栏里面的参数将Matlab工作区间的变量传递给S函数。

sfun_weights_C

计算每个线性模型的权重,用来构建分段线性模型。如果mode=1,那么权值的计算方式为wi=eβdimw_i=e^{-\frac{\beta d_i}{m}},其中m=min(di)m=min(d_i),β\beta人为选取,did_i为状态到线性化状态的距离。如果mode=2,直接选取状态变量距离最近的线性化模型。

sfun_xdot_C

根据x˙=Ax+BU\triangle \dot x=A\triangle x+B\triangle U以及加权系数来计算状态的变化量。

状态变量为[Nf Nc Tm_LPC Tm_HPC Tm_burner Tm_HPT Tm_LPT​]

输入变量为[ Wf VSV VBV ]

输出变量为状态变量

sfun_output_C

根据x˙=Cx+DU\triangle \dot x=C\triangle x+D\triangle U以及加权系数来计算输出的变化量。

状态变量和输入变量与xdot中一致

输出变量为[ Nf Nc T2 T25 T50 P2 Ps3 P50 Fnet Wf VSV VBV EPR T30 P25 tauPX T40 T48 tauLP tauHP 0 LPC_SM HPC_SM Fdrag Fnet Fgross]

数据含义

LM_PWL.mat

LM_PWL

C-MAPSS40k模型的线性化状态方程的参数,一共对8个点进行了线性化。

fn:线性化点处的推力值。

nfr:线性化点处的参考转速。

PWL_mods.mat

PWL_mods

该数据在setup_workspace函数中读取,默认读取x,u,y,A,B,C,D,matrix_axes。

x:状态变量[Nf Nc Tm_LPC Tm_HPC Tm_burner Tm_HPT Tm_LPT],前两个是风扇和压气机折合转速,后五个(我猜测)是代表高低压压气机、燃烧室、高低压涡轮的共同工作线的系数。

u:输入量[ Wf VSV VBV],分别是燃油量、可调静止叶片和可调放气活门。

y:一共包含36个量,不一一列举。具体可以看Simulink模型中Outputs那个模块,主要的还是状态变量。

A,B,C,D:状态方程和输出方程的系数。

beta:分段线性模型的缩放因子。

mode:分段线性模型的加权方式。

matrix_axis:部件级模型线性化参考的变量,默认设为参考转速。

trim_axis:暂没用到,含义待知。

Ad,Bd,Cd,Dd,L,M:待知。

重要常数

在setup_workspace里还定义的一些重要常数有:

C_TSTD:标准大气温度,518.67°R。

C_PSTD:标准大气压强,14.695951psia。

Ts:时间步长,0.015s,这个参数在很多Mask中都用到。

注解

  1. 这里面很多GUI程序,注意这种Matlab程序的特点,重点看function。
  2. S函数有三个重要变量:S函数参数(Mask)、S函数输入和S函数输出(Block)。

psia。

Ts:时间步长,0.015s,这个参数在很多Mask中都用到。

注解

  1. 这里面很多GUI程序,注意这种Matlab程序的特点,重点看function。
  2. S函数有三个重要变量:S函数参数(Mask)、S函数输入和S函数输出(Block)。

最后有一点说明,这个工具箱基于的是C-MAPSS40k模型的分段线性化数据,而现在这个模型NASA已经不对外开放。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章