第一章:Simulink 基础认知


Simulink 是 MathWorks 公司开发的图形化仿真与模型设计环境,运行于 MATLAB 之上。它允许工程师通过拖拽模块、连接信号线的方式构建动态系统模型,无需手动编写大量数学公式代码。

核心作用:

  • 系统建模:用图形化方式描述动态系统的数学行为

  • 仿真验证:在真实硬件部署前验证算法和控制逻辑

  • 代码生成:自动将模型转换为 C/C++ 代码,部署到嵌入式硬件

  • 快速原型:缩短从算法设计到硬件验证的周期

    一句话理解:

Simulink 就是一个"可视化的数学仿真画板",把复杂的微分方程、控制算法用图形模块表达出来,然后让计算机帮你"跑"这个系统。


复制代码
┌─────────────────────────────────────────┐
│                MATLAB                    │
│  数值计算 / 数据分析 / 脚本编程          │
│                                         │
│  ┌───────────────────────────────────┐  │
│  │            Simulink               │  │
│  │  图形化建模 / 动态仿真 / 代码生成  │  │
│  └───────────────────────────────────┘  │
└─────────────────────────────────────────┘
对比项 MATLAB Simulink
编程方式 脚本/函数代码 图形化模块连接
擅长领域 数值计算、数据处理 动态系统仿真
时间概念 无(静态计算) 有(随时间演化)
典型用途 矩阵运算、绘图 控制系统、信号处理

两者关系:

  • Simulink 必须依赖 MATLAB 运行
  • MATLAB 可以调用 Simulink 模型(sim() 函数)
  • Simulink 模块内部可以嵌入 MATLAB 代码
  • 仿真结果可以导出到 MATLAB 工作区进行后处理

1.1.3 典型应用领域

① 控制系统设计

复制代码
传感器信号 → 控制器算法 → 执行器输出
(PID控制、LQR、MPC、自适应控制)

② 信号处理

复制代码
原始信号 → 滤波/FFT/调制解调 → 处理结果
(数字滤波器、通信系统仿真)

③ 汽车电子(Automotive)

复制代码
发动机控制 / 自动驾驶算法 / 电池管理系统
(AUTOSAR 标准开发)

④ 嵌入式系统开发

复制代码
算法建模 → 代码生成 → 烧录到 MCU/DSP/FPGA
(基于模型的设计 MBD)

⑤ 航空航天

复制代码
飞行控制律设计 / 导航算法 / 故障仿真

⑥ 电力电子

复制代码
变频器控制 / 电网仿真 / 新能源系统

1.2.1 模型(Model)

Simulink 模型是以 .slx(新版)或 .mdl(旧版)为扩展名的文件,描述了一个动态系统的完整结构。

复制代码
模型文件(.slx)包含:
  ├── 模块(Blocks):系统的功能单元
  ├── 信号线(Lines):模块间的数据连接
  ├── 注释(Annotations):说明文字
  └── 配置参数(Configuration):仿真设置

模型的层次结构:

复制代码
顶层模型
  ├── 子系统 A
  │     ├── 模块 1
  │     └── 模块 2
  ├── 子系统 B
  │     ├── 子子系统 B1
  │     └── 模块 3
  └── 模块 4

1.2.2 模块(Block)

模块是 Simulink 的基本功能单元,每个模块完成特定的数学运算或功能。

复制代码
模块的组成:
  ┌─────────────────────────┐
  │                         │
  ●──→│      模块名称        │──→●
  ●──→│   (数学运算/功能)  │
  │                         │
  └─────────────────────────┘
  输入端口                  输出端口

模块的基本属性:

属性 说明
名称(Name) 模块的标识符,同一层级唯一
参数(Parameters) 控制模块行为的配置值
输入端口(Inport) 接收信号的端口
输出端口(Outport) 输出信号的端口
采样时间(Sample Time) 模块的执行频率

常见模块举例:

复制代码
Constant    → 输出固定常数值
Gain        → 信号乘以增益系数
Sum         → 多路信号求和
Integrator  → 对信号进行积分
Scope       → 显示信号波形

1.2.3 信号线(Signal Line)

信号线连接模块的输出端口和输入端口,传递数据。

信号线的特性:

复制代码
信号线携带的信息:
  ├── 数值(Value):实际传递的数据
  ├── 维度(Dimension):标量/向量/矩阵
  ├── 数据类型(Data Type):double/int/bool等
  └── 采样时间(Sample Time):连续/离散

信号线的颜色含义(默认设置):

颜色 含义
黑色 标量信号(double)
绿色 向量/矩阵信号
橙色 非 double 数据类型
红色 信号有错误或警告

信号线操作:

复制代码
连接:从输出端口拖拽到输入端口
分支:按住 Ctrl 从信号线拖出分支
标注:双击信号线添加标签
删除:选中后按 Delete 键

1.2.4 仿真时间与步长

Simulink 仿真的时间轴概念:

复制代码
仿真时间轴:
  0 ─────────────────────────────→ Stop Time
  ↑                               ↑
  Start Time                    仿真结束
  
  每隔一个步长(Step Size)计算一次
  
  |←── Step ──→|←── Step ──→|←── Step ──→|
  t=0          t=0.01        t=0.02        t=0.03

关键参数:

参数 说明 典型值
Start Time 仿真开始时间 0
Stop Time 仿真结束时间 10(秒)
Step Size 计算步长 auto 或 0.001
Solver 求解算法 ode45(连续)/ Fixed-step(离散)

连续系统 vs 离散系统:

复制代码
连续系统:
  时间连续变化,使用微分方程
  求解器自动调整步长(变步长)
  适合:模拟电路、机械系统

离散系统:
  时间按固定间隔更新
  步长固定(Fixed-step)
  适合:数字控制器、嵌入式代码生成

1.3.1 常用工具箱介绍

Simulink 本身是基础平台,各专业领域通过**工具箱(Toolbox)**扩展功能:

工具箱名称 功能 典型应用
Control System Toolbox PID设计、根轨迹、频域分析 控制系统设计
Signal Processing Toolbox 滤波器设计、FFT 信号处理
Stateflow 状态机、流程图 逻辑控制
Simulink Coder 生成通用C代码 代码生成
Embedded Coder 生成嵌入式优化C代码 嵌入式开发
Simscape 物理系统建模 机电液仿真
Aerospace Blockset 飞行动力学模块 航空航天
Powertrain Blockset 动力总成模块 汽车工程
Deep Learning Toolbox 神经网络 AI/ML

1.3.2 版本差异说明

MathWorks 每年发布两个版本:

复制代码
版本命名规则:R + 年份 + a/b
  R2023a → 2023年上半年版本
  R2023b → 2023年下半年版本

各版本主要变化趋势:

版本区间 主要变化
R2012b 以前 模型文件为 .mdl 格式
R2012b 及以后 模型文件改为 .slx 格式(推荐)
R2019b 及以后 新增 Simulink Online(网页版)
R2021a 及以后 改进 Data Dictionary、Test Manager
R2023a 及以后 AI/ML 集成增强

建议:

学习时使用 R2020a 及以后版本,界面和功能较为稳定完善。本教程以 R2022b 为基准。


本章小结

复制代码
本章核心要点:

✅ Simulink 是图形化动态系统仿真环境,运行于 MATLAB 之上
✅ 核心元素:模型(.slx) / 模块(Block) / 信号线(Line)
✅ 仿真时间:Start Time → Stop Time,按步长逐步计算
✅ 连续系统用变步长求解器,离散系统用固定步长
✅ 工具箱扩展 Simulink 的专业功能
✅ 推荐使用 R2020a 及以后版本

课后练习

  1. 安装 MATLAB/Simulink,启动 Simulink 并熟悉界面布局
  2. 打开 Library Browser,浏览各模块库的分类
  3. 思考:你所在的领域(控制/信号/嵌入式)最常用哪些模块?
  4. 查看 MathWorks 官网,了解你使用的 MATLAB 版本包含哪些工具箱
相关推荐
WL_GCS3 天前
Level-2 MATLAB S-Function解析
matlab·simulink
可编程芯片开发23 天前
基于PID平滑调整的MPC-RCNC双模式切换控制系统simulink建模与仿真
simulink·mpc·rcnc·pid平滑·mpc-rcnc
可编程芯片开发1 个月前
带三阶参数辨识模块的RCNC扰动抑制闭环伺服控制系统simulink建模与仿真
simulink·参数辨识·rcnc·扰动抑制闭环
2CM_Embed1 个月前
Simulink 仿真加速:配置 MinGW64 编译器并启用加速模式
matlab·simulink·minggw64·仿真加速
隔窗听雨眠1 个月前
Unity与Simulink联合仿真:实现无人机目标追踪系统
unity·无人机·cocos2d·simulink
chhttty1 个月前
《Simulink嵌入式开发实战》新书上市
matlab·simulink
可编程芯片开发1 个月前
基于SMC滑模控制器的永磁同步电机SVPWM矢量控制系统simulink建模与仿真
simulink·svpwm·smc·永磁同步电机·矢量控制·滑模控制器
可编程芯片开发1 个月前
基于DRCNC和双PI控制器的永磁同步电机矢量控制系统simulink建模与仿真
simulink·永磁同步电机·矢量控制·drcnc·双pi控制器
2CM_Embed1 个月前
电脑打开 Simulink 很慢怎么办?MATLAB / Simulink 启动慢的完整解决方法
matlab·simulink