Descarga la aplicación para disfrutar aún más
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
Compartir