主要内容

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

S-Function 回调方法

回调方法概述

每个 S-Function 都必须实现一组方法,称为回调方法,Simulink® 引擎在仿真包含 S-Function 的模型时会调用这些方法。

S-Function 回调方法执行每个仿真阶段所需的任务。在模型仿真期间,在每个仿真阶段,Simulink 引擎都会为模型中的每个 S-Function 模块调用适当的方法。

S-Function 回调方法执行的任务包括:

  • 初始化 - 在第一次仿真循环之前,引擎会初始化 S-Function,包括:

    • 初始化 SimStruct,这是一个包含有关 S-Function 信息的仿真结构

    • 设置输入和输出端口的数目和维度

    • 设置模块采样时间

    • 分配存储区域

  • 计算下一个样本命中 - 如果您创建了可变样本时间模块,则此阶段将计算下一个样本命中的时间;也就是说,它计算下一个步长。

  • 计算主时间步长的输出 - 此调用完成后,所有模块输出端口对于当前时间步长均有效。

  • 在主要时间步长中更新离散状态 - 在此调用中,该模块执行每时间步长一次的活动,例如更新离散状态。

  • 积分 - 这适用于具有连续状态和/或非采样零交叉的模型。如果您的 S-Function 具有连续状态,引擎会在子时间步上调用 S-Function 的输出和导数部分。这是为了让求解器可以计算 S-Function 的状态。如果 S-Function 具有非采样过零点,引擎还会在子时间步上调用 S-Function 的输出和过零点部分,以便能够定位过零点。

    注意

    请参阅动态系统的仿真阶段以了解主要和次要时间步骤的解释。

有些回调方法是可选的。仅当 S-Function 定义了某可选回调时,引擎才能调用该回调。

C MEX S-Function 的回调方法

必需的回调方法

C MEX S-Function 必须实现以下回调方法:

  • mdlInitializeSizes - 指定 SimStruct 中各种参数的大小,例如模块的输出端口数量。

  • mdlInitializeSampleTimes - 指定模块的采样时间。

  • mdlOutputs - 计算模块的输出。

  • mdlTerminate - 执行仿真终止时所需的任何操作。如果不需要采取任何行动,则此函数可以作为桩件实现。

可选的回调方法

以下回调方法是可选的。仅当 S-Function 定义了某可选回调时,引擎才能调用该回调。

2 级 MATLAB S-Function 的回调方法

必需的回调方法

2 级 MATLAB® S-function 必须实现以下回调方法:

  • setup - 指定 SimStruct 中各种参数的大小,例如模块的输出端口数量。

  • Outputs - 计算模块的输出。

  • Terminate - 执行仿真终止时所需的任何操作。如果不需要采取任何行动,则此函数可以作为桩件实现。

有关编写回调方法的信息,请参阅编写 2 级 MATLAB S-Function

可选的回调方法

以下回调方法是可选的。仅当 S-Function 定义了某可选回调时,引擎才能调用该回调。

另请参阅

| | |

主题