Logo Studenta

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

¡Este material tiene más páginas!

Vista previa del material en texto

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 ® 
http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado
http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado
http://es.wikipedia.org/wiki/Unix
http://es.wikipedia.org/wiki/Windows
http://es.wikipedia.org/wiki/Mac_OS_X
http://es.wikipedia.org/wiki/Matriz_%28matem%C3%A1tica%29
http://es.wikipedia.org/wiki/Algoritmo
http://es.wikipedia.org/wiki/GUI
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n
http://es.wikipedia.org/wiki/Hardware
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 *.figToda 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ónde 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ónde 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, R
2
, 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ónindependiente. 
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 
http://www.microsoft.com/express/Downloads/#2010-Visual-CPP
http://www.microsoft.com/downloads/details.aspx?FamilyID=6b6c21d2-2006-4afa-9702-529fa782d63b&displaylang=en
http://msdn.microsoft.com/en-us/vstudio/bb984878.aspx
http://msdn.microsoft.com/en-us/vstudio/bb984878.aspx
http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&displaylang=en
http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&displaylang=en
http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en
http://www.mathworks.es/support/compilers/R2011a/win64.html#n2
http://www.mathworks.es/support/compilers/R2011a/win64.html#n3
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=bb4a75ab-e2d4-4c96-b39d-37baf6b5b1dc
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=bb4a75ab-e2d4-4c96-b39d-37baf6b5b1dc
http://www.mathworks.es/support/compilers/R2011a/win64.html#n3
http://www.mathworks.es/support/compilers/R2011a/win64.html#n6
http://www.mathworks.es/support/compilers/R2011a/win64.html#n5
http://www.mathworks.es/support/compilers/R2011a/win64.html#n5
http://msdn.microsoft.com/en-us/windows/bb980924.aspx
http://msdn.microsoft.com/en-us/windows/bb980924.aspx
http://www.oracle.com/technetwork/java/javase/downloads
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

Continuar navegando