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 必须实现以下回调方法:
- 指定mdlInitializeSizesSimStruct中各种参数的大小,例如模块的输出端口数量。- 指定模块的采样时间。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