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),这个加速调节规划是为了满足最小的高压压气机喘振裕度;最小不能小于和(高压压气机出口压力)的乘积,这个乘积是为了满足低压压气机的喘振裕度。
Simulink模型
TTECTrA Simulink Block
瞬态性能分析工具箱的核心模块,主要是设计点控制器、瞬态限制逻辑两部分。
Setpoint Controller
CV_dmd,即control variable demand是控制量的需求量,这个变量的数值线性化模型中没有直接给出,是通过设计点计算得出。它与控制量的反馈值做差后,得到控制量的误差值。如果用户设置了反馈滤波的带宽,那么Fdbk_flag标志位为1,误差经离散传递函数再进入后面带积分饱和的PI控制器中得到控制所需的燃油量,否则直接进入。这里的离散传递函数的分子和分母都默认为。
Transient Limiter Logic
就是一个一般的最小最大选择器。
模式选择
从这个模块可以很明显看出loop这个模式选择参数的作用。
Engine Model
在Engine Model这个子模块中,有三个重要的S函数。S函数的参数通过Mask中的S-function parameters一栏里面的参数将Matlab工作区间的变量传递给S函数。
sfun_weights_C
计算每个线性模型的权重,用来构建分段线性模型。如果mode=1,那么权值的计算方式为,其中,人为选取,为状态到线性化状态的距离。如果mode=2,直接选取状态变量距离最近的线性化模型。
sfun_xdot_C
根据以及加权系数来计算状态的变化量。
状态变量为[Nf Nc Tm_LPC Tm_HPC Tm_burner Tm_HPT Tm_LPT]
输入变量为[ Wf VSV VBV ]
输出变量为状态变量
sfun_output_C
根据以及加权系数来计算输出的变化量。
状态变量和输入变量与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
C-MAPSS40k模型的线性化状态方程的参数,一共对8个点进行了线性化。
fn:线性化点处的推力值。
nfr:线性化点处的参考转速。
PWL_mods.mat
该数据在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中都用到。
注解
- 这里面很多GUI程序,注意这种Matlab程序的特点,重点看function。
- S函数有三个重要变量:S函数参数(Mask)、S函数输入和S函数输出(Block)。
psia。
Ts:时间步长,0.015s,这个参数在很多Mask中都用到。
注解
- 这里面很多GUI程序,注意这种Matlab程序的特点,重点看function。
- S函数有三个重要变量:S函数参数(Mask)、S函数输入和S函数输出(Block)。
最后有一点说明,这个工具箱基于的是C-MAPSS40k模型的分段线性化数据,而现在这个模型NASA已经不对外开放。