4. 状态空间方法:状态方程与输出方程、可控性与可观性、极点配置、状态观测器

状态空间方法,说白了就是现代控制理论的基石。我刚入行那会儿,总觉得传递函数挺好用的,干嘛要搞这么复杂?直到我接手一个多变量耦合系统——输入输出之间互相影响,传递函数那一套根本玩不转。嗯,从那以后,我才真正体会到状态空间的威力。

4.1 状态方程与输出方程:系统的“内部画像”

传递函数只描述系统的输入输出关系,像个黑盒子。状态空间方法不一样,它把系统的内部状态也亮出来了。

标准形式长这样:

状态方程:  ẋ = Ax + Bu
输出方程:  y = Cx + Du

这里,x 是状态向量,u 是输入,y 是输出。A 是系统矩阵,B 是输入矩阵,C 是输出矩阵,D 是前馈矩阵(多数情况为0)。

我个人习惯,拿到一个物理系统,先画自由体图,再列微分方程,最后整理成状态空间形式。举个例子,一个简单的弹簧-质量-阻尼系统:

mẍ + bẋ + kx = F

选位移 x 和速度 ẋ 作为状态变量:

x₁ = x
x₂ = ẋ

状态方程:
ẋ₁ = x₂
ẋ₂ = (-k/m)x₁ + (-b/m)x₂ + (1/m)F

矩阵形式:
[ẋ₁]   [0      1   ] [x₁]   [0  ]
[ẋ₂] = [-k/m  -b/m] [x₂] + [1/m] F

输出方程(假设输出是位移):
y = [1 0] [x₁]
          [x₂]
我的小技巧: 状态变量的选择不是唯一的。我建议选那些有物理意义的量,比如位移、速度、电流。调试时方便理解。

4.2 可控性与可观性:系统能不能被“操控”和“看透”

这两个概念,是状态空间法的精髓。你想想看,如果系统不可控,你费再大劲也白搭。如果不可观,你装了再多传感器也白费。

可控性:能不能把系统推到任何状态?

可控性矩阵:

Co = [B  AB  A²B  ...  Aⁿ⁻¹B]

如果这个矩阵满秩(秩等于 n),系统就是可控的。

我在项目中遇到过一个问题:一个双电机驱动系统,明明两个电机都能动,但系统却不可控。查了半天,发现两个电机的力作用在同一条线上,互相抵消了。说白了,就是输入矩阵 B 的列向量线性相关了。

避坑指南: 我曾经以为只要执行器够多,系统就可控。后来发现,执行器的布置位置和方式同样重要。检查可控性矩阵的秩,是设计前的必修课。

可观性:能不能从输出反推状态?

可观性矩阵:

Ob = [C; CA; CA²; ...; CAⁿ⁻¹]

满秩即可观。

为什么重要?因为很多状态变量没法直接测量。比如电机内部的磁链,你没法装个传感器去测。如果系统可观,我就能通过观测器把状态“算”出来。

概念 物理意义 判断方法
可控性 能否通过输入控制所有状态 可控性矩阵满秩
可观性 能否通过输出观测所有状态 可观性矩阵满秩

4.3 极点配置:想要系统多快,你来定

极点配置,就是通过状态反馈,把闭环系统的极点放到你希望的位置上。

控制律:

u = -Kx

闭环系统:

ẋ = (A - BK)x

极点就是矩阵 (A - BK) 的特征值。你想要系统响应快,就把极点往左半平面深处放。想要系统平稳,就避免共轭复极点的虚部太大。

怎么求 K?阿克曼公式是个好工具:

K = [0 ... 0 1] * Co⁻¹ * φ(A)

其中 φ(A) 是期望特征多项式在矩阵 A 上的取值。

核心要点: 极点配置的前提是系统可控。不可控的系统,你配不了极点。另外,极点不能放得太远,否则控制量会非常大,执行器可能饱和。

我记得有一次做飞行器控制,想把响应时间从 2 秒降到 0.5 秒。极点一放远,仿真结果看着挺好。一上实物,舵机直接饱和,系统反而震荡了。嗯,理论和实践之间,总得留点余量。

4.4 状态观测器:看不见的状态,我来“猜”

很多状态没法直接测量。比如倒立摆的角度速度,你装个编码器能测角度,但角速度呢?微分噪声太大。这时候就需要状态观测器。

观测器的思路:用模型来“模拟”系统,再用输出误差来修正。

观测器方程:
ẋ̂ = Aẋ̂ + Bu + L(y - Cẋ̂)

其中 L 是观测器增益矩阵。观测误差 e = x - ẋ̂ 的动态:

ė = (A - LC)e

你看,只要把 (A - LC) 的极点配置在左半平面,误差就会收敛到零。而且,观测器的极点一般要比控制器的极点快 2-5 倍,这样观测器才能“跟上”系统的变化。

我的经验: 观测器增益不能太大。我曾经为了追求快速收敛,把 L 设得很大。结果测量噪声被放大了,观测值反而更不准。这是个权衡——收敛速度和噪声抑制。

分离原理:控制器和观测器可以分开设计

这是状态空间方法里一个很漂亮的性质。你设计控制器时,假设状态已知。设计观测器时,假设控制律已知。两者组合起来,闭环系统的极点就是控制器极点和观测器极点的并集。

说白了,就是“各干各的,互不干扰”。

完整的控制结构:

1. 设计状态反馈增益 K(基于期望的闭环极点)
2. 设计观测器增益 L(基于期望的观测器极点)
3. 实际控制律:u = -Kẋ̂

我建议初学者先拿一个二阶系统练手。比如倒立摆或者直流电机,把可控性、可观性算一遍,再配极点、设计观测器。走完这一套流程,状态空间方法就算入门了。

总结一下: 状态空间方法不是理论游戏。它解决的是实际问题——多变量、耦合、状态不可测。可控性和可观性告诉你“能不能做”,极点配置告诉你“怎么做”,观测器帮你解决“看不到”的问题。这套工具,做控制的人早晚得用上。