Получите индекс шага расчета порта входа
int_T ssGetInputPortSampleTimeIndex(SimStruct *S, int_T inputPortIdx)
SSimStruct, представляющий блок S-Function.
inputPortIdxИндекс порта входа, чей индекс шага расчета должен быть возвращен.
Система координат int_T значение, указывающее индекс шага расчета порта входа, заданный индексом inputPortIdx. Возвращает CONSTANT_TID (-2) для константы (inf) шаги расчета.
Использование в любой стандартной программе после распространения шага расчета (т.е. в или после mdlInitializeSampleTimes) для определения индекса шага расчета порта входа. Использовать этот макрос следует только в том случае, если заданы шаги расчета на основе портов.
Simulink® engine возвращает временной индекс расчета в контексте шагов расчета S-функции, а не всего шага расчета модели. Следовательно, индекс шага расчета (sti) возвращен ssGetInputPortSampleTimeIndex и идентификатор задачи (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) шаги расчета. В этом случае индекс шага расчета и идентификатор задачи всей модели идентичны.
C, C++
Смотрите S-функцию sfun_multirate.c используется в sfcndemo_sfun_multirate и S-функции sfun_port_constant.c используется в sfcndemo_port_constant.