3 Creación de la interfaz gráfica -...

34
Implementación de metodologías para la detección de la estricción en chapa conformada 27 3 Creación de la interfaz gráfica Uno de los objetivos de este proyecto es la creación de una aplicación independiente o interfaz gráfica que se pueda ejecutar en cualquier ordenador y con las prestaciones necesarias para poder evaluar metodologías desarrolladas por el área ingeniería de los procesos de fabricación. Para la creación de esta aplicación que se utilizará software matemático denominado MATLAB (abreviatura de MATrix LABoratory, "laboratorio de matrices"). MATLAB ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programación propio (lenguaje M) disponible para las plataformas Unix, Windows y Mac OS X. Entre sus prestaciones básicas se hallan: la manipulación de matrices, la representación de datos y funciones, la implementación de algoritmos, la creación de interfaces de usuario (GUI) y la comunicación con programas en otros lenguajes y con otros dispositivos hardware. El paquete MATLAB dispone de dos herramientas adicionales que expanden sus prestaciones, a saber, Simulink (plataforma de simulación multidominio) y GUIDE (editor de interfaces de usuario - GUI). Además, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas (toolboxes); y las de Simulink con los paquetes de bloques (blocksets). Para mostrar el desarrollo llevado a cabo para llegar a obtener un programa de altas prestaciones, se comentarán en el presente apartado las principales consideraciones requeridas en el proyecto. 3.1 Contorno de MATLAB MATLAB ® es un lenguaje de alto nivel, entorno de alto nivel e interactivo que le permite realizar tareas de cálculo más rápidamente que con lenguajes de programación tradicionales como C, C + + y Fortran. Sus características principales son las siguientes: Lenguaje de alto nivel para la computación técnica. Entorno de desarrollo para la gestión de código, archivos y datos. Herramientas interactivas para la exploración, el diseño y la resolución de problemas. Funciones matemáticas para álgebra lineal, estadística, análisis de Fourier, filtrado, optimización e integración numérica. 2-D y 3-D las funciones de gráficos para la visualización de los datos. Herramientas para la construcción de interfaces gráficas de usuario. Funciones para la integración de algoritmos de MATLAB con aplicaciones externas basadas en idiomas tales como C, C + +, Fortran, Java, COM y Microsoft Excel ®

Transcript of 3 Creación de la interfaz gráfica -...

Implementación de metodologías para la detección de la estricción en chapa conformada

27

3 Creación de la interfaz gráfica

Uno de los objetivos de este proyecto es la creación de una aplicación independiente o interfaz

gráfica que se pueda ejecutar en cualquier ordenador y con las prestaciones necesarias para

poder evaluar metodologías desarrolladas por el área ingeniería de los procesos de fabricación.

Para la creación de esta aplicación que se utilizará software matemático denominado MATLAB

(abreviatura de MATrix LABoratory, "laboratorio de matrices"). MATLAB ofrece un entorno

de desarrollo integrado (IDE) con un lenguaje de programación propio (lenguaje M) disponible

para las plataformas Unix, Windows y Mac OS X.

Entre sus prestaciones básicas se hallan: la manipulación de matrices, la representación de datos

y funciones, la implementación de algoritmos, la creación de interfaces de usuario (GUI) y la

comunicación con programas en otros lenguajes y con otros dispositivos hardware. El paquete

MATLAB dispone de dos herramientas adicionales que expanden sus prestaciones, a saber,

Simulink (plataforma de simulación multidominio) y GUIDE (editor de interfaces de usuario -

GUI). Además, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas

(toolboxes); y las de Simulink con los paquetes de bloques (blocksets).

Para mostrar el desarrollo llevado a cabo para llegar a obtener un programa de altas

prestaciones, se comentarán en el presente apartado las principales consideraciones requeridas

en el proyecto.

3.1 Contorno de MATLAB

MATLAB ® es un lenguaje de alto nivel, entorno de alto nivel e interactivo que le permite

realizar tareas de cálculo más rápidamente que con lenguajes de programación tradicionales

como C, C + + y Fortran. Sus características principales son las siguientes:

• Lenguaje de alto nivel para la computación técnica.

• Entorno de desarrollo para la gestión de código, archivos y datos.

• Herramientas interactivas para la exploración, el diseño y la resolución de problemas.

• Funciones matemáticas para álgebra lineal, estadística, análisis de Fourier, filtrado,

optimización e integración numérica.

• 2-D y 3-D las funciones de gráficos para la visualización de los datos.

• Herramientas para la construcción de interfaces gráficas de usuario.

• Funciones para la integración de algoritmos de MATLAB con aplicaciones externas

basadas en idiomas tales como C, C + +, Fortran, Java, COM y Microsoft Excel ®

Implementación de metodologías para la detección de la estricción en chapa conformada

28

Al iniciar MATLAB, el editor aparece en su diseño por defecto, incluyendo los siguientes

paneles:

• Current Directory: Directorio actual. Elección de archivos.

• Command Window: Ventana de comandos. Introducir comandos en la línea de

comandos para ejecutar instrucciones, indicado por el símbolo (>>).

• Workspace: Espacio de trabajo. Explora los datos que se crean o se importan desde

archivos.

• Command History: Historial de comandos. Permite ver o volver a ejecutar comandos

que entraron en la línea de comandos.

Fig. 3-1: Pantalla principal de MATLAB

Toda la programación se puede realizar directamente desde la ventana de comados, aunque se

recomienda el crear un conjunto de archivos con la extensión *.m donde se guarda el código

desarrollado por el usuario. De esta forma se obtiene una programación más estructurada y

eficiente a la hora de ejecutar el código generado.

Dado que la finalidad del proyecto es el de realizar una interfaz gráfica, la programación se

enfocará para obtener una aplicación que se utilizará en un entorno de Windows, simple y de

fácil manejo, en el que se puedan evaluar los datos cargados por el usuario utilizando todas las

opciones que proporciona la aplicación desarrollada.

Implementación de metodologías para la detección de la estricción en chapa conformada

29

Una interfaz de usuario gráfica (GUI) es una representación gráfica de una o más ventanas que

contienen los controles, denominados componentes, que permiten a un usuario realizar tareas

interactivas. Los componentes de la interfaz gráfica de usuario puede incluir menús, barras de

herramientas, botones, botones de radio, cuadros de lista, deslizadores…, que permitirán al

usuario interactuar con el GUI y establecer el flujo de ejecución.

Las interfaces gráficas de usuario creadas con herramientas de MATLAB ® también puede

realizar cualquier tipo de cálculo, leer y escribir archivos de datos, comunicarse con otras

interfaces gráficas de usuario, y visualizar datos como tablas o gráficos.

Se pueden construir interfaces de usuario gráficas de MATLAB en dos formas:

• Usar GUIDE (GUI Development Environment); un kit de construcción interactiva de

interfaz gráfica de usuario.

• Crear archivos de código que generan interfaces gráficas de usuario como funciones o

scripts (programación de la construcción GUI).

En el primer enfoque, GUI crea un archivo de código asociado que contiene las devoluciones de

llamada para la interfaz gráfica de usuario y sus componentes. Consta de dos archivos; un

archivo *.m (ejecutable) y otro *.fig (parte grafica). Las dos partes están unidas a través de las

subrutinas Callback. Una vez que se graban los archivos desde la consola de emisión (si

salvamos la *.fig automáticamente se guarda el *.m asociado) podemos ejecutar el programa en

la ventana de comando de MATLAB solamente escribiendo el nombre del archivo.

En el segundo, se crea un único archivo de código que define todas las propiedades de los

controles y objetos que componen la parte gráfica, además de las distintas subrutinas y

comportamientos de la aplicación. Cuando el usuario ejecuta el archivo, se crea

automáticamente la figura, que se llena con los componentes, y se ocupa de las interacciones del

usuario.

Dado que MATLAB ha desarrollado esta aplicación para realizar el diseño de interfaz gráfica,

el cual facilita enormemente la creación de la misma, se procederá a utilizar esta herramienta.

Esta consta de dos etapas:

• Diseño de los componentes (controles, menús y axes) que formarán el GUI.

• Programación de la respuesta de cada uno de los componentes ante la interacción del

usuario.

Para abrir la aplicación GUIDE desde la consola de MATLAB, basta con iniciar una nueva GUI

gracias al asistente de inicio, creándote una nueva GUI en blanco como se muestra en la figura

3-2.

Una vez seleccionado esta nueva GUI en blanco, automáticamente se abre la aplicación de

MATLAB con todos los comandos necesarios para la elaboración de la interfaz.

Implementación de metodologías para la detección de la estricción en chapa conformada

30

Fig. 3-2: Creación de una nueva GUI

3.2 Introducción a la configuración de interfaz gráfica

En este apartado se estudiará cómo crear algunos de los controles que se van a utilizar para el

diseño de la interfaz, así como el código generado automáticamente asociado a los objetos

creados en el entorno. Como se ha comentado en el apartado anterior, estos objetos se crean

mediante herramientas de MATLAB en un archivo *.fig al que se le asocia un archivo *.m que

es el que contiene el código de las funciones y subrutinas que realizan todo el cálculo de los

distintos algoritmos implementados.

3.2.1 Estructura de los archivos *.fig

Toda interfaz debe poseer una distribución correcta de todos los comandos que la componen.

Comunes a las diferentes metodologías, las distintas interfaces se caracterizan por estar

diseñadas con tres zonas de visualización. Estas zonas son:

Pantalla de controles

Barra de menús

Barra de herramienta

MATLAB dispone de diferentes herramientas creadas para facilitar la programación de estas

zonas de visualización. Todas ellas presentan el mismo funcionamiento. Una vez que se crea el

objeto, este se puede programar de dos maneras principalmente. Una de ellas es mediante

código en el archivo *.m, mientras que la segunda es mediante las herramientas propias de

MATLAB. Las ventajas que presenta el primer método es la gran flexibilidad que presenta al

programador el poder variar cualquier propiedad durante la ejecución del programa. El segundo

Implementación de metodologías para la detección de la estricción en chapa conformada

31

se caracteriza por la facilidad e intuición del programador para diseñar, colocar y visualizar los

controles, utilizándose principalmente a la hora de crear por primera vez los objetos.

Las herramientas de GUIDE están disponibles en el editor de diseño que se muestra en la figura

siguiente.

Aling object Tab order Editor M-file Editor Object browser

Menu Editor Toolbar Editor Property Inspector Run GUI

Component Palett

Fig. 3-3: Editor de diseño de GUI de MATLAB

Se diferenciaran entre dos tipos de comandos; los pertenecientes al editor de diseño, y los que se

encuentran en la paleta de componentes.

Implementación de metodologías para la detección de la estricción en chapa conformada

32

Pantalla de controles

Existen 14 tipos de controles diferentes. La utilización de cada uno vendrá dada en función de

sus características y aplicación. Se describen a continuación los distintos componentes usados

en esta aplicación:

Push Button

Este comando se utiliza para ejecutar o lanzar una orden cuando se pulsa. El aspecto

típico de este botón es el que se muestra en la figura 3-4.

Fig. 3-4: Objeto Push Button

Grupos de botones (Button Group)

Los botones de selección permiten al usuario seleccionar entre las diferentes opciones

que se presentan en la aplicación. En el caso en el que se encuentren englobadas en un

grupo de botones, uno de ellos siempre permanecerá activado.

Fig. 3-5: Objeto Button Group

Cajas de selección (pop up menú)

Este tipo de control permite seleccionar una opción de entre varias mostradas en una

lista. Eligiendo una de ellas, se ejecuta la opción que se haya seleccionado. La ventaja

de este control es el diseño compacto con el que se muestra por pantalla, pudiéndose

colocar en espacios reducidos al poderse desplegar automáticamente en el momento en

que se pulsa, quedando minimizado cuando sobre él no se está pulsando.

Se ha utilizado como control para visualización de diferentes gráficas, situándose en la

parte superior de las mismas y actuando como título.

Fig. 3-6: Objeto Pop-up Menu

Implementación de metodologías para la detección de la estricción en chapa conformada

33

Cajas de texto (Static Text)

Son controles en los que no se permiten realizar operaciones con el ratón. Están

diseñadas para representar en pantalla la información especificada por el

programador, sin que se puedan modificar por el usuario.

Fig. 3-7: Objeto Static Text

Cajas de texto editables (Edit Text)

Las cajas de texto editables se utilizan para poder introducir y modificar cadenas de

caracteres. La llamada a la opción de ejecución Callback será efectiva cuando se pulse

el botón asociado a este control. La flexibilidad a la hora de poder manipular datos es

factible gracias a este control, ya que no se limita la capacidad de manejo del usuario

dentro de los rangos propios de control de la aplicación. Se ha utilizado este comando

para introducir números.

Fig. 3-8: Objeto Edit Text

Paneles (Panel)

Un panel no es un control propiamente dicho. Su función es la de englobar una serie de

componentes para una mejor estructuración por pantalla.

Fig. 3-9: Objeto Panel

Ventanas (Axes)

Una ventana es un objeto que permite la representación de gráficas o imágenes. En este

caso es utilizado para la representación de las curvas de ensayo.

Fig. 3-10: Objeto Axes

Implementación de metodologías para la detección de la estricción en chapa conformada

34

Todos los controles comentados se denominan objetos. Estos presentan unas propiedades que

son editables por el programador. En función de las necesidades, del estado en que se encuentre

el programa y de la estructuración del mismo, podrán modificarse durante el desarrollo de la

aplicación. Muchas de estas propiedades son comunes a la mayoría de los controles, aunque

cada uno de ellos puede presentar propiedades particulares.

La herramienta que presenta MATLAB para modificar las propiedades del objeto deseado es el

inspector de propiedades. En él se representan todas las variables modificables del objeto,

indicándose las opciones configurables. En la figura 3-11 se muestra parte del listado de

variables de un texto editable.

Fig. 3-11: Editor de propiedades de objetos de GUI de MATLAB

De entre todas las variables existentes, las que se han utilizado con una mayor frecuencia son las

que se indican a continuación:

BackgroundColor: Control de modificación del color del objeto.

Enable: Control para habilitar el objeto. En el caso de que sea un Push Button, desactiva

o activa la subrutina asociada al objeto. Las opciones que presenta son on/off.

FontAngle: Aplica el formato de cursiva al texto asociado al objeto. Las opciones son

normal/italic/oblique.

Implementación de metodologías para la detección de la estricción en chapa conformada

35

FontName: Tipo de fuente del texto del objeto.

FontSize: tamaño del texto del objeto.

ForegroundColor: Color de la fuente del texto del objeto.

HandleVisibility: Control para visualizar el objeto. Las opciones de este control son

on/off.

HorizontalAlignment: Control para la alineación del texto dentro del objeto. Las

posibles opciones son left/righ/center.

Position: en él se indica tanto la posición del objeto, como las dimensiones que posee el

mismo (ancho y alto).

String: Contiene el valor de la variable asociada al objeto.

Style: Indica el tipo de objeto que es (Push button, textos estáticos, caja de texto

editable…)

Tag: Nombre de la subrutina o llamada de función.

Barra de menús

En el caso de la programación de la barra de menús, MATLAB posee la herramienta editor de

menú para crear todos los controles que el programador estime oportuno.

Fig. 3-12: Editor de menú de GUI de MATLAB

Implementación de metodologías para la detección de la estricción en chapa conformada

36

En él se puede elegir el nivel que presenta cada control, así como el nombre con el que

aparecerá en la interfaz y el nombre utilizado para la llamada a la subrutina.

Como se observa en la figura 3-12, aparece ordenado en forma de esquema por lo que la

creación del menú es muy visual y esquemática. También se da la opción de programar un menú

contextual, aunque no ha sido necesario introducirlo ya que con los controles utilizados es

suficiente para un manejo de la aplicación ágil y simple de manejar.

Barra de herramienta

En el caso de los controles de la barra de herramienta, MATLAB también dispone de su propia

herramienta. Se distinguen dos tipos de controles posibles de configurar, push tool y toggle tool.

El primero de ellos es un control el cual se ejecuta en el momento de pulsar el ojeto, mientras

que el segundo es un control que una vez pulsado, permanece activo hasta que se vuelva a

pulsar, y por tanto se desactiva.

Algunos de estos controles ya vienen predefinidos por defecto como son los relativos al manejo

de imágenes de las ventanas. De entre ellos los que se han utilizado son los de alejar y acercar la

imagen mediante zoom, y el de arrastrar la imagen. Aparte se creó el control de cálculo y el de

nuevo documento.

Fig. 3-13: Editor de la barra de herramientas de GUI de MATLAB

Implementación de metodologías para la detección de la estricción en chapa conformada

37

3.2.2 Estructura de los archivos *.m

Una vez se tiene planificada la forma de la interfaz, guardamos el proyecto y el GUIDE genera

de forma automática un fichero *.m que controla el funcionamiento del GUI. Este fichero

inicializa el GUI y contiene la llamada a todas las subrutinas o callbacks del GUI (las órdenes

que se ejecutan cuando el usuario interactúa con un elemento del GUI). Usando el editor de

MATLAB se podrá añadir instrucciones de código a los callbacks para realizar las funciones

que se quieran asignar.

La estructura que presenta entonces el archivo está formada por dos bloques; el de

inicialización, el cual contiene toda la información requerida para el correcto arranque del

programa, y el de las subrutinas de los controles.

Inicialización del programa

function varargout = untitled(varargin)

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @untitled_OpeningFcn, ...

'gui_OutputFcn', @untitled_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

function untitled_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

guidata(hObject, handles);

function varargout = untitled_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

Todo este código de programación representa la cabecera del programa. En él se pueden

apreciar tres zonas diferenciadas. La primera de ellas es la encargada de la creación de las

rutinas de apertura del programa. En la segunda se hace referencia a la apertura del programa

principal. En él se asignan el identificador que posee cada objeto, necesarios para poder

Implementación de metodologías para la detección de la estricción en chapa conformada

38

interactuar con ellos. La tercera presenta las salidas del programa, aunque no se usa

habitualmente, ya que se utilizarán variables globales a tal efecto.

Para poder diferenciarlas en las tres aplicaciones, se crea una variable global que posee la

información anteriormente comentada y que se le asigna de la siguiente manera.

function ISO_12004_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to ISO_12004 (see VARARGIN)

global data_prog_ISO manejador_prog_iso

handles.output = hObject manejador_prog_iso=handles;

En el caso de la aplicación desarrollada para la metodología ISO, se crea una variable tipo

estructura que posee los identificadores de los diferentes objetos. Esta variable se denomina

handles y posee la información que se muestra en las siguientes líneas de texto.

handles =

figure1: 268.0012

popupmenu1: 34.001

ayuda_prog_iso: 33.0015

informe_prog_iso: 30.0015

uipanel10: 23.0018

text38: 342.0012

uipanel7: 339.0012

graficas_prog_iso: 337.0012

uitoolbar1: 331.0012

archivo_iso: 327.0012

uipanel4: 307.0012

axes2: 302.0012

axes1: 297.0012

uipanel3: 290.0012

uipanel2: 269.0012

… …

De esta forma obtenemos una variable global que podrá utilizarse en las tres aplicaciones,

pudiéndose hacer referencia de una aplicación a otra. En el caso de que no se utilizara esta

variable global, no se podría acceder a la información de una aplicación a otra.

Implementación de metodologías para la detección de la estricción en chapa conformada

39

Subrutinas

El cuerpo del programa principal presenta todas las llamadas a las subrutinas o Callbacks de los

objetos programados para tal función.

Al hacer click derecho en el elemento ubicado en el área de diseño, una de las opciones más

importantes es View Callbacks, la cual, al ejecutarla, abre el archivo .m asociado a nuestro

diseño y nos posiciona en la parte del programa que corresponde a la subrutina que se ejecutará

cuando se realice una determinada acción sobre el elemento que estamos editando. Por defecto

se crea el siguiente texto:

function pushbutton1_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

El código desarrollado por el programador se coloca a continuación de la llamada a la función.

3.3 Diseño de los diferentes programas

En este apartado del capítulo se presenta un esquema modo resumen de los ficheros que se

utilizan en la interfaz, para ver de manera más gráfica el funcionamiento interno del mismo.

Fig. 3-14: Esquema de los archivos que componen la aplicación

Implementación de metodologías para la detección de la estricción en chapa conformada

40

Como se ha podido observar en el esquema anterior, se pueden diferenciar tres programas

principales, los cuales se abastecen de archivos independientes que realizan funciones

predeterminadas. Cada uno de los tres programas principales, posee una interfaz independiente

cuya estructura está formada por los diferentes objetos de control. Se detallará la estructura que

presenta cada interfaz (archivo *.fig) y su correspondiente diagrama de funcionamiento (archivo

*.m).

Para comprender la estructura que presentan los archivos *.fig con los que se diseña las

interfaces, se presentará una de las herramientas aportadas por MATLAB para visualizar todos

los objetos que lo componen. Esta herramienta es el explorador de objetos y sirve como visor de

la estructura que conforman todos los objetos utilizados en la interfaz.

Fig. 3-15: Navegador de objetos de GUI de MATLAB

En la figura anterior se muestra la estructura de objetos de la aplicación, representándose los

componentes principales, los cuales a su vez, contienen otros. Para poder visualizar la jerarquía

Implementación de metodologías para la detección de la estricción en chapa conformada

41

de los objetos y controles, de desglosarán cada uno de los objetos principales que apareen en la

figura anteriormente comentada, en cada una de las tres aplicaciones desarrolladas.

3.3.1 Diseño de la aplicación ISO 12004-2

Como se ha comentado anteriormente, el explorador de objetos contiene todos los controles que

intervienen en la interfaz. Dado la cantidad de objetos que contiene la interfaz, se muestra en la

gráfica 3-16 una pequeña parte del esquema completo que compone el diseño del archivo *.fig

de la aplicación ISO 12004-2. Para poder visualizar por completo este esquema, se hace preciso

dirigirse al Anexo nº 1.

Fig. 3-16: Esquema y organización de objetos en Aplicación ISO 12004-2

Como se puede observar en la figura 3-16, la mayoría de los objetos se agrupan por paneles,

obteniéndose de esta forma una composición más estructurada de la aplicación.

Una vez que se presenta el esquema de objetos que componen la interfaz, se pasa a comentar el

proceso de control del programa creado. Para facilitar su comprensión, se presenta en forma de

diagrama de flujo. De esta forma se observa de una forma más clara y concisa, el

funcionamiento interno de la aplicación.

Implementación de metodologías para la detección de la estricción en chapa conformada

42

Hay que hace constar, que el diagrama de flujo presentado en la figura 3-17 representa las

acciones más representativas del esquema general de funcionamiento, pudiendo existir controles

internos de nivel inferior que no aparecen. También se ha obviado el correspondiente al proceso

de cálculo de los resultados, agrupado en el cuadrado “Calcular procedimiento ISO 12004” por

encontrarse dicho diagrama en el apartado 2.2 y proporcionado por la norma. Como es lógico

suponer, en todo momento se puede salir de la aplicación en el momento que el usuario desee, o

comenzar un nuevo cálculo preparando la aplicación para cargar los archivos deseados.

Fig. 3-17: Diagrama de flujo de aplicación ISO 12004-2

Implementación de metodologías para la detección de la estricción en chapa conformada

43

3.3.2 Diseño de la aplicación Temporal

Al igual que en el apartado anterior, se mostrará en forma de esquema todos los objetos que

componen la interfaz. De nuevo se representa solo una pequeña porción del esquema completo

del diseño del archivo *.fig

Fig. 3-18: Esquema y organización de objetos en metodología Temporal

El correspondiente diagrama de flujo que esquematiza el proceso de control de la aplicación

desarrollada es el que se muestra en la figura siguiente.

Implementación de metodologías para la detección de la estricción en chapa conformada

44

Fig. 3-19: Diagrama de flujo de aplicación Temporal. Rutinas principales

Como se resaltó en los comentarios para el diagrama de flujo de la aplicación ISO, se han

representado las operaciones principales para una mayor claridad del diagrama. Aunque las

funciones secundarias se encuentran programadas, no se han representado.

Implementación de metodologías para la detección de la estricción en chapa conformada

45

3.3.3 Diseño de la aplicación Valle

Al igual que en las metodologías anteriores, se presentará la configuración del archivo *.fig que

componen la interfaz.

Fig. 3-20: Esquema y organización de objetos en metodología del valle

Implementación de metodologías para la detección de la estricción en chapa conformada

46

El correspondiente diagrama de flujo que esquematiza el proceso de control de la aplicación

para la metodología del valle se muestra en la figura siguiente.

Implementación de metodologías para la detección de la estricción en chapa conformada

47

Fig. 3-21: Diagrama de flujo de aplicación del valle. Rutinas principales

Implementación de metodologías para la detección de la estricción en chapa conformada

48

3.4 Funciones implementadas

En el presente apartado se realizará una breve descripción de los principales comandos

utilizados y más importantes. Se comenzará con las funciones encargadas de transferir y captar

datos entre los comandos utilizados en la interfaz. Se proseguirá por los relacionados a la

importación de los archivos de cálculo generados por ARAMIS. Por último, se verán los

comandos relacionados con las operaciones matemáticas de cálculo utilizadas en las

metodologías.

3.4.1 Control de objetos y modificación de propiedades

La transferencia o recuperación de los valores de las propiedades de los elementos se realiza

mediante las funciones get y set, por tanto, para consultar y cambiar el valor de las propiedades

de un objeto se usarán estas funciones.

Para la ejecución de una función determinada, será necesario realizar ciertas comprobaciones de

las propiedades de un elemento de la interfaz. Por ejemplo, para conocer la opción que se ha

seleccionado en un desplegable, será suficiente con conocer el valor de la propiedad “Value”,

que nos dice la posición de la lista que ha elegido el usuario. Para obtener este valor se utiliza la

función get, extrayendo el valor de la propiedad especificada del elemento con identificador

“h”:

get(h, 'propiedad')

De la misma manera si se necesitara variar el contenido de una propiedad de un elemento se

haría con la siguiente instrucción:

set (h, ‘propiedad’, valor)

Estas instrucciones se utilizarán muy a menudo en las distintas funciones que se realizan en la

interfaz, se pueden observar en los distintos ficheros .m y con diferentes funcionalidades como

pueden ser:

Obtener valor de una propiedad de un elemento para realizar una función concreta

Cambiar de color un elemento de la interfaz para resaltar alguna información

Ocultar o hacer visible algún botón o característica concreta

Habilitar o deshabilitar los botones para indicar al usuario que opciones pueden utilizar en

cada momento. Este es uno de los principales utensilios empleados por el programador para

poder orientar los pasos del usuario a lo largo del programa

Implementación de metodologías para la detección de la estricción en chapa conformada

49

3.4.2 Cargar archivos

Como se comentará en capítulos posteriores, los archivos de datos que se introducen deben

tener una estructura determinada, en función de la metodología que se utilice. En caso de que

estos archivos sean erróneos, o estén mal estructurados, la aplicación de MATLAB avisará con

un error.

Para realizar cargas de archivos *.txt, se dispone principalmente de las funciones uigetfile,

fullfile y importdata. A continuación se describirá el funcionamiento de cada una de estas

funciones, así como los variables que intervienen y se mostrará un ejemplo de cómo estructurar

el código para que trabaje correctamente.

uigetfile

Esta función visualiza un cuadro de diálogo modal en donde se muestran los archivos en el

directorio actual, permitiendo que el usuario seleccione o escriba el nombre del archivo que

desea cargar. Si el nombre de archivo es válido y si el archivo existe, cuando el usuario hace clic

en Abrir, uigetfile devuelve el nombre del archivo. Si el usuario hace clic en Cancelar o cierra la

ventana de diálogo, uigetfile devuelve un 0. La sintaxis que presenta esta función es la siguiente:

[Nombre dirección] = uigetfile (extensión, título)

Se necesitan dos parámetros para esta función; extensión y título. Por extensión se refiere al tipo

de archivo que se pueden importar, en este caso *.txt, mientras que el título indica el nombre de

la ventana de visualización mostrada al usuario.

fullfile

Esta función construye una cadena de caracteres compuesto por los parámetros que se indiquen,

en este caso el nombre completo del directorio y el nombre del archivo especificado.

Nombre_completo = fullfile (dirección, nombre)

importdata

Esta función carga los datos del archivo seleccionado en el espacio de trabajo. S utilizan tres

parámetros para el correcto funcionamiento de esta orden; Nombre completo, delimitador y

líneas de cabecera. El parámetro “nombre completo” es el nombre del archivo. El parámetro

“líneas de cabecera” es un número que indica la cantidad de líneas que componen la cabecera,

importando los datos desde la línea siguiente del número indicado hasta el final del archivo. El

delimitador establece el carácter utilizado para separar los diferentes datos leídos en el archivo.

A = importdata (Nombre completo, delimitador, líneas de cabecera)

Implementación de metodologías para la detección de la estricción en chapa conformada

50

La estructura completa para poder realizar la carga correcta de los archives deseados es la que se

muestra en las siguientes líneas:

[nombre direc]=uigetfile('*txt','Open'); fullname_cargar = fullfile(direc,nombre); if nombre==0 return else

DELIMITER = ' '; HEADERLINES = 6; D_ISO = importdata(fullname_cargar, DELIMITER, HEADERLINES);

end

En este caso se ha mostrado el código inicial para realizar la carga de los datos en la matriz

D_ISO, aunque no se muestra la casuística de posibles errores de importación y la correcta

ordenación de los valores.

3.4.3 Ajuste por mínimos cuadrados

El ajuste de curvas es un proceso mediante el cual, dado un conjunto de N pares de puntos {xi,

yi} (siendo x la variable independiente e y la dependiente), se determina una función matemática

f(x) de tal manera que la suma de los cuadrados de la diferencia entre la imagen real y la

correspondiente obtenida mediante la función ajustada en cada punto sea mínima:

Generalmente, se escoge una función genérica f(x) en función de uno o más parámetros y se

ajusta el valor de estos parámetros forma que se minimice el error cuadrático, ε. La forma más

típica de esta función ajustada es la de un polinomio de grado M; obteniéndose para M = 1 un

ajuste lineal (o regresión lineal),

para M = 2 un ajuste parabólico,

En el caso particular de la norma ISO en el que se indica que la función a ajustar tiene que ser

una parábola inversa, la expresión se presenta a continuación:

Implementación de metodologías para la detección de la estricción en chapa conformada

51

El coeficiente de determinación, R2, definido entre 0 y 1, nos da una idea de la bondad del

ajuste, de manera que para valores cercanos a 1 el ajuste es perfecto, mientras que para valores

cercanos a cero indica inexistencia de relación entre x e y con el modelo de ajuste propuesto. En

la siguiente expresión se muestra este valor:

Donde,

Las distintas variables que participan en estas ecuaciones se definen a continuación:

xi= variable independiente experimentales

yi= valores experimentales

= media de los valores experimentales

= valor de la función en los puntos experimentales;

En función del tipo de ajuste que se solicite, MATLAB dispone de diferentes funciones para

implementar el algoritmo deseado. Se utilizarán dos funciones; una primera para ajustes

polinómicos, y la segunda para problemas no lineales.

polyfit

Esta función encuentra los coeficientes de un polinomio p (x) de grado n que se ajusta a los

datos, p (x (i)) -y (i), en el sentido de mínimos cuadrados. El resultado p es un vector fila de

longitud n +1 que contiene los coeficientes del polinomio en potencias descendentes.

p = polyfit(x,y,n)

Por ejemplo, para el caso de n=2, se obtendría un vector de 3 componentes en el que el primer

valor hace referencia al coeficiente a, el segundo al coeficiente b y el tercero al coeficiente c de

la función que se representa a continuación.

Implementación de metodologías para la detección de la estricción en chapa conformada

52

lsqcurvefit

lsqcurvefit resuelve los ajustes de datos de problemas no lineales. lsqcurvefit requiere una

función definida por el usuario para calcular la función vectorial F (x, xdata). El tamaño del

vector devuelto por la función definida por el usuario debe ser el mismo que el tamaño de los

vectores ydata, xdata.

x = lsqcurvefit(fun,x0,xdata,ydata)

3.4.4 Derivadas

La utilización de la derivada en las metodologías implementadas es utilizada para diferentes

procedimientos. En el caso de la metodología ISO, se utiliza la derivada segunda para la

obtención de los límites interiores de la ventana de ajuste, mientras que en la metodología

temporal se calcula la primera derivada. En la siguiente imagen se muestra un conjunto de

puntos genéricos, y los que se tomarían para realizar las derivadas (tres puntos en el caso de la

derivada sin filtrar y cinco con la derivada filtrada).

Fig. 3-22: Determinación de la derivada segunda filtrada y sin filtrar

Derivada segunda filtrada

Para la determinación de la derivada segunda filtrada de una serie de puntos, se propone el

siguiente método:

Implementación de metodologías para la detección de la estricción en chapa conformada

53

Se toma un conjunto de 5 puntos consecutivos

Se realiza el ajuste parabólico y se obtienen los coeficientes correspondientes.

El valor de la derivada segunda en el punto medio es el doble del término cuadrático del

polinomio de ajuste.

Derivada segunda sin filtrar

El procedimiento para calcular la derivada segunda sin filtrar es similar a la filtrada, salvo que

en lugar de tomar 5 puntos de ajuste, se toman tres.

Derivada sin filtrar

En el caso de la metodología temporal, se necesita calcular un máximo en la velocidad de

deformación. En este caso se utiliza la derivada primera sin filtrar, es decir, el procedimiento es

similar al descrito anteriormente solo que el valor de la derivada en el punto medio es el doble

del producto del término cuadrático por el punto más el coeficiente del término lineal.

Se toma un conjunto de 3 puntos consecutivos

Se realiza el ajuste parabólico y se obtienen los coeficientes correspondientes.

El valor de la derivada en el punto medio es el doble del término cuadrático del

polinomio de ajuste más el coeficiente del término lineal.

Implementación de metodologías para la detección de la estricción en chapa conformada

54

3.5 Creación de ejecutable

Para poder ejecutar el programa en cualquier ordenador, se procede a realizar un ejecutable

*.exe capaz de poderse utilizar sin necesidad de tener instalado MATLAB.

Las capacidades que posee MATLAB son innumerables. En el siguiente gráfico se muestran los

diferentes productos para el desarrollo de aplicaciones que se pueden implantar.

Fig. 3-23: Esquema de compilación para distintos lenguajes de programación

Como se puede observar en la figura 3-23, MATLAB presenta diferentes productos para realizar

aplicaciones o librerías en función del lenguaje de programación. Según las necesidades del

programador, podrá escoger entre estos diferentes productos. Para conocer las posibilidades que

ofrece cada uno de ellos, se presenta a grandes rasgos una tabla con las aplicaciones soportadas

por cada producto.

Tabla 3-1: Productos de MATLAB para desarrollo de programación.

Implementación de metodologías para la detección de la estricción en chapa conformada

55

Para este proyecto en cuestión, el producto que se requiere es el MATLAB Compiler, ya que es

el único capaz de crear aplicaciones independientes en código C++. El resto son capaces de

desarrollar librerías y otros componentes, pero no aplicaciones independientes.

3.5.1 Requerimientos del sistema

MATLAB es una gran herramienta que acelera el tiempo de desarrollo. Como contrapartida, las

aplicaciones de MATLAB tienen dos problemas principales para la redistribución. En primer

lugar, están escritos en un lenguaje de script, por lo que cualquier persona podría leer el código

de la aplicación. En segundo lugar, se requieren para ejecutar dentro de MATLAB, que otras

personas pueden no haber instalado. Estas dificultades se pueden superar con la creación de una

aplicación independiente.

El producto MATLAB Compiler puede compilar archivos *.m, archivos MEX, objetos de

MATLAB, u otro código de MATLAB. El producto MATLAB Compiler, puede generar

aplicaciones independientes en UNIX, Windows y Macintosh. Al empaquetar y distribuir

aplicaciones y librerías que el producto MATLAB Compiler genera, se tiene que incluir el

MATLAB Compiler Runtime (MCR), así como un conjunto de apoyo a los archivos generados

por el compilador MATLAB. También establece las rutas de acceso del sistema en el equipo de

destino para que el MCR y archivos de soporte puedan ser encontrados.

Para la construcción de aplicaciones independientes de MATLAB, es necesaria la utilización de

compiladores o de kit de desarrollo de software (SDK). Para versiones de 32 bit, MATLAB

posee un compilador propio, mientras que para la versión de 64 bit, es necesario instalarse

compiladores o kit de desarrollo de software (SDK). Los compiladores que se utilizan son los

siguientes:

Lcc-win32 C 2.4.1: Para poder compilar archivos propios de MATLAB (archivos *.m o

*.fig) que posteriormente sean ejecutados en ordenadores de 32 bit, se requiere utilizar

este compilador.

Microsoft Visual C++ 2008 Express: para compilar en ordenadores de 64 bit MATLAB

no dispone de compilador propio. En este caso se necesitaría este compilador, así como

de un kit de desarrollo de software. Este compilador es gratuito. Se deberá instalar en el

ordenar destinado a la creación de la aplicación (programador), aunque no es necesario

en el ordenar del destinatario (usuario).

La tabla 4-1 describe los compiladores que son compatibles con diversos productos de

MATLAB. Estos compiladores son proporcionados por diferentes proveedores y están

disponibles en una variedad de términos de origen comercial, académico, o abierto, pudiendo

ser visitados los sitios Web de los proveedores. Se necesita instalar los siguientes componentes:

Implementación de metodologías para la detección de la estricción en chapa conformada

56

Microsoft Visual C++ 2010 Express

Microsoft Windows SDK 7.1

MATLAB MATLAB

Compiler

MATLAB

Builder EX

MATLAB

Builder NE

MATLAB

Builder JA

Compiler V.

For MEX-file

compilation, load

library, and external

usage of MATLAB

Engine and MAT-file

APIs

For C and

C++

shared

libraries

For all

features

For all

features

For all

features

Microsoft Visual C++ 2010

Express and

Windows SDK 7.1

Available at no charge

10.0 √ √ √ √

Microsoft Visual C++ 2010

Professional

10.0 √ √ √ √

Microsoft Visual C++ 2008

Professional SP1 and

Windows SDK 6.1 2 3

9.0 √ √ √ √

Microsoft Visual C++ 2005

Professional SP1 3 8.0 6 √ √ √ √

Intel C++ 5 11.1 √

Intel Visual Fortran 5 11.1 √

Microsoft .NET Framework

SDK

Available at no charge

3.5

3.0

2.0

Java Development Kit (JDK)

Available at no charge 1.6

Tabla 3-2: Características de los distintos compiladores.

3.5.2 Comandos utilizados

Para compilar y vincular archivos de origen en aplicaciones independientes o librerías

compartidas, se requiere seleccionar el compilador adecuado. Una vez seleccionado el

compilador, se procede a generar el ejecutable, compilándose los archivos originales y

Implementación de metodologías para la detección de la estricción en chapa conformada

57

diferenciando el archivo principal de los secundarios. A continuación se comentan los detallas

de los dos comandos utilizados para la generación de esta aplicaciones independientes.

“mbuild –setup”

Para realizar esta selección, se utiliza el comando “mbuild –setup”. Introduciendo esta

instrucción en la ventana de comandos de MATLAB, se localizan los compiladores que se

encuentran instalados en su ordenador. Tan solo se tiene que indicar el compilador deseado para

poder proseguir con el proceso.

Fig. 3-24: Pantalla de confirmación de elección de compilador para creación de aplicaciones independientes

Como se observa en la figura anterior, el compilador localizado por MATLAB es el que se ha

instalado con anterioridad, por lo que en el momento que se selecciona, está preparado para

continuar con el desarrollo de aplicaciones independientes.

“deploytool”

Una vez introducida esta orden en la ventana de comando, aparece una nueva ventana gráfica

llamada “Deployment Tool”. En ella se marcan todos los pasos a seguir para realizar la

aplicación independiente.

Implementación de metodologías para la detección de la estricción en chapa conformada

58

Fig. 3-25: Asistente para creación de aplicaciones independientes

En primer lugar, es necesario el crear un nuevo proyecto. En él se indica el nombre que va a

tener y la dirección en la que se ubicará.

Fig. 3-26: Selección del tipo de proyecto a desarrollar

En segundo lugar se indican los archivos (código fuente) que son necesarios para que la

aplicación funcione correctamente. Se diferencia archivo principal del resto de archivos.

A la hora de indicar los archivos necesarios que contienen todo el código, es necesario

diferenciar la función principal del resto de archivos. En este caso, en la carpeta específica para

la función principal se introducirá el archivo PROCEDIMIENTOS.m. El resto de archivos, en

Implementación de metodologías para la detección de la estricción en chapa conformada

59

los cuales se incluyen las funciones secundarias, todas los archivos gráficos *.fig y las imágenes

utilizadas en las interfaces, se introducirán en la carpeta “Other files”. En la figura 3-27 se

muestra como quedaría la organización de los archivos antes de proceder a la compilación.

Fig. 3-27: Herramienta para el desarrollo de aplicaciones independientes. Selección de archivos

Una vez seleccionado los archivos que componen la interfaz, se procede a su compilación,

proceso mediante el cual se obtienen una carpeta con el nombre de la aplicación independiente

creada. Esta carpeta contienen toda la documentación. Los archivos que existen en el interior es

la que se muestra a continuación.

SEENECK

distrib

SEENECK.exe

Readme.txt

sr

build.txt

mccExcludedFiles.txt

readme.txt

SEENECK.exe

SEENECK.msvc.manifest

SEENECK_delay_load.c

SEENECK_main.c

SEENECK_mcc_component_data.c

Implementación de metodologías para la detección de la estricción en chapa conformada

60