Определите, непрерывна ли задача
boolean_T ssIsContinuousTask(SimStruct *S, int_T tid)
S
SimStruct, представляющий Блок s-function.
tID
ID задачи.
true
булева значения, когда моделирование выполняет непрерывную задачу. В противном случае, возвращает false
.
Используйте в mdlOutputs
или mdlUpdate
, когда ваша S-функция имеет несколько частот дискретизации, чтобы определить, является ли задачей, представленной ID задачи tid
, непрерывная задача. Например:
if (ssIsContinuousTask(S, tid)) { /* Executing in the continuous task */ if (ssIsSpecialSampleHit(S, 1, 0, tid)) { real_T *zoh = ssGetRWork(S); real_T *xC = ssGetContStates(S); *zoh = *xC; } }
Вы не должны использовать это в S-функциях единственного уровня, или если вы не указывали время непрерывной выборки.
C, C++
Смотрите S-функцию mixedm.c
, используемый в sfcndemo_mixedm
.