%presentación en vídeo en http://personales.upv.es/asala/YT/V/mxsml.html

disp('Running!')
%graficas mas bonitas...
set(0,'defaultaxesfontsize',26)
set(0,'defaultlinelinewidth',3)
ssz=get(0, 'screensize');
set (0, 'DefaultFigurePosition', [145  135 ssz(3)*0.6 ssz(4)*.7]);

s=tf('s');
G=2.5/(s^2+0.8*s+1);
Wdelta=0.2*(s/5+1)/(s+1);




ww=0.1473;
%primera prueba
Wperf=33.333/(s/ww+1);


%acción integral, 8 veces menos error a frec muy bajas...
omegaintegral=0.025;
Wintegral=(s+omegaintegral)/(s+omegaintegral/8);
Wperf=Wperf*Wintegral;

figure(1)
bodemag(1/Wperf,logspace(-2,1)), grid on
title('Plantilla filtro: Inversa Peso error')
figure(2)
bodemag(Wdelta), grid on
title('incertidumbre aditiva')


[K,CL,Gam,Info]=mixsyn(G,Wperf,Wdelta,[]);%octave no necesita el ultimo []
Gam
% si Gam menor que 1, se garantiza error por debajo de inv(Wperf(jw)) para 
%caso nominal y estabilidad para cualquier posible valor de delta con menor que Wdelta.

%% dibujemos resultados NOMINALES:
tf(K) %controlador
resul=minreal(G*K/(1+G*K)); %salida
resul_u=minreal(K/(1+G*K)); %accion de control
figure(1)
step(resul,4), grid on
figure(2)
sigma(K), grid on
title('ganancia K error a control')
figure(3)
sigma(resul_u), grid on
title('ganancia referencia a control')
%comprobemos que error por debajo de su plantilla
resul_e=1-resul;
figure(4)
bodemag(1/Wperf,resul_e,logspace(-2,2))
legend('plantilla','nominal')



%% probemos resultados perturbados:

delta1_ne=7/(s+33)^2;
delta{1}=delta1_ne/norm(delta1_ne,inf)*Wdelta;
Ge{1}=G+delta{1};
delta1_ne=7*(2*s+1)^2/(s^2+.1*s+3);
delta{2}=delta1_ne/norm(delta1_ne,inf)*Wdelta;
Ge{2}=G+delta{2};
delta1_ne=7*s/(s^2+8*s+3)^2;
delta{3}=delta1_ne/norm(delta1_ne,inf)*Wdelta;
Ge{3}=G+delta{3};
delta1_ne=-s^2/(s+1)^2/(0.01*s+1);
delta{4}=delta1_ne/norm(delta1_ne,inf)*Wdelta;
Ge{4}=G+delta{4};
figure(5)
step(G,Ge{1},Ge{2},Ge{3},Ge{4},10), grid on
figure(6)
bode(G,Ge{1},Ge{2},Ge{3},Ge{4})
grid on
for i=1:4
    stp{i}=minreal(Ge{i}*K/(1+Ge{i}*K)); 
    rse{i}=1-stp{i};
end
figure(7)
step(resul,stp{1},stp{2},stp{3},stp{4},4)
legend('nom','1','2','3','4')
grid on
figure(8)
bodemag(resul_e,rse{1},rse{2},rse{3},rse{4},1/Wperf,logspace(-2,2))
legend('nom','1','2','3','4','plantilla')
grid on


