TI中文支持网
TI专业的中文技术问题搜集分享网站

永磁机无速度控制程序中估计的速度经过低通滤波之后就始终跟不上面板给定的速度?

请问一下我做永磁机无速度控制时,程序中估计的速度经过低通滤波之后就始终跟不上面板给定的速度,例如给定400rpm,电机只能转到300rpm,而且转速上升得明显慢了。但是程序中改为编码器测的实际速度时就跟得上。请指教谢谢!

HeiHei:

你好,请问你是用的什么例程调试的

一般来说,低通滤波会有延迟的,而且你的滤波系数越大,会导致延迟越久。你检查下比如在跑300转的时候 经过滤波,稳定以后,滤波输出是多少。

请问一下我做永磁机无速度控制时,程序中估计的速度经过低通滤波之后就始终跟不上面板给定的速度,例如给定400rpm,电机只能转到300rpm,而且转速上升得明显慢了。但是程序中改为编码器测的实际速度时就跟得上。请指教谢谢!

kun chen7:

回复 HeiHei:

谢谢,例程来自:

File name:        SPEED_EST_LPF.C  (IQ version)

void speed_est_LPF_calc(SPEED_ESTIMATION_LPF *v){ _iq Temp1; Temp1 = _IQtoIQ21(v->new_EstimatedSpeed);// Low-pass filter,对估算速度低通滤波 // Q21 = GLOBAL_Q*Q21 + GLOBAL_Q*Q21 Temp1 = _IQmpy(v->K2,_IQtoIQ21(v->EstimatedSpeed))+_IQmpy(v->K3,Temp1); if (Temp1>_IQ21(2)) v->EstimatedSpeed = _IQ(2); else if (Temp1<_IQ21(-2)) v->EstimatedSpeed = _IQ(-2); else v->EstimatedSpeed = _IQ21toIQ(Temp1);

// 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);// wrFbk = WrfdFlt*(motPoles>>1); }

其中:

speed_LPF.K2 =_IQdiv(_IQ(1),_IQ(1)+(_IQ(2*PI)/(P.carryF/2))*P.SpeedLpf1/10); speed_LPF.K3 = _IQ(1)-speed_LPF.K2; speed_LPF.BaseRpm = 3000;

//P.carryF是载波频率

//P.SpeedLpf1是用于反馈和积分计算角度的校正速度计算滤波截止频率

请问如果想要减小延迟,是要调节P.SpeedLpf1吗还是有别的方法?

赞(0)
未经允许不得转载:TI中文支持网 » 永磁机无速度控制程序中估计的速度经过低通滤波之后就始终跟不上面板给定的速度?
分享到: 更多 (0)