Получите шаг расчета индекс выхода порта
int_T ssGetOutputPortSampleTimeIndex(SimStruct *S, int_T outputPortIdx)
S
SimStruct, представляющий блок S-Function.
outputPortIdx
Индекс порта выхода, чей индекс шага расчета должен быть возвращен.
Система координат int_T
значение, указывающее индекс шага расчета для порта выхода, заданное индексом outputPortIdx
. Возвращает CONSTANT_TID
(-2
) для константы (inf
) шаги расчета.
Использование в любой стандартной программе после распространения шага расчета (т.е. в или после mdlInitializeSampleTimes
) для определения индекса шага расчета порта выхода. Использовать этот макрос следует только в том случае, если заданы шаги расчета на основе портов.
Simulink® engine возвращает временной индекс расчета в контексте шагов расчета S-функции, а не всего шага расчета модели. Следовательно, индекс шага расчета (sti
) возвращен ssGetOutputPortSampleTimeIndex
и идентификатор задачи (tid
), переданные в S-функцию двигателем Simulink, не являются эквивалентными. Используйте индекс, возвращенный ssGetOutputPortSampleTimeIndex
в вызовах к ssIsSampleHit
, и т.д., чтобы определить, работает ли S-функция с одной из частот дискретизации. Для примера выполните следующее mdlOutputs
метод использует индекс шага расчета, чтобы проверить, выполняется ли первый выходной порт.
static void mdlOutputs(SimStruct *S, int_T tid) { int sti = ssGetOutputPortSampleTimeIndex(S,0); if (ssIsSampleHit(S, sti, tid)) { CodeForThisSampleRateHere() } }
Механизм Simulink возвращает индекс CONSTANT_TID
(-2
) для константы (inf
) шаги расчета. В этом случае индекс шага расчета и идентификатор задачи всей модели идентичны.
C, C++
Смотрите S-функцию sfun_multirate.c
используется в sfcndemo_sfun_multirate
.