Tool/software: Code Composer Studio
Where can I find the principles?
Is there any information about the introduction principle?
#define SMO_MACRO(v) \
\
/* Sliding mode current observer */ \
v.EstIalpha = _IQmpy(v.Fsmopos,v.EstIalpha) + _IQmpy(v.Gsmopos,(v.Valpha-v.Ealpha-v.Zalpha)); \
v.EstIbeta = _IQmpy(v.Fsmopos,v.EstIbeta) + _IQmpy(v.Gsmopos,(v.Vbeta-v.Ebeta-v.Zbeta)); \
\
/* Current errors */ \
v.IalphaError = v.EstIalpha - v.Ialpha; \
v.IbetaError= v.EstIbeta - v.Ibeta; \
\
/* Sliding control calculator */ \
if (_IQabs(v.IalphaError) < E0) \
v.Zalpha = _IQmpy(v.Kslide,_IQmpy2(v.IalphaError)); /* (v.Kslide*(v.IalphaError)/E0) */ \
else if (v.IalphaError >= E0) \
v.Zalpha = v.Kslide; \
else if (v.IalphaError <= -E0) \
v.Zalpha = -v.Kslide; \
if (_IQabs(v.IbetaError) < E0) \
v.Zbeta = _IQmpy(v.Kslide,_IQmpy2(v.IbetaError)); /* (v.Kslide*(v.IbetaError)/E0) */ \
else if (v.IbetaError >= E0) \
v.Zbeta = v.Kslide; \
else if (v.IbetaError <= -E0) \
v.Zbeta = -v.Kslide; \
\
/* Sliding control filter -> back EMF calculator */ \
v.Ealpha = v.Ealpha + _IQmpy(v.Kslf,(v.Zalpha-v.Ealpha)); \
v.Ebeta = v.Ebeta + _IQmpy(v.Kslf,(v.Zbeta-v.Ebeta)); \
\
/* Rotor angle calculator -> Theta = atan(-Ealpha,Ebeta) */ \
v.Theta = _IQatan2PU(-v.Ealpha,v.Ebeta);
