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