- 积分
- 123
- 回帖
- 0
- 西莫币
-
- 贡献
-
- 威望
-
- 存款
-
- 阅读权限
- 10
- 最后登录
- 1970-1-1
该用户从未签到
|
楼主 |
发表于 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);
|
|