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 信号线连接——把模块串起来

模块放好了,接下来就是连线。信号线就是模块之间的"数据通道"。

连线操作很简单:

  1. 把鼠标移到模块的输出端口(>符号),光标会变成十字
  2. 按住左键,拖到另一个模块的输入端口
  3. 松开鼠标,线就自动连好了

你想想看,这跟画流程图是不是很像?只不过Simulink的线是有方向的,数据只能从输出流向输入。

注意:连线时如果出现红色虚线,说明连接有问题。常见原因有:

  • 输出端口和输入端口的数据类型不匹配
  • 维度不匹配(比如1维信号连到了2维端口)
  • 端口已经被占用了

遇到这种情况,双击红色线,Simulink会告诉你具体是什么问题。

连线还有一些进阶操作:

  • 分支线:从一个信号分出多路。按住Ctrl,在已有线上点一下,然后拖到另一个端口。
  • 标注信号:双击信号线,输入名字。这在后面生成代码时特别有用,代码里的变量名会直接用这个标注。
  • 折线:连线时按住Shift,可以画出直角折线。我个人习惯用折线,看起来整齐。

我记得有一次做飞控的姿态解算模型,信号线密密麻麻的,连我自己都看晕了。后来养成了给每条关键信号线命名的习惯,调试时一眼就能看出问题出在哪。这个习惯我一直保留到现在。

2.4 子系统创建——让模型变整洁

模型一复杂,画布上就乱成一锅粥。这时候就需要子系统(Subsystem)出场了。

子系统说白了就是一个"容器"。你可以把一组相关的模块打包进去,外面只露出几个接口。这样顶层模型看起来就清爽多了。

创建子系统有两种方式:

方式一:先有模块,再打包

  1. 选中你要打包的模块(框选或Shift点选)
  2. 右键 → "Create Subsystem from Selection"
  3. Simulink会自动生成一个子系统,原来的模块都在里面

方式二:先建子系统,再往里放

  1. 从库浏览器拖一个"Subsystem"模块到画布
  2. 双击打开它,里面是空的
  3. 把模块拖进去,连好线
  4. 子系统会自动生成输入输出端口(Inport和Outport)

我个人更推荐方式一。为什么?因为你先搭好了逻辑,再打包,不容易漏掉连接。方式二容易搞错端口数量,回头还得改。

经验之谈:在飞控开发中,我通常这样划分子系统:

  • 传感器数据处理 → 一个子系统
  • 姿态解算 → 一个子系统
  • 控制律计算 → 一个子系统
  • 输出混控 → 一个子系统

每个子系统内部再细分。这样顶层模型看起来就清晰了,调试时也能快速定位问题。

子系统还有一个好处:你可以把它当成一个独立的模块,复制到其他模型里复用。我在多个飞控项目中都用到了同一个姿态解算子系统,稍微改改参数就能用,省了不少时间。

2.5 本章知识体系

下面这张图把今天讲的内容串起来了,你可以看看它们之间的关系:

Simulink基础操作知识体系 Simulink基础操作 库浏览器 模型画布 信号线连接 子系统创建 模块分类与搜索 拖拽到画布 新建/保存模型 缩放/平移/选中 端口连接与分支 信号标注与折线 打包已有模块 新建空子系统 目标:为飞控代码自动生成打好操作基础

这张图把今天讲的四个操作串起来了。你从库浏览器拿模块,放到画布上,用信号线连起来,最后用子系统整理结构。这就是Simulink建模的基本流程。

好了,今天就到这。这四个操作你练熟了,后面做飞控模型就顺手了。记住,多动手,别光看。打开Simulink,拖几个模块试试,连几条线感受一下。实践出真知嘛。


公众号:蓝海资料掘金营,微信deep3321