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 必须实现以下回调方法:
有关编写回调方法的信息,请参阅编写 2 级 MATLAB S-Function。
可选的回调方法
以下回调方法是可选的。仅当 S-Function 定义了某可选回调时,引擎才能调用该回调。
另请参阅
Level-2 MATLAB S-Function | S-Function Builder | S-Function | MATLAB Function