每个s函数必须实现一组被调用的方法回调方法那就是Simulink金宝app®在模拟包含s功能的模型时调用。
s函数回调方法执行每个仿真阶段所需的任务。在模型的仿真过程中,在每个仿真阶段,Simulink引擎都会为模型中的每个S-Function块调用相应的方法。金宝app
S-function回调方法执行的任务包括:
初始化-在第一个模拟循环之前,引擎初始化s功能,包括:
初始化SimStruct
,一个包含s函数信息的仿真结构
设置输入输出端口的数量和尺寸
设置块样本时间
分配存储区域
计算下一个样本击中-如果你创建了一个可变的样本时间块,这个阶段计算下一个样本命中的时间;也就是说,它计算下一步的大小。
主要计算输出时间步长—调用完成后,所有块输出端口对当前时间步长有效。
更新离散状态的主要时间步长-在这个调用中,块执行每时间步一次的活动,例如更新离散状态。
集成-这适用于具有连续状态和/或非抽样零交叉的模型。如果你的s函数有连续的状态,引擎在小的时间步上调用你的s函数的输出和导数部分。这样求解器就可以计算s函数的状态。如果您的s函数具有非采样的零交叉点,引擎也会在较小的时间步骤中调用s函数的输出和零交叉点部分,以便它可以定位零交叉点。
请注意
看到动态系统的仿真阶段来解释主要和次要的时间步骤。
有些回调方法是可选的。引擎只在s函数定义了回调函数时才调用可选的回调函数。
C MEX S-functions必须实现以下回调方法:
参数的大小mdlInitializeSizes
SimStruct
,例如块的输出端口数量。
—块的采样时间。mdlInitializeSampleTimes
—计算块的输出。mdlOutputs
-在模拟结束时执行任何需要的操作。如果不需要任何操作,则可以将此函数实现为存根。mdlTerminate
下面的回调方法是可选的。引擎只在s函数定义了回调函数时才调用可选的回调函数。
MATLAB二级s函数必须实现以下回调方法:
有关编写回调方法的信息,请参见编写二级MATLAB s函数.
下面的回调方法是可选的。引擎只在s函数定义了回调函数时才调用可选的回调函数。