2. 线性定常系统的能控性定义:状态能控与输出能控的区别与联系
能控性这个概念,说白了就是问一个问题:你手里的控制量,到底能不能把系统的状态或者输出,拽到你想要的地方去?
我刚入行做飞行器控制的时候,遇到过一件挺尴尬的事。设计了一个控制器,仿真跑得飞起,结果一上硬件,某个状态变量死活调不回来。后来一查,那个状态根本不受控制输入的影响——这就是典型的能控性问题。从那以后,我设计任何系统之前,第一件事就是先算能控性矩阵。
这一节,我们就来掰扯清楚两个概念:状态能控和输出能控。它们长得很像,但本质完全不同。
2.1 状态能控性:你到底能不能控制每一个内部变量?
先看定义。对于一个线性定常系统:
ẋ = Ax + Bu
y = Cx + Du
状态能控性指的是:是否存在一个控制输入 u(t),能在有限时间内,把系统的任意初始状态 x(0) 转移到任意期望的终端状态 x(t₁)。
嗯,这里要注意:它关心的是状态变量,不是输出。状态变量是系统内部的、看不见摸不着的东西。比如一个电机,它的状态可能是电流和转速,但你只能测到转速输出。状态能控性问的是:你能不能通过调节电压(输入),让电流和转速都按你的想法走?
判断方法很简单——算能控性矩阵:
Qc = [B AB A²B ... Aⁿ⁻¹B]
如果这个矩阵满秩(秩等于 n,系统阶数),那系统就是状态完全能控的。
核心要点:状态能控性关注的是系统内部所有状态变量的可操控性。它是最根本的能控概念。
2.2 输出能控性:我只关心你输出的结果
输出能控性就接地气多了。它问的是:你能不能通过控制输入 u(t),在有限时间内,让系统的输出 y(t) 从任意初始值到达任意期望值?
你想想看,很多时候我们并不关心系统内部的状态到底怎么样。比如一个温度控制系统,我只关心最终温度(输出)能不能达到设定值,至于加热器内部的温度分布怎么样,我不在乎。
输出能控性的判断矩阵是:
Qoc = [CB CAB CA²B ... CAⁿ⁻¹B D]
如果这个矩阵的秩等于输出变量的个数 p,那系统就是输出能控的。
我个人习惯:做工程应用时,我通常先检查输出能控性。因为大多数控制任务最终关心的是输出。但如果做状态反馈或者观测器设计,那就必须检查状态能控性了。
2.3 两者的区别与联系:一张表说清楚
| 对比项 | 状态能控性 | 输出能控性 |
|---|---|---|
| 控制对象 | 内部状态变量 x | 输出变量 y |
| 判断矩阵 | Qc = [B AB ... Aⁿ⁻¹B] | Qoc = [CB CAB ... CAⁿ⁻¹B D] |
| 满秩条件 | rank(Qc) = n | rank(Qoc) = p |
| 工程意义 | 能否设计状态反馈 | 能否实现输出跟踪 |
| 依赖关系 | 状态能控 ≠ 输出能控 | 输出能控 ≠ 状态能控 |
这里有个坑,我曾经踩过:状态能控的系统,输出不一定能控;反过来,输出能控的系统,状态也不一定能控。
为什么会这样?举个例子你就明白了。
假设一个系统有两个状态变量,但输出只取了其中一个。如果那个被取出的状态是能控的,但另一个状态不能控——那输出能控性矩阵可能是满秩的(因为输出能控),但状态能控性矩阵不满秩(因为有一个状态不能控)。
反过来,如果两个状态都能控,但输出是它们的某种线性组合,且这个组合恰好抵消了控制输入的影响——那状态能控,但输出可能不能控。
避坑指南:我曾经在一个电机控制项目里,只验证了输出能控性就上了状态反馈控制。结果发现某个内部状态发散,系统直接炸了。后来才意识到——状态反馈要求所有状态都能控,光输出能控是不够的。
2.4 知识体系框架图
下面这张图,帮你理清状态能控与输出能控的关系:
2.5 一个简单的数值例子
来看个具体的系统,加深理解:
A = [0 1; B = [0; C = [1 0]; D = 0
0 0] 1]
这个系统是个积分器串联结构。状态 x₁ 是位置,x₂ 是速度,输入 u 是加速度。
先算状态能控性:
Qc = [B AB] = [0 1; 1 0]
rank(Qc) = 2 = n → 状态完全能控
再算输出能控性:
Qoc = [CB CAB D] = [0 1 0]
rank(Qoc) = 1 = p → 输出完全能控
这个例子里,状态和输出都能控。但如果我们把 C 改成 [0 1],输出只测速度:
Qoc = [CB CAB D] = [1 0 0]
rank(Qoc) = 1 = p → 输出仍然能控
状态能控性不变,还是满秩。但如果把 B 改成 [1; 0],输入只作用在位置上:
Qc = [B AB] = [1 0; 0 0]
rank(Qc) = 1 ≠ 2 → 状态不能控
但输出能控性呢?
Qoc = [CB CAB D] = [1 0 0]
rank(Qoc) = 1 = p → 输出仍然能控
看到了吗?状态不能控,但输出能控。这就是两者的本质区别。
总结一下:状态能控性更"底层",它决定了你能不能对系统内部动手术。输出能控性更"实用",它决定了你能不能完成控制任务。做工程时,我建议两个都算一遍,别偷懒。
公众号:蓝海资料掘金营,微信deep3321