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、测试用例需考虑覆盖度。

参考链接:

使用Simulink Test Manager模型测试示例

(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模型

  1. Test Sequence的作用

    • 编辑测试用例:Test Sequence负责编辑具体的测试用例,包括设置测试步骤和逻辑控制。
    • 自定义验证:提供自定义验证功能,如设置等待时间、线性输入变化等。
  2. Test Manager的作用

    • 管理测试流程:Test Manager负责整个测试流程的管理,包括运行测试和生成测试报告。
    • 运行测试:通过Test Manager,用户可以执行已经编辑好的测试用例。
  3. 联合测试流程

    • 创建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执行测试,并分析结果。
    • 完善测试用例:根据测试结果,不断完善测试用例,以达到所需的覆盖率要求。
  4. 注意事项

    • 处理bus信号:Test Sequence在处理bus信号时可能存在问题,推荐将bus信号拆分为普通端口输出。
    • 测试步的可重用性:即使没有自动测试脚本,修改模型后,已建立的测试步仍可重复利用,提高效率。
    • 覆盖率分析:Test Manager支持设置覆盖率分析,如MCDC、决策和条件覆盖等,通过assert函数进行断言和错误处理。

使用时序逻辑控制图的执行 - MATLAB & Simulink

定义测试步骤和评估 - 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搭建模型进行单元测试,确保模型功能的正确实现和性能符合预期。通过自动化测试流程和详细的测试用例设计,可以提高测试效率和覆盖率,增强模型的可靠性和稳定性。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐