最近在看电机控制程序,下面几行滤波程序看了一天多,没有头绪,希望得到大家的帮助,我的问题如下:
1.这三个程序前两个是一阶低通滤波吗,如果是为何与我网上看到程序不太一样,第三个呢
void lpf_calc(LPF *v)
{
v->y += _IQmpy(v->Tc,_IQmpy(v->wc,(v->x - v->y_old)));//y=y+Tc*(wc*(x-y_old))
v->y_old = v->y;
{
v->y += _IQmpy(v->Tc,_IQmpy(v->wc,(v->x - v->y_old)));//y=y+Tc*(wc*(x-y_old))
v->y_old = v->y;
}
void lpf11_calc(LPF11 *v)
{
_iq temp_k1;
temp_k1 = _IQmpy(v->wc,(v->x - v->y));//temp_k1=wc*(x-y)
v->y = v->y + _IQmpy(temp_k1,v->Tc);//y=y+temp_k1*Tc
{
_iq temp_k1;
temp_k1 = _IQmpy(v->wc,(v->x - v->y));//temp_k1=wc*(x-y)
v->y = v->y + _IQmpy(temp_k1,v->Tc);//y=y+temp_k1*Tc
}
void lpf12_calc(LPF12 *v)
{
_iq temp_k1, temp_k2;
temp_k1 = _IQmpy(v->wc,(v->x - v->y));//temp_k1=wc*(x-y)
temp_k2 = _IQmpy(temp_k1,_IQ(1.0) - _IQmpy(v->wc,v->Tc));//temp_k2=temp_k1*(1-wc*Tc)
v->y = v->y + _IQmpy(_IQmpy(v->Tc,temp_k1 + temp_k2),_IQ(0.5));//y=y+0.5*(Tc*(temp_k1 + temp_k2))
{
_iq temp_k1, temp_k2;
temp_k1 = _IQmpy(v->wc,(v->x - v->y));//temp_k1=wc*(x-y)
temp_k2 = _IQmpy(temp_k1,_IQ(1.0) - _IQmpy(v->wc,v->Tc));//temp_k2=temp_k1*(1-wc*Tc)
v->y = v->y + _IQmpy(_IQmpy(v->Tc,temp_k1 + temp_k2),_IQ(0.5));//y=y+0.5*(Tc*(temp_k1 + temp_k2))
}