【空气涡轮发动机Matlab/simulink动态仿真模型】 1、部件级模型;进气道,涡轮,气室,压气机,尾喷管,转子动力学模块,容积模块 2、PID控制器: 输出扭矩阶跃扰动下,维持转速恒定
先给各个部件开户口簿。进气道的建模关键在总压恢复系数,直接上查表模块Lookup Table,把马赫数和攻角参数喂进去就能吐出压力损失系数。压气机模块最带劲的是特性图,用2D插值处理转速和压比的关系,Matlab里meshgrid配合griddata函数能搞定:
[Nc_map, PR_map] = meshgrid(8000:1000:15000, 3:0.5:6);
eff_map = scatteredInterpolant(Nc_map(:), PR_map(:), efficiency_data);
涡轮和压气机这对冤家得用共同轴拴着,转子动力学模块用牛顿第二定律最直接。扭矩差积分得转速变化,记得加上转动惯量参数——这里容易栽跟头,上次我把单位搞错直接让转子飞出了太阳系。

气室容积模块是个缓冲地带,微分方程描述压力变化时,热力学公式别硬算,用Simulink的积分器连乘加模块更省事。尾喷管的壅塞流量特性得用if-else判断临界压力比,不过现在用S函数写条件判断更利索:
function mass_flow = nozzle_flow(P_in, P_out)
if P_out/P_in <= 0.528
% 壅塞状态
mass_flow = C * P_in / sqrt(T_in);
else
% 亚临界流
mass_flow = C * P_in * sqrt(1 - (P_out/P_in)^0.286);
end
end
PID控制器才是重头戏。当负载扭矩突然给你来个20Nm的阶跃,燃油量得像老司机踩油门那样精准。先用PID Tuner自动整定,但实际还得手动微调。比例增益大了转速震荡像蹦迪,积分时间长了响应慢半拍,微分项加多了传感器噪声能让你怀疑人生。
看这段控制逻辑的实现:
Kp = 0.8; Ki = 0.15; Kd = 0.05;
error = setpoint - actual_speed;
integral = integral + error*Ts;
derivative = (error - prev_error)/Ts;
fuel_flow = Kp*error + Ki*integral + Kd*derivative;
参数调整时盯着阶跃响应曲线,超调量最好别超5%,稳定时间控制在0.5秒内。记得给燃油阀加个限幅器,不然燃油流量暴走比油门踩进油箱还可怕。

模型跑起来后,转速曲线稳得像条死鱼才算合格。不过别高兴太早,实际还得考虑传感器延迟、执行机构滞后这些幺蛾子。这时候在PID后面串个二阶低通滤波器,效果比喝红牛还提神。
最后说个坑:容积模块的时间常数和转子惯量得匹配,不然会产生压力震荡。这感觉就像用脸盆接瀑布——要么接不住,要么水花四溅。调参时看着频谱分析图,主频峰值得摁在5Hz以下才安全。


被折叠的 条评论
为什么被折叠?



