更新块的状态
没有
C, c++
#定义MDL_UPDATEvoid mdlUpdate(SimStruct *S, int_T tid)
年代
SimStruct表示一个S-Function块。
tid
任务ID。
的仿真软金宝app件®Engine在每个主要的模拟时间步骤都调用这个可选的方法。该方法应计算s函数在当前时间步长的状态,并将状态存储在s函数的状态向量中。该方法还可以执行s函数在每个主要时间步中需要执行的任何其他任务。
如果s函数有一个或多个离散状态,请使用此代码不直接引线。
这样做的原因是,大多数没有离散状态但有直接馈通的s函数没有更新函数。因此,在这些情况下,引擎能够消除对额外调用的需要。
如果你的C MEX s函数需要它mdlUpdate
例程被调用,并且它不满足上述两个条件中的任何一个,则使用sssetnumdiscstates.
宏观的mdlInitializeSizes
函数。
在C MEX s函数中tid
(任务ID)参数指定在mdlOutputs
例程被调用。参数中可以使用此参数mdlUpdate
多速率S-Function块的例程来封装特定于任务的代码块(参见多重速率的功能块).
使用UNUSED_ARG
宏,如果你的C MEX s函数不包含任务特定的代码块,表明tid
输入参数是必需的,但在回调函数体中不使用。为此,插入这一行
UNUSED_ARG (tid)
在声明之后mdlUpdate
.
请注意
如果你有金宝app仿真软件编码器™,为包含此方法的非内联C MEX s函数生成代码时,请确保该方法没有封装在#如果定义(MATLAB_MEX_FILE)
声明。例如:
#define MDL_UPDATE #if define (MDL_UPDATE) && define (MATLAB_MEX_FILE) static void mdlUpdate(SimStruct *S, int_T tid){/*在这里添加mdlUpdate代码*/}#endif
的定义
声明中使mdlUpdate
方法只能用MATLAB®墨西哥人文件。如果s函数没有内联,金宝app仿真软件编码器不能使用此方法,导致链接或运行时错误。