4. 数学模型建立:微分方程建模、传递函数建模、状态空间建模、模型转换与化简
各位工程师朋友,咱们今天聊聊控制系统设计的“地基”——数学模型。
说实话,我见过不少年轻工程师,一上来就调PID参数,结果系统要么震荡要么响应慢。为什么?因为没把被控对象的“脾气”摸透。数学模型,就是用来描述这个“脾气”的。
我个人习惯,拿到一个物理系统,先问自己三个问题:
它怎么动?(微分方程)
输入输出关系如何?(传递函数)
内部状态怎么变?(状态空间)
这三个问题,对应着三种建模方法。咱们一个一个来。
4.1 微分方程建模:最原始的物理描述
微分方程是建模的起点。说白了,就是用数学语言写出物理定律。
举个例子,一个简单的RC电路:
输入电压:u(t)
输出电压:y(t)
电阻:R
电容:C
根据基尔霍夫定律:
i(t) = C * dy(t)/dt
u(t) = R * i(t) + y(t)
联立得:
RC * dy(t)/dt + y(t) = u(t)
嗯,这就是一阶线性微分方程。我在项目中遇到过,很多机械系统(比如弹簧-质量-阻尼系统)也是这个形式,只是变量换成了位移和力。
微分方程建模的步骤,我总结为:
- 确定系统边界:输入是什么?输出是什么?
- 列出物理定律:牛顿定律、基尔霍夫定律、热力学定律等。
- 消去中间变量:只保留输入、输出和系统参数。
- 整理成标准形式:输出项在左边,输入项在右边。
4.2 传递函数建模:从时域到频域
微分方程在时域里解起来很麻烦。拉普拉斯变换一出手,微分方程就变成了代数方程。这就是传递函数。
对上面的RC电路做拉普拉斯变换(假设初始条件为零):
RC * s * Y(s) + Y(s) = U(s)
传递函数 G(s) = Y(s)/U(s) = 1/(RC*s + 1)
你看,多简洁!一个分式就搞定了。
传递函数建模的核心思想:
- 零初始条件:这是前提。如果系统有初始储能,需要单独处理。
- 线性时不变:传递函数只适用于LTI系统。非线性系统需要先线性化。
- 输入输出关系:它只描述外部特性,不关心内部状态。
我记得有一次做温度控制,被控对象是个大烤箱。用阶跃响应法测传递函数,结果发现时间常数特别大。我当时就意识到,这玩意儿用PID很难调,得用前馈+反馈的组合策略。
4.3 状态空间建模:看透系统的内部
传递函数有个缺点:它把系统内部状态全藏起来了。状态空间法不一样,它把系统拆成一阶微分方程组,每个状态变量都有明确的物理意义。
还是那个RC电路,我们选电容电压为状态变量 x(t) = y(t):
状态方程:dx(t)/dt = -1/(RC) * x(t) + 1/(RC) * u(t)
输出方程:y(t) = x(t)
写成矩阵形式:
ẋ = A*x + B*u
y = C*x + D*u
其中:
A = [-1/(RC)]
B = [1/(RC)]
C = [1]
D = [0]
你想想看,如果系统有多个状态(比如电机的位置和速度),状态空间法就特别清晰。每个状态方程对应一个一阶微分,物理意义一目了然。
状态空间建模的步骤:
- 选择状态变量:通常是储能元件的物理量(电容电压、电感电流、弹簧位移、质量速度)。
- 列写状态方程:每个状态变量的导数,用状态变量和输入表示。
- 列写输出方程:输出用状态变量和输入表示。
- 写成矩阵形式:A、B、C、D矩阵。
4.4 模型转换与化简:三种语言互译
三种模型各有用途。微分方程适合物理推导,传递函数适合频域分析,状态空间适合现代控制理论。实际工作中,经常需要在它们之间切换。
我整理了一个转换对照表:
| 从 | 到 | 方法 | 注意事项 |
|---|---|---|---|
| 微分方程 | 传递函数 | 拉普拉斯变换(零初始条件) | 注意初始条件是否为0 |
| 传递函数 | 状态空间 | 可控标准型/可观标准型 | 需要保证系统能控能观 |
| 状态空间 | 传递函数 | G(s) = C(sI-A)^{-1}B + D | 矩阵求逆可能很复杂 |
| 状态空间 | 微分方程 | 消去状态变量,只保留输入输出 | 高阶系统手工计算繁琐 |
举个例子,从传递函数到状态空间(可控标准型):
假设传递函数:
G(s) = (b1*s + b0) / (s^2 + a1*s + a0)
可控标准型状态空间:
A = [0 1]
[-a0 -a1]
B = [0]
[1]
C = [b0 b1]
D = [0]
嗯,这里要注意:可控标准型不是唯一的。还有可观标准型、约旦标准型等。选哪个?取决于你后续要做什么控制。做极点配置,可控标准型最方便;做状态观测器,可观标准型更顺手。
4.5 模型化简:去掉不必要的细节
实际物理系统往往很复杂。高阶微分方程、多变量耦合、非线性项...如果全保留,模型会庞大得无法使用。这时候需要化简。
常用的化简方法:
- 降阶:忽略小时间常数。比如电机电气时间常数远小于机械时间常数,可以忽略电气动态。
- 线性化:在工作点附近用泰勒展开,忽略高阶项。比如磁悬浮系统,在平衡点附近线性化。
- 解耦:如果状态变量之间耦合很弱,可以近似为独立系统。
- 集总参数:把分布参数系统(如长管道、传输线)近似为集总参数。
我记得做无人机飞控时,六自由度模型有12个状态变量。如果全用上,控制器设计极其复杂。后来我把横侧向和纵向运动解耦,分别设计控制器,效果一样好,但设计工作量减少了一大半。
最后说一句:数学模型不是真理,而是对现实的近似。好的工程师,知道在什么时候用什么模型,也知道模型的局限性在哪里。这需要经验积累,也需要对物理本质的深刻理解。
下一章,咱们聊聊如何从这些模型出发,设计出真正能用的控制器。到时候见。