2. 数学基础回顾:状态空间表达式、能控性与能观性的直观理解

好,咱们正式开始之前,先把工具箱里的老伙计们擦亮一下。

极点配置设计法,说白了就是一套“你想让系统怎么动,我就把极点放哪儿”的技术。但要想玩转它,有三个基础概念必须得吃透:状态空间表达式能控性能观性

我当年刚入行时,觉得这些就是纯数学推导,枯燥得很。直到有一次调一个电机伺服系统,死活调不出响应速度,后来才发现是系统本身某个状态根本“使唤不动”——这就是能控性出了问题。嗯,从那以后我再也不敢小看这些概念了。

2.1 状态空间表达式:系统的“内部画像”

传递函数描述的是系统的“输入→输出”关系,像个黑盒子。而状态空间表达式,是把黑盒子拆开,看看里面到底有几个储能元件、它们之间怎么互相影响。

标准形式长这样:

ẋ(t) = A x(t) + B u(t)
y(t) = C x(t) + D u(t)

我来拆解一下:

  • x(t) —— 状态向量。代表系统内部所有“记忆”元件当前的数值。比如电容电压、电感电流、弹簧位移、飞轮转速。
  • ẋ(t) —— 状态的变化率。也就是下一瞬间状态会怎么变。
  • u(t) —— 输入向量。你给系统施加的控制量。
  • y(t) —— 输出向量。你能测量到的信号。
  • A 矩阵 —— 系统矩阵。描述状态之间如何互相耦合。这是系统的“内禀特性”。
  • B 矩阵 —— 输入矩阵。描述输入信号能影响到哪些状态。
  • C 矩阵 —— 输出矩阵。描述哪些状态能被你“看见”。
  • D 矩阵 —— 直通矩阵。输入直接跳到输出,大多数物理系统里 D=0。
我的小习惯:拿到一个实际系统,我第一步就是列写它的状态方程。先不管控制,先把“这玩意儿有几个自由度、储能元件在哪”搞清楚。A矩阵的特征值,就是系统的固有频率和阻尼比——这比看传递函数直观多了。

2.2 能控性:你能否“指哪打哪”?

能控性,问的是一个很实际的问题:通过调整输入 u(t),你能不能把系统的所有状态,从任意初始值,拽到任意你想要的目标值?

你想想看,如果某个状态变量根本不受输入影响,那你想控制它就是痴人说梦。比如一个双容水箱系统,如果进水阀只能控制第一个水箱,第二个水箱只能靠重力流下去,那你想让第二个水箱的水位瞬间跳变——做不到,因为输入不直接作用在它上面。

判断能控性的数学工具是能控性矩阵

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

如果这个矩阵满秩(秩等于 n,系统阶数),那系统就是完全能控的。

核心结论:只有完全能控的系统,才能通过状态反馈任意配置极点。如果系统有不能控的状态,那部分极点你是动不了的——它们就像“钉子户”,你只能接受。

我在项目中遇到过这样一个坑:设计一个四轴飞行器的姿态控制器,按照简化模型算出来能控性矩阵满秩,信心满满地做了极点配置。结果试飞时发现偏航轴响应特别慢。查了半天,原来是实际执行器的饱和特性导致在某些工况下,偏航通道的有效控制量几乎为零——数学上能控,工程上“实际不能控”。所以,能控性分析不仅要看矩阵秩,还要考虑执行器的物理限制

2.3 能观性:你能否“洞悉全局”?

能观性,问的是另一个问题:通过一段时间内测量输出 y(t) 和输入 u(t),你能不能反推出系统内部所有状态的初始值?

说白了,就是你的传感器够不够“聪明”。

举个例子,一个倒立摆系统,你只测量了小车的位移,但不知道摆杆的角度——那你就无法知道系统的完整状态。这种情况下,即使你能控制,你也无法实现状态反馈,因为你根本不知道状态值是多少。

判断能观性的工具是能观性矩阵

Qo = [C  CA  CA²  ...  CAⁿ⁻¹]ᵀ

如果这个矩阵满秩,系统就是完全能观的。

注意:能控和能观是两个独立的概念。一个系统可以能控但不能观(比如你有力气推,但看不见状态),也可以能观但不能控(比如你看着它出问题,但没法干预)。极点配置设计法要求系统同时满足能控性——因为我们需要通过状态反馈来移动极点。

2.4 三者关系:一张图说清楚

下面这张 SVG 图,是我自己梳理这三者关系时画的。它帮你把“状态空间→能控性→能观性→极点配置”这条线串起来。

状态空间、能控性、能观性与极点配置的关系 状态空间表达式 ẋ = Ax + Bu, y = Cx + Du 提取 A, B, C 矩阵 能控性 Qc = [B AB ... Aⁿ⁻¹B] 输入能否影响所有状态? 能观性 Qo = [C CA ... CAⁿ⁻¹]ᵀ 输出能否反推所有状态? 必须同时满足能控且能观? 极点配置设计法 通过状态反馈 u = -Kx 将闭环极点配置到期望位置

2.5 一个简单的例子:RC电路

光说理论不过瘾,咱们看个具体例子。一个 RC 电路,输入是电压源 u,输出是电容两端电压 y,状态变量就是电容电压 x。

状态方程:

ẋ = (-1/RC) x + (1/RC) u
y = x

所以:

  • A = -1/RC, B = 1/RC, C = 1, D = 0
  • 能控性矩阵 Qc = [B] = [1/RC],秩为1,满秩 → 能控
  • 能观性矩阵 Qo = [C] = [1],秩为1,满秩 → 能观

这个系统既可控又可观,所以我们可以通过状态反馈(其实就是比例反馈 u = -Kx)来改变系统的极点(即时间常数 τ = RC)。

避坑指南:我曾经在设计一个高阶滤波器时,直接套用极点配置公式,结果仿真发现系统震荡不止。后来一查,原来是系统有重极点,导致能控性矩阵虽然满秩,但数值病态严重——矩阵条件数极大。所以,满秩只是必要条件,数值稳定性同样重要。建议在实际计算前,先对系统做一下平衡变换(balancing transformation)。

2.6 小结:记住这三句话

  • 状态空间表达式:系统的“解剖图”,告诉你内部结构。
  • 能控性:你能否“指挥”所有状态?——决定了极点配置是否可行。
  • 能观性:你能否“看到”所有状态?——决定了状态反馈是否需要观测器。

嗯,基础就这些。有了这些工具,下一节我们就可以正式进入极点配置的核心算法了。到时候你会发现,只要系统能控,配置极点就像在复平面上“挪棋子”一样——你放哪儿,系统就怎么动。


公众号:蓝海资料掘金营,微信deep3321