Professional Documents
Culture Documents
}
static void mdlInitializeSampleTimes(SimStruct *S){
ssSetSampleTime(S, 0, 0.001);
ssSetOffsetTime(S, 0, 0.0);}
#define MDL_INITIALIZE_CONDITIONS
static void mdlInitializeConditions(SimStruct *S){
real_T *x = ssGetRealDiscStates(S);
int_T nXStates = ssGetNumDiscStates(S);
InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,0);
=
=
=
=
=
=
=
=
0;
0;
0;
0;
0;
0;
0;
0;
}
static void mdlOutputs(SimStruct *S, int_T tid)
{
real_T
*y
= ssGetOutputPortRealSignal(S,0);
real_T
*x
= ssGetContStates(S);
InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,0);
y[0] = x[5]; //ia
y[1] = x[6]; //ib
y[2] = x[7]; //ic
y[3] = x[2]; //wm
#define MDL_DERIVATIVES
static void mdlDerivatives(SimStruct *S)
{
real_T *dx = ssGetdX(S);
real_T *x = ssGetContStates(S);
InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,0);
real_T Ld = 16.6 * 1e-3 ;
real_T Lq = 16.32 *1e-3 ;
real_T Rs = 0.55 ;
real_T J = 0.01;
real_T flux = 0.121;
real_T N = 2;
real_T va , vb , vc , Tl ,te, teta ,wm, valpha, vbeta, Vd , Vq ,
ialpha,ibeta,ia,ib,ic,id,iq, iddot, iqdot,wmdot,tetadot;
va=U(0);
vb=U(1);
vc=U(2);
Tl=U(3);
//valpha vbeta
valpha = 0.8165*va -(0.8165*0.5)*vb -(0.8165*0.5)*vc;
vbeta = 0.8660*0.8165*vb - 0.8660*0.8165*vc;
//vd vq
teta=x[3];
Vd = cos(teta)*valpha + sin(teta)*vbeta;
Vq = -sin(teta)*valpha + cos(teta)*vbeta;
//ia ib ic
wm=x[2];
iddot = (Vd/Ld) + N*x[2]*(Lq/Ld)*x[1] -(Rs/Ld)*x[0] ;
iqdot = (Vq/Lq) - N*x[2]*(Ld/Lq)*x[0] -(Rs/Lq)*x[1] - (N*x[2]*flux/Lq) ;
tetadot= N*x[2];
wmdot=(1/J)*x[4] - (1/J)*Tl;
dx[0] = iddot;
dx[1] = iqdot;
dx[2] = wmdot;
dx[3] = tetadot;
//ialpha ibeta
ialpha = cos(x[3])*x[0]-sin(x[3])*x[1];
ibeta = sin(x[3])*x[0]+cos(x[3])*x[1];
//ia ib ic
ia = 0.8165*ialpha;
ib = -0.4082*ialpha+0.7071*ibeta;
ic = -0.4082*ialpha-0.7071*ibeta;
x[5]= ia;
x[6]= ib;
x[7]= ic;
//te
x[4]= N*(flux+(Ld-Lq)*x[0])*x[1];
}
static void mdlTerminate(SimStruct *S)
{}
#ifdef MATLAB_MEX_FILE
/* Is this file being compiled as a MEX-file? */
#include "simulink.c"
/* MEX-file interface mechanism */
#else
#include "cg_sfun.h"
/* Code generation registration function */
#endif
Jika Besarnya torsi Load diubah menjadi 100 maka output sinyal yang dihasilkan :
Besar Wm vs teta