3. Simulink建模基础:从界面到第一个能跑的模型
说实话,我见过太多工程师一上来就急着拖模块、连信号线。结果模型跑不通,回头查半天,发现是配置参数没设对。嗯,咱们今天就从最基础的开始,把Simulink的底子打扎实。
3.1 Simulink界面与库浏览器
打开Simulink,你首先看到的是启动界面。我个人习惯直接点「Blank Model」新建一个空模型。别小看这一步——模型建在哪个目录下,决定了你后续的工作路径。
库浏览器(Library Browser)是你的工具箱。快捷键 Ctrl+Shift+L 可以快速调出它。我刚开始用的时候,总在菜单里翻来翻去找模块,后来发现这个快捷键,效率提升不少。
库浏览器的搜索框很好用。你输入「PID」,它会自动定位到对应的库。但要注意——有些模块名字类似,比如「Discrete PID Controller」和「PID Controller」,前者用于离散系统,后者用于连续系统。我在项目中吃过这个亏,仿真结果对不上,查了半天才发现是控制器类型选错了。
3.2 常用模块:数学运算、逻辑、信号路由
咱们做逆变器开发,最常用的模块其实就那几类。我按使用频率给你捋一捋。
数学运算模块
这些是基础中的基础。你想想看,逆变器的控制算法,本质上就是一堆数学运算的组合。
- Gain(增益):做比例缩放。双击可以设置增益值,支持标量、向量、矩阵。我习惯用
Kp这样的变量名,方便后续调参。 - Sum(求和):做加减运算。双击修改符号列表,比如
|+-表示第一个输入为正,第二个为负。 - Product(乘积):做乘法或除法。可以设置输入个数,比如三相逆变器里算功率,经常需要三个输入相乘。
- Trigonometric Function(三角函数):做正弦、余弦运算。逆变器里的Park变换、Clark变换都离不开它。
逻辑模块
逻辑模块主要用于保护逻辑和状态切换。比如过流保护、过压保护,都需要用逻辑判断。
- 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(跳转/来源):跨层级传递信号,避免线绕来绕去。但别滥用,否则模型可读性会变差。
3.3 子系统与封装
子系统(Subsystem)是Simulink里组织模型的核心手段。说白了,就是把一堆模块打包成一个黑盒子,只留输入输出端口。
创建子系统很简单:选中你要打包的模块,右键 -> Create Subsystem。快捷键 Ctrl+G 也行。
但真正有用的是封装(Mask)。封装可以让你自定义子系统的界面、参数、图标。比如你做一个PI控制器,封装后可以设置 Kp 和 Ki 两个参数,双击就能调,不用进到子系统内部。
封装的操作步骤:
- 右键子系统 -> Mask -> Create Mask
- 在「Parameters & Dialog」里添加参数,比如
Kp和Ki - 在「Initialization」里写初始化代码,把参数传递给内部模块
- 在「Icon」里画图标,比如画个PI控制器的符号
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建模的基础就讲完了。下一章咱们开始搭第一个逆变器模型——一个简单的单相全桥逆变器。到时候你会看到,这些基础模块是怎么组合成完整系统的。