%% Ejemplos criterio de Nyquist (2b): polos en el eje imaginario, perturbando "al revés" el polo.
% © 2021, Antonio Sala Piqueras. Todos los derechos reservados.
% Presentación en vídeo: http://personales.upv.es/asala/YT/V/nyqml4.html
% Este código ejecutó correctamente en Matlab R2021b
% Objetivo: analizar el criterio de Nyquist en situaciones especiales.
% Tabla de Contenidos
% 1.-Polos con parte real cero en bucle abierto
%     Control PI de un sistema de primer orden estable
%     ¿Y si perturbo hacia el otro lado?
%     Sistema de segundo orden: fuerza sobre masa 1Kg (polo doble en origen) + regulador PD
%         Perturbando "por el otro lado"

s=tf('s');

% Revisión criterio: 1/(1+L(s)) es estable si L(j\omega) rodea a -1 tantas veces en sentido antihorario como polos inestables tenga (en bucle abierto) la FdT L(s).
%% 1.-Polos con parte real cero en bucle abierto
%% Control PI de un sistema de primer orden estable

G=1/(s+1);
K=3+0.2/(s+0.0005); % aproximamos "casi" en el borde el regulador integral
L=G*K;
nyquist(L) %se cierra por la DERECHA
nyquist(L), axis([-2 8 -15 15]) %zoom cerca del origen
eig(1/(1+L))
%ahora hacemos el Nyquist del integrador puro
K=3+0.2/(s);
L=G*K;nyquist(L),  axis([-2 8 -15 15])
eig(1/(1+L))

%% ¿Y si perturbo hacia el otro lado?

G=1/(s+1);
K=3+0.2/(s-0.0005); % aproximamos "casi" en el borde el regulador integral
L=G*K;
nyquist(L) %se cierra por la IZQUIERDA
nyquist(L), axis([-2 8 -15 15]) %zoom cerca del origen

% Con lo que da 1 vuelta al -1 en sentido antihorario y, por tanto, prueba estabilidad.

eig(1/(1+L))

% En definitiva, da igual la dirección en la que perturbemos el polo en el origen, si se cuentan las vueltas como toca.



%
%% Sistema de segundo orden: fuerza sobre masa 1Kg (polo doble en origen) + regulador PD

G=1/(s+1e-2)^2;%masa de 1Kg aproximando el modelo 1/s^2 (sin fricción)
K=3+s/(0.02*s+1); %PD+filtro ruido
L=G*K;nyquist(L)
nyquist(L),axis([-70 1 -6 6])%zoom
eig(1/(1+L))
G=1/s^2;%masa de 1Kg

L=G*K;nyquist(L)
eig(1/(1+L))

%% Perturbando "por el otro lado"

G=1/(s-1e-2)^2;%masa de 1Kg aproximando el modelo 1/s^2 (sin fricción)
K=3+s/(0.02*s+1); %PD+filtro ruido
L=G*K;nyquist(L)
nyquist(L),axis([-70 1 -6 6])%zoom

% Da 2 vueltas en sentido antihorario: correcto, es estable en bucle cerrado.

eig(1/(1+L))

%%