Укажите, что блок For Each Subsystem поддерживает работу S-функции в подсистеме.
void ssSupportsMultipleExecInstances(SimStruct *S, boolean_T val)
S
SimStruct, представляющий Блок s-function.
val
Вектор символа имеет значение или true
или false
. Если true
, то Для Каждой Подсистемы поддержит наличие S-функции, действует в нем.
Позволяет Блоку s-function действовать из блока For Each Subsystem. Лучше вызывать этот макрос от функции mdlSetWorkWidths
.
C, C++
В этом примере функция ssSupportsMultipleExecInstances
находится в mdlInitializeSize
. В основном, если блок безусловно поддерживает или не поддерживает Для Каждой подсистемы, функция может использоваться в 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); }