3. 灵敏度与系统鲁棒性

好,咱们今天聊点硬核的。灵敏度分析和系统鲁棒性,说白了就是研究一个事:你的控制器设计好了,但实际用的元器件参数跟设计值不一样,系统还能不能稳住?性能会不会变差?

我刚开始做工程那几年,吃过不少这个亏。仿真跑得漂漂亮亮,一到现场就拉胯。后来才明白,不是仿真骗人,是我没把参数摄动当回事。

3.1 灵敏度与参数摄动的关系

先问个问题:一个电阻标称 10kΩ,实际是多少?可能是 9.8kΩ,也可能是 10.2kΩ。这就是参数摄动。系统里的每个元件都有公差,温度一变,参数还会漂。

灵敏度函数,就是衡量系统某个性能指标对参数变化的敏感程度。数学上定义为:

S_P^T = (∂T/T) / (∂P/P) = (∂T/∂P) × (P/T)

其中 T 是传递函数,P 是系统参数。这个值越大,说明参数一抖,系统性能就跟着剧烈抖动,鲁棒性就差。

核心理解:灵敏度不是绝对值,是相对变化率。它告诉你参数变化 1%,系统特性会变化百分之几。

举个例子。一个简单的低通滤波器,截止频率由 RC 决定。R 和 C 各有 ±5% 的误差,那截止频率的误差范围是多少?用灵敏度公式一算就清楚。

参数 标称值 摄动范围 灵敏度 S 对截止频率的影响
R 10kΩ ±5% -1 ±5%
C 1μF ±5% -1 ±5%
R 和 C 同时摄动 — — -2 ±10%

你看,两个参数同时摄动,影响是叠加的。这就是为什么我建议做设计时,一定要留足余量。我曾经有个项目,滤波器设计得刚刚好,结果量产时温度一上来,参数漂了,截止频率直接偏出规格。后来不得不重新选型,多花了两周时间。

3.2 鲁棒性指标

鲁棒性,就是系统抵抗参数摄动的能力。怎么量化?有几个常用指标:

  • 增益裕度 (Gain Margin, GM):系统还能承受多大的增益变化而不失稳。
  • 相位裕度 (Phase Margin, PM):系统还能承受多大的相位延迟而不失稳。
  • 模裕度 (Modulus Margin, MM):更现代的指标,衡量系统到不稳定边界的最短距离。

我个人习惯,设计时至少保证:

  • 增益裕度 ≥ 6dB
  • 相位裕度 ≥ 45°
  • 模裕度 ≥ 0.5

经验之谈:相位裕度 45° 是底线,60° 以上比较舒服。但也不是越大越好,裕度太大,系统响应会变慢。这是个权衡。

你想想看,为什么要有这些裕度?因为实际系统里,参数摄动是不可避免的。电容会老化,电感会饱和,运放的增益会随温度变化。没有裕度,系统就像走钢丝,随时可能掉下来。

3.3 灵敏度函数与补灵敏度函数

这是本章的重头戏。在反馈控制系统中,有两个函数至关重要:

  • 灵敏度函数 S(s):S = 1 / (1 + L),其中 L 是开环传递函数。
  • 补灵敏度函数 T(s):T = L / (1 + L)。

注意,S + T = 1。这是个恒等式,意味着你不可能同时让 S 和 T 都很小。

为什么重要?因为:

  • S(s) 衡量系统对参数摄动的抑制能力。S 越小,系统对参数变化越不敏感,鲁棒性越好。
  • T(s) 衡量系统对参考输入的跟踪能力。T 越接近 1,跟踪性能越好。

矛盾来了:你想让 S 小,就得让 L 大;但 L 大了,T 就接近 1,没问题。可问题是,L 不能无限大,因为实际系统有带宽限制,高频段 L 必须滚降。

避坑指南:我曾经在一个伺服系统里,为了追求跟踪精度,把低频增益做得特别高。结果 S 确实小了,但 T 在高频段出现了尖峰,系统对测量噪声特别敏感。最后电机嗡嗡响,位置还抖。这就是典型的 S 和 T 没平衡好。

所以,设计补偿器时,你要同时看 S 和 T 的幅频特性:

  • 低频段:S 要小(抑制参数摄动),T 接近 1(跟踪参考)。
  • 高频段:T 要小(抑制测量噪声),S 接近 1(无所谓了)。
  • 中频段:过渡要平滑,避免 S 和 T 出现尖峰。

下面这张图,是我做项目时常用的分析框架:

灵敏度函数与补灵敏度函数分析框架 反馈控制系统 灵敏度函数 S(s) S = 1 / (1 + L) 抑制参数摄动 低频段 S 越小越好 补灵敏度函数 T(s) T = L / (1 + L) 跟踪参考输入 高频段 T 越小越好 约束:S + T = 1,不可兼得

这张图把 S 和 T 的关系、各自的作用、以及设计约束都串起来了。你设计补偿器时,脑子里要有这张图。

3.4 实战中的权衡

说了这么多理论,落到实际怎么干?我总结了几条经验:

  1. 先看带宽:确定系统的控制带宽,这是基础。
  2. 再看 S 和 T 的峰值:S 的峰值一般不超过 6dB,T 的峰值不超过 3dB。超过这个值,系统对参数摄动和噪声就会很敏感。
  3. 检查模裕度:模裕度是 S 的倒数峰值,MM ≥ 0.5 是比较安全的。
  4. 迭代调整:如果 S 太大,增加低频增益;如果 T 在高频有尖峰,加滤波器或降低高频增益。

小技巧:用 MATLAB 的 sigma 函数画 S 和 T 的幅频曲线,一目了然。我每次设计完补偿器,第一件事就是看这两条曲线。

嗯,这里要注意一点:不要只看标称情况。我习惯把参数摄动 ±20% 都跑一遍,看看 S 和 T 的变化范围。如果某个摄动下 S 的峰值超过了 10dB,那这个设计就不够鲁棒,得改。

最后说一句,灵敏度分析和鲁棒性设计,不是一次性的工作。它应该贯穿整个设计流程。从选型、建模、仿真到调试,每一步都要问自己:参数变了怎么办?