2、Simulink基础操作:库浏览器、模型画布、信号线连接、子系统创建
说实话,很多刚接触Simulink的朋友,第一眼看到这个界面是有点懵的。满屏的模块、密密麻麻的线,不知道从哪下手。我当年刚入行做飞控开发时也是这样,对着屏幕发呆了好一阵子。
其实没那么复杂。Simulink说白了就是一个搭积木的工具。你只需要把模块拖出来,连上线,就能跑起来。今天我就带你把这四个最基础的操作捋一遍——库浏览器、模型画布、信号线连接、子系统创建。这些是后面所有自动生成代码的根基。
核心要点:这四个操作是Simulink的"四件套"。你后面做任何飞控模型,都离不开它们。今天花点时间把这四个搞透,后面就顺了。
2.1 库浏览器——你的模块仓库
库浏览器(Library Browser)就是Simulink的"零件库"。所有你能用到的模块,都整整齐齐摆在这里。
怎么打开?很简单:
- 在MATLAB命令窗口输入
simulink回车 - 或者在Simulink起始页点击"库浏览器"图标
打开后你会看到左侧是一棵目录树,右侧是具体的模块。我个人的习惯是,把常用的模块记下来,比如:
- Sources(信号源):阶跃信号、正弦波、常数等
- Sinks(信号接收):示波器、To Workspace等
- Continuous(连续系统):积分器、传递函数等
- Math Operations(数学运算):加法、乘法、增益等
- Discrete(离散系统):单位延迟、离散积分器等——飞控里用得最多
小技巧:直接在库浏览器顶部的搜索框里输入模块名字,比如输入"gain",所有带增益的模块就都出来了。比翻目录快得多。我在做飞控模型时,几乎全靠搜索,很少去翻目录树。
嗯,这里要注意一点:库浏览器里的模块是只读的,你不能直接改它。但你可以把它拖到模型里,然后修改参数。这个后面会讲到。
2.2 模型画布——你的工作台
模型画布就是你拖模块、连线的那个白色区域。说白了,这就是你的工作台。
新建一个模型很简单:
- 点击工具栏的"新建"按钮
- 或者按快捷键
Ctrl+N
画布上有些操作你得记住:
| 操作 | 方法 | 说明 |
|---|---|---|
| 拖拽模块 | 从库浏览器拖到画布 | 按住左键拖就行 |
| 选中多个 | 按住Shift点选,或框选 | 框选时从空白处开始拖 |
| 缩放 | 滚轮滚动 | 或者按住Ctrl+滚轮 |
| 平移 | 按住空格+鼠标拖动 | 画布大了以后很有用 |
| 复制模块 | 按住Ctrl拖动 | 比右键复制快多了 |
我曾经犯过一个低级错误:在画布上放了几十个模块,结果连线连到一半,发现画布不够用了。后来才知道,画布是可以无限扩展的——你只要把模块拖到边缘,画布会自动延伸。所以放心大胆地放,别怕空间不够。
2.3 信号线连接——把模块串起来
模块放好了,接下来就是连线。信号线就是模块之间的"数据通道"。
连线操作很简单:
- 把鼠标移到模块的输出端口(>符号),光标会变成十字
- 按住左键,拖到另一个模块的输入端口
- 松开鼠标,线就自动连好了
你想想看,这跟画流程图是不是很像?只不过Simulink的线是有方向的,数据只能从输出流向输入。
注意:连线时如果出现红色虚线,说明连接有问题。常见原因有:
- 输出端口和输入端口的数据类型不匹配
- 维度不匹配(比如1维信号连到了2维端口)
- 端口已经被占用了
遇到这种情况,双击红色线,Simulink会告诉你具体是什么问题。
连线还有一些进阶操作:
- 分支线:从一个信号分出多路。按住Ctrl,在已有线上点一下,然后拖到另一个端口。
- 标注信号:双击信号线,输入名字。这在后面生成代码时特别有用,代码里的变量名会直接用这个标注。
- 折线:连线时按住Shift,可以画出直角折线。我个人习惯用折线,看起来整齐。
我记得有一次做飞控的姿态解算模型,信号线密密麻麻的,连我自己都看晕了。后来养成了给每条关键信号线命名的习惯,调试时一眼就能看出问题出在哪。这个习惯我一直保留到现在。
2.4 子系统创建——让模型变整洁
模型一复杂,画布上就乱成一锅粥。这时候就需要子系统(Subsystem)出场了。
子系统说白了就是一个"容器"。你可以把一组相关的模块打包进去,外面只露出几个接口。这样顶层模型看起来就清爽多了。
创建子系统有两种方式:
方式一:先有模块,再打包
- 选中你要打包的模块(框选或Shift点选)
- 右键 → "Create Subsystem from Selection"
- Simulink会自动生成一个子系统,原来的模块都在里面
方式二:先建子系统,再往里放
- 从库浏览器拖一个"Subsystem"模块到画布
- 双击打开它,里面是空的
- 把模块拖进去,连好线
- 子系统会自动生成输入输出端口(Inport和Outport)
我个人更推荐方式一。为什么?因为你先搭好了逻辑,再打包,不容易漏掉连接。方式二容易搞错端口数量,回头还得改。
经验之谈:在飞控开发中,我通常这样划分子系统:
- 传感器数据处理 → 一个子系统
- 姿态解算 → 一个子系统
- 控制律计算 → 一个子系统
- 输出混控 → 一个子系统
每个子系统内部再细分。这样顶层模型看起来就清晰了,调试时也能快速定位问题。
子系统还有一个好处:你可以把它当成一个独立的模块,复制到其他模型里复用。我在多个飞控项目中都用到了同一个姿态解算子系统,稍微改改参数就能用,省了不少时间。
2.5 本章知识体系
下面这张图把今天讲的内容串起来了,你可以看看它们之间的关系:
这张图把今天讲的四个操作串起来了。你从库浏览器拿模块,放到画布上,用信号线连起来,最后用子系统整理结构。这就是Simulink建模的基本流程。
好了,今天就到这。这四个操作你练熟了,后面做飞控模型就顺手了。记住,多动手,别光看。打开Simulink,拖几个模块试试,连几条线感受一下。实践出真知嘛。
公众号:蓝海资料掘金营,微信deep3321