Получение индекса времени выборки выходного порта
int_T ssGetOutputPortSampleTimeIndex(SimStruct *S, int_T outputPortIdx)
SSimStruct представляет S-функциональный блок.
outputPortIdxИндекс выходного порта, для которого должен быть возвращен индекс времени выборки.
Один int_T значение, указывающее индекс времени выборки для выходного порта, заданного индексом outputPortIdx. Прибыль CONSTANT_TID (-2) для константы (inf) время выборки.
Использовать в любой подпрограмме после распространения времени выборки (т.е. в или после mdlInitializeSampleTimes) для определения временного индекса выборки выходного порта. Этот макрос следует использовать только в том случае, если указаны примеры времени на основе портов.
Модуль Simulink ® возвращает индекс времени выборки в контексте времени выборки 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.