晨会 发表于 2018-4-22 11:39

滑模观测器SMO的估算角超前实际交

理论上滑模观测器SMO估算的电机转子角度应该滞后于实际角度,为何我用TI的实验套件做实验时,结果是估算交超前于实际角??

晨会 发表于 2018-4-22 11:41

TI的SMO模块算法如下,有低通滤波但是没有对估算角进行滞后补偿,按理说低通滤波应该是产生滞后才对

#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);

18201975434 发表于 2018-4-23 16:33

是不是滞后的太多了啊

海可以 发表于 2018-5-2 11:33

依个人愚见,你应该改变一下速度看两个速度切换点的时候角度曲线,看到底是滞后还是超前,你这个有可能是滞后快一个周期了看起来就像超前了。

yinfunjk66 发表于 2019-12-8 17:06

依个人经验, 估算值肯定是滞后的;而且不同速度滞后值还不一样;

diankongweilai 发表于 2020-2-23 17:12

我建议重点观察下滑模变算法

diankongweilai 发表于 2020-2-23 17:14

我建议重点观察下滑模变算法,分析下滑模算法使用的参数对结果影响。

wizarddyu 发表于 2020-9-28 09:50

看起來 SMO 參數 Kslide & Kslf 參數需要調整 ,
另外想請教有關於這兩個參數調整方面的資料可以分享嗎 ?

采蘑菇的小竹篓 发表于 2021-2-9 20:52

你好,请问你这个问题解决了吗,我目前也遇到了同样的问题,你使用的是凸极电机吗,望回复,谢谢

绿皮青蛙 发表于 2021-4-7 19:20

补偿的角度补偿多了也会这样
页: [1]
查看完整版本: 滑模观测器SMO的估算角超前实际交