Bitácora · DCSS · Concepto

El filtro de lazo y el PLL de segundo orden

Unidad 7 · PLL · error en régimen, la tabla de filtros, el PI, ζ y ω_n, el transitorio y el análisis en MATLAB

El detector de fase y el VCO casi vienen dados: uno depende de la señal y el otro del oscilador. El filtro de lazo es el bloque que se diseña, y decide dos cosas. Su ganancia en continua, L(0), decide qué entradas sigue el lazo sin error de fase: un salto de fase lo borra cualquier filtro; un corrimiento de frecuencia, sólo uno con integrador. Y cuando el integrador está, como en el PI, sus dos constantes Kp y Ki deciden cómo llega el lazo a ese régimen: con qué amortiguamiento ζ y con qué frecuencia natural ωn.

01 · La definición

El filtro de lazo L(s) toma la señal de error del detector y entrega la señal de control c(t) que mueve al VCO. En el modelo linealizado de la filmina el detector es una ganancia KPD y el VCO un integrador KV/s, y el lazo cerrado y el error de fase E(s)=Θ(s)−Φ(s) quedan:

F(s)=Φ(s)Θ(s)=KPDKVL(s)s+KPDKVL(s),E(s)Θ(s)=ss+KPDKVL(s)

De dónde salen las dos está en la nota del PLL. Lo que importa acá es dónde aparece L: una sola vez, sumada a s en el denominador. Todo lo que el lazo hace con la fase de entrada —qué error deja, cuánto tarda, cuánto sobrepasa— se decide eligiendo esa función. La filmina lo dice en un globo: el filtro de lazo es el que gobierna el comportamiento del PLL.

02 · El error en régimen, paso a paso

El error que queda cuando el transitorio se apagó es εss=limt→∞e(t). Con el lazo estable, el teorema del valor final lo da sin antitransformar nada:

εss=lims→0sE(s)

La condición no es decorativa: el teorema vale sólo si todos los polos de sE(s) tienen parte real negativa. Si el lazo oscila, la cuenta da un número igual, y el error nunca llega a él (sección 03). Las dos entradas de prueba de la filmina son lo que le puede pasar al oscilador local respecto de la portadora.

Escalón de fase. El oscilador quedó con otra fase: θ(t)=θ0u(t).

Paso 1: la entrada en Laplace. Θ(s)=θ0/s.

Paso 2: el error. Se multiplica por la transferencia del error, y la s de arriba se cancela con la de la entrada:

E(s)=ss+KPDKVL(s)·θ0s=θ0s+KPDKVL(s)

Paso 3: el valor final. Al multiplicar por s el numerador se va a cero y el denominador a KPDKVL(0):

εss=lims→0θ0ss+KPDKVL(s)=0si L(0)≠0

Al filtro no se le pide casi nada: que no bloquee la continua.

Rampa de fase. El oscilador tiene otra frecuencia, y la diferencia de fase crece sin parar: θ(t)=ω0t.

Paso 1. Θ(s)=ω0/s2.

Paso 2. Ahora la s de la transferencia cancela sólo una de las dos: E(s)=ω0/[s(s+KPDKVL(s))].

Paso 3. La s del teorema se lleva la que quedaba, y el límite ya no es cero:

εss=lims→0ω0s+KPDKVL(s)=ω0KPDKVL(0)

Con un error de frecuencia no alcanza con que L(0) no sea cero: el error se anula sólo si L(0)→∞.

La cuenta tiene una lectura física. Enganchado a una entrada corrida ω0, el VCO tiene que correr ω0 por encima de su frecuencia libre, y para eso necesita un control constante c=ω0/KV. Un filtro proporcional sólo sostiene ese control si ve un error que lo produzca, KPDKpe=ω0/KV, y despejando sale la fila de la tabla. Con las constantes del script de clase —Kp=0,005 y KPDKV=1 por muestra— y una rampa de ω0=10−3 rad por muestra son 0,2000 rad, exactamente ω0/Kp; lsim da lo mismo (sección 07). La filmina dibuja esa curva y le escribe al lado: no es útil.

03 · La tabla de los filtros

La filmina toma la forma general de un filtro de primer orden y apaga coeficientes para tener cuatro filtros:

L(s)=a1s+a0b1s+b0

Cada fila sale de calcular L(0) y reemplazarlo en las dos fórmulas de la sección 02:

filtrocoeficientesL(s)L(0)ε_ss, escalónε_ss, rampa
proporcionala1=b1=0KK0ω0/(KKPDKV)
un poloa1=0K/(s+K)10ω0/(KPDKV)
PIb0=0K1+K2/s∞00
adelanto-atrasoninguno nulo(K1+s)/(K2+s)K1/K20ω0K2/(K1KPDKV)

La columna del escalón es toda cero porque ningún L(0) lo es. En la del adelanto-atraso, dividir por K1/K2 es multiplicar por su inversa: cuanto más cerca del origen está el polo respecto del cero, más chico el error, y en el límite K2→0 el polo cae en el origen y el filtro es un PI. Simulada en el tiempo con lsim hasta t=400 s, con KPDKV=1 s⁻¹, un escalón de 1 rad y una rampa de ω0=0,1 rad/s:

filtroconstantesrampa, fórmula [rad]rampa, lsim [rad]escalón, lsim [rad]
proporcionalK=0,50,20000,20001,1·10⁻¹⁵
un poloK=10,10000,10003,9·10⁻¹⁵
PIK1=2,K2=100,00000
adelanto-atrasoK1=1,K2=0,50,05000,05005,6·10⁻¹⁶

La tabla tiene una hipótesis que no escribe: el lazo cerrado tiene que ser estable. Con ganancias positivas las cuatro filas lo son, porque sus denominadores son de grado 1 o 2 con todos los coeficientes positivos. Un integrador solo, L(s)=Ki/s, tiene L(0)=∞, y la tabla le daría error nulo en las dos columnas. Pero su error es

E(s)Θ(s)=s2s2+KPDKVKi

con los polos en ±jKPDKVKi, sobre el eje imaginario: el lazo oscila para siempre y el error no converge a nada. Al denominador le falta el término en s, y ese término es justo lo que pone la rama proporcional del PI.

04 · Por qué un integrador, y por qué el VCO ya pone uno

La tabla se puede leer sin hacer cuentas, contando integradores en el lazo abierto:

G(s)=KPDL(s)KVs

La cantidad de polos en el origen de G(s) es el tipo del lazo. El VCO ya pone uno, el 1/s: integra el control para dar la fase (la nota del VCO). Por eso cualquier filtro con L(0) finito y no nulo deja un lazo de tipo 1, y un lazo de tipo 1 borra un salto de fase: en régimen el VCO vuelve a su frecuencia libre, el control vale cero, y la fase corrida queda guardada en el integrador del VCO. No hace falta otro.

Un error de frecuencia pide un integrador más. En régimen el control tiene que quedarse en ω0/KV para siempre, con error cero a la entrada del filtro. Un bloque sin memoria no saca un valor fijo distinto de cero de una entrada que vale cero. Un integrador sí: deja de crecer cuando el error se anula, y se queda donde llegó. Con el PI de la clase, a las 20 000 muestras de una rampa de 10−3 rad por muestra, la rama Ki vale 9,99999·10⁻⁴ —el ω0/KV que el VCO necesita— y la rama Kp vale 2·10⁻¹⁷. El error ya se fue y la corrección sigue entera, en la memoria del integrador. Es el dibujo de la filmina con las dos ramas del PI: la de Ki sube hasta ω0 y se queda, la de Kp vuelve a cero.

La regla sigue: cada derivada más en la fase de entrada pide un integrador más en el lazo. Una rampa de frecuencia, θ(t)=αt2/2 con Θ(s)=α/s3, frente al PI —tipo 2— da sE(s)=α/(s2+KPDKVKps+KPDKVKi), y en el límite εss=α/(KPDKVKi): el PI la sigue, pero atrasado. Con el lazo de la clase y α=10−7 rad por muestra² son 0,0020 rad, y lsim da lo mismo.

El PLL de primer orden es el de L constante: F(s)=K/(s+K) con K=KPDKVKp, un solo polo real, nunca sobrepasa, y se asienta al 2 % en ln50/K —782,4 muestras con la Kp de la clase—, pero la velocidad y el error de rampa dependen del mismo número y no se eligen por separado.

El PLL de tercer orden es el de dos integradores en el filtro, K1+K2/s+K3/s2: es de tipo 3 y sigue sin error una rampa de frecuencia, como el Doppler de un satélite que pasa, pero su denominador es de grado 3, ya no se describe con ζ y ωn, y la estabilidad deja de ser gratis: Routh pide además KPDKVK1K2>K3.

05 · El PI y el lazo de segundo orden

El PI de la filmina es una rama proporcional en paralelo con una integral, L(s)=Kp+Ki/s. Lo que se busca es F(s) en función de sus constantes.

Paso 1: reemplazar.

F(s)=KPDKV(Kp+Ki/s)s+KPDKV(Kp+Ki/s)

Paso 2: multiplicar arriba y abajo por s, para sacar el 1/s de adentro:

F(s)=KPDKVKps+KPDKVKis2+KPDKVKps+KPDKVKi

Es de segundo orden: un polo lo puso el integrador del filtro y el otro el del VCO.

Paso 3: igualar con la forma normalizada s2+2ζωns+ωn2, coeficiente a coeficiente. El término independiente da ωn2=KPDKVKi, y el de s, 2ζωn=KPDKVKp. Se despeja ζ dividiendo el segundo por 2ωn:

ωn=KPDKVKi,ζ=KPDKVKp2KPDKVKi=Kp2KPDKVKi

Paso 4: el numerador. Tiene los mismos dos coeficientes, así que queda la forma que trae la filmina:

F(s)=2ζωns+ωn2s2+2ζωns+ωn2

Con las constantes de la clase, Kp=0,005, Ki=Kp/100 y KPDKV=1 por muestra, da ζ=0,3536 y ωn=7,071·10−3 rad por muestra; a los 16 GHz del script, fn=ωnfs/2π=18,01 MHz. damp devuelve lo mismo desde los polos, −0,0025±j0,006614. Es un lazo poco amortiguado, y es la elección de la cátedra.

Dos cosas se leen de las fórmulas. La parte real de los polos es −ζωn=−KPDKVKp/2, y la pone sola la rama proporcional; Ki entra en las dos constantes y en sentidos opuestos: subirla acelera ωn y baja ζ. Y el numerador no es una constante: tiene un cero en s=−ωn/2ζ, que lo pone la rama proporcional, y ese cero hace que el transitorio no sea el del segundo orden de libro.

06 · El transitorio contra ζ

Ante un escalón de fase θ0, el error es E(s)=θ0s/(s2+2ζωns+ωn2). Para ζ<1 los polos son −ζωn±jωd, con ωd=ωn1−ζ2, y antitransformando:

e(t)=θ0e−ζωnt[cosωdt−ζ1−ζ2senωdt]

Es la fila subamortiguada de la tabla de respuestas que trae la filmina, que da φ=θ0−e. Contra step en una grilla de 0,25 muestras, con el lazo de la clase, difiere en 2·10⁻¹⁴ como máximo: es la misma función. El sobrepico también tiene forma cerrada.

Paso 1: el pico. Es el primer instante en que de/dt=0. Derivando y ordenando, con cosψ=ζ:

tanωdt=2ζ1−ζ22ζ2−1=tan2ψ⇒ωdtp=2arccosζ

Paso 2: el valor ahí. Con ζ/1−ζ2=cotψ, el corchete vale exactamente:

cos2ψ−cotψsen2ψ=cos2ψ−sen2ψ−2cos2ψ=−1

El error en el pico es −θ0e−ζωntp, y el sobrepico:

Mp=exp(−2ζarccosζ1−ζ2)

Con ζ=0,3536 da 40,08 %, en tp=365,7 muestras. No es la fórmula de libro, exp(−πζ/1−ζ2), que es la de un segundo orden sin cero y daría 30,5 %: el cero de la rama proporcional empuja la fase hacia arriba temprano y suma casi diez puntos. Por la misma razón el sobrepico no se anula en ζ=1 —vale e−2, 13,53 %— ni más arriba: para ζ>1 el arccos pasa a arccosh, la raíz a ζ2−1, y la fórmula sigue valiendo. El lazo discreto del script de clase, con las mismas constantes, da 39,72 %; la diferencia viene del paso a tiempo discreto, y está en el PLL en tiempo discreto.

Barriendo ζ con Kp=0,005 fijo, o sea moviendo sólo Ki=Kp2/4ζ2. El sobrepico es la forma cerrada; el asentamiento al 2 % y el pico del error ante la rampa de 10−3 rad por muestra, medidos con step y lsim:

ζKp/Kiω_n [rad/muestra]sobrepicoasentamientopico del error, rampa
0,1082,500·10⁻²74,41 %1528,8 muestras0,0345 rad
0,25501,000·10⁻²50,63 %1368,5 muestras0,0712 rad
0,35361007,071·10⁻³40,08 %1478,6 muestras0,0895 rad
0,502005,000·10⁻³29,84 %1501,0 muestras0,1093 rad
0,70714003,536·10⁻³20,79 %1384,1 muestras0,1290 rad
18002,500·10⁻³13,53 %2156,7 muestras0,1472 rad
1,518001,667·10⁻³7,56 %3369,2 muestras0,1650 rad

Con Kp fijo, la envolvente e−ζωnt es la misma para todo ζ<1, porque ζωn=KPDKVKp/2 no depende de Ki: mover Ki cambia cuánto sobrepasa y qué tan rápido oscila, no cuánto tarda en apagarse. Por eso el asentamiento no baja de forma ordenada entre ζ=0,1 y 0,7071: salta según qué lóbulo de la oscilación sale último de la banda del 2 %. Pasado ζ=1 los polos se separan sobre el eje real, el lento se acerca al origen, y el asentamiento crece. La última columna cuenta lo otro: con menos Ki el integrador tarda más en cargar la corrección de frecuencia, y el error pico se acerca a los 0,2000 rad del proporcional, que es el límite Ki→0. Para ζ<1 ese pico también es cerrado: (ω0/ωn)exp(−ζarccosζ/1−ζ2), 0,0895 rad para el lazo de la clase. Qué ζ y qué ωn elegir según el ruido y el tiempo de enganche está en ancho de banda, adquisición y tracking.

Simulación Qué filtro alcanza para qué entrada — el modelo de fase con las constantes de la clase, Kp = 0,005 y K_PD·K_V = 1 por muestra; el tiempo en muestras. Arriba, la fase de entrada θ (punteada) y la del VCO φ; al medio, el error e = θ − φ; abajo, el control c y sus dos ramas. Arranca con un escalón de fase y un filtro proporcional: el error ya se va a cero.
Filtro de lazo
Entrada
lazo — sobrepico — asentamiento al 2 % — error en régimen — error a las 4000 muestras — forma cerrada − simulación —

Con el escalón, el proporcional parece alcanzar: el error cae como una exponencial sin sobrepasar, y el control vuelve a cero porque el VCO ya guardó la fase nueva. La rampa lo desmiente. El error sube y se planta en 0,2000 rad, y abajo se ve por qué: el control se queda en 10−3, que es lo que el VCO necesita para correr a la par, y la única forma que tiene el proporcional de sostenerlo es seguir viendo error. Con el PI el error sube, llega a 0,0895 rad y vuelve a cero; abajo, la rama integral sube hasta 10−3 y se queda, y la proporcional se apaga. Moviendo ζ con el escalón, la oscilación cambia de frecuencia y de altura dentro de una envolvente que no se mueve; con la rampa, el pico del error crece hacia los 0,2000 rad a medida que Ki se achica.

07 · El análisis en MATLAB

El lazo de la clase en tiempo continuo, con tf y feedback, contra las formas cerradas de las secciones anteriores. El tiempo está en muestras porque las constantes del script de clase están normalizadas por muestra. Lo que figura como comentario es la salida real de correrlo en R2026a.

%% 1. El lazo de la clase, en continuo: K_PD*K_V = 1 por muestra
KPD_KV = 1; Kp = 0.005; Ki = Kp/100;
s = tf('s');
L = Kp + Ki/s;                  % el filtro PI
G = KPD_KV*L/s;                 % lazo abierto: detector, filtro y VCO
F = feedback(G, 1);             % Phi/Theta, realimentación negativa
E = feedback(1, G);             % E/Theta = 1 - F

%% 2. zeta y wn: la fórmula contra los polos
zeta = Kp/2*sqrt(KPD_KV/Ki);  wn = sqrt(KPD_KV*Ki);
[wn_p, zeta_p] = damp(F);
fprintf('zeta = %.4f (polos %.4f), wn = %.4e (polos %.4e)\n', ...
    zeta, zeta_p(1), wn, wn_p(1))
% zeta = 0.3536 (polos 0.3536), wn = 7.0711e-03 (polos 7.0711e-03)
p = pole(F);
fprintf('polos: %.4f ± %.6fj\n', real(p(1)), abs(imag(p(1))))
% polos: -0.0025 ± 0.006614j

%% 3. Escalón de fase: sobrepico contra la forma cerrada
t = (0:0.25:6000)';
phi = step(F, t);
info = stepinfo(phi, t, 1);
Mp = exp(-2*zeta*acos(zeta)/sqrt(1 - zeta^2));
tp = 2*acos(zeta)/(wn*sqrt(1 - zeta^2));
fprintf('sobrepico %.2f %% (cerrada %.2f %%), pico en %.1f (cerrada %.1f)\n', ...
    info.Overshoot, 100*Mp, info.PeakTime, tp)
% sobrepico 40.08 % (cerrada 40.08 %), pico en 365.8 (cerrada 365.7)
fprintf('asentamiento al 2 %%: %.0f muestras\n', info.SettlingTime)
% asentamiento al 2 %: 1479 muestras
info_auto = stepinfo(F);
fprintf('stepinfo(F) con su grilla: %.2f %%\n', info_auto.Overshoot)
% stepinfo(F) con su grilla: 40.07 %
Mp_libro = exp(-pi*zeta/sqrt(1 - zeta^2));
fprintf('la fórmula sin el cero daría %.1f %%\n', 100*Mp_libro)
% la fórmula sin el cero daría 30.5 %

%% 4. Rampa de fase de w0 = 1e-3 rad/muestra: PI contra sólo P
w0 = 1e-3;
t = (0:0.5:20000)';  th = w0*t;
e_pi = lsim(E, th, t);
e_p  = lsim(feedback(1, KPD_KV*Kp/s), th, t);
fprintf('error final: PI %.1e rad, sólo P %.4f rad (w0/Kp = %.4f)\n', ...
    e_pi(end), e_p(end), w0/(KPD_KV*Kp))
% error final: PI 2.7e-15 rad, sólo P 0.2000 rad (w0/Kp = 0.2000)
fprintf('pico del error con PI: %.4f rad\n', max(e_pi))
% pico del error con PI: 0.0895 rad

%% 5. La tabla de la filmina, con K_PD*K_V = 1 1/s y w0 = 0,1 rad/s
filtros = {0.5, 1/(s + 1), sqrt(2) + 1/s, (1 + s)/(0.5 + s)};
t = (0:0.01:400)';
for k = 1:4
    Ek = feedback(1, filtros{k}/s);
    esc = lsim(Ek, ones(size(t)), t);
    ram = lsim(Ek, 0.1*t, t);
    fprintf('fila %d: escalón %.1e, rampa %.4f\n', k, abs(esc(end)), ram(end))
end
% fila 1: escalón 1.1e-15, rampa 0.2000
% fila 2: escalón 3.9e-15, rampa 0.1000
% fila 3: escalón 0.0e+00, rampa -0.0000
% fila 4: escalón 5.6e-16, rampa 0.0500

%% 6. Rampa de frecuencia, fase alfa*t^2/2: el PI deja alfa/(K_PD K_V Ki)
alfa = 1e-7;
t = (0:1:40000)';
e_f = lsim(E, alfa*t.^2/2, t);
fprintf('rampa de frecuencia: %.4f rad (alfa/Ki = %.4f)\n', ...
    e_f(end), alfa/(KPD_KV*Ki))
% rampa de frecuencia: 0.0020 rad (alfa/Ki = 0.0020)

Tres detalles que muerden:

Para tener a mano

  1. El error en régimen sale del valor final, con el lazo estable: εss=lims→0sE(s), con E/Θ=s/(s+KPDKVL(s)).
  2. Escalón de fase: εss=0 si L(0)≠0. Rampa de fase: εss=ω0/(KPDKVL(0)), cero sólo con L(0)=∞.
  3. Tipo del lazo = integradores en G(s). El VCO pone uno: tipo 1 borra el escalón. El PI pone otro: tipo 2 borra la rampa, y ante una rampa de frecuencia deja α/(KPDKVKi).
  4. Con sólo proporcional y una rampa, εss=ω0/(KPDKVKp): 0,2000 rad con las constantes de la clase y ω0=10−3 rad por muestra.
  5. PI: ωn=KPDKVKi, ζ=(Kp/2)KPDKV/Ki. La clase: ζ=0,3536, fn=18,01 MHz.
  6. Sobrepico del PLL con PI: exp(−2ζarccosζ/1−ζ2), no el de libro: 40,08 % con ζ=0,3536, 20,79 % con 0,7071, 13,53 % con 1. Por el cero, nunca es cero.
  7. La envolvente del transitorio es e−KPDKVKpt/2 para ζ<1: la fija la rama proporcional.
← Anterior Siguiente → Inicio
Relacionados El PLL El VCO y el NCO Ancho de banda, adquisición y tracking El PLL en tiempo discreto Polos y ceros La mitad de ζ deja pasar el mismo ruido