Задание имени вектора Dwork
const char_T *ssSetDWorkName(SimStruct *S, int_T vector, char_T *name)
SSimStruct представляет S-функциональный блок.
vectorИндекс рабочего вектора, где индекс является одним из 0, 1, 2, ...
ssGetNumDWork(S)-1.
nameИмя рабочего вектора.
Имя вектора DWork, введенного в name.
Использовать в mdlInitializeSizes или в mdlSetWorkWidths для указания имени указанного вектора Dwork. Продукт Simulink ® Coder™ использует это имя для маркировки рабочего вектора в сгенерированном коде. Если имя не указано, продукт Simulink Coder генерирует имя вектора DWork в коде. Дополнительные сведения об использовании векторов DWork см. в разделе Как использовать векторы DWork.
Примечание
ssSetDWorkName сохраняет только указатель на вектор символов имени. Поэтому вектор символов имени должен находиться в постоянной памяти; он не может быть локальной переменной.
C, C++
В следующем примере динамически создаются и устанавливаются имена нескольких векторов DWork.
#define MDL_SET_WORK_WIDTHS
#if defined(MDL_SET_WORK_WIDTHS)
static void mdlSetWorkWidths(SimStruct *S)
{
int_T i;
/* Number of DWork vectors based on input width */
ssSetNumDWork(S, ssGetInputPortWidth(S,0));
/* Malloc space to store the names of the DWork vectors */
name=(char_T *)malloc(sizeof(char_T)*ssGetNumDWork(S)*16);
for (i = 0; i < ssGetNumDWork(S); i++) {
sprintf(&name[i*16], "DWork%d", i+1);
ssSetDWorkName(S, i, &name[i*16]);
}
}
#endif /* MDL_SET_WORK_WIDTHS */
См. S-функции в разделе sfcndemo_sfun_rtwdwork полный пример использования векторов DWork.