4. 搭建第一个 MIL 测试框架
MIL(Model-in-the-Loop)测试的核心思路是:把被测模型放在仿真环境中,用一组可重复、可追溯的输入激励驱动它,同时把关键信号记录下来,最后通过波形对比判断模型行为是否符合预期。这一节我们以一个典型的“节气门位置闭环控制”模型为例,搭建第一个可运行的 MIL 测试框架。示例中的参数、数据和波形均为教学假设,用于说明方法,不代表任何实际项目的实测结果。
一、测试框架的四个组成部分
一个最小可用的 MIL 测试框架由四部分构成:测试激励源、被测模型、信号记录与日志、结果判读。激励源负责产生随时间变化的输入信号;被测模型接收输入并计算输出;记录模块把输入、输出和内部关键状态保存下来;结果判读则把记录数据与期望值比较,给出通过或失败的结论。四者缺一不可,缺少记录就无法复盘,缺少判读就无法自动化。
二、用 Signal Builder 构造测试激励
Signal Builder 适合手工构造分段信号,例如阶跃、斜坡、脉冲和自定义折线。以节气门测试为例,我们构造一个 10 秒的激励序列:0~2 秒踏板开度为 0%,2~4 秒线性上升到 50%,4~7 秒保持 50%,7~8 秒阶跃到 80%,8~10 秒保持 80%。在 Signal Builder 中新建一个信号组,命名为 ThrottleProfile,添加一条名为 pedal_pct 的信号,按上述时间点输入坐标:
时间(s) 踏板开度(%)
0.0 0
2.0 0
4.0 50
7.0 50
7.0 80
10.0 80
注意 7 秒处有两个点,形成垂直阶跃。Signal Builder 允许同一时刻存在两个数据点,从而产生不连续跳变。配置完成后,把该信号组连接到模型的 pedal_pct 输入端口。若模型输入端口名称不一致,需要先统一命名,否则连接会失败。
三、用 Excel 导入批量激励
当激励点数较多或需要从台架、路谱数据生成时,Excel 导入更高效。准备一个两列或多列的 Excel 文件,第一列为时间,后续列为各信号值。例如 mil_input.xlsx:
time pedal_pct target_rpm
0.0 0 800
1.0 10 900
2.0 25 1200
3.0 40 1600
4.0 50 1800
5.0 50 1800
6.0 50 1800
7.0 80 2400
8.0 80 2400
9.0 80 2400
10.0 80 2400
在 Simulink 中使用 From Spreadsheet 模块或 Signal Editor 导入该文件,设置采样时间为 0.01 秒,插值方式选择线性。导入后检查信号维度:pedal_pct 和 target_rpm 应分别对应模型的两个输入端口。若 Excel 中时间列不是单调递增,导入会报错,需要先排序。
四、配置信号记录与日志
记录是 MIL 测试可追溯的基础。推荐同时使用两种方式:
- Scope 实时观察:把关键输出接入 Scope,仿真过程中实时查看波形,便于快速发现明显异常。
- To Workspace 或 Signal Logging 持久化:把输入、输出和内部状态保存到 MATLAB 工作区,便于后续脚本自动判读。
具体操作:选中需要记录的信号线,右键选择 Properties,勾选 Log signal data,并命名信号,例如 throttle_pos。在模型配置参数中,Data Import/Export 页面勾选 Signal logging,仿真结束后数据会保存在 logsout 对象中。若使用 To Workspace 模块,变量名设为 simout,保存格式选择 Structure with time,这样每条记录都带时间戳,方便与期望曲线对齐。
y_throttle、u_pedal、e_track,避免后续脚本中反复查找。五、运行仿真并检查输出波形
设置仿真停止时间为 10 秒,求解器选择 ode45 或 ode4(定步长),步长 0.01 秒。运行仿真后,打开 Scope 或绘制 logsout 中的信号。以节气门位置为例,期望输出应跟随踏板开度变化,但存在执行器响应延迟和超调。检查时重点关注三个指标:
| 指标 | 含义 | 示例期望值 |
|---|---|---|
| 上升时间 | 输出从 10% 到 90% 目标值所需时间 | ≤ 0.8 s |
| 超调量 | 峰值超过稳态值的百分比 | ≤ 10% |
| 稳态误差 | 稳定后输出与目标值的偏差 | ≤ 2% |
若波形出现持续振荡,优先检查 PID 参数和采样周期;若输出完全不跟随,检查输入端口连接和信号维度;若记录数据为空,检查 Signal logging 是否勾选以及信号是否命名。把每次仿真的输入、输出和判读结果保存为一份测试记录,就形成了第一个可复现的 MIL 测试闭环。