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,便于观察自由振动衰减过程。
三、常用模块库速览
Simulink 的模块库数量庞大,但联合仿真中高频使用的集中在以下几类:
| 库名称 | 典型模块 | 用途 |
|---|---|---|
| Sources | Step、Sine Wave、Constant | 提供激励信号 |
| Sinks | Scope、To Workspace | 观察与导出仿真结果 |
| Continuous | Integrator、Transfer Fcn | 连续系统数学描述 |
| Simscape / Foundation | Mass、Spring、Damper、Translational Reference | 机械平移物理建模 |
| Simscape / Utilities | Solver 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 后释放,初速度为零。目标是观察其自由振动位移响应。
建模步骤如下:
- 新建 Blank Model,从 Simscape > Foundation > Mechanical > Translational Elements 中拖入
Mass、Spring、Damper,以及Translational Reference(作为固定参考点)。 - 从 Utilities 中拖入
Solver Configuration,将其连接到物理网络中的任意一个节点。 - 连接物理端口:Spring 与 Damper 并联,一端接 Translational Reference,另一端接 Mass 的一个端口;Mass 的另一端口接 Translational Reference。注意 Mass 模块需要设置质量参数为
1,Spring 设置k = 10,Damper 设置c = 0.5。 - 在 Mass 模块的位移输出端口处,接入
PS-Simulink Converter,再连接到Scope,用于观察位移x(t)。 - 设置 Mass 的初始位移:在 Mass 模块参数中勾选
Initial position,设为0.1;初始速度保持默认0。 - 打开 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 物理网络能否正确连接、求解器配置是否合理、以及信号能否顺利从物理域转换到 Simulink 域并可视化。后续加入 PID 控制器时,只需在 PS-Simulink Converter 之后接入控制器,再将控制输出通过 Simulink-PS Converter 送回 Mass 模块的力输入端口即可,物理网络本身无需改动。这种“物理对象与控制器分离”的结构,正是联合仿真最核心的工程价值。