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都有关,这对应加速度由弹簧力和阻尼力决定。

关键点: A矩阵的特征值,就是系统的极点。我当年做振动抑制时,就是通过调整A矩阵的特征值来改变系统响应速度。说白了,A矩阵决定了系统的固有特性。

3.4 B矩阵的物理含义

B矩阵是输入矩阵。它描述的是输入u如何影响各个状态变量的导数。

还是上面那个例子,B矩阵是 [0; 1]。意思是输入u只直接影响ẋ2(加速度),不直接影响ẋ1(速度)。这很合理——你给电机加电压,直接产生的是加速度,不是速度。

我遇到过一个问题:某个系统的B矩阵设计得不好,导致某个状态变量完全不受控。比如B矩阵某一行全是0,那对应的状态变量就没办法通过输入直接调节。这种情况,要么重新设计执行器布局,要么考虑用其他状态变量间接控制。

避坑指南: 我曾经在一个多输入系统中,B矩阵的列向量线性相关。结果两个执行器在打架,一个推一个拉,效率极低。检查B矩阵的秩,确保输入能覆盖所有需要控制的状态。

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是输出数)

好了,这四个矩阵搞清楚了,状态空间模型你就掌握了八成。剩下的就是怎么用它们做分析和设计了。下一章咱们聊聊怎么从物理系统推导出这些矩阵,那才是真正考验功力的地方。

个人经验: 刚开始学的时候,别急着背公式。拿一个简单的RC电路或者弹簧系统,手写推导一遍A、B、C、D矩阵。我当年就是这么干的,推了三四个系统后,感觉一下子就通了。