Получите индекс частоты дискретизации входного порта
int_T ssGetInputPortSampleTimeIndex(SimStruct *S, int_T inputPortIdx)
S
SimStruct, представляющий Блок s-function.
inputPortIdx
Индекс входного порта, индекс частоты дискретизации которого должен быть возвращен.
Значение int_T
, указывающее на индекс частоты дискретизации входного порта, заданного индексом inputPortIdx
. Возвращает CONSTANT_TID
(-2
) для постоянного (inf
) частоты дискретизации.
Используйте в любой стандартной программе после распространения частоты дискретизации (i. e., в или после 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
.