Está en la página 1de 34

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

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 ®

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

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.

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

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.

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

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

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

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.

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

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

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

 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

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

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.

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

 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

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

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

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

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

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

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.

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

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

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

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

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

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.

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

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

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

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.

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

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.

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

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

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

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.

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

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

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

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

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

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)

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

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:

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

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.

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

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:

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

 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.

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

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.

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

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:

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

 Microsoft Visual C++ 2010 Express


 Microsoft Windows SDK 7.1

MATLAB MATLAB MATLAB MATLAB


MATLAB
Compiler Builder EX Builder NE Builder JA

For MEX-file
compilation, load For C and
library, and external C++ For all For all For all
Compiler V.
usage of MATLAB shared features features features
Engine and MAT-file libraries
APIs

Microsoft Visual C++ 2010


Express and 10.0 √ √ √ √
Windows SDK 7.1
Available at no charge
Microsoft Visual C++ 2010
10.0 √ √ √ √
Professional

Microsoft Visual C++ 2008


9.0 √ √ √ √
Professional SP1 and
Windows SDK 6.1 2 3
Microsoft Visual C++ 2005
8.0 6 √ √ √ √
Professional SP1 3

Intel C++ 5 11.1 √

Intel Visual Fortran 5 11.1 √

3.5 √
Microsoft .NET Framework
SDK 3.0 √
Available at no charge
2.0 √

Java Development Kit (JDK)


1.6 √
Available at no charge

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

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

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.

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

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

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

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

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

60

También podría gustarte