Main Content

本页采用了机器翻译。点击此处可查看英文原文。

使用 Stateflow 图进行测试框架输入和调度

使用 Stateflow 图进行测试框架调度

您可以使用 Test Sequence 模块、MATLAB® 功能模块或 Stateflow® 图定义测试框架调度。如果您使用 Stateflow 图作为调度程序,则可以使用 Test Sequence 模块或 MATLAB 功能模块所不具备的 Stateflow 功能。您可以使用 Stateflow 变体、图形函数、超级转移和超级步骤来定义更复杂的调度。例如,使用 Stateflow 变体,您可以在单个测试框架中指定多个测试场景。如果您不需要测试多个测试场景或使用复杂的序列逻辑,请使用 Test Sequence 模块,它具有更简单的测试调度语法。

注意

您必须拥有 Stateflow 许可证才能使用图进行测试框架输入或调度。

要使用 Stateflow 图作为测试框架测试调度程序,被测模型或子系统必须至少有一个函数调用信号。

从模型设置测试框架时,使用图作为调度程序的步骤如下:

  1. 在模型或子系统中,右键单击并分别选择测试框架 > 为模型创建为 <subsystem> 创建

    • 对于模型,在创建测试框架对话框中,将为函数调用和速率添加调度器设置为

    • 对于子系统,在“创建测试框架”对话框中,将使用以下项生成函数调用信号设置为

    一个名为“Simulink 函数调度程序”的图已添加到测试框架中。

    Test harness with Simulink Function Scheduler chart

  2. 打开 Stateflow 图并使用 Stateflow 状态、转移和其他对象定义测试序列。Stateflow 状态的用途与 Test Sequence 模块中的序列步骤相同。转移定义了从一种状态转移到另一种状态的准则。

要以编程方式将 Stateflow 图指定为调度程序,请将 sltest.harness.createSchedulerBlock 属性设置为 Chart

使用 Stateflow 图作为测试框架源

从模型创建测试框架时,使用图作为测试框架源的步骤如下:

  1. 在模型或子系统中,右键单击并分别选择测试框架 > 为模型创建为<subsystem> 创建

  2. 在“创建测试框架”对话框的“信源和信宿”部分中,选择“”而不是“输入端口”。

    图已添加到测试框架中。例如,

    Test harness with a chart as the source

  3. 打开 Stateflow 图并使用 Stateflow 逻辑定义测试框架源。

要以编程方式指定 Stateflow 图作为源,请将 sltest.harness.createSource 属性设置为 Chart

Stateflow 图作为测试框架调度程序和来源

此示例显示如何使用单个 Stateflow 图作为测试框架中的测试调度程序和源。本例中 sltest_autosar_chart.slx 模型的测试框架已经创建。

sltest_autosar_chart 是汽车节气门位置控制器的 AUTOSAR 组合模型。AUTOSAR 组合模型包含一个互连的 Model 模块网络,每个模块代表一个原子 AUTOSAR 软件组件 (ASWC)。Simulink 输入端口和输出端口代表 AUTOSAR 端口。信号线代表 AUTOSAR 组件连接器。

捕获主节气门和副节气门位置的输入是使用外部时间序列输入建模的,并且无需修改就直接通过图输入。当某些刺激输入可以建模而其他刺激输入只能作为外部捕获的数据时,这种建模风格很有用。

运行此示例之前,请导航到具有写权限的目录。

打开模型

open_system('sltest_autosar_chart')

打开测试框架

已经为该示例创建了测试框架。

该图显示了“创建测试框架”对话框的一部分,其中选择 Chart 作为源和调度程序。您不需要重新创建测试框架。

要打开框架,请使用编辑器画布右下角的透视控件,然后点击内部测试框架

测试框架打开。

打开 Stateflow 图

双击测试框架中的图来查看调度逻辑。

被测部件(AUTOSAR 模型)需要加速踏板位置传感器输入 APP_HwIO_Value,该输入在图中通过三种状态建模。

Initialize 状态将输入设置为标称值 (170),而 Run 状态则模拟 950 毫秒的稳定加速度命令。加速度命令在 Terminate 状态下重置为标称值。

被测组件使用导出函数建模风格。(参见 导出函数模型概述。)创建测试框架时,其 Stateflow 图被配置为调用每个根级 Simulink 函数模块并向模型中的每个函数调用子系统发送触发事件。在这个例子中,在刺激波形产生后,发送触发事件的代码处于每个状态。

运行模型

从测试框架运行模型。要查看节气门命令输出,请打开测试框架中的 Scope。

另请参阅

| |

相关主题