9. Diagrama de Nyquist#

Version 0.1

Contenido Original creado por Ezequiel Leonardo Castaño

Este contenido está INCOMPLETO y puede estar incompleto y/o sufrir modificaciones

Material faltante en este capítulo:

  • Impacto de un controlador en el Diagrama de Nyquist

  • Margen de ganancia y margen de Fase en Diagrama de Nyquist

  • Referencias y Recursos Adicionales

  • Diagrama de Nyquist en Simulink

  • Sintonización basada en diagrama de Nyquist en Simulink

%plot inline --format=png -w 1600 -h 800
format compact;

9.1. Diagrama de Nyquist#

El diagrama de Nyquist representa la salida del sistema para un \(K\) determinado utilizando la salida en frecuencia.

9.2. Fase Mínima vs Fase no Mínima#

Los diagramas de Nyquist pueden aplicarse tanto a sistemas de fase mínima como sistemas de fase no mínima

figure;
subplot(2, 3, 1)
sistema = zpk([2], [-1 -2], 1);
nyquist(sistema)
xlim([-1.5 0.5])
title("Fase No Mínima - Un cero en LA en el lado derecho")

subplot(2, 3, 2)
sistema = zpk([], [-1], 1);
nyquist(sistema)
xlim([-1.25 1.25])
ylim([-0.75 0.75])
title("Fase Mínima - Ningún polo ni cero en LA en el lado derecho")

subplot(2, 3, 3)
sistema = zpk([], [-1 -2 -1.5], 1);
nyquist(sistema)
xlim([-0.5 0.5])
ylim([-0.5 0.5])
title("Fase Mínima - Ningún polo ni cero en LA en el lado derecho")

subplot(2, 3, 4)
sistema = zpk([-8], [2 -5 -3 -2+2j -2-2j], 1);
nyquist(sistema)
xlim([-0.05 0.025])
ylim([-0.02 0.02])
title("Fase No Mínima - Un polo en LA en el lado derecho")

subplot(2, 3, 5)
sistema = zpk([2], [1 -1 -2 -2+2j -2-2j], 1);
nyquist(sistema)
xlim([-0.1 0.15])
ylim([-0.1 0.1])
title("Fase No Mínima - Un polo y un cero en LA en el lado derecho")

subplot(2, 3, 6)
sistema = zpk([-1+j; -1-j], [-1 -2 -0.5], 1);
nyquist(sistema)
xlim([-1.5 2.5])
ylim([-1.25 1.25])
title("Fase Mínima - Ningún polo ni cero en LA en el lado derecho")

../_images/ELC09_Nyquist_5_1.png

9.3. Propiedad de la suma de un escalar#

Al sumar un escalar a la función de transferencia del sistema, no es fácil predecir como van a verse afectados los polos y ceros. Sin embargo, al utilizar un diagrama de Nyquist, se produce una traslación y es más sencillo evaluar la estabilidad.

%plot inline --format=svg -w 1600 -h 500
sistema = tf([10 5], [1 5 10 20]);

figure;
subplot(1, 2, 1)
rlocus(sistema, sistema+1)
legend("Sistema", "Sistema + 1")

subplot(1, 2, 2)
nyquist(sistema, sistema+1)
legend("Sistema", "Sistema + 1")

../_images/ELC09_Nyquist_8_1.png

9.4. Criterio General de Nyquist#

El criterio general de estabilidad de Nyquist puede representarse con la siguiente ecuación

\[Z=N+P\]

\(Z\): Cantidad de **polos del sistema }a la derecha del eje imaginario

\(N\): Cantidad de rodeos al punto \((-1,0)\), si es en sentido horario es positivo y si es antihorario negativo

\(P\): Cantidad de **polos en lazo abierto} a la derecha del eje imaginario

9.4.1. Interpretación#

Si el sistema es **estable}, entonces \(Z=0\)

Si los rodeos al punto \((-1,0)\) ocurren en sentido **horario}, el sistema es inestable, ya que \(P\) no puede ser negativo.

Si el sistema es de **fase mínima}, entonces \(P=0\). Por lo tanto, para que el sistema sea estable, **no tiene que haber rodeos} al punto \((-1,0)\), es decir \(N=0\)

Si el sistema es de **fase no mínima}, pero no tiene polos en lazo abierto a la derecha del eje imaginario, entonces \(P=0\). Por lo tanto, para que el sistema sea estable, **no tiene que haber rodeos} al punto \((-1,0)\), es decir \(N=0\)

Si el sistema es de **fase no mínima }con polos a la derecha del eje imaginario, entonces \(P\not= 0\). Por lo tanto, para que el sistema sea estable se tienen que dar exactamente \(P\) rodeos al punto \((-1,0)\) en sentido **antihorario}.

9.5. Ejemplo con Fase Mínima#

Al ser de fase mínima, \(P=0\) y para que el sistema sea estable se requiere que no haya encierros las punto \((-1,0)\).

%plot inline --format=png -w 2000 -h 1000
sistema = tf([1], [1 4 6 5 2]);

figure;

subplot(3, 2, [1 2 3 4])
nyquist(sistema, 3.9375*sistema, 5*sistema)
ylim([-3 3])
xlim([-2 3])
legend("K = 1", "K = 3.9375", "K = 5")

subplot(3, 2, 5)
rlocus(sistema)
ylim([-2 2])
xlim([-2.5 0.5])

subplot(3, 2, 6)
lazo_cerrado_1 = feedback(sistema, 1);
lazo_cerrado_2 = feedback(3.9375*sistema, 1);
lazo_cerrado_3 = feedback(5*sistema, 1);
tiempo = 0:0.02:20;

step(lazo_cerrado_1, lazo_cerrado_2, lazo_cerrado_3, tiempo )
ylim([-1 2.5])
xlim([0 20])
grid on
legend("K = 1", "K = 3.9375", "K = 5")

../_images/ELC09_Nyquist_13_1.png

9.6. Ejemplo Sistema Fase No Mínima con \(P=0\)#

Al tener un cero a la derecha del eje imaginario, este sistema es de fase no mínima, pero al no tener polos en lazo abierto a la derecha del eje imaginario, \(P=0\). Por lo tanto para que el sistema sea estable es necesario que \(N=0\), esto quiere decir que no debe haber encierros al punto \((-1,0)\), ni en sentido horario ni antihorario.

[num, den] = zp2tf([2], [-2 -2+2j -2-2j], 1);
sistema = tf(num, den);

figure;

subplot(3, 2, [1 2 3 4])
frequency = logspace(-10,10, 1000);
nyquist(4*sistema, 8*sistema, 12*sistema, frequency)
xlim([-2 2])
ylim([-2 2])
legend("K = 4", "K = 8", "K = 12")

subplot(3, 2, 5)
rlocus(sistema)
xlim([-3 0.5])
ylim([-4 4])

subplot(3, 2, 6)
lazo_cerrado_1 = feedback(4*sistema, 1);
lazo_cerrado_2 = feedback(8*sistema, 1);
lazo_cerrado_3 = feedback(12*sistema, 1);
tiempo = 0:0.02:20;

step(lazo_cerrado_1, lazo_cerrado_2, lazo_cerrado_3, tiempo)

ylim([-3 0.25])
xlim([0 20])
legend("K = 4", "K = 8", "K = 12")

grid on

../_images/ELC09_Nyquist_15_1.png

9.7. Ejemplo Sistema Fase No Mínima con \(P\not= 0\)#

En este caso \(P=1\), por lo tanto, para que el sistema sea estable es necesario que \(N=-1\), es decir, que el punto \((-1,0)\) tenga un encierro en sentido antihorario. En el Root Locus puede verse como hay dos potenciales valores críticos de \(K\), uno de ellos se encuentra en \(\frac{123}{8}\) y el otro en \(\approx 52.5134\). Se puede ver como al probar con valores de \(K\) menores y mayores, como el diagrama de Nyquist refleja la estabilidad, inestabilidad y estabilidad crítica del sistema.

ceros = transpose([-2]);
polos = [-3 1 -2.5+2j -2.5-2j];
[num, den] = zp2tf(ceros, polos, [1]);
sistema = tf(num, den);

figure;

subplot(3, 2, [1 2 3 4])
frequency = logspace(-10,10, 5000);
nyquist(5*sistema, 124/8*sistema, 20*sistema, 52.5134*sistema, 60*sistema, frequency)
xlim([-4 0.5])
ylim([-1.5 1.5])
legend("K = 5", "K = 123/8", "K = 20", "K = 52.5134", "K = 60")

subplot(3, 2, 5)
rlocus(sistema)
xlim([-3.5 1.5])
ylim([-4 4])

subplot(3, 2, 6)
lazo_cerrado_1 = feedback(5*sistema, 1);
lazo_cerrado_2 = feedback(124/8*sistema, 1);
lazo_cerrado_3 = feedback(20*sistema, 1);
lazo_cerrado_4 = feedback(52.5134*sistema, 1);
lazo_cerrado_5 = feedback(60*sistema, 1);
tiempo = 0:0.02:20;
step(lazo_cerrado_1, lazo_cerrado_2, lazo_cerrado_3, lazo_cerrado_4, lazo_cerrado_5, tiempo )
ylim([-1 6])
xlim([0 8])
grid on
legend("K = 5", "K = 123/8", "K = 20", "K = 52.5134", "K = 60")

../_images/ELC09_Nyquist_17_1.png

9.8. Ejemplo Sistema Inestable Fase No Mínima con \(P\not= 0\)#

En este caso \(P=1\) por lo tanto para que el sistema sea estable \(N\) tiene que ser -1, es decir, debe dar exactamente un encierro en sentido antihorario al punto \((-1,0)\). Sin embargo, como se puede ver en las gráficas, para distintos valores de \(K\) el diagrama de Nyquist tiene o 0 encierros o una cantidad positiva de encierros, ya que las curvas van siempre en sentido horario.

ceros = [-2];
polos = [-1 2 -0.2+3j -0.2-3j];
[num, den] = zp2tf(ceros, polos, [1]);
sistema = tf(num, den);

figure;

subplot(3, 2, [1 2 3 4])
nyquist(4*sistema, 8*sistema, 12*sistema)
xlim([-3 0.5])
ylim([-3.5 3.5])
legend("K = 4", "K = 8", "K = 12")

subplot(3, 2, 5)
rlocus(sistema)
xlim([-3.5 3])
ylim([-4 4])

subplot(3, 2, 6)
lazo_cerrado_1 = feedback(4*sistema, 1);
lazo_cerrado_2 = feedback(8*sistema, 1);
lazo_cerrado_3 = feedback(12*sistema, 1);
tiempo = 0:0.02:20;
step(lazo_cerrado_1, lazo_cerrado_2, lazo_cerrado_3, tiempo )
ylim([-2 10])
xlim([0 10])
legend("K = 4", "K = 8", "K = 12")
grid on

../_images/ELC09_Nyquist_19_1.png