1. Simulink 环境搭建与首个 MBD 模型

Simulink 环境搭建与首个 MBD 模型 学习卡片

环境准备与版本确认

MBD 开发的第一步不是画模型,而是让工具链处于可复现的状态。Simulink 模型能否顺利编译,取决于 MATLAB 版本、编译器、求解器与模型配置是否匹配。建议先确认以下三项:

  • MATLAB 版本:本例以 R2023b 为示例环境,Simulink 随 MATLAB 一同安装,无需单独授权。
  • C 编译器:Simulink 加速模式与代码生成需要编译器。在 MATLAB 命令窗口执行 mex -setup c,选择已安装的编译器(如 MinGW-w64 或 MSVC)。
  • 工作路径:新建一个专用文件夹(如 D:\MBD\ex01),并设为当前工作目录,避免模型与脚本散落。
若 mex -setup c 提示未找到编译器,可先安装 MATLAB 支持的 MinGW-w64 附加功能,再重新执行该命令。

搭建首个模型:输入 → 增益 → 输出

本例要建立一个最小但完整的 MBD 模型:一个输入端口接收信号,经增益模块放大后送到输出端口。这个结构虽小,却覆盖了 MBD 模型的基本要素——接口、参数与信号流。

  1. 在 Simulink 起始页选择 Blank Model,保存为 ex01_first_model.slx。
  2. 从 Library Browser 拖入 Inport、Gain、Outport 三个模块,按从左到右顺序摆放。
  3. 用信号线依次连接 Inport → Gain → Outport。
  4. 双击 Gain 模块,将 Gain 参数设为 2.5,其余保持默认。
  5. 双击 Inport,将 Port number 保持为 1;双击 Outport,确认端口号为 1。

此时模型的数据流是:输入信号 u 乘以增益 K=2.5,得到输出 y = 2.5u。这个关系是后续验证的核心依据。

首个 MBD 模型:输入 → 增益 → 输出 Inport u (端口1) Gain K = 2.5 y = K · u Outport y (端口1) u y = 2.5u 验证:u = 4 → y 应为 10 编译通过 + 仿真输出一致 = 模型可用

配置与编译验证

模型搭好后,需要确认求解器与仿真时长设置合理。打开 Modeling → Model Settings,在 Solver 页确认:

配置项本例取值说明
Start time0.0仿真起始时刻
Stop time10.0仿真结束时刻
Solverode45 (auto)变步长,适合连续系统
TypeVariable-step默认即可

点击工具栏的 Run 按钮进行仿真。若模型存在未连接端口或参数错误,Simulink 会在诊断查看器中报错;若编译通过,仿真会正常结束并生成输出数据。

用脚本验证输入输出关系

为了不依赖手动观察,可以用 MATLAB 脚本给模型一个已知输入,再检查输出是否等于 2.5 × 输入。以下脚本可直接运行:

% ex01_verify.m
mdl = 'ex01_first_model';
load_system(mdl);

% 设置输入信号:常数 4
set_param([mdl '/Inport'], 'SignalType', 'auto');

% 配置仿真时长
set_param(mdl, 'StopTime', '10');

% 运行仿真
simOut = sim(mdl, 'ReturnWorkspaceOutputs', 'on');

% 读取输出
y = simOut.get('yout');
yData = y.Data;
yFinal = yData(end);

% 验证:输入 u = 4,增益 K = 2.5,期望输出 10
u = 4;
K = 2.5;
expected = K * u;

fprintf('输入 u = %.2f\n', u);
fprintf('增益 K = %.2f\n', K);
fprintf('期望输出 = %.2f\n', expected);
fprintf('仿真输出 = %.2f\n', yFinal);

if abs(yFinal - expected) < 1e-6
    disp('验证通过:模型输出与理论值一致。');
else
    disp('验证失败:请检查增益参数或信号连接。');
end

运行后若打印“验证通过”,说明模型从接口到参数再到仿真链路都是通的。这一步是后续所有 MBD 案例的基线。

若仿真报错“Input port 1 of 'ex01_first_model/Gain' is not connected”,说明信号线未正确连接;若输出恒为 0,检查 Inport 是否被误设为接地或增益参数是否为 0。

常见问题与排查

  • 编译报错找不到编译器:重新执行 mex -setup c,或安装 MATLAB 支持的 MinGW-w64。
  • 仿真速度极慢:检查 Stop time 是否被误设为很大的值,或求解器是否选成了固定步长且步长过小。
  • 输出端口无数据:确认 Outport 已连接,且仿真正常结束;可在 simOut 中检查 yout 是否存在。
  • 模型无法保存:确认工作目录有写权限,且文件名不含中文或特殊字符。
完成本例后,你应得到一个可编译、可仿真、可用脚本验证的 ex01_first_model.slx。它包含 Inport、Gain、Outport 三个基本模块,增益为 2.5,输入 4 时输出 10。这个最小闭环是后续接口定义、子系统划分和代码生成的起点。