经典控制理论基础¶
控制理论的核心问题:如何让一个系统的输出 稳定、快速、准确 地跟踪你想要的目标值。
一、为什么需要控制理论¶
假设你要让一个电机转到 90°:
- 开环(没有反馈):给一个固定电压,希望它转到 90°——但负载变了、温度变了、摩擦变了,实际角度可能是 85° 或 95°。
- 闭环(有反馈):装一个编码器实时读取角度,不到 90° 就继续给电压,超过了就反向修正。
控制理论就是研究如何设计这个"修正策略",使得系统又快又稳又准。
二、系统建模¶
2.1 微分方程到传递函数¶
任何物理系统都可以用微分方程描述。例如一个弹簧-阻尼系统:
对两边做拉普拉斯变换(假设零初始条件),将微分方程变为代数方程:
传递函数就是输出与输入的比值:
为什么用拉普拉斯变换?
拉普拉斯变换把微分方程变成了多项式除法,极大简化了分析。\(s\) 域中,微分变乘法、积分变除法,系统的串联变成传递函数相乘。
2.2 零点与极点¶
传递函数可以写成分子/分母的因式分解形式:
| 概念 | 定义 | 物理意义 |
|---|---|---|
| 零点 \(z_i\) | 分子 = 0 的根 | 某些频率的输入被"消除" |
| 极点 \(p_i\) | 分母 = 0 的根 | 决定系统的自然响应模式 |
| 增益 \(K\) | 常数因子 | 整体放大倍数 |
极点决定稳定性
- 极点全部在 \(s\) 平面左半平面(实部 < 0)→ 系统稳定
- 有任何极点在右半平面(实部 > 0)→ 系统不稳定(输出发散)
- 极点在虚轴上 → 系统临界稳定(等幅振荡)
2.3 典型系统响应¶
一阶系统¶
阶跃响应为指数趋近,时间常数 \(\tau\) 决定响应速度。\(t = 3\tau\) 时到达 95%,\(t = 5\tau\) 时到达 99%。
二阶系统¶
| 参数 | 名称 | 影响 |
|---|---|---|
| \(\omega_n\) | 自然频率 | 响应快慢 |
| \(\zeta\) | 阻尼比 | 振荡程度 |
| 阻尼比范围 | 响应类型 | 描述 |
|---|---|---|
| \(\zeta = 0\) | 无阻尼 | 等幅振荡,永不衰减 |
| \(0 < \zeta < 1\) | 欠阻尼 | 有振荡但逐渐衰减(最常见) |
| \(\zeta = 1\) | 临界阻尼 | 最快无振荡到达终值 |
| \(\zeta > 1\) | 过阻尼 | 无振荡但很慢 |
工程常用区间
大多数控制系统设计目标是 \(\zeta \in [0.4, 0.8]\),兼顾响应速度和超调量。\(\zeta = 0.707\) 是经典的"最优"阻尼比(超调约 4.3%)。
三、稳定性分析¶
3.1 闭环稳定性¶
对于闭环系统,闭环传递函数为:
稳定性由闭环极点(即 \(1 + C(s)G(s)H(s) = 0\) 的根)决定。
3.2 劳斯判据(Routh Criterion)¶
不需要求解特征方程的根,直接从特征多项式系数构造 Routh 表,通过第一列符号变化次数判断右半平面极点个数。
Routh 表构造
特征方程 \(s^3 + 2s^2 + 3s + 4 = 0\),Routh 表:
| \(s^3\) | 1 | 3 |
|---|---|---|
| \(s^2\) | 2 | 4 |
| \(s^1\) | \(\frac{2 \times 3 - 1 \times 4}{2} = 1\) | 0 |
| \(s^0\) | 4 |
第一列 [1, 2, 1, 4] 无符号变化 → 无右半平面极点 → 稳定 ✅
3.3 频域分析:Bode 图¶
Bode 图是控制工程师最常用的工具之一,用频率作为横轴:
- 幅值图:\(20\log_{10}|G(j\omega)|\),纵轴单位 dB
- 相位图:\(\angle G(j\omega)\),纵轴单位度
两个关键频率:
| 指标 | 定义 | 物理意义 |
|---|---|---|
| 增益裕度 \(G_m\) | 相位 = −180° 时,幅值距 0 dB 的距离 | 系统还能放大多少倍才不稳定 |
| 相位裕度 \(\phi_m\) | 幅值 = 0 dB 时,相位距 −180° 的距离 | 系统还能延迟多少相位才不稳定 |
经验设计指标
- 增益裕度 \(G_m > 6\) dB
- 相位裕度 \(\phi_m \in [30°, 60°]\)
这两个指标越大,系统鲁棒性越好(但响应可能变慢)。
四、稳态误差¶
即使系统稳定了,输出也不一定能精确等于目标值。稳态误差 \(e_{ss}\) 就是系统稳定后剩余的误差。
系统类型¶
开环传递函数在原点的极点个数决定了系统类型:
\(N\) 为原点极点个数,称为 \(N\) 型系统。
| 输入信号 | 0 型系统 | 1 型系统 | 2 型系统 |
|---|---|---|---|
| 阶跃 \(\frac{1}{s}\) | \(\frac{1}{1+K_p}\) | 0 | 0 |
| 斜坡 \(\frac{1}{s^2}\) | \(\infty\) | \(\frac{1}{K_v}\) | 0 |
| 加速度 \(\frac{1}{s^3}\) | \(\infty\) | \(\infty\) | \(\frac{1}{K_a}\) |
直觉理解
- 系统中每多一个积分环节(原点极点),就能"消除"一种更高阶输入的稳态误差
- 这就是 PID 中 I(积分) 项消除稳态误差的数学本质
五、状态空间表示¶
除了传递函数(单输入单输出的"黑盒"描述),还有一种更通用的建模方法——状态空间。
| 符号 | 含义 | 维度 |
|---|---|---|
| \(\mathbf{x}\) | 状态向量 | \(n \times 1\) |
| \(\mathbf{u}\) | 输入向量 | \(m \times 1\) |
| \(\mathbf{y}\) | 输出向量 | \(p \times 1\) |
| \(A\) | 系统矩阵 | \(n \times n\) |
| \(B\) | 输入矩阵 | \(n \times m\) |
| \(C\) | 输出矩阵 | \(p \times n\) |
| \(D\) | 前馈矩阵 | \(p \times m\) |
传递函数 vs 状态空间
| 传递函数 | 状态空间 | |
|---|---|---|
| 适用范围 | 线性时不变、SISO | 线性/非线性、MIMO |
| 信息量 | 仅输入-输出关系 | 包含内部状态 |
| 可控可观 | 不方便判断 | 直接判断 |
| 计算机实现 | 不方便 | 矩阵运算友好 |
六、小结¶
graph TB
MODEL["系统建模"] --> TF["传递函数 G(s)"]
MODEL --> SS["状态空间 (A,B,C,D)"]
TF --> ZP["零极点分析"]
ZP --> STAB["稳定性判据"]
STAB --> ROUTH["Routh 判据"]
STAB --> BODE["Bode 图<br>增益/相位裕度"]
TF --> ERR["稳态误差分析"]
ERR --> TYPE["系统类型<br>0/1/2 型"]
STAB --> DESIGN["控制器设计"]
DESIGN --> PID["PID 控制器"]
经典控制理论给了我们分析和设计控制系统的数学工具。接下来就要进入最实用的控制器——PID。