文档

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(年代);}}

在R2016a中引入