%% Inconvenientes del uso de margen de fase/retardo y ganancia "clásicos"
% © 2019, Antonio Sala Piqueras. Universitat Politècnica de València. Todos los derechos reservados.
% Presentación en http://personales.upv.es/asala/YT/V/mgfginc.html
% Este código ejecutó sin errores en Matlab R2018b.
% Motivación y objetivos: aunque los márgenes de ganancia y fase dieron lugar al primer enfoque hacia garantizar robustez (tolerancia a error de modelado) en 1940-60, el objetivo de este material es comprender los inconvenientes de la metodología, que hicieron necesaria su evolución hacia el control robusto multivariable \mathcal H_\infty de los años 1990.
% Table of Contents
% Inconveniente 1: buenos márgenes fase/retardo y ganancia ("independientes") no implican buena robustez ante "mezclas de incertidumbre"
% Inconveniente 2: dependencia del regulador
%     Conclusiones
% Inconveniente 3: Metodología "gráfica", tediosa para diseño
% Inconveniente 4: Caso multivariable resulta inabordable
% Conclusión global
%
%% Inconveniente 1: buenos márgenes fase/retardo y ganancia ("independientes") no implican buena robustez ante "mezclas de incertidumbre"

s=tf('s');
L=1.33/(s+0.2)/(s+1)*(s^2+.1*s+3)/(s^2+.04*s+3)*exp(-.05*s); 
%inspirado en Control System Design, Astrom, 2002.

% Márgenes de robustez:

MM=allmargin(L)
margin(L)

% Ahora, comprobemos si se mantiene la estabilidad en bucle cerrado cuando se "perturba" L por culpa de un error  de modelado que combina cambios en ganancia y retardo simultaneamente:

Lpert=1.44*L*exp(-0.075*s);
%porcentajes de cada cambio sobre max margen "individual" (gan., retardo):
percentdemargenganancia=1.44/MM.GainMargin(1)
percentdemargenretardo=0.075/MM.DelayMargin
QQ=allmargin(Lpert);
QQ.Stable %el sistema perturbado NO es estable en bucle cerrado.

% Los márgenes de ganancia y fase son útiles si no existen "cosas raras" entre las frecuencias de cruce 0dB y 180 grados: que no haya resonancias, que el diagrama de Bode tenga una pendiente más o menos constante entre dichas frecuencias. Si eso no ocurre (hay resonancias o/y cambios grandes de pendiente entre las frecuencias de cruce 0dB-180º, o hay varias de esas frecuencias de cruce relativamente próximas), buenos márgenes según las reglas "clásicas" de diseño (>45º fase, >6dB ganancia) pueden dar una impresión de robustez errónea, y combinaciones de variaciones de ganancia y retardo simultaneas mucho menores que los márgenes teóricos "independientes" pueden inestabilizar el bucle.
%
%
%
%
%
%% Inconveniente 2: dependencia del regulador K
% Diseño 1:

G1=2/(s+2); K1=(s+2)/(0.055*s+1)^2/s;
L=minreal(G1*K1)

%
% Diseño 2:

G2=2/(s+0.4)^3; K2=(s+0.4)^3/(0.055*s+1)^2/s;

% K2 es un muy mal diseño para G2 (luego nos daremos cuenta), pero "a priori" tiene la misma L que el caso 1...

L=minreal(G2*K2,1e-5) 

% Prestaciones nominales idénticas ante escalón de referencia:

Tnom=1-1/(1+L);
step(Tnom)

% Como L coincide, los márgenes de robustez también:

allmargin(L)
nyquist(L)

% Simulación ante errores de modelado

errmod=0.05/(0.07*s+1);
G1pert=G1+errmod;
step(G1,G1pert), grid on, title('Step bucle abierto'),legend('nominal 1','con err. modelado 1')
Lpert=minreal(G1pert*K1);
step(Tnom,1-1/(1+Lpert)), grid on, title('Step bucle cerrado'),legend('nominal 1','con err. modelado 1')
G2pert=G2+errmod;
step(G2,G2pert), grid on,  title('Step bucle abierto'),legend('nominal 2','con err. modelado 2')
Lpert=minreal(G2pert*K2);
step(Tnom,1-1/(1+Lpert)), grid on, title('Step bucle abierto'),legend('nominal 2','con err. modelado 2')

%% Conclusiones
% Un mismo error de modelado en G se manifiesta de forma diferente según sea Kde modo que una "forma" de L=GK para un proceso puede ser muy conveniente y la misma L para otro no serlo, dependiendo de la incertidumbre (errmod, incertidumbre aditiva) que se estime tiene el proceso y de la ganancia de Knecesaria para conseguir L... aparte, ganancia de K tiene que ver con amplificación de ruido de medida, que no hemos considerado...

bodemag(K1/(1+G1*K1),K2/(1+G2*K2)), grid on, title('Bode de perturb. a acción control')

%
%
%% Inconveniente 3: Metodología "gráfica", tediosa para diseño
%
% Durante la fase de diseño de reguladores, hay que comprobar simultáneamente que haya buenos márgenes de ganancia, fase, retardo y las prestaciones de la salida en el tiempo (tiempo de estabilecimiento, sobreoscilación) y en la frecuencia (diagrama de Bode de S=1/(1+L) o de T=L/(1+L) para observar a qué frecuencias se eliminan perturbaciones o se siguien bien referencias, y para ver que no existen picos de resonancia grandes en S o T) así como la respuesta temporal y en frecuencia de la acción de control KS=K/(1+KG) para asegurar que no se saturan los actuadores ni se amplifica demasiado el ruido de medida de alta frecuencia.
% En problemas "sencillos" la interpretación gráfica puede ser conveniente (así lo era en 1940-1960, sin computadores), pero tener que considerar compromisos muchas veces contradictorios al variar "a mano" parámetros del regulador hace laborioso y poco sistemático el encontrar un buen ajuste del control para problemas más complicados. Herramientas "interactivas" facilitan algo la tarea hoy en día, pero sigue siendo tedioso y sólo aplicable a procesos con reguladores "sencillos".
%
%
%% Inconveniente 4: Caso multivariable resulta inabordable
%
% Operar con \det(I+L(s))... pero L es una matriz de transferencia, L=GKcon G matriz con muchos errores de modelado en ganancia, dinámica no modelada en cada elemento... ¿Cómo diseñar K? ¿Cómo estar seguro de que todos esos errores simultaneos no afectan la estabilidad/prestaciones en bucle cerrado?¿Los márgenes de ganancia y fase elemento a elemento de L significan algo? Preguntas muy difíciles de responder y con muchos contraejemplos... necesario "comenzar de casi cero" a partir de las mismas ideas y objetivos básicos que en 1940, pero con una nueva teoría (teorema de pequeña ganancia, \mathcal H_\infty loop-shaping, mixed sensitivity).
%
%
%% Conclusión global
% Los márgenes de fase/ganancia son indicativos razonables de "robustez" en diseños monovariables de PIDs (o redes adelanto-atraso que son filosóficamente muy similares) para procesos de orden bajo siguiendo las técnicas que se refinaron en los años 1940-60 de diseño "en frecuencia" de reguladores.
% Aplicados con éxito con "reguladores sencillos" a "procesos sencillos" desde 1940 para diseñar controladores que funcionan razonablemente bien en teoría y práctica (robustos):
%    \bullet buenos márgenes (fase>45º, ganancia>6dB, retardo>15% tiempo subida) + pendiente Bode aprox. constante entre los cruces 0dB y 180º + buena respuesta ante escalón temporal nominal + regulador "sencillo" + poca ganancia maxima en frecuencia del regulador (poca amplif. ruido) \RightarrowUn buen diseño monovariable, con alta probabilidad de funcionar en la práctica ante procesos "razonablemente parecidos" (pero obviamente diferentes) al modelo.
% *Importante: tener sólamente buenos márgenes de fase y ganancia NO garantiza una buena robustez.
%    \bullet Para procesos de orden alto que requieran reguladores más complejos, o para sistemas multivariables: necesarias técnicas modernas (1990+) más evolucionadas, basadas en optimización numérica \mathcal H_\infty en vez de "gráfica".
%