4、小增益定理:从数学到工程实践
小增益定理,这个名字听起来挺唬人。但说白了,它就是一个判断系统稳定性的“尺子”。
我在做嵌入式控制项目时,经常遇到这种情况:明明每个子系统单独测试都没问题,一联调就炸了。后来我才意识到,这就是典型的“互联系统稳定性”问题。小增益定理,就是用来解决这个问题的。
4.1 小增益定理的数学表述
先看数学形式。小增益定理的核心思想很简单:
如果两个子系统级联,只要它们的增益乘积小于1,整个闭环系统就是稳定的。
用数学语言说:
设系统1的增益为 γ₁,系统2的增益为 γ₂
若 γ₁ · γ₂ < 1
则闭环系统是输入-输出稳定的(L₂稳定)
这里的“增益”指的是什么?我习惯把它理解为“放大倍数”。比如一个放大器增益是2,输入1V输出2V。但在更一般的系统中,增益指的是从输入到输出的“能量放大倍数”。
关键点:小增益定理不要求子系统本身是稳定的。它只要求两个子系统互联后的“环路增益”小于1。这一点我当年理解错了,吃了不少亏。
数学上更严谨的表述是:
对于两个稳定的系统 H₁: L₂ → L₂ 和 H₂: L₂ → L₂
若 ||H₁|| · ||H₂|| < 1
则反馈互联系统是 L₂ 稳定的
这里的 ||·|| 表示系统的诱导范数(也就是最大增益)。
4.2 在离散系统中的应用
离散系统里,小增益定理的应用更直接。因为离散系统的采样特性,我们可以在频域里看得更清楚。
举个例子。我在做电机控制时,电流环和速度环是级联的。电流环快,速度环慢。如果两个环的增益设计不当,就会出现低频振荡。
离散系统的处理步骤:
- 将连续系统离散化(用Z变换或双线性变换)
- 计算每个子系统的H∞范数(也就是最大增益)
- 检查乘积是否小于1
具体到代码实现:
% 离散系统小增益检查示例
% 假设两个子系统 G1(z) 和 G2(z)
% 定义离散传递函数
G1 = tf([0.1 0.05], [1 -0.9], 0.01); % 采样周期0.01s
G2 = tf([0.2 0.1], [1 -0.8], 0.01);
% 计算H∞范数
gamma1 = hinfnorm(G1);
gamma2 = hinfnorm(G2);
% 检查小增益条件
if gamma1 * gamma2 < 1
disp('小增益条件满足,系统稳定');
else
disp('警告:小增益条件不满足,可能存在稳定性问题');
end
避坑指南:我曾经在采样周期选择不当的情况下,连续域分析是稳定的,离散化后却不稳定。后来发现是采样频率太低,导致离散模型失真。所以,离散系统的小增益分析,一定要先确认采样频率足够高(至少是系统带宽的10倍)。
4.3 鲁棒稳定性条件
鲁棒稳定性,说白了就是“系统在不确定性面前还能保持稳定”。
小增益定理在鲁棒控制中的典型应用是这样的:
假设我们有一个标称系统 G₀(s),实际系统 G(s) 有不确定性 Δ(s):
G(s) = G₀(s) · (1 + Δ(s))
其中 ||Δ||∞ < γ_Δ
那么,鲁棒稳定的条件是:
||G₀ · K||∞ · γ_Δ < 1
这里 K 是控制器,||G₀·K||∞ 是标称系统的互补灵敏度函数。
嗯,这个条件其实很直观。你想想看:
- G₀·K 表示标称系统的“放大倍数”
- γ_Δ 表示不确定性的“大小”
- 乘积小于1,意味着不确定性再大也翻不了天
重要提醒:小增益定理给出的是充分条件,不是必要条件。也就是说,即使乘积大于1,系统也可能稳定。但作为工程师,我们宁愿保守一点。我在项目中就吃过这个亏——为了追求性能,把增益推到了临界值,结果量产时因为器件差异,部分产品不稳定。
实际工程中,我建议这样用:
- 先做小增益分析,得到保守的稳定边界
- 然后通过仿真和实验,逐步放宽条件
- 留出至少20%的裕量
下面这张图展示了小增益定理在鲁棒稳定性分析中的核心逻辑:
这张图把整个逻辑串起来了。从左到右是正向路径,从右到左是反馈路径。小增益条件就是检查这个环路的总增益。
个人经验:我在做无人机飞控时,姿态环和位置环就是典型的级联系统。姿态环快(100Hz),位置环慢(10Hz)。按照小增益定理,我先把姿态环的增益压到0.8,位置环增益压到0.6,乘积0.48远小于1。飞起来很稳,但响应慢。后来逐步把姿态环增益提到0.95,位置环提到0.8,乘积0.76,依然稳定,响应快了不少。这就是工程上的权衡。
最后总结一下小增益定理的核心要点:
| 方面 | 内容 | 工程意义 |
|---|---|---|
| 数学条件 | γ₁ · γ₂ < 1 | 环路增益小于1 |
| 离散应用 | 注意采样频率 | 离散化后重新计算增益 |
| 鲁棒稳定 | ||G₀K||∞ · γ_Δ < 1 | 考虑不确定性后的裕量 |
| 工程建议 | 留20%裕量 | 避免量产时出问题 |
小增益定理看起来简单,但用好了能解决很多实际问题。我建议你在做级联系统设计时,先拿它算一算,心里有个底。