3. 状态空间表达式:状态方程与输出方程的标准形式
好,咱们今天聊聊状态空间表达式。说实话,我刚入行那会儿,看到A、B、C、D这四个矩阵,第一反应是——这玩意儿跟传递函数有啥区别?后来在调试一个四轴机械臂的时候,才真正体会到它的威力。
状态空间法,说白了就是用一阶微分方程组来描述系统。你想想看,传递函数只能描述单输入单输出,但实际工程里,哪个系统不是多输入多输出的?我当年做的一个伺服系统,光传感器就有位置、速度、电流三个反馈,用传递函数写出来,那叫一个乱。换成状态空间,清爽多了。
3.1 状态方程的标准形式
状态方程长这样:
ẋ(t) = A·x(t) + B·u(t)
这里:
- x(t) 是状态向量,代表系统内部的状态变量
- ẋ(t) 是状态的一阶导数
- u(t) 是输入向量
- A 是系统矩阵
- B 是输入矩阵
嗯,这里要注意:状态变量的选择不是唯一的。我见过不少新手在这个地方卡住。举个例子,一个简单的弹簧-质量-阻尼系统,你可以选位移和速度作为状态变量,也可以选能量相关的量。只要满足线性无关,怎么选都行。但选得好不好,直接影响后续控制器的设计难度。
3.2 输出方程的标准形式
输出方程是:
y(t) = C·x(t) + D·u(t)
其中:
- y(t) 是输出向量
- C 是输出矩阵
- D 是直接传递矩阵
输出方程干的事,就是从状态变量里提取你关心的量。比如你控制一个电机,状态变量是位置和速度,但你可能只关心位置输出。那C矩阵就是 [1 0],把位置挑出来。
D矩阵呢?它表示输入直接传到输出的路径。大多数物理系统里,D是零矩阵。为什么?因为输入通常不会瞬间影响输出,中间有惯性。但有些系统不一样,比如你设计一个前馈补偿器,D就可能非零。
3.3 A矩阵的物理含义
A矩阵,也叫系统矩阵。它描述的是系统内部状态之间的耦合关系。
我举个例子。一个二阶系统:
ẋ1 = x2
ẋ2 = -k·x1 - b·x2 + u
写成矩阵形式:
[ẋ1] [0 1 ] [x1] [0]
[ẋ2] = [-k -b] [x2] + [1]·u
A矩阵就是 [[0, 1], [-k, -b]]。你看,第一行 [0 1] 表示ẋ1只跟x2有关,这符合位移的导数是速度。第二行 [-k -b] 表示ẋ2跟x1和x2都有关,这对应加速度由弹簧力和阻尼力决定。
3.4 B矩阵的物理含义
B矩阵是输入矩阵。它描述的是输入u如何影响各个状态变量的导数。
还是上面那个例子,B矩阵是 [0; 1]。意思是输入u只直接影响ẋ2(加速度),不直接影响ẋ1(速度)。这很合理——你给电机加电压,直接产生的是加速度,不是速度。
我遇到过一个问题:某个系统的B矩阵设计得不好,导致某个状态变量完全不受控。比如B矩阵某一行全是0,那对应的状态变量就没办法通过输入直接调节。这种情况,要么重新设计执行器布局,要么考虑用其他状态变量间接控制。
3.5 C矩阵的物理含义
C矩阵是输出矩阵。它从状态变量中提取你想要的输出。
比如你有一个三阶系统,状态变量是 [位置; 速度; 电流]。如果你只关心位置输出,C就是 [1 0 0]。如果你同时关心位置和速度,C就是 [1 0 0; 0 1 0]。
这里有个坑:C矩阵的选取决定了系统的可观性。如果C矩阵选得不好,有些状态变量在输出里完全看不到,那你就没法通过输出反馈来估计这些状态。我做过一个项目,温度控制系统,状态变量包括炉温和壁温,但传感器只能测炉温。C矩阵就是 [1 0],壁温不可观测。后来我不得不加了一个观测器来估计壁温。
3.6 D矩阵的物理含义
D矩阵是直接传递矩阵。它表示输入直接出现在输出中,不经过状态变量的动态过程。
大多数工程系统里,D = 0。为什么?因为物理系统通常有惯性,输入不会瞬间传到输出。但有些情况例外:
- 纯比例环节(比如放大器)
- 前馈补偿路径
- 某些数字控制系统
我记得有一次做电机电流环,D矩阵非零。因为电流采样有延迟补偿,输入电压会直接通过前馈路径影响电流输出。这种情况下,D矩阵的取值要特别小心,搞不好会引起代数环。
3.7 四个矩阵的总结
| 矩阵 | 名称 | 维度 | 物理含义 |
|---|---|---|---|
| A | 系统矩阵 | n×n | 状态之间的耦合关系,决定系统固有动态 |
| B | 输入矩阵 | n×m | 输入如何影响状态变化率 |
| C | 输出矩阵 | p×n | 从状态中提取输出 |
| D | 直接传递矩阵 | p×m | 输入直接到输出的路径 |
(n是状态数,m是输入数,p是输出数)
好了,这四个矩阵搞清楚了,状态空间模型你就掌握了八成。剩下的就是怎么用它们做分析和设计了。下一章咱们聊聊怎么从物理系统推导出这些矩阵,那才是真正考验功力的地方。