问金宝app引擎跳过连续状态一致性检查
void ssSetSkipContStatesConsistencyCheck(SimStruct *S,boolean_T v)
年代
SimStruct表示s功能块。
v
布尔值(boolean_T
)告诉仿真软件金宝app®跳过状态一致性连续检查。
使用此宏要求Simulink跳过对正确编写的金宝apps函数的连续状态一致性检查。一个正确的s函数是一个使用ssSetSolverNeedsReset
宏,当它改变自己的连续状态在主要的时间步骤。
默认情况下,Simuli金宝appnk监控s函数的连续状态变化。当您不使用时,它会发出更改警告ssSetSolverNeedsReset
宏。如果你使用ssSetSolverNeedsReset
宏,您不需要Simulink监控s函数中的连续状态变化,因此可以加速s函数并提高仿金宝app真性能。要告诉Simul金宝appink停止监视连续的状态变化,请使用ssSetSkipContStatesConsistencyCheck
宏。如果s函数:
永远不会改变状态。
改变状态,但使用ssSetSolverNeedsReset
宏来重置求解器。
若要跳过支票,请使用ssSetSkipContStatesConsistencyCheck(年代,1)
在mdlInitializeSizes
方法。
请注意
出于性能原因,持续状态一致性检查仅在正常模式和加速模式模拟中执行。特别地,Simulink不会对金宝app以下情况执行连续状态一致性检查:
S-functions内模型加速模式
任何s功能,如果模型运行在快速加速器模式
C, c++
下面的示例使用这个宏要求Simulink引擎跳过一致性检查,因为S-function已经在它的金宝appmdlOutputs
方法。
static void mdlinitializesize (SimStruct *S){:: <剪切>:ssSetSkipContStatesConsistencyCheck(SimStruct S,1);:: <剪>:静态孔隙mdlOutputs (SimStruct *年代,int_T tid)} / * mdlInitializeSizes结束* /静态孔隙mdlOutputs (SimStruct *年代,int_T tid){/ *改变州主要时间步只有* / (ssIsMajorTimeStep (S) & & YourConditionsForStateChange){双* x = ssGetContStates(年代);/*重置状态*/ for (i=0;我< nContStates;I ++) {x[I] = 0.0;} /*要求Simulin金宝appk引擎重置求解器。* / ssSetSolverNeedsReset(年代);} }