主要内容

mdlUpdate

更新块的状态

要求

没有

语言

C, c++

语法

#定义MDL_UPDATEvoid mdlUpdate(SimStruct *S, int_T tid)

参数

年代

表示s -功能块的SimStruct。

tid

任务ID。

描述

的仿真软金宝app件®引擎在每个主要的模拟时间步骤调用此可选方法。该方法需要计算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 . txt . txt

定义声明中使mdlUpdate方法仅对MATLAB可用®墨西哥人文件。如果s函数没有内联,金宝app仿真软件编码器无法使用此方法,导致链接或运行时错误。

例子

有关使用此函数更新离散状态的示例,请参见dsfunc.c.关于使用该函数更新时变连续传递函数的传递函数系数的示例,请参见stvctf.c

之前介绍过的R2006a