2. MIL验证基础
好,咱们正式开始动手搭环境。说实话,MIL测试这件事,工具链顺不顺直接影响后面所有工作的心情。我见过不少团队,模型写得漂亮,结果卡在测试环境上折腾了两周——说白了就是Test Manager没玩透。今天咱们就把这块啃下来。
2.1 为什么非得用Test Manager?
你可能用过Simulink自带的信号编辑器、Scope这些工具做点临时验证。但到了项目级MIL测试,你会发现几个痛点:
- 用例散落:今天改个参数,明天换个工况,回头自己都找不到原始数据
- 结果不可复现:同样的模型,换台电脑跑出来的曲线不一样
- 评审没依据:测试通过还是失败,全靠截图说话
Test Manager就是来解决这些问题的。它把测试用例、执行环境、判定标准、报告生成全部串在一起。我参与的第一个量产项目,客户审核时直接要求看Test Manager的测试报告——从那以后我再也不敢手动测了。
核心价值一句话:Test Manager = 用例管理 + 自动化执行 + 通过/失败判定 + 可追溯报告
2.2 Test Manager界面速览
打开方式很简单:在MATLAB命令窗口输入 sltestmgr,或者从Simulink菜单栏选 Apps → Simulink Test。
界面分三大区域,我习惯叫它「左-中-右」结构:
| 区域 | 名称 | 作用 |
|---|---|---|
| 左侧 | 测试浏览器 | 树形结构,管理测试文件、测试套件、测试用例 |
| 中间 | 编辑器/详情面板 | 显示选中对象的详细配置 |
| 右侧 | 结果与工件面板 | 运行日志、覆盖率、通过/失败状态 |
嗯,这里要注意:左侧的树结构是可以嵌套的。我见过有人把所有用例平铺在一层,结果项目后期找用例找到崩溃。建议按功能模块建文件夹,比如 速度控制、扭矩管理、故障诊断。
2.3 创建你的第一个测试工程
咱们一步步来。假设你手里已经有一个Simulink模型,叫 CruiseControl.slx(定速巡航控制器)。
- 新建测试文件:在Test Manager界面,点击 New → Test File,保存为
CruiseControl_Test.mldatx。 - 创建测试套件:右键测试文件根节点,选 Add → Test Suite,命名为
基础功能测试。 - 添加测试用例:右键测试套件,选 Add → Test Case,命名为
TC001_定速激活。
这时候你会看到测试用例的配置面板。别被那么多选项卡吓到,核心就三个:
- System Under Test:指定被测模型
- Inputs:定义输入信号
- Baseline / Equivalence Test Criteria:定义期望输出
我的习惯:每个测试用例的名字都带编号,比如 TC001、TC002。这样生成报告时排序清晰,评审时也好定位。我曾经吃过亏,用例叫「test1」、「test_final」、「test_final2」……后来自己都分不清哪个是哪个。
2.4 测试环境配置——别踩这些坑
配置环境是新手最容易翻车的地方。我列几个关键项:
2.4.1 系统被测试对象配置
在 System Under Test 选项卡里:
- Model:选择你的
CruiseControl.slx - Simulation Mode:MIL测试选
Normal或Accelerator。我个人建议用Normal,调试方便;如果模型太大跑不动,再切Accelerator - Signal Editor:这里可以加载外部输入文件(.mat或.xlsx)
2.4.2 输入信号配置
在 Inputs 选项卡里:
- 可以直接用 Signal Editor 块在模型里定义,也可以在Test Manager里直接创建 Input Data
- 支持的数据源:工作区变量、MAT文件、Excel、CSV
- 时间范围:我一般设成比仿真时长多10%,防止边界截断
我曾经踩过的坑:输入信号的采样时间跟模型步长不匹配,导致仿真结果出现锯齿。后来我养成了一个习惯——在配置输入后,先跑一次看看信号曲线是否平滑,再开始正式测试。
2.4.3 基线判定配置
在 Baseline Criteria 选项卡里:
- 导入期望输出数据(通常来自上一轮仿真或需求文档)
- 设置容差:Absolute Tolerance 和 Relative Tolerance
- 容差怎么设?我一般先设 1e-3,如果因为数值误差导致误判,再放宽到 1e-2
2.5 跑一次完整的MIL测试
配置完成后,点击 Run 按钮。Test Manager会依次执行所有测试用例,并在右侧面板显示结果:
- 绿色勾:通过
- 红色叉:失败(点进去能看到具体哪个时间点超差)
- 黄色感叹号:警告(比如仿真报错但没崩溃)
跑完之后,记得点 Export → Report 生成PDF或HTML报告。这个报告可以直接发给客户或用于内部评审。
2.6 知识结构总览
下面这张图帮你理清Test Manager的配置逻辑:
2.7 几个实用技巧
- 批量导入用例:如果已经有Excel测试用例表,可以用
sltest.testmanager.import函数批量导入,省去手动创建的时间 - 复用配置:右键测试用例选 Copy,然后修改输入信号即可快速生成相似用例
- 回调函数:在测试用例的 Callbacks 选项卡里,可以写MATLAB脚本做预处理或后处理。比如我经常在
setup回调里加载全局参数
避坑指南:测试文件路径不要带中文和空格。MATLAB在某些版本下对中文路径支持不好,我曾经因为这个折腾了一下午,最后发现是路径里有个「测试」两个字。