%% Ejemplo criterios de elección de metodología de diseño IMC/S-IMC y especificaciones razonables (2)
% Presentación en vídeo: http://personales.upv.es/asala/YT/V/imcex2.html
%% Enunciado del problema
% Considérese la siguiente función de transferencia:

s=tf('s');
G2_sinretardo=1/(10*s+1)^2;
G2=G2_sinretardo*exp(-4.5*s); %ejemplo 2
step(G2), grid on

% Justificar qué control IMC/S-IMC/ninguno de ellos se aconsejaría aplicar,, y si se podría sintonizar un PID basado en dichas metodologías.
%
%% Solución:
% G2 tiene la forma de las tablas S-IMC por lo que pueden sí ser utilizadas para sintonizar PIDs, mientras que el IMC directo daría un regulador con retardos internos (no PID). Para que la aproximación del retardo (Taylor) del S-IMC sea razonablemente válida, requeriremos \tau_c>=\theta, por lo que \tau_c>4.5 sería la recomendación en este caso… En resumen, recomendamos PID/S-IMC con \tau_c\geq 4.5, esto es, con tiempo de establecimento deseado de 4\tau_c+\theta=22.5 segundos o mayor. Tiempos objetivo menores deberían ser abordados con IMC pero el resultado no sería un PID (habría retardos internos en el controlador).
%
%% Detalle/simulación:

proc.tau1=10;proc.tau2=10;proc.theta=4.5;proc.kp=dcgain(G2);
tauc=8.5; %mayor de 4.5... poner 8.5 va bien
t_est_objetivo=4*tauc+proc.theta
PID=SIMC_Aux.S_IMC(proc,tauc,10);%filtro 10 veces más rápido que tau2
RespuestaBC_Objetivo=1/(tauc*s+1)*exp(-proc.theta*s);
zpk(PID)
SIMC_Aux.SimulaRefYEntrada(G2,PID,RespuestaBC_Objetivo)

% La amplificación de alta frecuencia de ruido de medida a actuador de 7, debería comprobarse que es razonable, así como límites de saturación.
%
% Prestaciones rápidas: Para bucles más rápidos con \tau_c<4.5, IMC con retardo interno (\approx Predictor Smith, no en objetivos ICI, dado que NO sería un PID) se recomendaría. Pero en bucles rápidos,  ni S-IMC ni IMC con retardo interno serían seguramente recomendables (mala respuesta ante perturbaciones a la entrada, que tardarían 60 segundos a desaparecer). Aparte, acelerar las constantes de tiempo de 10 (bucle abierto) a menos de, digamos, 2.5 requeriría grandes acciones de control en el transitorio y sería seguramente muy sensible a errores de modelado (dinámica no modelada de alta frecuencia), por lo que posiblemente no sería una especificación recomendable en la práctica con "ninguna" técnica.
%

%Diseño IMC (sin aproximar retardo):
tauc=4.25 %menor de 4.5, no recomendaría S-IMC PID.
t_est_objetivo=4*tauc+proc.theta
Q=inv(G2_sinretardo)*1/(tauc*s+1)/(proc.tau2/5*s+1) %segundo polo 5 veces más rápido que tau2
Regu=SIMC_Aux.SimulaIMC(G2,Q);
Regu.InternalDelay

% Se observa que el regulador tiene retardo interno. La respuesta de referencia a salida es aparentemente buena, pero el pico de la acción de control ante referencia debería ser analizado para comprobar si hay problemas de amplificación de ruido de medida en actuadores o de poca robustez si estamos acelerando demasiado.
%%