#define SE_MACRO(v) \
if ((v.EstimatedTheta < SE_DIFF_MAX_LIMIT)&(v.EstimatedTheta > SE_DIFF_MIN_LIMIT))
Temp1 = _IQmpy(v.K1,(v.EstimatedTheta - v.OldEstimatedTheta));
/* Q21 = Q21*(GLOBAL_Q-GLOBAL_Q) */
else Temp1 = _IQtoIQ21(v.EstimatedSpeed);
/* Low-pass filter */
/* Q21 = GLOBAL_Q*Q21 + GLOBAL_Q*Q21 */
Temp1 = _IQmpy(v.K2,_IQtoIQ21(v.EstimatedSpeed))+_IQmpy(v.K3,Temp1);
/* Saturate the output */
Temp1=_IQsat(Temp1,_IQ21(1),_IQ21(-1));
v.EstimatedSpeed = _IQ21toIQ(Temp1);
/* Update the electrical angle */
v.OldEstimatedTheta = v.EstimatedTheta;
/* Change motor speed from pu value to rpm value (GLOBAL_Q -> Q0)*/
/* Q0 = Q0*GLOBAL_Q => _IQXmpy(), X = GLOBAL_Q*/
v.EstimatedSpeedRpm = _IQmpy(v.BaseRpm,v.EstimatedSpeed);
#endif // __SPEED_EST_H__
文档:speed_est
(1)k1 = 1 / (fb T ),是什么意思?
(2)BaseRpm:如果我不知道BaseRpm的值,或者电机实际可以转BaseRpm = 1500RPM,
但是我只给了BaseRpm = 1000RPM,那么估算出的速度不就有问题吗?
