Получите шаг расчета индекс выхода порта
int_T ssGetOutputPortSampleTimeIndex(SimStruct *S, int_T outputPortIdx)
SSimStruct, представляющий блок 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.