第2章 Simulink库浏览器:常用模块库概览
好,咱们直接进入正题。上一章我们把Simulink界面摸了个大概,这一章我带你逛逛最核心的地方——库浏览器。说白了,这就是你的工具箱,所有模块都在这儿躺着。
我第一次打开库浏览器时,说实话有点懵。模块太多了,密密麻麻的。但别慌,常用的其实就那几类。我带你一个个过。
2.1 库浏览器的打开与布局
打开方式很简单:在Simulink起始页,点那个带扳手图标的「库浏览器」,或者直接按快捷键 Ctrl+Shift+L。我个人习惯用快捷键,快。
界面分三块:左侧是库的树形结构,右侧是选中库里的模块列表,底部还有个预览区。你点一个模块,预览区会显示它的图标和简单说明。
2.2 常用模块库分类
库浏览器里库很多,但80%的建模工作只用得到下面这几个。我按使用频率排个序。
2.2.1 Sources(信号源库)
信号源,就是给模型提供输入的地方。没有它,你的模型就是个「哑巴」。
- Constant:输出一个恒定值。最基础的模块,我几乎每个模型都会用。
- Sine Wave:正弦波信号。做控制器测试时常用,频率、幅值、相位都能调。
- Step:阶跃信号。测试系统响应速度的利器。我在项目中用它来验证PID控制器的上升时间。
- Ramp:斜坡信号。模拟缓慢变化的输入,比如温度上升过程。
- Clock:输出仿真时间。调试时用来记录时间戳,挺方便。
- From Workspace:从MATLAB工作区导入数据。这个我用的最多——把实测数据导进来,对比仿真结果。
2.2.2 Sinks(信号接收器库)
有输入就得有输出。Sinks库负责把信号「收走」——显示、保存、或者输出到硬件。
- Scope:示波器。最常用的调试工具。双击打开,能看到信号随时间变化的波形。
- Display:数字显示。直接显示数值,适合看稳态值。
- To Workspace:把信号存到MATLAB工作区。后处理分析全靠它。
- To File:保存到.mat文件。数据量大的时候用这个,比To Workspace省内存。
- Stop Simulation:满足条件时停止仿真。我用来做「当信号超过阈值就停机」的保护逻辑。
2.2.3 Math Operations(数学运算库)
做算法离不开数学运算。这个库提供了加减乘除、三角函数、逻辑运算等。
| 模块名 | 功能 | 我的使用场景 |
|---|---|---|
| Add | 加法/减法 | 信号求和、误差计算 |
| Product | 乘法/除法 | 增益调整、比例运算 |
| Gain | 常数增益 | 信号缩放,比如把0-5V转为0-100% |
| Abs | 取绝对值 | 计算误差绝对值,做保护判断 |
| Trigonometric Function | 三角函数 | 坐标变换、角度计算 |
| Logical Operator | 与或非逻辑 | 条件组合、使能信号生成 |
嗯,这里要注意:Gain模块的增益值可以直接在对话框里填,也可以从外部信号输入。我习惯把增益做成可调参数,方便调试时在线修改。
2.2.4 Continuous(连续系统库)
做物理系统建模、控制器设计时,这个库是核心。它提供了积分、微分、传递函数等模块。
- Integrator:积分器。状态空间模型的核心。我做过一个车速估算模型,就是用积分器对加速度积分得到速度。
- Derivative:微分器。注意,实际项目中我很少直接用这个模块——它对噪声太敏感了。一般我会用滤波器替代。
- Transfer Fcn:传递函数。用拉普拉斯算子表示的系统。做频域分析时必备。
- State-Space:状态空间模型。多输入多输出系统的首选。
- PID Controller:PID控制器。这个模块集成了抗积分饱和、微分滤波等功能,比你自己搭的PID可靠得多。
2.2.5 Discrete(离散系统库)
嵌入式系统里跑的都是离散算法。这个库就是为数字控制、数字信号处理准备的。
- Unit Delay:单位延迟。相当于Z变换中的z⁻¹。我用来实现状态更新、流水线操作。
- Discrete-Time Integrator:离散积分器。比连续积分器多了积分方法选择(前向欧拉、后向欧拉、梯形法)。
- Discrete Transfer Fcn:离散传递函数。用Z变换表示。
- Discrete Filter:数字滤波器。IIR和FIR都能做。
- Discrete PID Controller:离散PID。做嵌入式控制时,我几乎只用这个,不用连续PID。
为什么强调用离散模块?你想想看,你的单片机是定时中断执行的,采样时间是固定的。用连续模块仿真得再好,下到硬件里也会因为离散化误差而表现不同。所以,做嵌入式开发,从一开始就用离散模块建模,省得后面再转换。
2.3 模块搜索与放置
库浏览器里模块太多,一个个翻太慢了。我教你两招。
2.3.1 搜索模块
在库浏览器左上角有个搜索框。输入关键词,比如「PID」,所有相关的模块就列出来了。支持模糊搜索,输入「inte」也能找到Integrator。
还有一个更快的办法:在Simulink模型画布里,双击空白处,直接输入模块名,然后回车。模块就自动放到鼠标位置了。这个技巧我每天都在用,效率翻倍。
2.3.2 放置模块
找到模块后,拖到画布上就行。我建议你养成一个习惯:放模块的同时就给它重命名。双击模块下面的名字,改成有意义的名称,比如「车速积分器」而不是「Integrator」。不然模型一复杂,满屏都是「Gain1」「Gain2」「Gain3」,你自己都分不清。
2.4 知识体系总览
下面这张图是我自己整理的库浏览器核心知识结构,你一看就明白各个库之间的关系了。
这张图把五大核心库和它们的常用子模块都串起来了。你建模的时候,先在脑子里过一遍:我的信号从哪来(Sources)?要做什么运算(Math Operations)?是连续系统还是离散系统(Continuous/Discrete)?最后信号去哪(Sinks)?这个思路能帮你快速搭建模型框架。
公众号:蓝海资料掘金营,微信deep3321