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键,在已有信号线上点击并拖动,可以拉出分支 - 信号线命名:双击信号线,可以给它起个名字。比如
error、control_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 秒
3.5 知识体系总览
说了这么多,咱们用一张图把整个流程串起来。你想想看,从创建模型到跑出结果,其实就这几步:
这张图把咱们刚才讲的四个步骤串起来了。你照着这个流程走,基本上不会出大问题。但说实话,真正用的时候,你可能会遇到一些细节问题。比如信号线颜色不对、仿真报错、结果不收敛等等。别慌,这些都是正常的。
好了,模型搭建这部分就讲到这里。你打开 Simulink,照着上面的步骤试一遍。先搭一个简单的 PID 控制器,跑个阶跃响应看看。嗯,动手才是最好的学习方式。
公众号:蓝海资料掘金营,微信deep3321