Simulink 之Test Assessment 模块

📅 2026/7/31 9:33:53
Simulink 之Test Assessment 模块
在基于模型的测试中我们经常面临这样一个问题激励信号发出去了模型也在跑但结果对不对谁来判手动拉曲线、看数值不仅效率低下还容易遗漏错误。Simulink 提供了Test Assessment模块它就像一个不知疲倦的“自动判卷老师”能够实时监控模型输出自动判断测试是否通过。本文将从模块定位、界面、核心语法到实战案例帮你全面掌握这个关键测试工具。一、Test Assessment 是什么先搞清定位在 Simulink Test 体系中有两个极易混淆的模块Test Sequence和Test Assessment。它们共用同一个编辑器但职责完全不同对比维度Test SequenceTest Assessment角色比喻手主动输出眼睛被动观察核心功能生成测试激励信号驱动模型监控模型输出信号检查结果是否有 Output有必须定义输出信号无不需要产生任何信号关键语句赋值语句如out 5;验证语句如verify(out 0);一句话总结Test Sequence 负责“出题”Test Assessment 负责“批改答卷”。二、界面速览三大核心区域双击 Test Assessment 模块打开的编辑器由三个关键区域组成区域名称作用左上符号表 (Symbols)声明所有输入信号来自模型的输出。注意这里不需要定义 Output。左下步骤层次结构管理测试步骤支持父子层级如step_1step_1_1。父层管大状态子层管具体检查点。右侧代码编辑器选中某个步骤后在这里编写verify或assert验证语句。三、基本用法三步上手第 1 步连接信号并声明 Input将模型中你想要监控的输出信号线连接到 Test Assessment 模块的输入端口。在符号表的Input区域为每个信号定义名称。例如你的截图中定义了age、res、money等 5 个输入。第 2 步设计步骤层次利用父子结构你截图中的父子层级step_1step_1_1step_1_2是一个非常实用的设计模式父步骤定义一个大的时间段或状态如“加速阶段”。子步骤在该阶段内划分更细的时间窗口或条件分别进行不同检查。跳转逻辑通过过渡条件Transition控制步骤何时跳转例如after(2, sec)表示持续 2 秒后跳转。第 3 步编写验证代码核心语句在右侧代码编辑区输入verify或assert语句matlab% 在 step_1_1 中 step_1_1 verify(age 18 money 100); if res 1 verify(game_age 5); end % 过渡条件检查 3 秒后跳转 after(3, sec)verify(条件)条件为false时记录失败但仿真继续温和模式。assert(条件)条件为false时立即停止仿真严格模式。四、关键语句与运算符大全1. 验证语句语句行为适用场景verify失败时记录错误仿真继续希望一次性收集所有错误的场景。assert失败时立即停止仿真检查关键前置条件一旦失败后续测试无意义。2. 时序运算符构建时间逻辑运算符含义示例after(t, unit)当前步骤激活超过t时间后为trueafter(5, sec)before(t, unit)当前步骤激活少于t时间内为truebefore(2, sec)duration(cond)返回条件cond持续为true的时长duration(res5) 3et当前步骤已激活的持续时间秒et 10t仿真开始后经过的总时间秒t 203. 信号变化检测捕捉跳变事件运算符含义示例hasChanged(sig)信号sig的值自步骤开始后发生了变化hasChanged(res)hasChangedFrom(sig, val)信号从val变成了其他值hasChangedFrom(mode, 0)hasChangedTo(sig, val)信号变成了valhasChangedTo(mode, 1)4.when条件步骤高级触发你曾问过when res 1的用法。这是 Test Assessment 中一种特殊的步骤结构用法在子步骤名称后加上when 条件例如step_1_1 when res 1。效果该子步骤仅当条件为true时才会被激活并执行内部的verify检查。典型场景当你的被测模型本身没有 Test Sequence 模块而是直接根据输入信号如模式选择信号进行验证时非常实用。