zyh_126

基于matlab的spll仿真

0
阅读(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');