2. Simulink环境与物理建模基础

在上一节中,我们已经明确了物理建模与控制器联合仿真的整体思路。本节要解决的是“动手之前必须熟悉的三件事”:Simulink 的界面与工程组织方式、求解器的选择与配置、以及常用模块库的定位。在此基础上,我们将用 Simscape 搭建一个最简单的机械平移系统——质量-弹簧-阻尼系统,作为后续控制器设计的被控对象。

一、Simulink 界面与工程组织

打开 Simulink 后,最常用的入口是 Simulink Start Page 与 Blank Model。一个模型文件(.slx)由若干部分组成:模型画布(用于放置模块与连线)、Library Browser(模块库浏览器)、Model Explorer(模型资源管理器,用于查看工作区变量、信号、参数)、以及工具条上的仿真控制按钮(Run、Step Forward、Stop)。

工程组织上,建议养成三个习惯:第一,把模型参数(如质量 m、刚度 k、阻尼 c)统一放在 MATLAB 基础工作区或模型工作区中,而不是直接写死在模块对话框里,这样便于批量修改和脚本化仿真;第二,用 Model Configuration Parameters(快捷键 Ctrl+E)集中管理求解器、步长、误差容限等设置;第三,为模型添加信号标签(Signal Label)和注释,使连线含义一目了然。

二、求解器配置:定步长与变步长

Simulink 求解器分为定步长(Fixed-step)和变步长(Variable-step)两大类。选择依据是系统动态特性与仿真目的:

  • 变步长求解器(如 ode45、ode23t、ode15s)会根据误差自动调整步长,适合大多数连续系统仿真,尤其是刚性系统推荐 ode15s 或 ode23t。
  • 定步长求解器(如 ode4、ode1)步长固定,适合需要生成固定采样周期代码、或与实时硬件在环(HIL)配合的场景。

对于本节的质量-弹簧-阻尼系统,推荐使用变步长 ode45,相对误差容限 RelTol 设为 1e-4,绝对误差容限 AbsTol 设为 1e-6。若后续加入控制器后出现代数环或刚性增强,可切换到 ode23t。仿真时间建议设为 0~10 s,便于观察自由振动衰减过程。

提示:Simscape 模型通常包含物理网络,求解器需要同时处理微分方程与代数约束。若出现“Solver encountered an error”或仿真极慢,优先检查是否误用了不适合刚性系统的求解器,或模型中存在未连接的物理端口。

三、常用模块库速览

Simulink 的模块库数量庞大,但联合仿真中高频使用的集中在以下几类:

库名称典型模块用途
SourcesStep、Sine Wave、Constant提供激励信号
SinksScope、To Workspace观察与导出仿真结果
ContinuousIntegrator、Transfer Fcn连续系统数学描述
Simscape / FoundationMass、Spring、Damper、Translational Reference机械平移物理建模
Simscape / UtilitiesSolver Configuration、PS-Simulink Converter物理网络与 Simulink 信号接口

其中 Solver Configuration 模块是 Simscape 模型的必需组件,它负责为物理网络指定求解器参数;PS-Simulink Converter 与 Simulink-PS Converter 则负责物理信号与 Simulink 信号之间的双向转换。

四、用 Simscape 搭建质量-弹簧-阻尼系统

下面以一个具体示例展开。设质量块 m = 1 kg,弹簧刚度 k = 10 N/m,阻尼系数 c = 0.5 N·s/m。初始条件:质量块从平衡位置被拉伸 x0 = 0.1 m 后释放,初速度为零。目标是观察其自由振动位移响应。

建模步骤如下:

  1. 新建 Blank Model,从 Simscape > Foundation > Mechanical > Translational Elements 中拖入 Mass、Spring、Damper,以及 Translational Reference(作为固定参考点)。
  2. 从 Utilities 中拖入 Solver Configuration,将其连接到物理网络中的任意一个节点。
  3. 连接物理端口:Spring 与 Damper 并联,一端接 Translational Reference,另一端接 Mass 的一个端口;Mass 的另一端口接 Translational Reference。注意 Mass 模块需要设置质量参数为 1,Spring 设置 k = 10,Damper 设置 c = 0.5。
  4. 在 Mass 模块的位移输出端口处,接入 PS-Simulink Converter,再连接到 Scope,用于观察位移 x(t)。
  5. 设置 Mass 的初始位移:在 Mass 模块参数中勾选 Initial position,设为 0.1;初始速度保持默认 0。
  6. 打开 Model Configuration Parameters,求解器选择 ode45,仿真时间设为 0~10 s,点击 Run。

仿真结束后,Scope 中应看到一条按指数衰减的正弦曲线。理论上的无阻尼角频率为 ωn = sqrt(k/m) = sqrt(10) ≈ 3.16 rad/s,阻尼比 ζ = c/(2*sqrt(k*m)) = 0.5/(2*3.16) ≈ 0.079,属于欠阻尼系统,因此响应呈现衰减振荡。若 Scope 中曲线不衰减或发散,应检查阻尼系数是否被误设为 0,或求解器步长是否过大导致数值不稳定。

质量-弹簧-阻尼系统 Simscape 建模与信号链 Simscape 物理网络(Translational) 参考点 k = 10 N/m c = 0.5 N·s/m Mass m = 1 kg x₀ = 0.1 m, v₀ = 0 Solver Config PS-Simulink Converter 位移 x(t) Scope 求解器配置要点 • 求解器类型:变步长 ode45(若刚性增强可切换 ode23t) • 相对误差容限 RelTol = 1e-4,绝对误差容限 AbsTol = 1e-6 • 仿真时间:0 ~ 10 s;预期响应:ωn ≈ 3.16 rad/s,ζ ≈ 0.079,欠阻尼衰减振荡

通过这个最小系统,我们同时验证了三件事:Simscape 物理网络能否正确连接、求解器配置是否合理、以及信号能否顺利从物理域转换到 Simulink 域并可视化。后续加入 PID 控制器时,只需在 PS-Simulink Converter 之后接入控制器,再将控制输出通过 Simulink-PS Converter 送回 Mass 模块的力输入端口即可,物理网络本身无需改动。这种“物理对象与控制器分离”的结构,正是联合仿真最核心的工程价值。