4. 连续系统仿真:传递函数模块、状态空间模块、积分器模块、仿真时间设置

各位同学,咱们今天聊聊连续系统仿真。说实话,这块内容是我当年自学控制时最头疼的部分之一。课本上全是拉普拉斯变换、状态方程推导,但一打开仿真软件,面对那些模块,反而不知道从哪下手。

其实没那么复杂。你想想看,连续系统仿真说白了就三件事:用什么模型描述系统用什么模块搭建模型仿真跑多久。今天咱们就把这三件事掰开揉碎了讲清楚。

4.1 传递函数模块:最直观的建模方式

传递函数,我个人习惯叫它「黑箱模型」。你不需要知道里面长什么样,只要知道输入输出关系就行。

比如一个简单的低通滤波器:

G(s) = 1 / (s + 1)

在仿真软件里,你只需要填两个数组:分子系数和分母系数。分子是 [1],分母是 [1, 1]。就这么简单。

关键点:系数要按 s 的降幂排列。比如 s² + 2s + 3,对应 [1, 2, 3]。我见过不少新手把顺序搞反,结果仿真波形完全不对。

我在项目中遇到过一件事。有一次搭建电机控制系统,传递函数里有个零点在右半平面。仿真时波形一直发散,我查了半天才发现是分子系数写错了。嗯,从那以后我每次填系数都会手算一遍极点位置。

4.2 状态空间模块:内部结构一目了然

传递函数虽然方便,但有些场景不够用。比如你要观察系统内部某个状态变量的变化,或者系统是多输入多输出的,这时候就得用状态空间模型。

状态空间的标准形式:

dx/dt = A·x + B·u
y = C·x + D·u

说白了,A 矩阵描述系统内部状态怎么互相影响,B 矩阵描述输入怎么影响状态,C 矩阵描述哪些状态能观测到,D 矩阵描述输入直接到输出的通路。

矩阵 含义 常见维度
A 系统矩阵(状态演化) n×n
B 输入矩阵 n×m
C 输出矩阵 p×n
D 前馈矩阵 p×m

我的小技巧:刚开始用状态空间时,可以先从单输入单输出系统练手。把传递函数转换成可控标准型,A 矩阵就是友矩阵,B 矩阵就是 [0,0,...,1]ᵀ。这样不容易出错。

我曾经在做一个倒立摆项目时,用了状态空间模型。当时需要观测摆杆角速度,但传感器只能测角度。通过状态空间模型,我直接提取了第二个状态变量作为角速度输出,省去了加微分器的麻烦。

4.3 积分器模块:仿真的核心引擎

你可能会问:传递函数和状态空间模块内部是怎么工作的?

答案就是积分器。所有连续系统仿真,底层都是靠积分器在跑。微分方程的解,本质上就是积分过程。

常用的积分方法:

  • 欧拉法:最简单,但精度低。步长大了容易发散。
  • 龙格-库塔法(RK4):工业界最常用。精度高,稳定性好。
  • 隐式积分:对付刚性系统用的,比如电路仿真。

注意:积分步长不是越小越好。步长太小,仿真时间会成倍增加,而且数值误差累积反而可能变大。我一般先试 0.01 秒,看波形稳定再调小。

我记得有一次仿真一个二阶振荡系统,用欧拉法步长设了 0.1 秒,结果波形直接飞了。换成 RK4 后,同样的步长,波形稳得像教科书上的图。所以,别在积分器上省钱。

4.4 仿真时间设置:别让仿真白跑

仿真时间设置看似简单,其实坑不少。我见过有人仿真时间设了 1000 秒,结果系统 5 秒就稳态了,后面 995 秒全是浪费。

怎么设置合理的仿真时间?

  • 先估算系统的时间常数:一阶系统看 τ,二阶系统看 ωₙ 和 ζ。一般仿真到 5 倍时间常数就够了。
  • 关注瞬态过程:如果系统有振荡,要仿真到振荡衰减到 2% 以内。
  • 考虑输入信号:阶跃信号、正弦信号、脉冲信号,不同输入需要的仿真时长不同。

经验公式:对于大多数控制系统,仿真时间设为系统上升时间的 10 倍左右,基本能覆盖完整的动态过程。

我曾经做一个液压伺服系统仿真,系统时间常数只有 0.02 秒,但我设了 10 秒仿真时间。结果数据文件巨大,后处理时电脑卡了半小时。后来我改成 0.5 秒,该看的信息一点没少。

知识体系总览

下面这张图,是我自己总结的连续系统仿真核心逻辑。你看一眼,心里就有谱了。

连续系统仿真知识体系 传递函数模块 G(s) = 分子/分母 状态空间模块 dx/dt = Ax + Bu 积分器模块 欧拉法 / RK4 仿真时间设置:步长 × 步数 = 总时长 传递函数要点 • 分子分母降幂排列 • 检查极点位置 • 适合单入单出系统 状态空间要点 • 矩阵维度要匹配 • 可观测内部状态 • 适合多入多出系统 积分器要点 • RK4 是首选 • 步长不是越小越好 • 刚性系统用隐式

这张图把今天的内容串起来了。你看,传递函数和状态空间是两种建模方式,积分器是底层引擎,仿真时间设置是最后的参数配置。四者缺一不可。

实战建议:刚开始做仿真时,先用传递函数模块搭一个简单的一阶系统,设好仿真时间,跑通后再换成状态空间模型。这样一步步来,不容易被细节绕晕。

好了,今天的内容就到这里。记住我说的:模型选对、参数填对、时间设对,仿真就成功了一大半。剩下的就是调试和优化,那是另一门学问了。


公众号:蓝海资料掘金营,微信deep3321