基于matlab的spll仿真
0赞
发表于 6/9/2013 2:24:31 PM
阅读(3889)
软件锁相环比硬件锁相环响应速度快,抗干扰强。在电力系统中,单相软件锁相环一般采用两个正交的信号作为输入,通过d-q变换和PI调节来达到锁相的目的。但是一般的单相的输入信号只有一个,另一信号要通过对输入信号延时90度才能达到目的。在频率不知道的情况下,要通过采样值得到延时90度后的值无法实现。通过观察发现,在参考信号是50hz的情况下,无能输入信号的频率在50hz左右变化,最终锁定的信号相位和实际的相位有一个固定的误差。通过这我们可以算出延时后90度的信号值。下面用matlab仿真图解和代码
fs=6400;%Sample frequency
N=6400;%Number of samples
Ts=1/fs;
e(1)=0;
phd_output(1)=0;
a=0;
b=0;
%Define Loop Filter parameters(Sets damping)
kp=0.58; %Proportional constant
ki=300; %Integrator constant
wt(1)=0;
phi_hat(1)=0;
for n=2:N
Ua(n)=200*sin(90*pi*n*Ts);
%Ub(n)=sqrt(a*a+b*b)*sin(wt(n)-pi/2);
if(n>256)
Ub(n)=sqrt(Uq(n-1)*Uq(n-1)+Ud(n-1)*Ud(n-1))*sin(wt(n-1));
else if(n>32)
Ub(n)=Ua(n-32);
else
Ub(n)=0;
end
end
%if(n>2)
% Zb(n)=sqrt(Uq(n-1)*Uq(n-1)+Ud(n-1)*Ud(n-1))*cos(wt(n-1));
% Zb(n)=cos(wt(n-1))*Uq(n-1)+sin(wt(n-1))*Ud(n-1);
%T(n)=cos(wt(n-1))*Ud(n-1)-sin(wt(n-1))*Uq(n-1);
%else
% Zb(n)=0;
%end
Za(n)=Ua(n);%(Ua(n)-Ub(n)/2-Uc(n)/2)*sqrt(2/3);
Zb(n)=Ub(n);%(Uc(n)-Ub(n))*sqrt(2)/2;
Ud(n)=cos(wt(n-1))*Za(n)+sin(wt(n-1))*Zb(n);
Uq(n)=cos(wt(n-1))*Zb(n)-sin(wt(n-1))*Za(n);
%if n>97
%Zm(n)=0;
% for j=1:96
% Uq(n)=Zm(n)+Zc(n-j)*a(j);
%end;
%else
%Ud(n)=cos(wt(n-1))*Za(n)+sin(wt(n-1))*Zb(n);
%Uq(n)=cos(wt(n-1))*Zb(n)-sin(wt(n-1))*Za(n);
%end;
e(n)=kp*Uq(n)+ki*Uq(n)*Ts+phd_output(n-1);%Filter integrator
phd_output(n)=ki*Uq(n)*Ts+phd_output(n-1);
e(n)=e(n)+100*pi;
phi_hat(n)=e(n)*Ts+phi_hat(n-1);
wt(n)=mod(phi_hat(n),2*pi);
y(n)=wt(n)*20;
end;
startplot =1;
endplot =4096;
plot(y(startplot:endplot),'r');
hold on;
plot(Ua(startplot:endplot),'b');
hold on;
plot(Uq(startplot:endplot),'g');
%plot(n,Zb,'g'); 
