Escribí una simulación para el PLL de segundo orden y me gustaría probarlo con una entrada para ver si mi PLL puede rastrear la fase. Me gustaría cambiar la fase de mi señal sinusoidal con un paso de magnitud 10 rad. Por lo tanto eso es lo que hice:
F=60;
t=0:Ts:2-Ts;
idx=find(t>=0);
theta(idx)=pi/180*10*ones(1,length(idx));
in=sin(2*pi*F*t+theta);
out=pll(in);
plot(t,out,t,theta)
Sin embargo, estas dos fases difieren mucho. Me pregunto si alguien puede decirme si hay algún problema con el script anterior.
Aquí están los comandos dentro del bucle for:
Error(ii)=Kd*in_norm(ii)*VCO_out(ii-1); % Calculate the Error
prop_out(ii)=Kp*Error(ii);
integ_out(ii)=KI*Error(ii)*Ts+integ_out(ii-1);
lf_out(ii)=integ_out(ii)+prop_out(ii);
phi_out(ii)=lf_out(ii)*Ts*K0*2*pi+phi_out(ii-1);
VCO_out(ii)=sin(2*pi*Fout*(ii-2)*Ts+phi_out(ii));