Укажите, что блок «Для каждой подсистемы» поддерживает S-функцию, работающую внутри подсистемы.
void ssSupportsMultipleExecInstances(SimStruct *S, boolean_T val)
SSimStruct представляет S-функциональный блок.
valВектор символов имеет значение: true или false. Если true, тогда для каждой подсистемы будет поддерживаться работа S-функции внутри нее.
Позволяет S-функциональному блоку работать из блока для каждой подсистемы. Лучше всего вызвать этот макрос из mdlSetWorkWidths функция.
C, C++
В этом примере ssSupportsMultipleExecInstances функция находится внутри mdlInitializeSize. В основном, если блок безоговорочно поддерживает или не поддерживает подсистему For Each, функция может использоваться внутри mdlInitializeSize. Если решение опирается на скомпилированную информацию, однако, то эта функция должна использоваться внутри mdlSetWorkWidths.
static void mdlInitializeSizes(SimStruct *S)
{
ssSetNumDiscStates(S, 0); /* no default dstate */
if (!ssSetNumInputPorts(S, 1)) return;
ssSetInputPortWidth(S, 0, 1);
if (!ssSetNumOutputPorts(S, 1)) return;
ssSetOutputPortWidth(S, 0, 1);
ssSetNumRWork(S, 0);
ssSetNumDWork(S, 1);
ssSetNumIWork(S, 0);
ssSetNumPWork(S, 0);
ssSetNumModes(S, 0);
ssSetDWorkWidth(S, 0, 1);
ssSetDWorkUsedAsDState(S, 0, SS_DWORK_USED_AS_DSTATE);
ssSetDWorkName(S, 0, "State");
ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE |
SS_OPTION_WORKS_WITH_CODE_REUSE |
SS_OPTION_USE_TLC_WITH_ACCELERATOR);
ssSupportsMultipleExecInstances(S, true);
}