interfaz gráfica en matlab

20
Interfaz Gráfica en MATLAB Cálculo del Factor de Compresibilidad de un Gas Creamos primero un archivo GUI con el nombre “gas” e insertamos todos los botones, paneles y menúes haciéndoles las modificaciones correspondientes, de modo que nos queda lo siguiente: Reconocemos los elementos: Push buttons: string tag IDEAL “ideal” VAN DER WAALS “vdw”

Upload: francisco-osores

Post on 04-Jul-2015

410 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Interfaz Gráfica en MATLAB

Interfaz Gráfica en MATLAB

Cálculo del Factor de Compresibilidad de un Gas

Creamos primero un archivo GUI con el nombre “gas” e insertamos todos los botones, paneles y menúes

haciéndoles las modificaciones correspondientes, de modo que nos queda lo siguiente:

Reconocemos los elementos:

Push buttons:

string tag

IDEAL “ideal”

VAN DER WAALS “vdw”

REDLICH – KWONG “redkw”

Page 2: Interfaz Gráfica en MATLAB

PENG – ROBINSON “peng”

Panels:

string

“Ecuacion”

“Variables de Estado”

“Gas”

“Resultados”

Static Texts:

string Tag

Temperatura “text”

K “text”

Presion “text”

atm “text”

Volumen molar “text”

Factor de

Compresibilidad“text”

L/mol “text”

_ “volm”

_ “faccom”

Edit texts:

string tag

_ temp

_ pres

Pop-up menu:

string tag

Metano

Etano

Propano

n-Butano

“gas"

Page 3: Interfaz Gráfica en MATLAB

i-Butano

n-Pentano

El proceso de cálculo es:

Leer los parámetros del gas, es decir, seleccionar con qué gas se va a trabajar.

Para esto recurrimos al Callback del pop-upmenu, haciendo clic derecho sobre éste, seleccionando “view

callbacks” y luego “callback”:

Lo que observamos es simplemente la declaración de la función, observemos que el nombre con que

está identificada es exactamente el TAG que le asociamos al diseñar la ventana.

Ahora, el objetivo es que podamos seleccionar un gas de la lista emergente y que se asignen sus valores

críticos para los posteriores cálculos.

Para esto, agregamos códigos de modo que nos queda:

Page 4: Interfaz Gráfica en MATLAB

La variable “g” que aparece es una temporal a la que se ha asignado el valor del selector del popmenu.

La sentencia “get” tiene la función (análoga con “input”, usada en codificación normal) de asignar

valores a una variable desde un elemento de la ventana GUI.

Siempre, para manipular cualquier TAG se usa “handles”: handles.nombre_del_tag.

La línea “g= get(handles.gas, ‘value’)” significaría “ asignar a ‘g’ el valor de ‘gas’”, pero “gas” contiene

una lista de 6 elementos; por ello usamos el lazo “switch” para que acorde con la selección del gas, se

usen determinados valores de presión y temperatura críticos y factor acéntrico.

Como “tc”, “pc” y “w” son variables locales de la función “gas_callback”, tenemos que hacerlas útiles

cuando las invoquemos en otras funciones.

Para esto designamos una estructura “data” que tiene los campos “tempc”, “presc” y “facac” a los que al

final designamos cada valor de “tc”, “pc” y “w” respectivamente.

Para hacer constar que la estructura “data” será usada en otras funciones, siempre hay que agregar la

línea: “guidata(hObject, handles)”.

Ahora que ya tenemos definidos los parámetros de cada gas, pasemos a leer la presión y temperatura, para esto

recurrimos a los Edit Texts que representan a los campos en que se colocarán los datos de temperatura y

presión.

Recurriendo al Callback del primero:

Lo que queremos es que al agregar un dato numérico en el recuadro de temperatura, éste sea almacenado

como una variable, para ello le agregamos codificación:

Page 5: Interfaz Gráfica en MATLAB

Las líneas precedidas por un “%” son comentarios, los que están en inglés han sido agregados por el

mismo programa.

Ahí vemos que definen qué es “hObject”, dentro de la función, este identificador representa al TAG.

“t” es una variable que definimos dentro de la función, su valor está en formato “double” o numérico.

La sentencia “str2double” traduce un dato que está en formato “string” (cadena de caracteres) a

formato “double” (número).

Entonces, “t” es el valor numérico que se obtiene de leer el TAG “temp”.

La siguiente sentencia con el lazo “if” es para cerciorarnos de que el valor sólo puede ser numérico. La

sentencia “isnan(t)” significa “t no es un numérico”.

La siguiente sentencia, “set” (análoga al “disp” en programación normal) es para asignar un valor al tag

designado.

La sentencia “errordlg” se usa para que aparezca un mensaje de error si se ingresara un valor no

numérico.

Finalmente almacenamos la variable “t” en el campo “temp” de la estructura “data”.

Realizamos lo análogo para la presión:

Page 6: Interfaz Gráfica en MATLAB

Como ya tenemos definidas todas las variables, lo que queda es definir las funciones de cada push button, de

modo que al hacer clic sobre ellos, al ejecutar el programa, se realicen los cálculos pertienentes.

Al ver el CALLBACK de cada push button, sólo aparece la declaración de la función, es nuestra labor agregar el

código necesario.

Primero con trabajemos para el caso “ideal”:

Luego:

Observemos que en la primera y segunda línea se asignan las variables de presión y temperatura.

Luego se calcula el volumen molar, aplicando la ecuación del gas ideal y se asigna al TAG “volm” el valor

obtenido de esta operación.

Page 7: Interfaz Gráfica en MATLAB

Finalmente se calcula el factor de compresibilidad y se asigna al TAG “faccom” el valor obtenido de esta

operación.

El desarrollo de las otras funciones es análogo, sólo que como son ecuaciones más complejas, se ha agregado el

proceso iterativo para el cálculo del volumen molar.

Page 8: Interfaz Gráfica en MATLAB

Para el caso de Van der Waals:

Proceso

Iterativo

Page 9: Interfaz Gráfica en MATLAB

Para el caso de Redlich – Kwong:

Proceso

Iterativo

Asignación de variables

Page 10: Interfaz Gráfica en MATLAB

Para el caso de Peng – Robinson:

El programa está listo para ejecutarse y lo puede comprobar con los archivos adjuntos.

NOTA: Teniendo abierta la ventana donde observamos toda la codificación se debe hacer la corrida

del programa, si intentamos abrir directamente el archivo *.fig, no se realizará ningún cálculo y sólo

aparecerán mensajes de error en el Workspace.

Asignación de variables

Constantes Complementarias

Proceso

Iterativo

Page 11: Interfaz Gráfica en MATLAB

Cálculo del Factor de Compresibilidad de una Mezcla de Gases

El procedimiento es muy similar al seguido, los únicos cambios son:

Ya no hay un pop-up menu, más bien existe una lista de determinados gases, de los cuales se debe

ingresar el número de moles.

Page 12: Interfaz Gráfica en MATLAB

La lectura del número de moles de cada gas es similar a la lectura de temperatura y presión (iguales que

para el caso de un solo gas), para el gas 1, existe el TAG “mol1” y así sucesivamente.

Luego las moles leídas se agrupan en un vector para aplicarlo en los cálculos de cada función.

Page 13: Interfaz Gráfica en MATLAB

Las constantes críticas han sido ingresadas como vectores de valor fijo y las constantes críticas de la

mezcla se calculan como medias ponderadas:

El desarrollo de las funciones de cada PUSH BUTTON es prácticamente el mismo, sólo que se han

reemplazado “tc”, “pc” y “w” por “tcm”, “pcm” y “wm” respectivamente.

Para la ecuación ideal:

Page 14: Interfaz Gráfica en MATLAB

Para el caso de Van der Waals:

Page 15: Interfaz Gráfica en MATLAB

Para el caso de Redlich – Kwong:

Page 16: Interfaz Gráfica en MATLAB

Para el caso de Peng – Robinson:

El programa queda listo para compilarse, lo cual puede verificarse con el archivo adjunto.

Page 17: Interfaz Gráfica en MATLAB

Conclusiones:

El uso de interfaz gráfica del usuario es bastante práctica en cuanto se refiere a ingreso de datos y salida de resultados.

Su uso, evidentemente, es ideal para personas que no estén familiarizadas con programación y que sólo necesiten realizar cálculos.

Estos dos pequeños ejemplos en la creación de interfaces gráficas nos abre las puertas a una infinidad de programas didácticos que podemos diseñar con la GUI de MATLAB.

Dada la potencia de cálculo del MATLAB y conociendo los códigos pertinentes, podríamos diseñar nuevas herramientas de cálculo, por ejemplo un programa en el que ingresamos una función y observamos su gráfica u obtenemos el valor de su derivada o de su integral en un intervalo.

Resolución de sistemas lineales y no lineales. Problemas estadísticos. Cualquier programa que administre variables sobre un determinado sistema determinado, ideal para

ingeniería química. Etc.

Fuentes:

Gran parte del código que desarrollé fue por ensayo y error a partir de diversos ejemplos que encontré en la web, pero de todos los enlaces visitados, hay uno con muchos videos tutoriales:

http://www.youtube.com/user/diegokillemall

Es de un joven ingeniero de telecomunicaciones (Ecuador), que durante su carrera y vida profesional está especializado en el manejo de MATLAB; en mi opinión, muy buen material, práctico y entendible.

Habiendo terminado el curso con Turbo Pascal y habiendo visto el manejo a nivel básico de MATLAB, agradezco la oportunidad que se me brindó para desarrollar programas con la interfaz gráfica de MATLAB, como muchos lo han hecho siempre, afirmo que es una de las mejores herramientas, una nueva cara de la programación de la que tenía poco conocimiento y me acerca más a comprender cómo podrían funcionar los demás programas con que solemos trabajar en ingeniería y cómo podría ingeniar nuevos programas; resulta un “alivio” saber que con un programa y una computadora puedo diseñar mis propias herramientas de trabajo.

Francisco Osores Bonilla

20082597K

UNI – FIP, Lima, 20 de Julio del 2010