TUTORIAL LABVIEW JUAN CAMILO SANCHEZ COD 2420051027
Transcripción
TUTORIAL LABVIEW JUAN CAMILO SANCHEZ COD 2420051027
TUTORIAL LABVIEW JUAN CAMILO SANCHEZ COD 2420051027 Presentado a: Prof. Luis Hernando Días. UNIVERSIDAD DE IBAGUE FACULTAD DE INENIERIA PROGRAMA INGENIERIA ELECTRONICA PROYECTOS IBAGUE 2011 TABLA DE CONTENIDO RESUMEN 0.1.1 INTRODUCCIÓN 0.1.2 MARCO TEÒRIC0 1. CONOCIENDO LABVIEW. 1.1 Que es labview? 1.2 COMPONENTES 1.2.1 Panel frontal 1.2.2 Diagrama de bloques 1.3 PALETAS 1.3.1 Paletas de herramienta 1.3.2 paletas de control 1.3.3 paletas de función 1.4 BARRA DE HERRAMIENTAS DE ESTADO 2. CREAR UN IV 2.1. ABRIR Y EECUTAR UN IV 2.2. CREANDO UN INSTUMENTO VIRTUAL 2.2.1 CONECTAR DIAGRAMAS DE BLOQUES 2.2.2 CABLEAR OBJETOS AUTOMATICAMENTE 2.3. FLUJO DE DATOS 2.4 USO DE AYUDAS 3.1 ESTRUCTURAS Y EJEMPLO 3.1. ESTRUCTURAS 3.1.1 CASE ESTRUCTURE 3.1.2 SEQUENCE ESTRUCTURE 3.1.3 FOR LOOP 3.1.4 WHILE LOOP 3.2 VARIABLES LOCALES Y GLOBALES 3.2.1 VARIABLES LOCALES 3.2.2 VARIABLES GLOBALES 3.3 ERRORES 3.4 TIPS 3.5 EJEMPLO CAPITULO 1 1. CONOCIENDO LABVIEW 1.1 Qué es LabVIEW? LabVIEW (Laboratory Virtual Instrument Engineering Workbench) es un lenguaje de programación gráfico para el diseño de sistemas de adquisición de datos, instrumentación y control. Labview permite diseñar interfaces de usuario mediante una consola interactivo basado en software. Usted puede diseñar especificando su sistema funcional, su diagrama de bloques o una notación de diseño de ingeniería. Labview es a la vez compatible con herramientas de desarrollo similares y puede trabajar con programas de otra área de Aplicación, como por ejemplo Matlab. Tiene la ventaja de que permite una fácil integración con hardware, específicamente con tarjetas de medición, adquisición y procesamiento de datos (incluyendo adquisición de imágenes). Los Programas en LabVIEW son llamados instrumentos virtuales (VIs). Un instrumento virtual es un modulo de software que simula el panel frontal de instrumento común y, apoyándose en elementos de hardware accesibles por el PC (tarjetas de adquisición, tarjetas DSP, instrumentos accesibles vía GPIB, VXI, RS-232), realiza una serie de medidas como si se tratase de un instrumento real. LabVIEW constituye un revolucionario sistema de programación gráfica para aplicaciones que involucren adquisición, control, análisis y presentación de datos. Las ventajas que proporciona el empleo de LabVIEW se resumen en las siguientes: • Se reduce el tiempo de desarrollo de las aplicaciones al menos de 4 a 10 veces, ya que es muy intuitivo y fácil de aprender. • Dota de gran flexibilidad al sistema, permitiendo cambios y actualizaciones tanto del hardware como del software. • Da la posibilidad a los usuarios de crear soluciones completas y complejas. • Con un único sistema de desarrollo se integran las funciones de adquisición, análisis y presentación de datos. • El sistema está dotado de un compilador gráfico para lograr la máxima velocidad de ejecución posible. • Tiene la posibilidad de incorporar aplicaciones escritas en otros lenguajes. LabVIEW es un entorno de programación destinado al desarrollo de aplicaciones, similar a los sistemas de desarrollo comerciales que utilizan el lenguaje C o BASIC. Sin embargo, LabVIEW se diferencia de dichos programas en un importante aspecto: los citados lenguajes de programación se basan en líneas de texto para crear el código fuente del programa, mientras que LabVIEW emplea la programación gráfica o lenguaje G para crear programas basados en diagramas de bloques. Para el empleo de LabVIEW no se requiere gran experiencia en programación, ya que se emplean iconos, términos e ideas familiares a científicos e ingenieros, y se apoya sobre símbolos gráficos en lugar de lenguaje escrito para construir las aplicaciones. Por ello resulta mucho más intuitivo que el resto de lenguajes de programación convencionales. LabVIEW posee extensas librerías de funciones y subrutinas. Además de las funciones básicas de todo lenguaje de programación, LabVIEW incluye librerías específicas para la adquisición de datos, control de instrumentación VXI, GPIB y comunicación serie, análisis presentación y guardado de datos. 1.2 Componentes Todos los VIs tienen un panel frontal y un diagrama de bloques. Las paletas contienen las opciones que se emplean para crear y modificar los VIs. A continuación se procederá a realizar una descripción de estos conceptos. Panel frontal: Cómo el usuario interacciona con el VIs. Diagrama de bloque: El código que controla el programa. Paletas: Medios para conectar un VI con otros VIs. 1.2.1 PANEL FRONTAL El panel frontal es la interface del usuario con el VI. Usted construye el panel frontal con controles e indicadores, que son las entradas y salidas que interactúan con las terminales del VI, respectivamente. Los controles son botones, botones de empuje, marcadores y otros componentes de entradas. Los indicadores son las graficas, luces y otros dispositivos. Los controles simulan instrumentos de entradas de equipos y suministra datos al diagrama de bloques del VI. Los indicadores simulan salidas de instrumentos y suministra datos que el diagrama de bloques adquiere o genera. En esta imagen, el switch de poder (encendido o apagado) es un control booleano. Un valor booleano contiene ambos un valor verdadero o falso. El valor es falso hasta que el switch se presione. Cuando el switch se presiona, el valor se convierte en verdadero. El indicador del historial de temperatura es una grafica de forma de onda. Esta muestra valores múltiples. En este caso, la grafica señalara grados F versus tiempo (seg.). 1.2.2 DIAGRAMA DE BLOQUES El diagrama de bloque contiene el código fuente grafico. Los objetos del panel frontal aparecen como terminales en el diagrama de bloque. Adicionalmente, el diagrama de bloque contiene funciones y estructuras incorporadas en las bibliotecas de LabVIEW VI. Los cables conectan cada uno de los nodos en el diagrama de bloques, incluyendo controles e indicadores de terminal, funciones y estructuras. En este diagrama de bloque, el subVI Temp llama a la subrutina la cual obtiene una temperatura desde una tarjeta de adquisición de datos (DAQ). Esta temperatura es graficada junto con el valor average de la temperatura en la grafica de forma de onda Temperature History. El switch de poder (Power) es un control booleano en el panel frontal el cual va a detener la ejecución de la estructura mientras ( While Loop). La estructura mientras (While Loop) también contiene una función de tiempo para controlar que tan frecuentemente la estructura se repite. Los controles e indicadores que se colocaron previamente en el Panel Frontal, se materializan en el diagrama de bloques mediante los terminales. El diagrama de bloques se construye conectando los distintos objetos entre sí, como si de un circuito se tratara. Los cables unen terminales de entrada y salida con los objetos correspondientes, y por ellos fluyen los datos. LabVIEW posee una extensa biblioteca de funciones, entre ellas, aritméticas, comparaciones, conversiones, funciones de entrada/salida, de análisis, etc. Las estructuras, similares a las declaraciones causales y a los bucles en lenguajes Convencionales, ejecutan el código que contienen de forma condicional o repetitiva (bucle for, while, case,...). Los cables son las trayectorias que siguen los datos desde su origen hasta su destino, ya sea una función, una estructura, un terminal, etc. Cada cable tiene un color o un estilo diferente, lo que diferencia unos tipos de datos de otros. 1.3 PALETAS Las paletas de LabVIEW proporcionan las herramientas que se requieren para crear y modificar tanto el panel frontal como el diagrama de bloques. Existen las siguientes paletas: 1.3.1 Paleta de herramientas (Tools palette) Se emplea tanto en el panel frontal como en el diagrama de bloques. Contiene las herramientas necesarias para editar y depurar los objetos tanto del panel frontal como del diagrama de bloques. Las opciones que presenta esta paleta son las siguiente: Operating tool – Cambia el valor de los controles. Positioning tool – Desplaza, cambia de tamaño y selecciona los objetos. Labeling tool – Edita texto y crea etiquetas. Wiring tool – Une los objetos en el diagrama de bloques. Object Pop-up Menu tool – Abre el menú desplegable de un objeto. Scroll tool – Desplaza la pantalla sin necesidad de emplear las barras de desplazamiento. Breakpoint tool – Fija puntos de interrupción de la ejecución del programa en VIs, funciones y estructuras. Probe tool – Crea puntos de prueba en los cables, en los que se puede visualizar el valor del dato que fluya por dicho cable en cada instante. Color Copy tool – Copia el color para después establecerlo mediante la siguiente herramienta. Color tool – Establece el color de fondo y el de los objetos 1.3.2 Paleta de controles (Controls palette) Se utiliza únicamente en el panel frontal. Contiene todos los controles e indicadores que se emplearán para crear la interfaz del VI con el usuario. El menú Controls de la ventana correspondiente al panel frontal contiene las siguientes opciones: Numeric – Para la introducción y visualización de cantidades numéricas. Boolean – Para la entrada y visualización de valores booleanos. String & Table – Para la entrada y visualización de texto. List & Ring – Para visualizar y/o seleccionar una lista de opciones. Array & Cluster – Para agrupar elementos. Graph – Para representar gráficamente los datos. Path & RefNum – Para gestión de archivos. Decorations – Para introducir decoraciones en el panel frontal. User Controls – Para elegir un control creado por el propio usuario. ActiveX – Para transferir datos y programas de unas aplicaciones a otras dentro de Windows. Select a Control – Para seleccionar cualquier control. 1.3.3 Paleta de funciones (functions palette) Use la paleta de funciones (Functions), para construir un diagrama de bloque. La paleta de funciones esta disponible solamente en el diagrama de bloque. Seleccione Window»Show Functions Palette o haga un click derecho en el espacio de trabajo del diagrama de bloque para desplegar la paleta de funciones. Usted también puede desplegar la paleta de funciones dando un click derecho en una área abierta del diagrama de bloques. Para desaparecer la paleta de funciones presione el botón en la parte superior izquierda de la paleta. Se emplea en el diseño del diagrama de bloques. La paleta de funciones contiene todos los objetos que se emplean en la implementación del programa del VI, ya sean funciones aritméticas, de entrada/salida de señales, entrada/salidad de datos a fichero, adquisición de señales, temporización de la ejecución del programa, Para seleccionar una función o estructura concretas, se debe desplegar el menú Functions y elegir entre las opciones que aparecen. A continuación se enumeran todas ellas, junto con una pequeña definición. Structures – Muestra las estructuras de control del programa, junto con las variables locales y globales. Numeric – Muestra funciones aritméticas y constantes numéricas. Boolean – Muestra funciones y constantes lógicas. String – Muestra funciones para manipular cadenas de caracteres, así como constantes de caracteres. Array – Contiene funciones útiles para procesar datos en forma de vectores, así como constantes de vectores. Cluster – Contiene funciones útiles para procesar datos procedentes de gráficas y destinados a ser representados en ellas Comparison – Muestra funciones que sirven para comparar números, valores booleanos o cadenas de caracteres. Time & Dialog – Contiene funciones para trabajar con cuadros de diálogo, introducir contadores y retardos, etc. File I/O – Muestra funciones para operar con ficheros. Communication – Muestra diversas funciones que sirven para comunicar varios ordenadores entre sí. Instrument I/O –facilita la comunicación con instrumentos periféricos que siguen la norma ANSI/IEEE 488.2-1987, y el control del puerto serie. Data Acquisition – Contiene a su vez un submenú donde puede elegirse entre distintas librerías de la adquisición de datos. Analysis – Contiene un submenú en el que se puede elegir entre una amplia gama de funciones matemáticas de análisis. Tutorial – Incluye un menú de VIs que se utilizan en el manual LabVIEW . Advanced – Contiene diversos submenús que permiten el control de la ayuda, de losVIs, manipulación de datos, Instrument drivers – En él se muestran los drivers disponibles de distintos instrumentos. User Libraries – Muestra las librerías definidas por el usuario. . Aplication control – Contiene varias funciones que regulan el funcionamiento de la propia aplicación en ejecución. Select a VI – Permite seleccionar cualquier VI para 1.4 BARRA DE HERRAMIENTAS DE ESTADO Botón d (Run) para ejecutar el VI. Mientras el VI se esta ejecutando, el botón de ejecución aparecerá con una flecha negra si es que el VI es un VI principal, lo que significa que no ha sido llamado por otro VI y por lo tanto este no es un VI. Botón (Continuous Run) para ejecutar el VI hasta que el botón de cancelación de ejecución o de pausa sea presionado. Usted también puede pulsar este botón nuevamente para deshabilitar la ejecución continua. Botón (Abort Execution) aparece. Presione este botón para detener el VI inmediatamente. Botón de pausa (Pause) para detener momentáneamente la ejecución de un VI. Cuando usted presiona el botón de Pausa, LabVIEW señala la posición donde usted detuvo la ejecución en el diagrama de bloque. Pulse el botón de Pausa nuevamente para que el VI continué ejecutándose. Menú Configuración de Textos (Text Settings) para cambiar el tipo de fuente (letra) del VI, incluyendo el tamaño, estilo y color. Menú Alineamiento de Objetos (Align Objects) para alinear objetos con respecto a los ejes, incluyendo eje vertical, superior, izquierdo, etc. Menú Distribución de Objetos (Distribute Objects) para espaciar objetos uniformemente, incluyendo espacios vacíos, compresiones, etc. Menú Reordenamiento (Reorder) cuando tenga objetos superpuestos unos con otros y usted quiera definir cual esta enfrente de quien y cual atrás. Seleccione uno de los objetos con la herramienta de posicionamiento y seleccione entre Move Forward (mover hacia adelante), Move Backward (mover hacia atrás), Move to Front (mover al frente) y Move to Back (mover hacia atrás). Botón de ejecución resaltada (Highlight Execution) para ver el flujo de información en el diagrama de bloques. Pulse el botón nuevamente para detener este tipo de ejecución resaltada. Botón de entrada al ciclo (Step Into) para entrar un paso adentro de un ciclo, un SubVI, etc. Entrando un paso a la vez adentro de un VI le permite introducirse en la VI nodo a nodo. Cada nodo se resalta para señalar cuando esta listo para ejecutarse. Al entrar un paso adentro de un nodo usted esta listo para caminar paso a paso adentro del nodo. Botón de sobre (Step Over) para posicionarse encima de un ciclo, un SubVI, etc. Al posicionarse encima del nodo, usted ejecuta el nodo sin entrar paso a paso adentro del nodo. Botón de Salida del ciclo (Step Over) para salirse de un ciclo, SubVI, etc. CAPITULO 2 CREAR UN INSTRUMENTO VIRTUAL 2.1 ABRIR Y EJECUTAR UN VI 1. Seleccione Start » Programs » National Instruments » LabVIEW 7.0 » LabVIEW para lanzar LabVIEW. Aparece la ventana de dialogo de LabVIEW. 2. Seleccione Find Examples del menú de ayuda (Help). La ventana de dialogo que aparece da la lista y enlaces a todos los VIs de ejemplo de LabVIEW. 3. Usted puede buscar ejemplo por categorías, o puede utilizar palabras claves en su búsqueda. Haga clic en la viñeta de búsqueda (Search) para abrir el buscador de palabras claves. 4. En la caja de Enter Keyword(s) escriba Signal 5. Una lista de temas relacionados aparecerá en la ventana de ejemplos (examples). Haga doble-clic en signals, esto generara una lista de ejemplos en el lado derecho. 6. Haga clic en cualquier programa para ver una descripción detallada del ejemplo. Haga doble clic sobre Signal Generation and Processing.vi para lanzar el ejemplo. Esto abrirá el panel frontal del VI Signal Generation and Processing vi. Examine el VI y ejecútelo. Cambie las frecuencias y tipos de señales de entradas y note como el despliegue de las graficas cambia. Cambie la ventana de procesamiento de señales (Signal Processing Window) y opciones de filtrado (Filter options). Después de que haya examinado el VI y las diferentes opciones que puede cambiar, pare el VI presionando el botón de paro (Stop button). Nota Usted también puede abrir un VI al hacer clic en el botón de Open VI y navegar a labview\examples\apps\demos.llb\Signal Generation and Processing.vi. 2.2 CREANDO UN VI Cuando usted crea un objeto en el panel frontal, una terminal es creada en el diagrama de bloques. Estas terminales le dan acceso a los objetos del panel frontal del código creado mediante el diagrama de bloque. Cada terminal contiene información útil referente al objeto al cual corresponde en el panel frontal. Por ejemplo, el color y los símbolos proporcionan el tipo de dato. Números de punto flotante y de doble-precisión, son representados con terminales anaranjadas y las letras DBL. Las terminales booleanas son verdes y son representadas por las letras TF. En general, las terminales anaranjadas deben unirse (cablearse) con las terminales anaranjadas, verdes con verdes, y así sucesivamente. Esta no es una regla que no se puede romper; por ejemplo LabVIEW permitirá al usuario conectar una terminal azul (valor entero) a una terminal anaranjada (valor fraccional). Pero en la mayoría de casos, busque mejor una igualdad en colores. Los controles tienen una flecha en el lado derecho y tienen un borde grueso. Los indicadores tienen una flecha en el lado izquierdo y un borde fino. Reglas lógicas pueden ser aplicadas al conectar en LabVIEW: Cada cable debe tener una (pero solo una) fuente (o control), y cada cable puede tener varios destinos (o indicadores). El programa en esta diapositiva toma datos de A y B y pasa valores a una función de adición y a una función de resta. Los resultados son mostrados en los indicadores apropiados. 2.2.1 CONECTAR DIAGRAMAS DE BLOQUES Además de los terminales del panel frontal, el diagrama de bloques contiene funciones. Cada función puede tener múltiples terminales de entradas y salidas. La conexión de estas terminales es una parte muy importante de la programación en LabVIEW. Una vez que usted tenga cierta experiencia programado en LabVIEW, la conexión de cables se le hará mas fácil. Primero puede que necesite ayuda. En seguida se le muestra algunas recomendaciones para comenzar: La herramienta para conectar o de cableado es utilizada para conectarse a los nodos de las funciones. Cuando usted apunte con la herramienta de cableado, apunte con el extremo del cable que cuelga del carrete. Aquí es donde el cable será colocado. Mientras usted mueve la herramienta de cableado sobre las funciones, observe la viñeta amarilla que aparece. Esto le dirá el nombre de la terminal al que se esta conectando. Mientras usted mueva la herramienta de cableado encima de una terminal, esta va a mostrar información. Esto le ayudara a identificar donde se va a unir el cable. Para mas ayuda con los terminales, haga clic derecho en la función y seleccione Visible Items o Objetos Visibles>>Terminals o Terminales. Un dibujo de la función será colocada atrás para revelar las terminales de la conexión. Note los colores - estos corresponden a los tipos de datos utilizados por los terminales del panel frontal. Para ayuda adicional, seleccione Help >> Show Context Help, o presione CTRL+H. Esto mostrara la ventana de ayuda en contexto. A medida que uno mueva el raton (mouse) sobre la función, esta ventana le mostrara la función, terminales, y una breve descripción. Utilice esto junto con otras herramientas para ayudarse mientras conecta los cables. Si el cableado no se ve muy bien, haga clic derecho en el cable que se desea arreglar y escoja la opción de Clean Up Wire o Limpieza del Cable para que automáticamente el cable haga su ruta de nuevo. El cableado es muy flexible en LabVIEW. Experimente con combinaciones de clics y/o teclas cuando este cableando. Aquí hay algunas de las características mas a menudo utilizadas. El hacer un simple, doble, y triple clic en el cable selecciona el cable para moverlo o para borrarlo. El hacer un clic mientras se esta cableando hace un doblez en el cable. Haciendo clic derecho o presionando el botón Esc mientras se esta cableando cancela la operación de cableado. No se preocupe por el color de los cables. LabVIEW seleccionará automáticamente el cable correcto y adecuado para cada situación. 2.2.2 Cablear los Objetos Automáticamente LabVIEW cablea automáticamente los objetos a medida que usted los coloca en el diagrama de bloque. También puede cablear automáticamente objetos que ya están colocados en el diagrama de bloque. LabVIEW conecta la terminal que mejor combina (match) y deja las terminales que no combinan (match) sin conectar. A medida que usted mueve un objeto seleccionado cerca de otros objetos en el diagrama de bloque, LabVIEW dibuja cables temporales para mostrarle conexiones validas. Cuando usted suelta el botón del mouse para poner el objeto en el diagrama de bloque, LabVIEW conecta automáticamente los cables. Cambie al cableado automático presionando el espaciador (spacebar) mientras mueve un objeto utilizando la herramienta de posicionamiento (Positioning tool). Puede ajustarlas opciones del cableado automático seleccionando Tools >> Options y seleccionando Block Diagram de el menú superior principal. 2.3 FLUJO DE DATOS LabVIEW sigue un modelo de flujo de datos para correr los VIs. Un nodo del diagrama de bloque se ejecuta cuando todas sus entradas están disponibles. Cuando un nodo completa la ejecución, suministra datos a sus terminales de salida y pasa los datos de salida al siguiente nodo en la trayectoria del flujo de datos. Visual Basic, C++, JAVA y otros lenguajes de programación basados en texto, siguen un modelo de control de flujo de la ejecución de un programa. En flujo de control, el orden secuencial de los elementos del programa determina el orden de ejecución de un programa. Considere el diagrama de bloque que se encuentra arriba. Este suma dos números y luego resta 50 del resultado de la suma. En este caso, el diagrama de bloque se ejecuta de izquierda a derecha, no porque los objetos están puestos en ese orden, sino porque una de las entradas de la función de resta no es valida hasta que la función de suma o adición haya terminado su ejecución y pasado los datos a la función de resta. Recuerde que un nodo se ejecuta solamente cuando tiene datos disponibles en todas sus terminales de entrada, y suministra datos a sus terminales de salidas solamente cuando termina su ejecución. En el código de la derecha, considere cual segmento del código se ejecutara primero la suma, el número aleatorio, o la función de división. No se puede saber porque las entradas a las funciones de suma y división están disponibles al mismo tiempo, y la función de Número aleatorio no tiene entradas. En una situación en donde un segmento del código se debe ejecutar antes que otro, y no existe dependencia de datos entre las funciones, utilice una estructura de Secuencia para forzar el orden de la ejecución. 2.4 USO DE AYUDAS Utilice la ventana de Context Help (Ayuda Contextual) y LabVIEW Help (Ayuda de LabViEW) para ayudarle a construir o editar los VIs. Refiérase a la ayuda de LabVIEW y a los manuales para mas información. Ventana de Ayuda Contextual (Context Help Window ) Para desplegar la ventana de Context Help, seleccione Help>>Show Context Help o presione las teclas <Ctrl-H>. Cuando mueva el cursor sobre el panel frontal y los objetos del diagrama de bloque, la ventana de Context Help despliega el icono de los subVIs, funciones, constantes, controles e indicadores, con cables adjuntos a cada una de sus terminales. Cuando mueva el cursor sobre la caja de opciones de dialogo, la ventana de Context Help despliega descripciones de esas opciones. En la ventana, las conexiones requeridas están en negrilla, las conexiones recomendadas en texto normal, y las conexiones opcionales están poco claras o no aparecen. Arriba se presenta un ejemplo de la ventana de Context Help. Haga un clic en el botón de Simple/Detailed Context Help localizado en la esquina inferior izquierda de la ventana de Context Help para distinguir entre la ayuda contextual simple y detallada. El modo simple enfatiza las conexiones importantes. Las terminales opcionales son mostradas por segmentos de cables, informándole de la existencia de otras conexiones. Haga clic en el botón de Lock Context Help para congelar el contenido actual de la ventana de la Context Help. Cuando los contenidos están congelados, el mover el cursor sobre otros objetos no cambia los contenidos de la ventana. Para descongelar la ventana, haga clic nuevamente en el botón. Usted también puede tener acceso a esta opción desde el menú de ayuda (Help). Haga clic en el botón de More Help (mas ayuda) para desplegar el tema correspondiente en LabVIEW Help, el cual describe el objeto en forma detallada. LabVIEW Help (Ayuda de LabVIEW) Puede acceder a LabVIEW Help ya sea haciendo clic en el botón de More Help en la ventana de Context Help, seleccionando Help»VI, Function, & How-To Help, haciendo clic en la oración Click here for more help en la ventana de Context Help o presionando <Ctrl-?>. La LabVIEW Help contiene descripciones detalladas de casi todos los menús, herramientas, VIs y funciones. También incluye instrucciones paso-a-paso para la utilización de muchas características de LabVIEW y enlaces al Tutorial de LabVIEW, versiones en PDF de todos los manuales y Notas de Aplicación de LabVIEW, además de recursos de soporte técnico en el sitio web de National Instruments. CAPITULO 3 3.1 ESTRUCTURAS Las estructuras se comportan como cualquier otro nodo en el diagrama de bloques, ejecutando automáticamente lo que está programado en su interior una vez tiene disponibles los datos de entrada, y una vez ejecutadas las instrucciones requeridas, Suministran los correspondientes valores a los cables unidos a sus salidas. Sin embargo, Cada estructura ejecuta su subdiagrama de acuerdo con las reglas específicas que rigen su Comportamiento, y que se especifican a continuación. Un subdiagrama es una colección de nodos, cables y terminales situados en el interior del rectángulo que constituye la estructura. El For Loop y el While Loop únicamente tienen un subdiagrama. El Case Structure y el Sequence Structure, sin embargo, pueden tener múltiples subdiagramas, superpuestos como si se tratara de cartas en una baraja, por lo que en el diagrama de bloques únicamente será posible visualizar al tiempo uno de ellos. Los subdiagramas se construyes del mismo modo que el resto del programa Las siguientes estructuras se hallan disponibles en el lenguaje G. 3.1.1 Case Structure Al igual que otras estructuras posee varios subdiagramas, que se superponen como si de una baraja de cartas se tratara. En la parte superior del subdiagrama aparece el identificador del que se está representando en pantalla. A ambos lados de este identificador aparecen unas flechas que permiten pasar de un subdiagrama a otro. En este caso el identificador es un valor que selecciona el subdiagrama que se debe ejecutar en cada momento. La estructura case consta de un terminal llamado selector y un conjunto de subdiagramas, cada uno de los cuales esta dentro de un case o suceso y etiquetado por un identificador del mismo tipo que el selector; este será booleano o numérico. Si se conecta un valor booleano al selector, la estructura tendrá dos Case: False y True. Pero si se conecta un valor numérico la estructura podra tener hasta 214 case. En este caso la estructura Case engloba dos sentencias diferentes de otros lenguajes convencionales: 1.- If condición true then ejecutar case true else ejecutar case false 2.- Case selector of 1: ejecutar case 1, n: ejecutar case n Case no cuenta con los registros de desplazamiento de las estructuras iterativas pero si podemos crear los túneles para sacar o introducir datos. Si un case o suceso proporciona un dato de salida a una determinada variable será necesario que todos los demás también lo hagan, si no ocurre de esta manera será imposible ejecutar el programa. 3.1.2 Sequence Structure Este tipo de estructuras presenta varios subdiagramas, superpuestos como en una baraja de cartas, de modo que únicamente se puede visualizar una en pantalla. También poseen un identificador del sudiagrama mostrado en su parte superior, con posibilidad de avanzar o retroceder a otros subdiagramas gracias a las flechas situadas a ambos lados del mismo. Esta estructura no tiene su homologa en los diferentes lenguajes convencionales, ya que estos las sentencias se ejecutan en el orden de aparición pero, como ya sabemos, en LabVIEW una función se ejecuta cuando tiene disponible todos los datos de entrada. Se produce de esta manera una dependencia de datos que hace que la función que recibe un dato directa o indirectamente de otra se ejecute siempre despues, creándose un flujo de programa. Pero existen ocasiones en que esta dependencia de datos no existe y es necesario que un subdiagrama se ejecute antes que otro, es en estos casos cuando usaremos la estructura sequence para forzar un determinado flujo de datos. Cada subdiagrama estará contenido en un frame o marco y estos se ejecutara en orden de aparición: Primero el frame 0 o marco 0, despues el frame 1 y así, sucesivamente, hasta el ultimo. Al contrario del case, si un frame aporta un dato de salida a una variable los demás no tendrán por que hacerlo. Pero tendremos que tener en cuenta que el dato estará solamente disponible cuando se ejecute el ultimo frame y no cuando se ejecute el frame que transfiere el dato. 3.1.3 For Loop Es el equivalente al bucle for en los lenguajes de programación convencionales. Ejecuta el código dispuesto en su interior un número determinado de veces. Usaremos For Loop cuando queramos que una operación se repita un número determinado de veces. Su equivalente en lenguaje convencional es: For i= to N-1 Ejecuta subdiagrama Al colocar un For Loop en la ventana Diagram observamos que tiene asociados dos terminales: 1.- Terminal contador: Contiene el número de veces que se ha ejecutado la estructura. El valor del contador se fijara externamente (ver también Arrays en el capitulo 6). 2.- Terminal de interacción: indica el número de veces que se ha ejecutado la estructura: Cero durante la primera iteración, uno durante la segunda y así hasta N-1. Ambos terminales son accesibles desde el interior de la estructura, es decir, sus valores podrán formar parte del subgdiagrama pero en ningún caso se podrán modificar. Para pasar valores de una iteración a otra se emplean los llamador shift registers. Para crear uno, se pulsará el botón derecho del ratón mientras éste se halla situado sobre el borde del bucle, seleccionando la opción Add Shift Register. El shift register consta de dos terminales, situados en los bordes laterales del bloque. El terminal izquierdo almacena el valor obtenido en la iteración anterior. El terminal derecho guardará el dato correspondiente a la iteración en ejecución. Dicho dato aparecerá, por tanto, en el terminal izquierdo durante la iteración posterior. 3.1.4 While Loop Es el equivalente al bucle while empleado en los lenguajes convencionales de programación. Su funcionamiento es similar al del bucle for. Usaremos While Loop cuando queramos que una operación se repita mientras una determinada condición sea cierta. Su equivalente en lenguaje convencional es: Do ejecutar subdiagrama While condición is TRUE (Aunque esta estructura es más similar al comando Rrpeat-Until, ya que se repite como mínimo una vez, independientemente del estado de la condición). Al igual que For Loop contiene dos terminales: 1.- Terminal condicional: A el conectaremos la condición que hará que se ejecute el subdiagrama. LabVIEW comprobara el estado de este terminal al final de cada iteración, si su valor es TRUE( Verdadero) continuara, pero por el contrario si su valor es FALSE (Falso) detendrá la ejecución. 2.- Terminal de iteración: indica el numero de veces que se ha ejecutado el bucle y que como mínimo, siempre será una (i=O). 3.2 VARIABLES LOCALES Y GLOBALES Las variables son imprescindibles en cualquier tipo de problemas, ya que permiten almacenar la información necesaria para su resolución. En LabVIEW todos los controles introducidos en el Panel Frontal que generan un terminal en la ventana Diagrama van a ser variables, identificables por el nombre asignado en la etiqueta. Pero puede ocurrir que queramos utilizar el valor de cierta variable en otros subdiagrama o en otro VI o, simplemente, que queramos guardar un resultado intermedio. La forma mas sencilla de hacerlo es generado variables locales y/o globales dependiendo de la aplicación. 3.2.1 VARIABLES LOCALES En las variables locales los datos se almacenan en algunos de los controles o indicadores existentes en el panel frontal del VI creado, es por eso que estas variables no sirven para intercambiar datos entre VI´s. La principal utilidad de estas variables radican en el hecho de que una vez creada la variable local no importa que proceda de un indicador o de un control, ya que se podrá utilizar en un mismo Diagrama tanto de entrada como de salida. Las variables locales están disponibles en el menú Structs & Constants de la paleta Function y disponen del siguiente menu Pop-up: - Change To Read Local o Change To Write Local: Permite escoger entre leer o escribir en el control. Select item: Visualiza una lista con el nombre de todos los controles existentes en el Panel Frontal y de ella escogeremos el control al cual queremos que haga referencia nuestra variable. Es por esto que para poder crear el variable local será imprescindible que el control tenga asignado un nombre de identificador. Una vez creada la variable local, si en algún momento se cambia el nombre del control origen, será necesario cambiar también el nombre de la variable local ya LabVIEW no actualiza los cambios. - Show Label: Muestra una etiqueta con el nombre del VI al que pertenece la variable local. - Descripción: Permite añadir comentarios. - Remplace: Sustituye la variable local por cualquier otra función. 3.2.2 VARIABLES GLOBALES Las variables globales son un tipo especial de VI, que únicamente dispone de Panel Frontal, en el cual se define el tipo de datos de la variable y el nombre de identificación imprescindible para despues podernos referir a ella. Cuando escogemos la función Global del menú Structs & constants creamos un nuevo terminal en el diagrama, este terminal corresponde a un VI que inicialmente no contiene ninguna variable. Para poderlas añadir haremos doble clic en el terminal y se habría el panel frontal. Una vez abierto, las variables se definen igual que cualquier control o indicador de un VI normal. Podemos crear un VI para cada variable global o definirlas todas en el mismo, que es la opción mas indicada para cualquier aplicación. Cuando terminemos de colocar todas las variables grabaremos el VI y lo cerraremos. Si una vez cerrado queremos añadir nuevas variables, bastara con volverlo a abrir e introducir los cambios necesarios. Para añadir nuevas terminales que hagan referencia a las variables globales creadas, no volveremos a ejecutar la función Global ya que esto crearía un nuevo VI sino que abriremos el ya existente mediante el comando VI del menú Function y seleccionaremos la variable en concreto a través del comando select item del menú pop-up. Además, este mismo menú cuenta con otra opción que nos permite utilizar una variable ya creada para leer datos o para almacenarlos: Se trata del comando Change To Read Global o Changes To Write Global. 3.3 ERRORES Cuando su VI no es ejecutable, se despliega una flecha quebrada en el botón de correr en la paleta de herramientas. Encontrando los Errores: Para hacer una lista de los errores, haga clic en la flecha quebrada. Para localizar el objeto malo, haga clic en el mensaje del error. Resaltando la Ejecucion: Anima el diagrama y traza el flujo de datos, permitiéndole ver los valores intermedios. Haga clic en el bombillo incandescente (light bulb) en la barra de herramientas. Probe: Utilizado para ver los valores en los arrays (arreglos) y clusters . Haga clic en los cables con la herramienta Probe o haga clic derecho en el cable para ajustar los PROBES. Punto de Paro (Breakpoint): Coloca pausas en diferentes lugares del diagrama. Haga clic en los cables o en los objetos con la herramienta de Punto de Paro para colocar los puntos de paro. Utilice el VI Debug Demonstrate del BASICS.LLB para demostrar las opciones y las herramientas 3.4 TIPS LabVIEW tiene muchas teclas de atajo que hacen el trabajo más fácil. Las más comunes se listan en la diapositiva. Mientras la Herramienta de Selección Automática (Automatic Selection Tool) es genial para escoger la herramienta que usted desearía utilizar en LabVIEW, a veces hay casos cuando usted desea controles manuales. Utilice la tecla Tab para cambiar entre las cuatro herramientas mas comunes (Operate Value (valor de operacion), Position/Size/Select, (Posición/Tamaño/Selección), Edit Text (editar texto), Set Color on Front Panel (establecer color en panel frontal), Connect wire on Block Diagram (conectar cable en el diagrama de bloque)). Una vez que se ha terminado con la selección de herramientas, puede presionar <Shift-Tab> para activar la Herramienta de Selección Automática. En el dialogo de Herramientas >> Opciones, hay muchas opciones configurables para el Panel Frontal, Diagrama de Bloque, Colores, Impresión y mucho mas. Similar a las opciones de LabVIEW, se pueden configurar propiedades especificas del VI al ir a File >> VI Properties Ahí se puede documentar el VI, cambiar la apariencia de la ventana, y personalizarlos de varias maneras. 3.5 EJEMPLO: CONSTRUCCIÓN DE UN VI Se mostrará cómo construir una aplicación mediante el empleo del entorno de programación que proporciona LabVIEW. Panel frontal En primer lugar, se debe construir el panel frontal deseado, que en este ejemplo debe tener el siguiente forma: Proceso a seguir: 1. Abrir un panel frontal nuevo. 2. Colocar un "vertical switch" (paleta Boolean), cuyo nombre será Enable. Su finalidad será finalizar la adquisición. 3. Emplear la Labeling Tool para crear una etiqueta libre para ON y OFF. Utilizar la Coloring Tool para hacer que el borde de dicha etiqueta sea transparente. La T en el borde inferior izquierdo de la paleta de colores hace transparente un objeto. 4. Colocar el gráfico (waveform chart), situado en la paleta Graph. Su nombre será Random Signal. El gráfico representará valores aleatorios en tiempo real. 5. El gráfico tiene un display digital que muestra el último dato. Pulsar el botón derecho del ratón situado sobre el gráfico, y seleccionar Digital Display del submenú Show. Asimismo se deberá deseleccionar Legend y Palette del mismo submenú. 6. Empleando la Labeling Tool, pulsar dos veces con el botón izquierdo del ratón sobre el 10.0 en el eje Y del gráfico, introducir 1.0 y pulsar fuera del gráfico. Así se habrá cambiado el fondo de escala. 7. Colocar un knob (paleta Numeric), cuyo nombre será Loop Delay (sec) Este control determinará la velocidad de ejecución del bucle. Pulsar sobre él con el botón derecho del ratón y deseleccionar Digital Display del submenú Show. 8. Empleando la Labeling Tool, pulsar dos veces con el botón izquierdo del ratón sobre el 10.0 de la escala, introducir 2.0 y pulsar fuera del control para introducir el nuevo valor. Diagrama de bloques El siguiente es el aspecto que presentará el diagrama de bloques una vez finalizada su construcción: 1. Abrir el diagrama de bloques (menú Window, opción Show Diagram). 2. Colocar el While Loop (subpaleta Structures de la paleta de funciones). Dicha estructura, como todas las demás es de tamaño ajustable. 3. Seleccionar la función Random Number (0-1) de la subpaleta Numeric del menú de funciones. 4. Seleccionar la función Wait until Next ms Multiple de la subpaleta Time & Dialog del menú de funciones. 5. Seleccionar la función de multiplicación de la subpaleta Numeric, del menú de funciones, así como una constante numérica, introduciendo el valor 1000 en lugar de 0, que es el que aparece por defecto. 6. Colocar los cables tal y como se muestra en la figura anterior, empleando para ello la Wiring Tool. 7. Volver al panel frontal. Con la Operating Tool poner el interruptor en su posición ON. Ejecutar el programa pulsando el botón run. La frecuencia de ejecución de las iteraciones del bucle While es la indicada en el panel frontal con el control Loop Delay (sec). Es decir, se generará y representará un valor aleatorio cada periodo de tiempo (en segundos) seleccionado. 8. Para finalizar la ejecución del bucle, colocar el interruptor en la posición de OFF. De ese modo la condición de ejecución del bucle While será falsa, por lo que se detendrá a la siguiente iteración.