主要内容

使用状态流程图测试导出-功能模型仿真

使用状态流®图表提供函数调用调度器,您可以在其中完全控制周期性(同步)或非周期性(异步)调用序列的调度过程。

  • 创建一个新的Simulin金宝appk®模型。

  • 添加一个模型引用导出函数模型的块。

  • 使用状态流程图指定函数调用输入。

  • 指定数据输入。

  • 模拟运行。

要创建此示例的模型,请参见创建一个导出函数模型

要打开已完成的测试模型,请参见ex_export_function_test_model_with_stateflow_chart

创建引用的导出函数模型

从model块引用导出函数模型允许添加来自Stateflow图的函数调用事件和用于测试的数据信号日志,而无需更改模型本身。

  1. 添加一个模型块到一个新的Simulink模金宝app型。在模型名称框中,输入export_function_model

  2. 添加外港街区到output_100ms而且output_10ms端口用于将仿真数据保存到MATLAB中。

  3. 添加一个正弦波块提供数据输入。集振幅2而且样品时间0.01.将块连接到input_10ms的输入端口。模型块。

使用状态流程图创建周期性调度器

  1. 创建一个新的状态流程图。此步骤需要statflow许可。

  2. 建模TAB和从设计部分中,选择模型浏览器.在模型层次结构窗格中,选择图表

  3. 将带有输出端口的函数调用事件添加到图表中。从菜单中选择添加>事件.在的名字框中,输入out_100ms.从范围列表中,选择输出到Simulin金宝appk.重复步骤以创建函数调用事件和输出端口out_10ms

  4. 通过双击该块打开图表。添加一个状态块和一个默认过渡箭头。

  5. 将状态重命名为function_call_scheduler

  6. 每10毫秒和100毫秒添加周期函数调用。在状态块中输入以下命令。

    在每(10,tick):发送(out_10ms);On every(100, tick):send(out_100ms);

    关键字蜱虫是计算模拟步数的隐式事件吗发送将函数调用事件输出到输出端口的显式事件。

为仿真创建测试模型(Harness)

Simulink测试金宝app模型仅用于模拟。在模拟测试之后,从导出函数模型生成代码,然后将导出的函数代码与外部编码的调度器集成。

  1. 向您的测试模型添加一个状态流程图。

  2. 将状态流程图输出连接到模型块的输入。

引用导出函数模型的调度限制

如果一个测试模型引用了一个导出函数模型,有一些限制来确保与仿真结果的一致性。

对于测试模型:

  • 函数的输入端口调用模型块必须遵循根级函数调用的执行顺序轮廓尺寸引用的导出函数模型中的块。

    如果测试模型在任何时间步骤中调用引用模型函数的顺序不正确,Simulink将显示一个错误。金宝app有关已排序的执行顺序的信息,请参见控制和显示执行顺序.若要禁用此限制,请取消配置参数前的复选框为引用模型启用严格的调度检查

对于export-function模型:

  • 根级函数调用的示例时间轮廓尺寸块必须设置为inherited (-1)或匹配来自驱动它们的状态流图的函数调用的样本时间。

模拟导出函数模型

在生成代码之前,模拟导出函数模型以测试和观察其行为。

请注意

在顶模模拟中使用导出函数模型时,请勿在模拟过程中更改模型的启用/禁用状态。在模拟开始时启用它,并使用函数调用来调用它。

  1. 为测试模型设置配置参数。在建模TAB和从设置部分中,选择模型设置.选择模型引用窗格。取消配置参数前的复选框为引用模型启用严格的调度检查

  2. 验证配置参数解算器类型设置为固定步解算器设置为离散(无连续状态)固定步长(基本采样时间)设为汽车

  3. 上右键单击输出端口信号模型块和选择日志选择信号

  4. 模拟运行。

  5. 通过单击图标打开模拟数据检查器

在测试模型之后,您可以为函数生成代码。看到为导出函数模型生成代码

另请参阅

相关的话题