22#define S_FUNCTION_NAME MCU
23#define S_FUNCTION_LEVEL 2
40 time_T TIME = ssGetT(S);
60#define MDL_CHECK_PARAMETERS
61#if defined(MDL_CHECK_PARAMETERS) && defined(MATLAB_MEX_FILE)
62static void mdlCheckParameters(SimStruct *S)
71 if (!mxIsDouble(ssGetSFcnParam(S,i)) || mxIsComplex(ssGetSFcnParam(S,i)) ||
72 mxIsEmpty(ssGetSFcnParam(S,i)))
74 ssSetErrorStatus(S,
"Input parameter must be of type double");
78 if (mxGetNumberOfDimensions(ssGetSFcnParam(S,i)) > 2)
80 ssSetErrorStatus(S,
"Параметр м.б. только скаляром, вектором или матрицей");
87 ssSetSFcnParamTunable(S, i, SS_PRM_TUNABLE);
97 ssSetNumSFcnParams(S, 1);
99 if(ssGetNumSFcnParams(S) == ssGetSFcnParamsCount(S))
102 mdlCheckParameters(S);
110 ssSetNumContStates(S, 0);
114 if (!ssSetNumInputPorts(S, 1))
return;
117 ssSetInputPortDirectFeedThrough(S, 0, 0);
118 ssSetInputPortRequiredContiguous(S, 0, 1);
126 ssSetNumSampleTimes(S, 1);
129 ssSetNumRWork( S, 5);
130 ssSetNumIWork( S, 5);
131 ssSetNumPWork( S, 0);
132 ssSetNumModes( S, 0);
133 ssSetNumNonsampledZCs( S, 0);
136 ssSetRuntimeThreadSafetyCompliance(S, RUNTIME_THREAD_SAFETY_COMPLIANCE_TRUE);
138 ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE);
144#if defined(MDL_START)
174 ssSetOffsetTime(S, 0, 0.0);
199#ifdef MATLAB_MEX_FILE
void SIM_Initialize_Simulation(void)
Инициализация симуляции МК.
void SIM_deInitialize_Simulation(void)
Деинициализация симуляции МК.
void MCU_Step_Simulation(SimStruct *S, time_T time)
Симуляция МК на один такт симуляции.
#define IN_PORT_NUMB
number of input ports
SIM__MCUHandleTypeDef hmcu
Хендл для управления потоком программы МК
#define OUT_PORT_NUMB
number of output ports
#define DISC_STATES_WIDTH
width of discrete states array
#define IN_PORT_WIDTH
width of input ports
#define OUT_PORT_WIDTH
width of output ports
#define NPARAMS
number of input parametrs (only Ts)
static void mdlStart(SimStruct *S)
Initialize S-Function at start of simulation.
static void mdlTerminate(SimStruct *S)
Terminate S-Function at the end of simulation.
static void mdlInitializeSampleTimes(SimStruct *S)
Initialize Sample Time of Simulation.
static void mdlOutputs(SimStruct *S)
Writting outputs of S-Function.
static void mdlInitializeSizes(SimStruct *S)
static void mdlUpdate(SimStruct *S)
Update S-Function at every step of simulation.
void SIM_writeOutputs(SimStruct *S)
Формирование выходов S-Function.
Заголовочный файл для оболочки МК.
double SIM_Sample_Time
sample time of simulation
unsigned fMCU_Stop
флаг для выхода из потока программы МК
HANDLE hMCUThread
Хендл для потока МК