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