Buscar en este blog

domingo, 4 de noviembre de 2018

EJEMPLO DE PROGRAMA OCTAVE (CALDERA CONTROL TODO-NADA)

Realizar la simulación de un controlador todo nada para una planta que consiste en una resistencia calefactora para mantener la temperatura de un sistema. El sistema deberá implementar un ciclo de histéresis en torno a una temperatura deseada. Cuando la resistencia calefactora está en funcionamiento transfiere calor a la planta de manera proporcional al tiempo transcurrido en su funcionamiento. 

Temp + Kr * delta_t 

En todo momento, el sistema tenderá a aproximarse a la temperatura ambiente de manera proporcional a la diferencia de temperatura del sistema con el exterior.

Temp – Ke * (Temp – Temp_ambiente) * delta_t 

Es decir, la temperatura Temp se actualizará según los dos criterios cuando la resistencia esté encendida y únicamente según el segundo criterio cuando esté apagada. Deberá estructurarse el código de la siguiente manera: Una función simulará la planta y devolverá la temperatura del sistema dada la temperatura actual y si el sistema está o no encendido.

 Temp <- function simulador_planta(Temp, Temp_ambiente, Kr, Ke, delta_t, on_off) 

Otra función actuará de controlador, decidiendo si debe encenderse o no la resistencia calefactora. 

on_off <- function controlador(Temp, T_min, T_max, on_off) 

Por último una función realizará el bucle de simulación, realizando llamadas a la función de simulación de la planta y a la función del controlador. Cada una de las funciones deberá ser escrita en su propio fichero. El bucle de simulación, también será un script de octave.

Representar en una gráfica que contenga dos sub representaciones, una encima de la otra, por un lado la evolución de la temperatura del sistema controlado con el tiempo, y en la parte inferior, la evolución de la señal binaria que marca la activación y desactivación del sistema. Añadir rótulos a los ejes y título a la gráfica.




PROGRAMA:

T_amb=10
T_min=40
T_max=60
T=T_amb
a=min([10 32 35])
b=max([10 32 35])
K_alu = a/b
Kr = 15
on_off = 0
deltat =0.02
Temps =[]
On_offs =[]
Valoresx = []
for i = 1:2500
  T = Simulador_planta (T, T_amb, K_alu, Kr, deltat, on_off);
  on_off = Controlador (T, T_min, T_max, on_off);
  Temps =[Temps, T];
  On_offs = [On_offs, on_off];
  Valoresx = [Valoresx, i];
endfor
Valoresx = deltat * Valoresx
subplot (2,1,1)
plot (Valoresx, Temps)
title('variacion de temperatura')
xlabel('Tiempo')
ylabel('Temperatura')
subplot (2,1,2)
plot (Valoresx, On_offs)
title('señal binaria')
xlabel('Tiempo')
ylabel('onoff')

function T = Simulador_planta (T, T_amb, K_alu, Kr, deltat, on_off)
   if (on_off == 0)
     T = T-K_alu*(T-T_amb)*deltat
     endif
   if (on_off == 1)
     T = T+Kr*deltat-K_alu*(T-T_amb)*deltat
     endif
endfunction
  
  function on_off = Controlador (T, T_min, T_max, on_off)
  if  (T <= T_min) 
    on_off = 1 
  endif
  if (T >= T_max)
    on_off = 0
  endif
 endfunction










No hay comentarios:

Publicar un comentario