ssGetContStates

Получите непрерывные состояния блока

Синтаксис

real_T *ssGetContStates(SimStruct *S)

Аргументы

S

SimStruct, представляющий Блок s-function.

Возвращается

Указатель (real_T *) к непрерывному вектору состояния как массив длины ssGetNumContStates(S). Возвращает NULL, если S-функция не имеет никаких непрерывных состояний.

Описание

Используйте в цикле моделирования, mdlInitializeConditions или стандартных программах mdlStart, чтобы получить real_T непрерывный вектор состояния для S-функции. Этот вектор имеет длину ssGetNumContStates(S). Как правило, этот вектор инициализируется в mdlInitializeConditions и используется в mdlOutputs.

Языки

C, C++

Пример

Следующие строки из файла, который показывает csfunc.c, как инициализировать непрерывные состояния в mdlInitializeConditions и вычислить производные состояния в mdlDerivatives. Эта S-функция используется в образцовом sfcndemo_csfunc.

static void mdlInitializeConditions(SimStruct *S)
{
    real_T *x0 = ssGetContStates(S);
    int_T lp;

    for (lp=0;lp<2;lp++) {
        *x0++=0.0;
    }
}

static void mdlDerivatives(SimStruct *S)
{
    real_T            *dx    = ssGetdX(S);
    real_T            *x     = ssGetContStates(S);
    InputRealPtrsType uPtrs  = ssGetInputPortRealSignalPtrs(S,0);
    /* xdot = Ax + Bu */
    dx[0]=A[0][0]*x[0]+A[1][1]*x[1]+B[0][0]*U(0)+B[0][1]*U(1);
    dx[1]=A[1][0]*x[0]+A[1][1]*x[1]+B[1][0]*U(0)+B[1][1]*U(1);
}

Представлено до R2006a

Была ли эта тема полезной?