3、状态空间表达式(一):连续时间线性时不变系统的标准形式,A、B、C、D矩阵的物理含义
各位工程师朋友,咱们今天来聊聊状态空间表达式。说实话,我刚入行那会儿,看到一堆矩阵就头大。后来在调试一个电机控制系统时,才真正体会到这东西有多实用。你想想看,传统的传递函数只能描述输入输出关系,但系统内部发生了什么?不知道。状态空间法就是来解决这个问题的。
3.1 为什么需要状态空间?
传递函数有个硬伤——它假设系统初始状态为零。但实际工程中,哪有那么多零状态?我记得有一次调试一个液压伺服系统,系统启动时油缸已经处于半伸状态,用传递函数算出来的响应跟实测完全对不上。后来改用状态空间模型,把初始状态作为变量处理,问题就迎刃而解了。
说白了,状态空间法就是给系统拍了一张「内部快照」。它不仅能告诉你输出长什么样,还能告诉你每个储能元件(电容、电感、弹簧、质量块)当前是什么状态。
3.2 标准形式长什么样?
连续时间线性时不变系统的状态空间表达式,标准形式是这样的:
ẋ(t) = A·x(t) + B·u(t)
y(t) = C·x(t) + D·u(t)
这里:
- x(t) —— 状态向量,n维
- u(t) —— 输入向量,m维
- y(t) —— 输出向量,p维
- A —— 系统矩阵,n×n
- B —— 输入矩阵,n×m
- C —— 输出矩阵,p×n
- D —— 直通矩阵,p×m
嗯,这里要注意:第一个方程是状态方程,描述状态如何随时间演化;第二个是输出方程,描述如何从状态和输入得到输出。
3.3 A矩阵:系统的「灵魂」
A矩阵决定了系统的固有特性。它描述了状态变量之间的耦合关系。我在项目中遇到过这样一个案例:一个双质量弹簧系统,A矩阵的非对角线元素就代表了质量块之间的弹性耦合。
A矩阵的特征值,就是系统的极点。说白了,系统稳不稳定,震荡不震荡,全看A矩阵的特征值在复平面上的位置。
重要性质:
- A矩阵的特征值 = 系统的极点
- 所有特征值实部为负 → 系统稳定
- 特征值出现共轭复根 → 系统有振荡
3.4 B矩阵:输入的「通道」
B矩阵告诉你:输入信号通过哪些路径影响状态。每个输入可以影响多个状态,每个状态也可以被多个输入影响。
举个例子:一个直流电机,输入是电枢电压。B矩阵中对应电流状态的元素就是1/L(L是电枢电感),对应转速状态的元素是0。为什么?因为电压直接改变电流,但不直接改变转速——转速是通过电流产生的转矩间接改变的。
我个人习惯:在搭建模型时,先画出系统的能量流动图,B矩阵自然就出来了。每个输入对应一个「能量注入点」。
3.5 C矩阵:状态的「观测窗」
C矩阵决定了你能从系统中「看到」什么。不是所有状态都能直接测量,C矩阵就是你的传感器配置方案。
我曾经设计过一个温度控制系统,三个加热区,但只有两个温度传感器。C矩阵就是2×3的矩阵,它告诉控制器:你只能看到部分状态。这就是为什么后来我特别强调传感器布局的重要性——C矩阵的秩决定了系统的可观测性。
| 传感器配置 | C矩阵形式 | 可观测性 |
|---|---|---|
| 全状态测量 | 单位矩阵 | 完全可观测 |
| 部分测量 | 稀疏矩阵 | 需验证 |
| 单输出 | 行向量 | 通常不完全 |
3.6 D矩阵:直接的「馈通」
D矩阵描述输入到输出的直接通道。大多数实际系统中D=0,因为输入通常不会瞬间影响输出——总得经过状态变化吧?
但也有例外。比如一个比例放大器,输入电压直接决定输出电压,没有动态过程。这时候D矩阵就是非零的。嗯,这种情况在纯静态系统中比较常见。
避坑指南:我曾经在建模一个快速响应系统时忘了加D矩阵,结果仿真结果跟实测差了10%。后来发现系统有一个前馈路径,输入直接耦合到了输出。所以建模时一定要仔细分析信号流图,别漏掉直通路径。
3.7 一个完整的例子
咱们来看一个RLC电路。状态变量选电容电压v_c和电感电流i_L:
状态方程:
dv_c/dt = (1/C)·i_L
di_L/dt = -(1/L)·v_c - (R/L)·i_L + (1/L)·u
矩阵形式:
[ẋ₁] [0 1/C ] [x₁] [0 ]
[ẋ₂] = [-1/L -R/L ] [x₂] + [1/L]·u
输出方程(取电容电压为输出):
y = [1 0]·[x₁; x₂] + 0·u
你看:
- A矩阵的(1,2)元素1/C表示电感电流对电容电压的影响
- A矩阵的(2,1)元素-1/L表示电容电压对电感电流的反作用
- B矩阵的(2,1)元素1/L表示输入电压直接驱动电感电流
- C矩阵是[1 0],表示我们只观测电容电压
每个元素都有明确的物理意义。这就是状态空间法的魅力——你写的不是抽象的数学公式,而是系统的物理本质。
3.8 小结
记住一句话:A是系统本身,B是输入接口,C是输出接口,D是直通路径。这四个矩阵完整描述了线性时不变系统的全部行为。
下一章我们会讨论如何从物理系统推导出这些矩阵,以及如何从状态空间表达式转换到传递函数。到时候我会分享一个我在飞行器控制项目中用到的实用技巧——怎么快速验证你推导的A矩阵是否正确。