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.

滑模观测器无位置算法调试问题



#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是通过电机的实际参数计算出来的,可不可以不用实际的电机参数来算(有文献显示滑模对电机参数不敏感)。

望有工程师回复,谢谢!

  • 你好
    1、是反电动势估算值,不是实际值。这两者间会有相移。使用eSMO(Enhanced sliding mode observer增强型滑模观测器)可以获得比这一种更好的角度补偿。eSMO是一个库,实际的源代码可以联系对应区域的TI销售获得。
    2、Zalpha和Zbeta是滑动控制的直接输出,您可以将kslide和e0组合成一个常量,但该值必须基于反复试验的基础上。我们没有直接的数学模型。示例中给出的值是一个很好的起点。您可以调整它以适合您的测试设置。
    3、是的,精度由它们决定。
    4、如果滑块增益很高,则理论上它对参数可能不敏感,但会导致滑块输出的剧烈抖动,使操作产生噪声。如果你能得到最接近实际的估计值,那将使性能更好。