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, , 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 y deciden cómo llega el lazo a ese régimen: con qué amortiguamiento y con qué frecuencia natural .
El filtro de lazo toma la señal de error del detector y entrega la señal de control que mueve al VCO. En el modelo linealizado de la filmina el detector es una ganancia y el VCO un integrador , y el lazo cerrado y el error de fase quedan:
De dónde salen las dos está en la nota del PLL. Lo que importa acá es dónde aparece : una sola vez, sumada a 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.
El error que queda cuando el transitorio se apagó es . Con el lazo estable, el teorema del valor final lo da sin antitransformar nada:
La condición no es decorativa: el teorema vale sólo si todos los polos de 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: .
Paso 1: la entrada en Laplace. .
Paso 2: el error. Se multiplica por la transferencia del error, y la de arriba se cancela con la de la entrada:
Paso 3: el valor final. Al multiplicar por el numerador se va a cero y el denominador a :
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: .
Paso 1. .
Paso 2. Ahora la de la transferencia cancela sólo una de las dos: .
Paso 3. La del teorema se lleva la que quedaba, y el límite ya no es cero:
Con un error de frecuencia no alcanza con que no sea cero: el error se anula sólo si .
La cuenta tiene una lectura física. Enganchado a una entrada corrida , el VCO tiene que correr por encima de su frecuencia libre, y para eso necesita un control constante . Un filtro proporcional sólo sostiene ese control si ve un error que lo produzca, , y despejando sale la fila de la tabla. Con las constantes del script de clase — y por muestra— y una rampa de rad por muestra son 0,2000 rad, exactamente ; lsim da lo mismo (sección 07). La filmina dibuja esa curva y le escribe al lado: no es útil.
La filmina toma la forma general de un filtro de primer orden y apaga coeficientes para tener cuatro filtros:
Cada fila sale de calcular y reemplazarlo en las dos fórmulas de la sección 02:
| filtro | coeficientes | L(s) | L(0) | ε_ss, escalón | ε_ss, rampa |
|---|---|---|---|---|---|
| proporcional | 0 | ||||
| un polo | 1 | 0 | |||
| PI | 0 | 0 | |||
| adelanto-atraso | ninguno nulo | 0 |
La columna del escalón es toda cero porque ningún lo es. En la del adelanto-atraso, dividir por 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 el polo cae en el origen y el filtro es un PI. Simulada en el tiempo con lsim hasta s, con s⁻¹, un escalón de 1 rad y una rampa de rad/s:
| filtro | constantes | rampa, fórmula [rad] | rampa, lsim [rad] | escalón, lsim [rad] |
|---|---|---|---|---|
| proporcional | 0,2000 | 0,2000 | 1,1·10⁻¹⁵ | |
| un polo | 0,1000 | 0,1000 | 3,9·10⁻¹⁵ | |
| PI | 0 | 0,0000 | 0 | |
| adelanto-atraso | 0,0500 | 0,0500 | 5,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, , tiene , y la tabla le daría error nulo en las dos columnas. Pero su error es
con los polos en , sobre el eje imaginario: el lazo oscila para siempre y el error no converge a nada. Al denominador le falta el término en , y ese término es justo lo que pone la rama proporcional del PI.
La tabla se puede leer sin hacer cuentas, contando integradores en el lazo abierto:
La cantidad de polos en el origen de es el tipo del lazo. El VCO ya pone uno, el : integra el control para dar la fase (la nota del VCO). Por eso cualquier filtro con 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 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 rad por muestra, la rama vale 9,99999·10⁻⁴ —el que el VCO necesita— y la rama 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 sube hasta y se queda, la de 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, con , frente al PI —tipo 2— da , y en el límite : el PI la sigue, pero atrasado. Con el lazo de la clase y rad por muestra² son 0,0020 rad, y lsim da lo mismo.
El PLL de primer orden es el de constante: con , un solo polo real, nunca sobrepasa, y se asienta al 2 % en —782,4 muestras con la 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, : 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 , y la estabilidad deja de ser gratis: Routh pide además .
El PI de la filmina es una rama proporcional en paralelo con una integral, . Lo que se busca es en función de sus constantes.
Paso 1: reemplazar.
Paso 2: multiplicar arriba y abajo por , para sacar el de adentro:
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 , coeficiente a coeficiente. El término independiente da , y el de , . Se despeja dividiendo el segundo por :
Paso 4: el numerador. Tiene los mismos dos coeficientes, así que queda la forma que trae la filmina:
Con las constantes de la clase, , y por muestra, da y rad por muestra; a los 16 GHz del script, MHz. damp devuelve lo mismo desde los polos, . 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 , y la pone sola la rama proporcional; entra en las dos constantes y en sentidos opuestos: subirla acelera y baja . Y el numerador no es una constante: tiene un cero en , que lo pone la rama proporcional, y ese cero hace que el transitorio no sea el del segundo orden de libro.
Ante un escalón de fase , el error es . Para los polos son , con , y antitransformando:
Es la fila subamortiguada de la tabla de respuestas que trae la filmina, que da . 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 . Derivando y ordenando, con :
Paso 2: el valor ahí. Con , el corchete vale exactamente:
El error en el pico es , y el sobrepico:
Con da 40,08 %, en muestras. No es la fórmula de libro, , 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 —vale , 13,53 %— ni más arriba: para el pasa a , la raíz a , 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 fijo, o sea moviendo sólo . El sobrepico es la forma cerrada; el asentamiento al 2 % y el pico del error ante la rampa de rad por muestra, medidos con step y lsim:
| ζ | Kp/Ki | ω_n [rad/muestra] | sobrepico | asentamiento | pico del error, rampa |
|---|---|---|---|---|---|
| 0,10 | 8 | 2,500·10⁻² | 74,41 % | 1528,8 muestras | 0,0345 rad |
| 0,25 | 50 | 1,000·10⁻² | 50,63 % | 1368,5 muestras | 0,0712 rad |
| 0,3536 | 100 | 7,071·10⁻³ | 40,08 % | 1478,6 muestras | 0,0895 rad |
| 0,50 | 200 | 5,000·10⁻³ | 29,84 % | 1501,0 muestras | 0,1093 rad |
| 0,7071 | 400 | 3,536·10⁻³ | 20,79 % | 1384,1 muestras | 0,1290 rad |
| 1 | 800 | 2,500·10⁻³ | 13,53 % | 2156,7 muestras | 0,1472 rad |
| 1,5 | 1800 | 1,667·10⁻³ | 7,56 % | 3369,2 muestras | 0,1650 rad |
Con fijo, la envolvente es la misma para todo , porque no depende de : mover 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 y : salta según qué lóbulo de la oscilación sale último de la banda del 2 %. Pasado 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 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 . Para ese pico también es cerrado: , 0,0895 rad para el lazo de la clase. Qué y qué elegir según el ruido y el tiempo de enganche está en ancho de banda, adquisición y tracking.
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 , 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 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 se achica.
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:
stepinfo(F) mide sobre su propia grilla. Sin una grilla, elige los instantes por su cuenta y el pico cae entre dos: da 40,07 % contra los 40,08 % de la forma cerrada. Con step(F, t) sobre una grilla de 0,25 muestras y stepinfo(phi, t, 1) coinciden. El tercer argumento es el valor final; sin él, toma la última muestra.ramp para un tf. El script de clase la arma como un escalón que pasa por un acumulador, step(F*z/(z-1)); en continuo el equivalente es step(F/s). Con lsim y la rampa explícita se elige la pendiente y se ve el error directo.isstable(F); y para verificarla de verdad, lsim, que simula en el tiempo y no pasa por el límite.