3. Simulink模型搭建:创建新模型、添加模块、连接信号线、模型参数设置

好,咱们今天直接上手干活。Simulink 模型搭建,说白了就是搭积木。你手里有各种功能模块,把它们用信号线连起来,就构成了一个完整的控制系统仿真环境。我刚开始用 Simulink 的时候,总觉得这玩意儿跟画电路图似的,后来发现比那简单多了。

3.1 创建新模型——从空白画布开始

打开 MATLAB,在命令行敲 simulink,或者直接点工具栏上的 Simulink 图标。这时候会弹出一个库浏览器(Library Browser),别被里面密密麻麻的模块吓到,咱们先干正事。

点击左上角的「新建模型」按钮(一个空白文档图标),或者用快捷键 Ctrl+N。嗯,我个人习惯用快捷键,因为快。这时候你会看到一张空白的画布,这就是咱们的仿真战场。

小技巧: 我建议一开始就把模型文件保存好。按 Ctrl+S,起个有意义的名字,比如 pid_controller_demo.slx。别用「untitled」这种名字,不然过两天你自己都找不到哪个是哪个。

3.2 添加模块——从库中拖拽

Simulink 的模块库分门别类放好了。咱们做控制算法仿真,最常用的几个库你得记住:

  • Sources(信号源):提供输入信号,比如阶跃信号、正弦波、时钟信号
  • Sinks(信号接收器):显示或保存输出,比如示波器、To Workspace
  • Continuous(连续系统):积分器、传递函数、状态空间模型
  • Math Operations(数学运算):加法器、乘法器、增益模块
  • Discrete(离散系统):离散传递函数、单位延迟

添加模块的方法很简单:从库浏览器里找到你想要的模块,按住鼠标左键拖到画布上就行。举个例子,咱们要搭一个 PID 控制器,需要这些模块:

1. 从 Sources 拖一个 Step(阶跃信号)
2. 从 Continuous 拖一个 Integrator(积分器)
3. 从 Math Operations 拖三个 Gain(增益模块)
4. 从 Math Operations 拖一个 Add(加法器)
5. 从 Sinks 拖一个 Scope(示波器)

我在项目中遇到过一个问题:模块太多,画布上乱糟糟的。后来我养成了一个习惯——按信号流向从左到右摆放模块。输入在左,输出在右,中间是控制器和被控对象。这样一眼就能看出信号怎么走的。

3.3 连接信号线——把积木串起来

模块放好了,接下来就是连线。把鼠标移到模块的输出端口(一个小箭头),光标会变成十字形。按住左键,拖到另一个模块的输入端口,松开鼠标,一条信号线就生成了。

这里有几个要点:

  • 单线连接:一个输出端口可以连到多个输入端口,但一个输入端口只能接收一个信号
  • 分支线:按住 Ctrl 键,在已有信号线上点击并拖动,可以拉出分支
  • 信号线命名:双击信号线,可以给它起个名字。比如 errorcontrol_u,方便调试时识别
注意: 我曾经因为信号线没连好,仿真结果怎么都不对。检查了半天,发现有个增益模块的输入端口是红色的——表示没连上。记住:端口变红就是没连好,变黑才是正常。

连线的时候,Simulink 会自动帮你走线。如果你不满意,可以按住 Shift 键拖动信号线,手动调整路径。我个人习惯让信号线走直角,看起来整洁。

3.4 模型参数设置——让仿真跑起来

模型搭好了,但参数还没设。双击每个模块,可以设置它的参数。咱们以 PID 控制器为例:

模块 参数设置 说明
Step(阶跃信号) Step time = 1, Final value = 1 1秒时从0跳变到1
Gain1(比例增益) Gain = 10 Kp = 10
Gain2(积分增益) Gain = 5 Ki = 5
Gain3(微分增益) Gain = 0.1 Kd = 0.1
Integrator(积分器) Initial condition = 0 初始状态为0
Add(加法器) List of signs = +-+ 正负正,对应P、I、D三路

设置完模块参数,还得设置仿真参数。点击菜单栏的「Simulation」→「Model Configuration Parameters」,或者按 Ctrl+E。这里有几个关键项:

  • Start time:仿真开始时间,一般设为 0
  • Stop time:仿真结束时间,比如 10 秒
  • Solver(求解器):连续系统用 ode45,离散系统用 fixed-step discrete
  • Step size(步长):固定步长求解器需要设置,比如 0.01 秒
核心经验: 求解器的选择直接影响仿真精度和速度。连续系统用变步长求解器(如 ode45),精度高但慢;离散系统用固定步长求解器,速度快但要注意步长不能太大,否则会丢失动态特性。我一般先设步长 0.01,跑一遍看看结果,再根据情况调整。

3.5 知识体系总览

说了这么多,咱们用一张图把整个流程串起来。你想想看,从创建模型到跑出结果,其实就这几步:

Simulink 模型搭建流程 创建新模型 Ctrl+N 或新建按钮 添加模块 从库浏览器拖拽 连接信号线 端口拖拽连线 参数设置 双击模块 各步骤关键点 ① 创建模型:保存为 .slx 文件,命名规范 ② 添加模块:Sources → Sinks → Continuous → Math Operations ③ 连接信号线:端口变红=未连接,变黑=正常 ④ 参数设置:求解器选择(连续/离散)、步长设置、模块参数

这张图把咱们刚才讲的四个步骤串起来了。你照着这个流程走,基本上不会出大问题。但说实话,真正用的时候,你可能会遇到一些细节问题。比如信号线颜色不对、仿真报错、结果不收敛等等。别慌,这些都是正常的。

避坑指南: 我曾经在仿真一个电机控制系统时,怎么调参数结果都不对。后来发现是积分器的初始条件设错了——电机启动时已经有转速了,但我设成了0。记住:初始条件一定要跟实际物理系统匹配,不然仿真结果就是扯淡。

好了,模型搭建这部分就讲到这里。你打开 Simulink,照着上面的步骤试一遍。先搭一个简单的 PID 控制器,跑个阶跃响应看看。嗯,动手才是最好的学习方式。

一句话总结: 创建模型 → 拖模块 → 连信号线 → 设参数,四步走,Simulink 仿真就能跑起来。别怕犯错,多试几次就熟了。

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