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