第二章:发动机工作原理与建模

2.1 热力学循环——发动机的“心跳”

搞发动机控制,首先得明白它怎么产生推力。说白了,就是空气被吸进来,压缩,燃烧,膨胀,然后喷出去。这一套流程,我们叫它热力学循环。

最常见的循环是布雷顿循环。我刚开始接触时,觉得它跟汽车发动机的奥托循环差不多。后来发现区别大了——航空发动机是连续流动的,不是活塞式的“吸气-压缩-做功-排气”四个冲程。

布雷顿循环包含四个过程:

  • 等熵压缩:空气在压气机中被压缩,压力和温度都升高。我记得第一次看压气机出口温度数据,吓了一跳——能到500多度。
  • 等压加热:压缩后的空气进入燃烧室,喷油点火。这里压力基本不变,但温度飙升到1500度以上。
  • 等熵膨胀:高温燃气在涡轮中膨胀,推动涡轮旋转。涡轮不光要带动压气机,还得输出轴功率给风扇。
  • 等压放热:燃气从尾喷管排出,压力降到环境压力,速度却很高——推力就是这么来的。

核心参数:循环效率 η = 1 - (T1/T2)。T1是压气机进口温度,T2是出口温度。压比越高,效率越高。但压比太高,涡轮进口温度也高,材料受不了。这就是工程上的取舍。

你想想看,如果压气机效率低,压缩过程就不是等熵的,实际耗功更大。涡轮效率低,膨胀过程也偏离等熵,输出功率变小。这些损失,最终都体现在耗油率上。

2.2 部件特性——每个零件都有自己的脾气

发动机不是铁板一块,它由多个部件组成。每个部件都有自己的特性曲线。搞控制,必须摸清这些“脾气”。

2.2.1 压气机特性

压气机的核心参数是压比、流量和转速。它们之间的关系,用特性图表示。我建议你记住几个关键点:

  • 喘振边界:流量太小,压气机会喘振。那声音,我在试车台上听过一次,终身难忘——像金属在尖叫。控制上必须避开这个区域。
  • 堵塞边界:流量太大,压气机就堵了,流量不再增加。这时候再提高转速也没用。
  • 共同工作线:发动机稳态运行时,压气机的工作点连成一条线。控制器的任务,就是让这条线远离喘振边界。

避坑指南:我曾经在调试加速控制律时,没注意喘振边界随进口温度的变化。结果高空加速时,工作点直接撞上了喘振线。嗯,那次试车差点报废一台发动机。从此以后,我每次建模都会把进口条件的变化考虑进去。

2.2.2 涡轮特性

涡轮的特性相对简单,主要看膨胀比和效率。但有个坑——涡轮进口温度。温度太高,叶片会烧蚀。我记得某型发动机的涡轮前温度限制是1650K,控制上必须严格保护。

涡轮的流量特性,通常用“流量函数”表示。说白了,就是给定膨胀比和转速,能通过多少燃气。这个函数,我们一般用实验数据拟合。

2.2.3 燃烧室特性

燃烧室的关键是燃烧效率和稳定工作范围。效率通常很高,接近99%。但贫油熄火和富油熄火是控制上必须避免的。

我习惯用“燃烧室延迟”来建模。从喷油到燃烧释放热量,有几十毫秒的延迟。别看时间短,在动态控制中影响很大。

2.3 稳态模型——发动机的“平衡点”

稳态模型,就是发动机在某个油门位置下,各参数稳定不变时的关系。说白了,就是找平衡点。

建立稳态模型,核心是满足“流量平衡”和“功率平衡”:

  • 流量平衡:压气机流过的空气量,等于涡轮流过的燃气量(加上燃油量)。
  • 功率平衡:涡轮产生的功率,等于压气机消耗的功率加上附件提取的功率。

我常用的方法是“牛顿-拉夫森迭代”。给定油门杆角度,猜一个转速和压比,然后迭代求解。代码大概长这样:

function [N, PR] = steady_state(Wf)
    % 输入:燃油流量 Wf
    % 输出:转速 N,压比 PR
    N = 0.8;  % 初始猜测
    PR = 1.5;
    for i = 1:20
        % 计算压气机出口
        [Wc, Tc_out] = compressor(N, PR);
        % 计算燃烧室
        [Tt_out] = burner(Wc, Wf);
        % 计算涡轮
        [Wt, N_turb] = turbine(Tt_out, PR);
        % 检查功率平衡
        error = N - N_turb;
        if abs(error) < 1e-6
            break;
        end
        % 更新猜测
        N = N + 0.1 * error;
    end
end

个人经验:迭代初值很重要。我一般用上一时刻的稳态值作为初值,这样收敛快。如果从零开始猜,很容易发散。

2.4 动态模型——发动机的“反应速度”

稳态模型只能算平衡点。但发动机实际运行时,油门在动,高度在变,速度在变。这时候就需要动态模型。

动态模型的核心是“转子动力学方程”:

J * dN/dt = 涡轮扭矩 - 压气机扭矩 - 负载扭矩

J是转子的转动惯量。这个方程告诉我们:转速变化,取决于扭矩差。油门推得快,扭矩差大,转速上升就快。

我建议把动态模型写成状态空间形式:

状态变量:x = [N, Tt, Pt]'
输入变量:u = [Wf, A8]'
输出变量:y = [N, Tt, Fn]'

状态方程:
dx/dt = A * x + B * u

输出方程:
y = C * x + D * u

矩阵A、B、C、D怎么来?两种方法:

  • 机理建模:从物理方程推导。精度高,但工作量大。
  • 系统辨识:用实验数据拟合。我更喜欢这种方法,省时间。

关键点:动态模型的采样时间要合适。发动机的响应时间在0.1-1秒量级。采样太快,数据噪声大;采样太慢,会丢失动态信息。我一般用10-50毫秒的采样周期。

2.5 模型验证——别让模型骗了你

模型建好了,得验证。我见过太多人,模型跑得挺顺,一上试车台就露馅。

验证分三步:

  1. 稳态精度:给定油门,对比模型输出和试车数据。误差在2%以内算合格。
  2. 动态响应:给一个阶跃输入,看转速上升时间、超调量是否匹配。我记得有一次,模型响应比实际快了一倍,查了半天,发现是转动惯量给小了。
  3. 极限工况:高空、低速、大油门等边界条件。这些地方最容易出问题。

注意:模型永远只是近似。不要迷信模型。我习惯在控制器里留一些裕度,比如喘振裕度至少留15%。这样即使模型有偏差,发动机也能安全运行。

2.6 小结

这一章我们聊了热力学循环、部件特性、稳态和动态模型。说白了,建模就是给发动机画个像。像画得越准,控制效果越好。

下一章,我们会把这些模型用起来,设计一个简单的PID控制器。到时候你会发现,模型不准,控制器调得再好也没用。

嗯,今天就到这儿。有什么问题,欢迎交流。