% Programa para probar el control de la CALDERA
% F. Morilla, febrero 2010

clear
% Inicializa el modelo y las condiciones de simulación
load dat_in_caldera

% Asigna los parámetros de control de la estructura descentralizada
estructura=[1 1]; % La misma estructura PID en los tres controladores
umin=0;           % El mismo rango 0-100% en las tres señales de control
umax=100; 

lvcu1=(umax-umin)/tm;  % Se permite un cambio del +-100% en un periodo de
                       % muestreo, cualquiera que sera el periodo de muestreo elegido
lvcu3=(umax-umin)/tm;
lvcu2=1;          % Con límite de cambio, el mismo del proceso (1%/sg), en el controlador 2

% Juego 1 de parámetros de control
kp1=2.5;
ti1=50;
td1=0;
alfa=0.1; % El mismo factor de filtro en la acción derivativa para los tres controladores

kp2=0.1;
ti2=20;
td2=0;

kp3=1.25;
ti3=50;
td3=0;

% Ejecuta la simulación
vt=0:tm:tiempo;
disp('Simulando ......, espere a que presente los resultados ')
[t,estados,registros]=sim('Control_Caldera',vt);

% Presenta y guarda los resultados
figure(1)
plot(t,registros(:,5),t,registros(:,8))
title('Presión de vapor y consigna (%)')
xlabel('Tiempo (sg)')

figure(2)
plot(t,registros(:,6),t,registros(:,9))
title('Oxígeno en exceso y consigna (%)')
xlabel('Tiempo (sg)')

figure(3)
plot(t,registros(:,7),t,registros(:,10))
title('Nivel en el calderín y consigna (%)')
xlabel('Tiempo (sg)')

figure(4)
plot(t,registros(:,4))
title('Demanda de vapor (%)')

xlabel('Tiempo (sg)')

figure(5)
plot(t,registros(:,1:3))
title('Caudales (%)')
xlabel('Tiempo (sg)')
legend('Combustible','Aire','Agua de alimentación')

% Guarda resultados para análisis y evaluación
save pruebaCaldera_CL.mat t registros tcambio Yo Yf