%% Ejemplos criterio de Nyquist (2)
% © 2019, Antonio Sala Piqueras. Todos los derechos reservados.
% Presentación en vídeo en http://personales.upv.es/asala/YT/V/nyqml3.html
% Este código ejecutó correctamente en Matlab R2018b
% Objetivo: analizar el criterio de Nyquist en situaciones especiales.
% Table of Contents
% 1.-Polos con parte real cero en bucle abierto
%     Control PI de un sistema de primer orden estable
%     Sistema de segundo orden: fuerza sobre masa 1Kg (polo doble en origen) + regulador PD
% 2.-Realimentación positiva
% 3.-Sistema inestable con retardo (orden infinito)

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))

%% 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))

%
%% 2.-Realimentación positiva

G=-5/(s-3); K=2;
L=G*K;
nyquist(-L)
eig(1/(1-L))

%% 3.-Sistema inestable con retardo (orden infinito)

G=2.5/(s-.7);
G.IODelay=.4;%retardo probar .33 y .4
K=1.5;
L=G*K;nyquist(L)
Sbc=1/(1+L);
pole(Sbc) %no considera el retardo: resultado incorrecto!
%tf(Sbc) %da un error!
step(Sbc,5) 

%%