Восстановите рабочую точку S-функции MEX C
Нет
C, C++
#define MDL_OPERATING_POINT
void mdlSetOperatingPoint(SimStruct* S, const mxArray* in)
S
SimStruct, представляющий Блок s-function.
const mxArray* in
Рабочая точка S-функции создается mdlGetOperatingPoint.
Механизм Simulink® вызывает этот пользовательский метод в начале симуляции модели, содержащей S (SimStruct, представляющий Блок s-function). mdlSetOperatingPoint устанавливает начальное состояние симуляции S-функции к рабочей точке модели.
/* Function: mdlSetOperatingPoint
* Abstract:
* Unpack the MATLAB structure passed and restore it to
* the RunTimeData structure
*/
static void mdlSetOperatingPoint(SimStruct* S,
const mxArray* simSnap)
{
RunTimeData_T* rtd =
(RunTimeData_T*)ssGetPWorkValue(S, 0);
/* Check and load the count value */
{
const mxArray* cnt =
mxGetField(simSnap, 0, fieldNames[0]);
ERROR_IF_NULL(S,cnt,
"Count field not found in simulation state");
if ( mxIsComplex(cnt) ||
!mxIsUint64(cnt) ||
mxGetNumberOfElements(cnt) != 1 ) {
ssSetErrorStatus(S, "Count field is invalid");
return;
}
rtd->cnt = ((uint64_T*)(mxGetData(cnt)))[0];
}
}Пользовательский код и Ручные Закодированные Блоки с помощью API S-функции| mdlInitializeConditions|mdlGetOperatingPoint |SetOperatingPoint