Sistema térmico SISO a escala

También disponible en SlideShare
Nelson G. Lombardo

Resumen

El siguiente trabajo intenta discutir algunos de los puntos más relevantes de un sistema térmico SISO a escala, donde se procedió a obtener el modelo matemático del mismo y luego se trabajo sobre la dinámica a través de un control ON-OFF.

Neuquén, Argentina.

Introducción

El problema que se nos planteo fue un sistema térmico SISO a escala. Para el estudio del sistema se procedió a realizar pruebas de funcionamiento tratándolo como un sistema de black-box. En principio la estrategia para obtener el modelo del sistema fue estudiar el comportamiento del mismo. Para ello el desarrollador del sistema nos entrego capturas de datos del sistema donde detallaba el tiempo y la temperatura que el sistema iba obteniendo segundo a segundo.
El estudio que realizo para la aproximación es en un tratamiento sobre la morfología de la señal. Esto es posible a la poca cantidad de datos a procesar, la simpleza de los mismos y a la suposición de que el sistema responderá a uno de primer orden.

Obtención del modelo

En base a los datos ofrecidos, se realizo un estudio morfológico de los mismos para arribar a los parámetros distintivos de este tipo de sistemas. El algoritmo básico se puede observar en la siguiente figura:
Cada parte del sistema es muy simple de comprender, en el anexo al trabajo se deja el programa escrito en Scilab, donde existen comentarios en el código para ir comprendiendo el flujo de la programación.
En primer lugar vamos a definir matemáticamente cómo es un sistema de primer orden en el tiempo:
FT = (K)/(τs + q) ⇒ ℒ − 1(FT) = K(1 − e − (t)/(τ))
Dónde K es la ganancia del sistema, τ es la constante de tiempo y  − (1)/(τ) es el polo del sistema. Lamentablemente esto no es suficiente al modelar un sistema térmico, puesto que estos presentan mucha inercia en su repuesta por lo que es necesario modelarla. Matemáticamente hay algunas alternativas, pero gracias a los modelos computacionales podemos lograrlo agregando un módulo de retardo de la forma apropiada, pudiendo programarse un retardo o bien al modelar con algún modelador de flujo introduciendo un bloque de retardo:
RT = delay(t)
Este retardo puede establecer una salida cero o bien, las de las condiciones iniciales cómo sucede con nuestro sistema, el cual está a temperatura ambiente.
En primer lugar podemos presentar la siguiente gráfica:
dónde en color rojo observamos los datos que se capturaron cada 1 segundo, en azul es esta señal pasada por un filtro de vídeo dos veces y en verde el sistema teórico que proponemos.
También a modo de prueba podemos observar que los sistemas de primer orden poseen características muy marcadas. De forma práctica introducimos errores a los datos de una segunda captura y observamos que aún se obtenían los parámetros característicos sin problema. En la siguiente figura se presenta el sistema con los datos de “error” introducidos:
Si hacemos zoom podemos visualizar de una mejor manera cómo queda el sistema propuesto superpuesto a los datos que se nos había otorgado con los errores que introducimos:
Se puede observar que el sistema propuesto responde muy cerca de los datos con los errores introducidos. Gracias a los marcados detalles de este tipos de sistema podemos seguir obteniendo un modelo muy aproximado y realista aún con datos en donde se ha perdido por completo la obtención de los valores reales.
De los datos obtenidos y trabajados con los algoritmos morfológicos, llegamos a:
Retardo de Constante de Tiempo de Temperatura en
transporte [s] tiempo [s] asentamiento [s] reg. permanente [°C]
29 60.25 212 34.236163
17 53.75 198 60.637213
Promediando entre estos dos resultados, podemos proponer el siguiente sistema de primer orden:
Retardo de Constante de Tiempo de
transporte [s] tiempo [s] asentamiento [s]
23 57 205

Comportamiento del sistema frente a un control ON-OFF

Se esquematizo un control ON-OFF con el sistema térmico SISO a escala y los datos nos fueron entregados. En la siguiente figura se puede observar estos datos graficados cómo así los mismo que han sido filtrados por un filtro de vídeo:
Para poder interpretar el alcance de los datos que se obtuvieron con el modelado se planteo un sistema de control tipo ON-OFF con la herramienta Xcos del Scilab para simular el comportamiento del sistema térmico. La respuesta fue:
Podemos advertir una gran similitud entre las dos últimas gráficas. Evidentemente el sistema propuesto no esta muy lejos de representar el sistema térmico. Aquí podemos observar el sistema que lo emula:
¿Qué producen las diferencias? Hay algunos puntos que nos impiden obtener una representación fiel:
  • El sistema térmico posee pérdidas de temperatura puesto que no esta sellado en su parte superior.
  • Las pérdidas que se producen a través de las paredes del sistema.
  • El sistema de enfriamiento por las mismas pérdidas produce diferentes constantes de tiempo produciéndose así dos sistemas de primer orden con diferentes retardos de transporte.
  • La temperatura de la resistencia calefactora está relacionada con la tensión eficaz de la red la cual posee variaciones que no se pueden controlar ni predecir.
  • Desconocemos la linealidad en la entrega de los datos de entrada hacia la corriente que percibe la resistencia calefactora.
  • El sistema presenta cuantizaciones que no se han tenido en cuenta. Además la entrega de información no es continua sino que es aproximadamente a un segundo por limitaciones del sistema que desarrollaron.
  • Las variables no son poseen una transformación directa puesto que la entrada del sistema es a través de una variable de 1 byte por RS-232C por lo que es un poco más complicado representarlo según hemos visto en la cursada.

Software utilizado

Lyx

Es un procesador de texto para escribir material técnico-científico cómo principal uso. La versión utilizada fue la 2.0.0. Disponible en http://www.lyx.org/.

Scilab

Es un lenguaje interprete para calculo computacional dirigido al público técnico. Presenta semejanzas a otros cómo Octave. La versión utilizada fue la 5.3.3. Disponible en http://www.scilab.org/.

Libreoffice

Suite informática que alberga un editor y formateador de textos, planilla de cálculos, una herramienta para gráficos y diagramas simple, otra herramienta para la creación de presentaciones interactivas para pc cómo otras herramientas necesarias. La versión utilizada fue la 3.3.4. Disponible en http://www.libreoffice.org/.

Conclusiones

Aún siendo que los sistemas térmicos son matemáticamente más sencillos que muchos otros, presentan algunos desafíos prácticos. En primer lugar la inercia a la cual denominamos retardo de transporte nos impide realizar ajustes agresivos cómo los que produce el control ON-OFF. Este retardo limita nuestra opciones al momento de intentar realizar un control sobre un pequeño entorno.
Desde el punto de vista puramente práctico, al momento de estudiar los datos que el desarrollar nos entrego pudimos notar como las perturbaciones se hacían evidentes. El sistema no estaba debidamente aislado pero aún así mostraba una clara respuesta cómo la de un sistema de primer orden.
El control ON-OFF es un control bastante sencillo de aplicar y existen muchas alternativas prácticas, desde la utilización de circuitos analógicos cómo así digitales. Sin embargo, presenta un desafío al momento de lograr una determinada prestación, existe una relación de compromiso grande que no se puede obviar.

Referencias

[1] Limitaciones fundamentales en control SISO”, apuntes de cátedra. Facultad de ingeniería, Universidad de la República, Uruguay.

[2] Paola Niño-Suárez, M. Velasco Villa y E. Aranda Bricaire, “Exact discretization fo a movable robot with transport retardation”. Universidad militar nueva granada. Agosto 2006.

[3] Sistemas dinámicos lineales de primer orden”, Apuntes de control distribuido 05-0, Depto. Ingenierí́a de Sistemas y Automática, Universidad de Sevilla.

Anexo

Programa para la obtención de los parámetros del sistema térmico SISO a escala

El siguiente programa aplica un estudio morfológico sobre los datos que el desarrollador del sistema obtuvo.
// Promediado móvil:
//    t = matriz con los datos
//    c = columna a analizar, si es un vector se pasa 0
//    xt = cantidad de muestras a promediar en cada punto
function [reg]=aliasing(t, c, xt)
    m=size(t);
    for i=(xt+1):(m(1)-xt)
        reg(i-xt)=0;
        for j=-xt:xt
            if c == 0 then
                reg(i-xt)=t(i+j)+reg(i-xt);
            else
                reg(i-xt)=t(i+j,c)+reg(i-xt);
            end
        end
        reg(i-xt)=reg(i-xt)/(2*xt+1);
    end
endfunction
​
// Busca el tiempo donde su respuesta este dentro del porcentaje (cota) del valor
//    t = vector donde hay que buscar
//    value = valor (amplitud) 
//    cota = margen (en porcentaje)
function [y]=lookingfor(reg, value, cota)
    j=1;
    v(j)=-1;
    for i=1:length(reg)
        if (value<=(reg(i)+reg(i)*cota/100))&(value>=(reg(i)-reg(i)*cota/100)) then
            v(j)=i;
            j=j+1;
        end
    end
    if v(1)==-1 then
        y=-1;
    else
        y=min(v);
    end
endfunction
​
// Determina el tiempo de asentamiemto recorriendo desde los últimos datos 
// aportados.
//    t = vector con los datos
//    cota = porcentaje de cota
function [ts]=timestorage(reg, cota)
    temp=reg(length(reg));
    for i=length(reg)-1:-1:1
        if (reg(i) > (temp+temp*cota/100))|(reg(i)<(temp-temp*cota/100)) then
            ts = i;
            return;
        end
    end
endfunction
​
// Busca el verdadero cero del sistema de primer orden trazando las secantes
// (derivadas discretas) y comparandolas dentro de un margen con la derivada
// que le corresponde al sistema sin retardo de transporte en el tiempo = 0
//    t = vector a analizar
//    d = pendiente a buscar
//    per = margen de captura (porcentaje)tstorage
function [y]=syscero(reg, d, cota)
    for i=1:length(reg)
        // For debug:
        //disp(reg(i+1)-reg(i));
        if ((reg(i+1)-reg(i))>=(d-d*cota/100))&((reg(i+1)-reg(i))<=(d+d*cota/100)) then
            y=reg(i);
            return;
        end
    end
endfunction
// Kill las variables:
clear tau; clear cero; clear KA; clear reg; clear data; clear i; clear t;
clear ts; clear ini; clear temp; clear filename; clear l;
// Ruta absoluta al archivo:
filename = "/media/storage/UTN-UAC/5to/Control/practica/lab02/captura3.txt";
// Carga una matriz con los datos en los archivos
temp=csv_read(filename,ascii(9),[], "double");
// Se borra el canvas para el dibujo de los plots
clf();
// Promediado móvil
// dos pasadas
reg=aliasing(temp,2,5);
reg=aliasing(reg,0,5);
// Graficamos la curva filtrada: (obviamente pierde puntos)
plot(reg, "blue");
// Buscamos el tiempo cuál su valor de amplitud se acerque en un 3% al 
// tiempo de establecimiento en la señal filtrada
ts=timestorage(reg, 2);
// Establecemos KA como un simple promedio (por ahora)
KA=0;
for i=ts:length(reg)
    KA=reg(i)+KA;
end
KA=KA/(length(reg)-ts);
// Obtenemos el tau para la señal filtrada y sin condiciones iniciales
tau=(ts/2.2);
// Buscamos el supuesto cero de la función (derivada KA/tau)
y=0;
y=syscero(reg, KA/(2*tau), 3);
data=0;
l=size(temp);
for i=1:l(1)
    data(i)=temp(i,2);
end
// Buscamos el cero del sistema de primer orden:
cero = lookingfor(data, y, 3);
// Graficamos los datos experimentales obtenidos
t=[1:length(reg)];
plot(t,temp(t,2),"red");
// Promediamos los valores que se encuentran dentro del retardo de transporte
// de los datos experimentales (condiciones inciales)
ini=0
for i=1:cero
    ini=ini+temp(i,2);
end
ini=ini/cero;
// Completamos los datos del retardo de transporte de la función propuesta con 
// la condición inicial de temperatura (cercana a la temp. ambiente)
for i=1:cero
    t(i)=ini;
end
// El verdadero tau! (No nos olvidemos del retardo de transporte)
tau=(ts+cero)/4;
// Generamos la función completa que se propone
for i=cero:length(reg)
    t(i)=ini+(KA-ini)*(1-exp(-(i-cero)/(tau)));
end
// Graficamos el sistema propuesto
plot(t, "green");
// Etiquetamos los ejes:
xlabel("Tiempo [s]", "fontsize", 3);
ylabel("Temperatura [°C]", "fontsize", 3);
// Informamos de que se trata cada gráfica:
hl=legend([’Filtrado’;’Datos’;’Sistema propuesto’], 2);
// Por consola imprimimos los valores que queremos:
disp(tau,"Valor del tau:");
disp(cero, "Valor del cero:");
disp(KA, "Valor en régimen permanente:");
disp(ts, "Valor del tiempo de asentamiento:");

Programa para graficar los datos del sistema de control ON-OFF y el filtrado del mismo

El siguiente programa permitío graficar los datos que se nos dio un pasarlos por un simple filtro.
// Promediado móvil:
//    t = matriz con los datos
//    c = columna a analizar, 
//        si es un vector se pasa 0
//    xt = cantidad de muestras 
//    a promediar en cada punto
function [reg]=aliasing(t, c, xt)
    m=size(t);
    for i=(xt+1):(m(1)-xt)
        reg(i-xt)=0;
        for j=-xt:xt
            if c == 0 then
                reg(i-xt)=t(i+j)+reg(i-xt);
            else
                reg(i-xt)=t(i+j,c)+reg(i-xt);
            end
        end
        reg(i-xt)=reg(i-xt)/(2*xt+1);
    end
endfunction
// Ruta absoluta al archivo:
caponoff = "/media/storage/UTN-UAC/5to/Control/practica/lab03/capturas/onoffoutput.csv";
// Carga una matriz con los datos en los archivos
ascii(9)
reg=csv_read(caponoff," ",[],"double");
len=size(reg);
len=len(1);
t=[1:len];
clf();
plot(t, reg(t,3),"red");
data=aliasing(reg,3,5);
t=[1:length(data)];
plot(t,data,"blue");
// Etiquetamos los ejes:
xlabel("Tiempo [s]", "fontsize", 3);
ylabel("Temperatura [°C]", "fontsize", 3);
// Informamos de que se trata cada gráfica:
hl=legend([’Datos’;’Filtrado’], 2);

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s