This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Sliding mode observer has no position algorithm debugging

Hi Team,

#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 */ \
/* v.Zalpha=v.IalphaError*v.Kslide/v.E0) where E0=0.5 here*/ \
v.Zalpha = _IQmpy(_IQsat(v.IalphaError,v.E0,-v.E0),_IQmpy2(v.Kslide)); \
v.Zbeta = _IQmpy(_IQsat(v.IbetaError ,v.E0,-v.E0),_IQmpy2(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);

#endif

TI source code as above, customer would like to know:

1. Is v.Zalpha, v.Zbeta the actual values of counter electromotive force?

2. For different motors, how to determine v. Zalpha and v.zbeta, that is, how to find the right v. Kslide (sliding mode gain) and E0 parameters.

3. If the motor parameter is given, does the accuracy of position estimation depends on v.Kslide (sliding mode gain) and E0 parameters?

3. As Gsmopos and Fsmopos are calculated according to the actual parameters of the motor, can such calculation be done without use of actual motor parameters? (There is literature showing that the sliding mode is not sensitive to motor parameters)

Thanks for your kindly reply!