测速模块程序如下,
void speed_frq_calc(SPEED_MEAS_QEP *v)
{
_iq Tmp1;
// Differentiator
// Synchronous speed computation
if ((v->ElecTheta < _IQ(0.9))&(v->ElecTheta > _IQ(0.1)))为什么要有这个限制?
// Q21 = Q21*(GLOBAL_Q-GLOBAL_Q)
Tmp1 = _IQmpy(v->K1,(v->ElecTheta - v->OldElecTheta));
else Tmp1 = _IQtoIQ21(v->Speed);这句话说不满足0.1-0.9之间的转速就等于原来的转速,为什么啊?
// Low-pass filter
// Q21 = GLOBAL_Q*Q21 + GLOBAL_Q*Q21
Tmp1 = _IQmpy(v->K2,_IQtoIQ21(v->Speed))+_IQmpy(v->K3,Tmp1);这句话什么意思?注解说是滤波,滤什么波?
if (Tmp1>_IQ21(1))
v->Speed = _IQ(1);
else if (Tmp1<_IQ21(-1))
v->Speed = _IQ(-1);
else
v->Speed = _IQ21toIQ(Tmp1);
// Update the electrical angle
v->OldElecTheta = v->ElecTheta;
// Change motor speed from pu value to rpm value (GLOBAL_Q -> Q0)
// Q0 = Q0*GLOBAL_Q => _IQXmpy(), X = GLOBAL_Q
v->SpeedRpm = _IQmpy(v->BaseRpm,v->Speed);
}