3. Simulink建模基础:从界面到第一个能跑的模型

说实话,我见过太多工程师一上来就急着拖模块、连信号线。结果模型跑不通,回头查半天,发现是配置参数没设对。嗯,咱们今天就从最基础的开始,把Simulink的底子打扎实。

3.1 Simulink界面与库浏览器

打开Simulink,你首先看到的是启动界面。我个人习惯直接点「Blank Model」新建一个空模型。别小看这一步——模型建在哪个目录下,决定了你后续的工作路径。

库浏览器(Library Browser)是你的工具箱。快捷键 Ctrl+Shift+L 可以快速调出它。我刚开始用的时候,总在菜单里翻来翻去找模块,后来发现这个快捷键,效率提升不少。

我的小技巧: 把常用模块拖到收藏夹(Favorites)。比如我经常用「Gain」「Sum」「Scope」「Constant」,收藏起来后,建模型能快30%。

库浏览器的搜索框很好用。你输入「PID」,它会自动定位到对应的库。但要注意——有些模块名字类似,比如「Discrete PID Controller」和「PID Controller」,前者用于离散系统,后者用于连续系统。我在项目中吃过这个亏,仿真结果对不上,查了半天才发现是控制器类型选错了。

3.2 常用模块:数学运算、逻辑、信号路由

咱们做逆变器开发,最常用的模块其实就那几类。我按使用频率给你捋一捋。

数学运算模块

这些是基础中的基础。你想想看,逆变器的控制算法,本质上就是一堆数学运算的组合。

  • Gain(增益):做比例缩放。双击可以设置增益值,支持标量、向量、矩阵。我习惯用 Kp 这样的变量名,方便后续调参。
  • Sum(求和):做加减运算。双击修改符号列表,比如 |+- 表示第一个输入为正,第二个为负。
  • Product(乘积):做乘法或除法。可以设置输入个数,比如三相逆变器里算功率,经常需要三个输入相乘。
  • Trigonometric Function(三角函数):做正弦、余弦运算。逆变器里的Park变换、Clark变换都离不开它。
注意: 数学运算模块的数据类型要统一。我曾经在项目里混用了double和single类型,结果仿真结果出现微小偏差,排查了整整一个下午。建议统一用double,除非你有特殊需求。

逻辑模块

逻辑模块主要用于保护逻辑和状态切换。比如过流保护、过压保护,都需要用逻辑判断。

  • Relational Operator(关系运算):比较两个信号的大小。比如 电流 > 阈值,输出1表示触发保护。
  • Logical Operator(逻辑运算):做与、或、非运算。多个保护条件组合时,用这个模块很方便。
  • S-R Flip-Flop(SR触发器):做状态锁存。比如故障发生后,需要手动复位才能恢复运行,用SR触发器就能实现。

我记得有一次做并网逆变器,电网电压跌落时保护逻辑没处理好,导致反复重启。后来加了一个SR触发器,锁存故障状态,问题就解决了。

信号路由模块

信号路由模块负责信号的连接和组织。模型大了以后,信号线乱成一团,这时候路由模块就派上用场了。

  • Mux(复用器):把多个信号合并成一条总线。比如三相电流 Ia, Ib, Ic 合并成一条总线,方便后续处理。
  • Demux(解复用器):把总线拆分成多个信号。和Mux配对使用。
  • Bus Creator / Bus Selector(总线创建/选择):比Mux/Demux更灵活,支持命名信号。我强烈推荐用总线,尤其是模型复杂的时候。
  • Goto / From(跳转/来源):跨层级传递信号,避免线绕来绕去。但别滥用,否则模型可读性会变差。
避坑指南: 我曾经在一个大模型里用了20多个Goto/From,结果半年后自己都看不懂信号从哪来的。后来我定了个规矩:只在同一层级内用Goto/From,跨层级必须用总线或端口。

3.3 子系统与封装

子系统(Subsystem)是Simulink里组织模型的核心手段。说白了,就是把一堆模块打包成一个黑盒子,只留输入输出端口。

创建子系统很简单:选中你要打包的模块,右键 -> Create Subsystem。快捷键 Ctrl+G 也行。

但真正有用的是封装(Mask)。封装可以让你自定义子系统的界面、参数、图标。比如你做一个PI控制器,封装后可以设置 KpKi 两个参数,双击就能调,不用进到子系统内部。

封装的操作步骤:

  1. 右键子系统 -> Mask -> Create Mask
  2. 在「Parameters & Dialog」里添加参数,比如 KpKi
  3. 在「Initialization」里写初始化代码,把参数传递给内部模块
  4. 在「Icon」里画图标,比如画个PI控制器的符号
我的经验: 封装时一定要写文档。在「Documentation」标签页里写清楚这个子系统的功能、输入输出、参数范围。这样别人(包括三个月后的你自己)拿到模型就能直接用。

3.4 模型配置参数设置

模型配置参数(Model Configuration Parameters)是Simulink里最容易忽略但最关键的部分。你想想看,仿真步长设错了,结果能对吗?

打开方式:菜单栏 Simulation -> Model Configuration Parameters,或者快捷键 Ctrl+E

我重点说几个逆变器开发中必须关注的参数:

参数项 推荐设置 说明
Solver(求解器) 离散(discrete) 逆变器控制是离散系统,用连续求解器反而会引入误差
Fixed-step size(固定步长) 1e-6 或 1e-5 取决于开关频率。比如10kHz的开关频率,步长至少1e-5
Stop time(停止时间) 0.1 或 0.2 先跑短时间验证功能,再逐步加长
Data Import/Export 勾选「Time」和「Output」 方便把仿真数据导到MATLAB工作区做后处理
特别提醒: 求解器类型选错了,仿真结果可能完全不对。我见过有人用连续求解器仿真离散控制系统,结果波形震荡得离谱。记住:数字控制器用离散求解器,模拟电路用连续求解器。

还有一个容易被忽略的参数:Sample time(采样时间)。每个模块都可以单独设置采样时间。比如电流环采样时间1e-5,电压环采样时间1e-4,这样能提高仿真效率。

嗯,到这里Simulink建模的基础就讲完了。下一章咱们开始搭第一个逆变器模型——一个简单的单相全桥逆变器。到时候你会看到,这些基础模块是怎么组合成完整系统的。