#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源码如上,我想知道:1.v.Zalpha,v.Zbeta是反电动势的实际值吗?
2.针对不同的电机,如何确定v.Zalpha,v.Zbeta,也即如何找到合适的v.Kslide(滑模增益)和E0参数,有什么方法;
3.在电机参数确定情况下,位置估算是否准确是不是取决于v.Kslide(滑模增益)和E0参数;
3.Gsmopos,Fsmopos是通过电机的实际参数计算出来的,可不可以不用实际的电机参数来算(有文献显示滑模对电机参数不敏感)。
望有工程师回复,谢谢!