3. 连续系统建模:微分方程建模、传递函数模块、状态空间模块

各位好,咱们今天聊聊连续系统建模。说实话,这是整个控制仿真里最基础、也最核心的一块。你想想看,现实世界里的物理系统——电机、弹簧、热力系统——哪个不是连续的?所以这块搞明白了,后面那些离散系统、非线性系统,理解起来就顺了。

我个人习惯把连续系统建模分成三种方式:微分方程传递函数状态空间。这三种方式其实描述的是同一个系统,只是看问题的角度不同。嗯,咱们一个一个说。

3.1 微分方程建模

微分方程是描述系统最原始的方式。说白了,就是用数学语言把物理规律写下来。比如一个简单的RC电路,电容两端的电压和电流的关系,就是一个一阶微分方程。

在Simulink里怎么搭?我一般用Integrator模块和Gain模块组合。举个例子,假设系统是:

dy/dt = -2y + 3u

你只需要一个积分器,输入是-2y + 3u,输出就是y。就这么简单。但要注意,初始条件一定要设对。我在项目中遇到过好几次,仿真结果跟实际对不上,查了半天发现是积分器的初始值没设成零。

注意:微分方程建模时,积分器的初始条件必须与系统的物理初始状态一致。否则仿真一开始就偏了,后面全白搭。

3.2 传递函数模块

传递函数是频域视角。我个人觉得,传递函数最大的好处是直观——你一眼就能看出系统的极点和零点在哪,稳定性怎么样。

Simulink里用Transfer Fcn模块。比如一个二阶系统:

G(s) = 5 / (s² + 2s + 5)

在模块参数里填:

  • Numerator: [5]
  • Denominator: [1 2 5]

搞定。但这里有个坑——分子分母的维数必须匹配。我曾经有个学生,把分子写成[0 5],结果仿真出来一条直线,急得满头汗。其实分母比分子高一阶,系统才是因果的。

小技巧:如果你不确定传递函数对不对,可以先用step命令在MATLAB命令行里跑一下,看看阶跃响应是不是你预期的样子。确认无误再放到Simulink里。

3.3 状态空间模块

状态空间是现代控制理论的基础。它用一组一阶微分方程来描述系统,适合多输入多输出的情况。

Simulink里用State-Space模块。你需要填四个矩阵:A、B、C、D。比如一个简单的质量-弹簧-阻尼系统:

A = [0 1; -k/m -c/m]
B = [0; 1/m]
C = [1 0]
D = 0

这里m是质量,k是弹簧刚度,c是阻尼系数。我建议你先把这些矩阵在MATLAB工作区里定义好,然后在模块里直接填变量名。这样改参数方便,不用每次都打开模块参数对话框。

为什么要用状态空间?因为它能把高阶系统拆成一阶方程组,数值求解更稳定。我在做飞行器仿真时,系统阶数高达十几阶,用传递函数根本没法处理,状态空间就轻松多了。

核心要点:三种建模方式本质等价,但适用场景不同。微分方程适合简单系统教学,传递函数适合单输入单输出频域分析,状态空间适合复杂多变量系统。

3.4 三种方式的对比

我整理了一个表格,方便你对比:

建模方式 适用场景 优点 缺点
微分方程 简单系统、教学演示 物理意义清晰 高阶系统复杂
传递函数 SISO系统、频域分析 直观、易分析稳定性 MIMO系统处理困难
状态空间 MIMO系统、现代控制 适合计算机求解 矩阵维度高时易出错

3.5 知识体系结构图

下面这张图,是我用SVG画的,展示了本章的知识脉络。你可以把它当作一个导航图,随时回来对照。

连续系统建模知识体系 微分方程建模 传递函数模块 状态空间模块 Integrator + Gain 组合 Transfer Fcn 模块 State-Space 模块 初始条件设置 分子分母维数匹配 A/B/C/D矩阵定义 本质等价,视角不同,场景各异

嗯,这张图把三种建模方式的关系和关键点都串起来了。你保存好,以后做项目时拿出来对照,思路会清晰很多。

我的建议:刚开始学的时候,先用微分方程把物理过程想明白,再转成传递函数或状态空间。别一上来就填矩阵,容易出错。我在带项目时,都是先手写微分方程,再逐步转换成其他形式。

好了,连续系统建模就聊到这儿。三种方式各有千秋,关键是根据你的系统特点选对工具。下一章咱们会讲离散系统,到时候你会发现,很多思路是相通的。


专注资料整理