3. Simulink基本操作:创建新模型、添加模块、连接模块、运行仿真、查看仿真结果

好,咱们今天来点真格的。前面聊了那么多概念,现在终于要上手了。Simulink的基本操作,说白了就是五步走:建模型、加模块、连上线、跑仿真、看结果。这五步我做了十几年,闭着眼睛都能走通,但刚开始学的时候也栽过不少跟头。

我个人习惯,每次打开Simulink之前,先在脑子里过一遍:我要解决什么问题?输入是什么?输出是什么?想清楚了再动手。别急着点鼠标,磨刀不误砍柴工。

3.1 创建新模型

创建新模型,方法有好几种。我常用的就两种:

  • 从MATLAB命令窗口:直接输入 simulink 回车,弹出库浏览器,然后点那个空白文档图标(New Model)。
  • 更快的办法:在命令窗口输入 new_system('my_model'),模型就建好了。我一般用这个,省得点来点去。

嗯,这里要注意:模型名字别用中文,也别用空格。我见过有人用“我的模型.slx”,结果后面路径引用各种报错。老老实实用英文加下划线,比如 pid_controller_demo,省心。

小技巧: 建好模型后,第一时间按 Ctrl+S 保存。别问我为什么强调这个——我曾经连续写了两个小时,一个断电全没了。从那以后,我养成了“每加一个模块就保存一次”的强迫症。

3.2 添加模块

添加模块,就是去库浏览器里“搬砖”。Simulink的库分门别类,放得挺清楚。常用的几个:

  • Sources(信源):比如阶跃信号、正弦波、时钟信号。仿真总得有个输入吧?
  • Sinks(信宿):比如示波器(Scope)、To Workspace。看结果用的。
  • Continuous(连续系统):积分器、传递函数、状态空间模型。搞控制的人天天跟它们打交道。
  • Math Operations(数学运算):加法、乘法、增益。最基础的运算模块。

怎么加?拖拽就行。从库浏览器里找到模块,按住鼠标左键拖到模型窗口里。我刚开始学的时候,总觉得拖过去对不齐,后来发现按住 Shift 键拖动,模块会自动对齐网格线。这个小细节,能让你画出来的模型图整洁不少。

核心要点: 添加模块时,双击模块可以设置参数。比如增益模块的增益值、传递函数的分子分母系数。别用默认值跑仿真,那通常不是你要的结果。

3.3 连接模块

连接模块,就是把模块的输入输出端口用线连起来。操作很简单:

  1. 鼠标移到模块的输出端口(小三角),光标会变成十字形。
  2. 按住左键,拖到另一个模块的输入端口。
  3. 松开鼠标,线就画好了。

但这里有个坑——信号线不能交叉。你想想看,两根线交叉了,Simulink不知道哪根是哪根。我见过有人画得跟蜘蛛网似的,仿真一跑就报错。解决办法是:用分支线。按住 Ctrl 键,在已有的线上点一下,就能拉出一条分支。

还有,连接的时候要注意数据类型。比如你从Constant模块(输出double)连到Display模块(显示double),没问题。但如果你连到Logic模块(需要boolean),就会报数据类型不匹配。我当年调试一个模型,花了两个小时才发现是数据类型的问题。从那以后,我每次连线都会看一眼端口的数据类型提示。

避坑指南: 我曾经在连接模块时,不小心把线连到了模块的“使能端口”上,结果仿真结果完全不对。后来才发现,Simulink里有些模块有多个端口,比如使能端口、触发端口,它们的位置和普通输入端口不一样。连接前,先确认端口类型。

3.4 运行仿真

模型搭好了,线也连好了,接下来就是跑仿真。点一下工具栏上的绿色三角按钮,或者按 Ctrl+T,仿真就开始了。

但别急着点。跑仿真之前,先检查几个参数:

参数 默认值 我常用的值 说明
Start time 0.0 0.0 一般不改
Stop time 10.0 根据系统动态调整 时间太短看不到稳态,太长浪费时间
Solver(求解器) auto ode45(连续系统) 离散系统用离散求解器
Max step size auto 1e-3 或更小 步长太大,仿真结果可能不准确

我个人习惯,先设一个较短的仿真时间,比如1秒,跑一下看看波形对不对。如果没问题,再拉长时间。这样能快速发现低级错误,比如模块参数设错了、线连反了之类的。

调试技巧: 仿真跑不动或者结果很奇怪?试试把求解器改成 ode23t 或者 ode15s。有些刚性系统(比如有快速和慢速动态同时存在),用ode45会算得很慢甚至发散。我做过一个电力电子仿真,用ode45跑了半小时没出结果,换成ode15s后,十秒搞定。

3.5 查看仿真结果

仿真跑完了,怎么看结果?最常用的就是Scope(示波器)。双击Scope模块,就能看到波形图。

但Scope默认的显示效果,说实话,有点简陋。我一般会做几件事:

  • 调整坐标轴:右键点击波形图,选“Axes properties”,可以设置Y轴范围。别让波形跑到图外面去。
  • 添加图例:如果Scope里有多条曲线,右键选“Legend”,能分清哪条是哪条。
  • 导出数据:Scope工具栏里有个“Log”按钮,点一下可以把数据保存到工作区。这样你就可以用MATLAB的绘图命令(比如 plot())重新画图,想怎么美化都行。

除了Scope,还有两种常用的查看方式:

  1. To Workspace模块:把仿真数据直接存到MATLAB工作区。变量名可以自己定义,比如 simout。仿真结束后,在命令窗口输入 plot(simout.time, simout.signals.values) 就能画图。
  2. Display模块:显示数值。适合看稳态值,比如PID控制器的最终输出是多少。

嗯,这里要提醒一句:Scope里看到的波形,默认是经过插值的。如果你需要精确的数据点,最好用To Workspace导出原始数据。我做过一个项目,客户要求仿真精度达到小数点后四位,用Scope看总觉得不对,后来导出数据一对比,才发现是显示精度的问题。

总结一下: 创建模型、添加模块、连接模块、运行仿真、查看结果,这五步是Simulink的基本功。每一步都有小技巧,但核心是:先想清楚再动手,跑仿真前检查参数,看结果时多留个心眼。做到这三点,你就能避开大部分坑。
Simulink 基本操作五步法 Simulink 基本操作 ① 创建新模型 new_system() ② 添加模块 拖拽 + 参数设置 ③ 连接模块 端口连线 + 分支 ④ 运行仿真 Ctrl+T / 绿色三角 ⑤ 查看结果 Scope / To Workspace 五步循环:建 → 加 → 连 → 跑 → 看,每一步都有小技巧
我的经验: 刚开始学的时候,别追求一步到位。先搭一个最简单的模型,比如一个正弦波接一个Scope,跑通了再说。然后慢慢加模块、加逻辑。这样出了问题,你知道是哪个环节的事。我见过太多人一上来就搭几十个模块的复杂模型,结果跑不通,从头排查到崩溃。

好了,Simulink的基本操作就这些。说白了就是五个步骤,但每一步都有值得深挖的细节。你多练几次,形成肌肉记忆,后面学高级功能就轻松多了。