Matlab学习记录(2)
simulink建模要求
1、要求系统步长为10ms;
2、要求StateFlow包含2个状态机,初始化与运行,状态转换条件自定义;
3、要求StateFlow状态动作包含3个输出事件,包含周期10ms、20ms、100ms的3个周期函数调用;
4、要求Simulink创建3个函数调用子系统;
5、要求10ms周期子系统采用模型引用方式,实现自动清零的累加计数器,使用常用模块,输入为常量1,累加10次后清零,计数结果为输出;
6、要求20ms周期子系统采用模型引用方式,实现信号滤波,使用StateFlow,输入为uint16类型的信号,信号持续50ms保持不变且不高于某特征值认为信号可靠,将该信号输出,否则保持历史值;
7、要求100ms周期子系统采用模型引用方式,实现信号统一输出,使用常用模块,输入为10ms子系统及20ms子系统的输出,10ms子系统输出为0时100ms子系统输出标志位1,20ms子系统输出保持原值作为100ms子系统输出;
8、要求建立数字字典管理数据,输入输出采用Signal类型,constant采用Paramater类型;
9、要求仿真无报错;
10、Logging所有输入输出信号。
1、基于任务1的模型设计测试用例;
2、各子系统的单元测试用例,如针对20ms子系统,测试用例需包含输入信号略低于特征值、输入正好为特征值、输入略高于特征值、输入为异常0、输入时间不连续、输入值波动等;
3、集成后系统的集成测试用例;
4、采用Excel管理测试用例;
5、测试用例需考虑覆盖度。
参考链接:
(2 封私信 / 4 条消息) simulink mil 仿真(2) Test Sequence - 知乎
Simulink Test Sequence场景测试和代码生成步骤-传感器专家网
(2 封私信 / 2 条消息) Test Sequence与Test Manager联合测试Simulink模型 - 知乎
Simulink模型的MIL单元测试_simulink单元测试-CSDN博客
仿真与测试:单元测试与Test Harness-CSDN博客
[Simulink] 基于模型的测试与验证学习笔记_Step 4:Testing By Simulation_simulink test harness-CSDN博客
(2 封私信 / 4 条消息) 使用Sequence Viewer序列查看器可视化消息、事件和实体 - 知乎
Test Sequence - 创建仿真测试场景、函数调用和评估 - Simulink
Test Harness测试simulink模块
Simulink 的 Test Sequence 块允许用户通过 MATLAB 语法定义测试步骤、条件和验证逻辑,用于模型仿真验证。

verify 评估逻辑表达式并输出结果
verify - 评估逻辑表达式并输出结果 - MATLAB

verify( 将标量逻辑值 expression)expression 评估为 true 或 false。
verify( 返回指定的错误消息,如果标量逻辑表达式失败。如果您在测试管理器中运行测试,则错误消息将出现在仿真日志中。如果在测试管理器之外运行测试,则消息会出现在诊断查看器中。expression,errorMessage)
verify( 使用 expression,identifier,errorMessage)identifier 作为测试结果的标签。如果你在测试管理器中运行测试,identifier 将被用作信号标签的测试结果。如果在测试管理器之外运行测试,则标签会出现在仿真数据检查器中,如果失败,则会出现在诊断查看器中。
Test Sequence与Test Manager联合测试Simulink模型
-
Test Sequence的作用:
- 编辑测试用例:Test Sequence负责编辑具体的测试用例,包括设置测试步骤和逻辑控制。
- 自定义验证:提供自定义验证功能,如设置等待时间、线性输入变化等。
-
Test Manager的作用:
- 管理测试流程:Test Manager负责整个测试流程的管理,包括运行测试和生成测试报告。
- 运行测试:通过Test Manager,用户可以执行已经编辑好的测试用例。
-
联合测试流程:
- 创建Test harness:首先需要在Simulink模型中创建Test harness,这是进行联合测试的基础。
- 选择Test sequence模式:在创建Test harness时,选择使用Test sequence模式进行测试。
- 设置仿真步长:根据需求设置模型的离散仿真步长。
- 编辑Test Sequence:在Test Sequence中,编辑Step、Transition和Next Step,描述具体的测试内容。可以使用ramp函数控制输入变化,以及when decomposition实现条件驱动的输入改变。
- 设定预期结果:通过Test Assessment设定预期结果,并使用verify函数验证输出是否符合预期。
- 执行测试:通过Test Manager执行测试,并分析结果。
- 完善测试用例:根据测试结果,不断完善测试用例,以达到所需的覆盖率要求。
-
注意事项:
- 处理bus信号:Test Sequence在处理bus信号时可能存在问题,推荐将bus信号拆分为普通端口输出。
- 测试步的可重用性:即使没有自动测试脚本,修改模型后,已建立的测试步仍可重复利用,提高效率。
- 覆盖率分析:Test Manager支持设置覆盖率分析,如MCDC、决策和条件覆盖等,通过assert函数进行断言和错误处理。
使用时序逻辑控制图的执行 - MATLAB & Simulink
搭建Simulink模型进行单元测试主要涉及Test harness、Test Manager、Test Sequence等工具。Test harness用于创建测试模型,生成输入输出接口;Test Manager管理测试流程,运行测试用例,生成测试报告;而Test Sequence则用于编辑测试用例,设置不同的测试步骤,执行逻辑类测试,提供灵活的验证内容。Test Sequence的优势在于可以设置多种测试步,方便地按流程测试,同时支持条件测试步和逻辑验证,提高测试效率。对于测试用例的实现,可以通过多种方式,如Test Sequence、Excel或Signal Build。使用MATLAB与Simulink Test的API接口,可以编辑脚本实现自动化测试。
建立测试流程首先需要封装测试模型为Test harness,设置仿真步长为离散周期,然后通过Test Sequence编写测试步骤、验证预期结果。在Test Sequence中,通过设置输入、输出、测试步骤、跳转条件和描述,来构建详细的测试用例。在Test Assessment中,设置期望结果,通常使用verify函数进行表达式验证,确保测试结果符合预期。
使用Simulink Test Manager进行测试配置,包括设置模型属性、测试类型和覆盖分析。执行测试用例后,通过查看测试结果和报告,分析覆盖度和验证情况,根据结果完善测试用例和模型。报告中包括覆盖率报告,帮助评估测试效果和覆盖率。在复杂模型中,可以使用Add Tests for missing coverage功能自动生成测试用例输入,以提高覆盖率。
测试过程中,可以使用ramp函数线性变化输出值,heaviside函数生成阶跃信号,sawtooth、square和triangle函数创建锯齿波、方波和三角波信号,作为测试输入。verify和assert语句用于验证测试结果和模型行为,确保正确性和完整性。
通过上述步骤,可以有效地使用Simulink搭建模型进行单元测试,确保模型功能的正确实现和性能符合预期。通过自动化测试流程和详细的测试用例设计,可以提高测试效率和覆盖率,增强模型的可靠性和稳定性。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)