主要内容

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 定义了某可选回调时,引擎才能调用该回调。

另请参阅

| | |

主题