四、连续系统建模:积分模块、传递函数、状态空间、微分方程建模与仿真案例
连续系统是Simulink仿真的核心领域,其本质是使用微分方程或传递函数描述物理系统的动态行为。本章将围绕连续系统建模的四种核心手段——积分模块、传递函数、状态空间和微分方程——展开系统讲解。我们将从数学原理出发,结合Simulink模块的具体操作,通过一个完整的机械振动案例贯穿全章,帮助您建立从物理模型到仿真模型的完整映射能力。
上图展示了连续系统建模的四种方法及其内在联系。物理系统首先被抽象为微分方程,然后可以转化为传递函数或状态空间表示,而积分模块则是Simulink中实现这些数学运算的基本单元。下面我们将逐一深入探讨每种方法的具体实现。
4.1 核心原理:连续系统建模的数学基础
连续系统建模的数学基础是常微分方程(ODE)。一个典型的单输入单输出(SISO)连续系统可以用n阶常系数线性微分方程描述:
a_n · y^(n) + a_(n-1) · y^(n-1) + ... + a_1 · y' + a_0 · y = b_m · u^(m) + ... + b_0 · u
其中,y是系统输出,u是系统输入,a_i和b_i是常系数。在Simulink中,我们通常不直接输入这个方程,而是通过以下三种等价形式之一进行建模:
- 积分模块法:将最高阶导数单独解出,通过串联积分器逐步得到各阶导数,最终得到输出。这种方法最直观,适合手算推导和教学演示。
- 传递函数法:对微分方程做拉普拉斯变换,得到输出与输入的比值G(s) = Y(s)/U(s)。传递函数以s的多项式比值形式呈现,适合频域分析和系统互联。
- 状态空间法:将n阶微分方程转化为一阶微分方程组,用矩阵形式表示。状态空间法适合多输入多输出(MIMO)系统、非线性系统以及现代控制理论分析。
这三种方法在数学上是完全等价的,但在Simulink中的实现方式、数值求解效率和可扩展性上存在差异。理解它们的等价性是灵活建模的关键。
4.2 积分模块建模:从微分方程到框图
积分模块(Integrator)是Simulink中最基础的连续时间动态元件。其数学功能是实现对输入信号的积分:y(t) = ∫u(t)dt + y(0)。在建模中,我们利用积分模块的串联来“还原”微分方程中的各阶导数。
4.2.1 操作流程:以二阶系统为例
假设我们要建模一个标准的二阶系统:
x'' + 2ζω_n · x' + ω_n² · x = ω_n² · u
其中,ζ为阻尼比,ω_n为自然频率。建模步骤如下:
- 解出最高阶导数:x'' = ω_n² · u - 2ζω_n · x' - ω_n² · x
- 搭建积分链:从右向左,第一个积分器输出x',第二个积分器输出x。
- 反馈连接:将x'和x分别乘以系数-2ζω_n和-ω_n²,与输入ω_n²·u相加,作为第一个积分器的输入。
- 设置初始条件:双击积分器,在“Initial condition”中设置x'(0)和x(0)。
这种方法的优势在于:每个积分器的输出都有明确的物理意义(位移、速度、加速度),便于观察中间变量。同时,它允许在积分器前直接插入非线性函数,非常适合非线性系统建模。
4.3 传递函数与状态空间模块
Simulink的Transfer Fcn模块和State-Space模块提供了更简洁的建模入口,尤其适合线性时不变(LTI)系统。
4.3.1 传递函数模块的参数设置
双击Transfer Fcn模块,需要填写两个向量:
- Numerator coefficients:分子多项式系数,按s的降幂排列。例如,对于G(s) = (s+2)/(s²+3s+5),应输入[1 2]。
- Denominator coefficients:分母多项式系数,同样按降幂排列,输入[1 3 5]。
注意:分母阶次必须大于等于分子阶次(即系统必须因果)。如果分子阶次过高,需要先进行多项式除法拆分。
4.3.2 状态空间模块的矩阵定义
State-Space模块要求输入四个矩阵A、B、C、D,对应状态方程:
ẋ = Ax + Bu
y = Cx + Du
对于前述二阶系统,若选择状态变量x₁=x,x₂=x',则:
A = [0 1; -ω_n² -2ζω_n], B = [0; ω_n²], C = [1 0], D = 0
在模块参数对话框中,以矩阵形式输入即可。状态空间法的最大优势是:当系统阶数高、输入输出多时,代码量不增加,且便于与现代控制理论(如LQR、卡尔曼滤波)衔接。
| 建模方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 积分模块 | 教学演示、非线性系统、需要观察中间变量 | 物理意义清晰,可插入非线性环节 | 高阶系统连线复杂 |
| 传递函数 | 频域设计、系统互联、经典控制 | 参数直观,适合频域分析 | 仅适用于线性系统,无法直接观察内部状态 |
| 状态空间 | MIMO系统、现代控制、数值优化 | 矩阵统一表达,适合计算机求解 | 矩阵推导对初学者有门槛 |
4.4 连续系统仿真案例:汽车悬挂系统建模与响应分析
下面我们通过一个完整的案例,将上述三种方法串联起来。考虑一个简化的1/4汽车悬挂模型,其物理方程为:
m·ÿ + c·(ẏ - ż) + k·(y - z) = 0
其中,m=300kg为簧载质量,c=1000N·s/m为阻尼系数,k=20000N/m为弹簧刚度,y为车身位移,z为路面输入位移。我们关心车身位移y对路面凸起z的响应。
4.4.1 建模与仿真步骤
- 建立微分方程:将方程改写为ÿ = (c·ż + k·z - c·ẏ - k·y)/m。这里路面输入z是已知信号,我们将其设为阶跃信号(模拟减速带)。
- 方法一(积分模块):搭建两个积分器,第一个输出ẏ,第二个输出y。输入为(c·ż + k·z - c·ẏ - k·y)/m。需要额外对ż求导,可使用Derivative模块,但注意该模块对噪声敏感,建议改用滤波器或直接使用传递函数法。
- 方法二(传递函数):对路面输入z,系统的传递函数为Y(s)/Z(s) = (c·s + k)/(m·s² + c·s + k)。在Simulink中,用Step模块作为z,连接到Transfer Fcn模块,参数设置为分子[1000 20000],分母[300 1000 20000]。
- 方法三(状态空间):选择状态变量x₁=y,x₂=ẏ,则A=[0 1; -k/m -c/m],B=[0; k/m],C=[1 0],D=0。注意这里将z视为输入u。
4.4.2 仿真结果与对比
设置仿真时间5秒,求解器选择ode45(默认)。将三种方法的输出同时接入Scope模块,可以看到三条曲线完全重合,验证了三种建模方式的等价性。进一步分析:
- 系统超调量约为15%,峰值时间约0.35秒,稳态误差为0(因为系统是0型系统,对阶跃输入无稳态误差)。
- 若将阻尼c减小到200N·s/m,系统将出现明显振荡,超调量增大至40%以上,说明阻尼对悬挂舒适性的关键作用。
- 若将路面输入改为正弦波(模拟起伏路面),使用Sine Wave模块,可以观察不同频率下的幅值衰减特性,这对应了频域分析中的幅频特性。
4.5 常见误区与总结复盘
在连续系统建模中,初学者常犯以下错误,需要特别注意:
- 误区一:忽略初始条件。积分模块和状态空间模块的初始条件默认均为0,但实际系统往往有非零初始状态。务必在模块参数中显式设置,否则仿真结果可能完全错误。
- 误区二:代数环问题。当模型中存在直接馈通(如D矩阵非零)且构成闭环时,Simulink会报代数环错误。解决方法是在回路中插入一个Memory模块或小延迟,但更推荐重新设计模型结构。
- 误区三:求解器选择不当。对于刚性系统(如含有快速和慢速动态),ode45可能计算缓慢或精度不足,应改用ode15s或ode23t。判断方法:如果仿真步长极小但误差仍大,或仿真时间异常长,应考虑刚性求解器。
- 误区四:传递函数分子分母阶次错误。Simulink要求分母阶次≥分子阶次,否则会报错。如果出现这种情况,需要先进行多项式除法,将非因果部分分离。
总结本章,连续系统建模的核心是理解微分方程、传递函数、状态空间三种数学描述的等价性,并根据实际需求选择最合适的Simulink实现方式。积分模块适合教学和非线性系统,传递函数适合频域分析和简单线性系统,状态空间适合复杂系统和现代控制设计。通过本章的悬挂系统案例,您应该能够独立完成从物理方程到仿真模型的完整转换,并具备基本的仿真结果分析能力。