本帖最后由 mcz 于 2015-5-31 21:24 编辑
最近在学习锁相环,下面是一段在网上看到的用F2812来实现的软件锁相环,但看不太明白,希望哪位大侠来解释一下。先谢谢了!
u_arf=ua;
u_beta=_IQmpy(ua,_IQ(0.57735))+_IQmpy(ub,_IQ(1.1547));
//以上为CLARK变换,可以理解
ud=_IQmpy(u_arf,coswt1)+_IQmpy(u_beta,sinwt1);
uq=-_IQmpy(u_arf,sinwt1)+_IQmpy(u_beta,coswt1);
//d,q变换
w_ek[1]=ud;
w_piout[1]=_IQmpy(w_ek[1],_IQ(1));
w_piout[1]=_IQmpy(w_piout[1],_IQ(10));
w_piout[1]-=_IQmpy(w_ek[0],_IQ(10));
w_piout[1]+=w_piout[0];
w_piout[0]=w_piout[1];
w_ek[0]=w_ek[1];
//这一段应该是计算频率偏差值
w_pi=w_piout[1]+_IQ(314); //测量频率值;
wt_ek[1]= w_pi;
wt_piout[1]=wt_piout[0]+_IQmpy(wt_ek[1],26);
//26 对应Ts,开关频率10k
//这句话不能理解,10K的开关频率怎么是26呢?
if(wt_piout[1]>=_IQ(6.28))
{wt_piout[1]=_IQ(0);}
wt_ek[0]=wt_ek[1];
wt_piout[0]=wt_piout[1];
wt_pi=wt_piout[1];
sinwt1=_IQsin(wt_pi);
coswt1=_IQcos(wt_pi); //q18
sinwt=sinwt1;
coswt=-coswt1;
|