385
ediciones técnicas LabVIEW 8.20 y versiones anteriores Incluye CD LabVIEW Entorno gráfico de programación José Rafael Lajara Vizcaíno José Pelegrí Sebastiá LabVIEW 8.20 y versiones anteriores

LabVIEW entorno gráfico de programación.pdf

Embed Size (px)

Citation preview

  • e d i c i o n e s t c n i c a s

    LabVIEW 8.20y versiones anteriores

    Incluye CD

    LabVIEWEntorno grficode programacin

    Jos Rafael Lajara VizcanoJos Pelegr Sebasti

    LabVIEW 8.20y versiones anteriores

  • LabVIEWEntorno grfico

    de programacin

    Jos Rafael Lajara Vizcano

    Jos Pelegr Sebasti

    LabView-cap_00.qxp 22/12/2006 14:08 Pgina i

  • Ttulo: LabVIEW. Entorno grfico de programacin

    Autores: Jos Rafael Lajara VizcanoJos Pelegr Sebasti

    Reservados todos los derechos de publicacin, reproduccin, prstamo,alquiler o cualquier otra forma de cesin del uso de este ejemplar de lapresente edicin espaola por

    MARCOMBO S. A. 2007Gran Via de les Corts Catalanes, 594 08007 Barcelona

    ALFAOMEGA GRUPO EDITOR, S.A. 2007C/ Pitgoras 1139 Colonia del Valle - 03100Mxico D.F. (Mxico)

    Quedan rigurosamente prohibidas, sin la autorizacin escrita de los titulares del copy-right, bajo las sanciones establecidas en las leyes, la reproduccin total o parcial de estaobra por cualquier medio o procedimiento, incluidos la reprografa y el tratamiento infor-mtico, as como la distribucin de ejemplares mediante alquiler o prstamo pblicos.

    Consulte nuestro fondo editorial http://www.marcombo.com

    Pueden existir materiales adicionales a esste libro atojados en la URL:http://www.marcombo.com/descargas

    El autor de la obra alojar en esta direccin materiales adicionales que considere de inters para sus lectores, y los ir actualizando peridicamente.

    ISBN (por MARCOMBO): 84-267-1426-9ISBN-13 (por MARCOMBO): 978-84-267-1426-8ISBN (por ALFAOMEGA GRUPO EDITOR): 970-15-1133-6ISBN-13 (por ALFAOMEGA GRUPO EDITOR): 978-970-15-1133-6

    Depsito legal: BI-3 3 79-06Impreso en Grficas Daz Tuduri, S.L.

    LabView-cap_00.qxp 22/12/2006 14:08 Pgina ii

    http://www.marcombo.comhttp://www.marcombo.com/descargas

  • Agradecimientos

    Queremos agradecer a una serie de personas su colaboracin directa o indi-rectamente, algunos aportando medios y otros aportando informacin quehemos empleado en la elaboracin de este texto.

    Parte del presente trabajo est incluido dentro de los trabajos de la asignatu-ra "Sistemas de Adquisicin de Datos" en la titulacin de Ingeniera Tcnicade Telecomunicaciones en la Escuela Politcnica Superior de Gandia. Portanto, de algn modo tambin ha colaborado el anterior profesor de la asig-natura y compaero Jos Francisco Toledo Alarcn.

    Tambin nombrar a Pablo Soto, por iniciarnos en la imparticin de cursos depostgrado, que posteriormente han dado lugar a este texto.

    Por supuesto hemos de agradecer tambin la confianza que National Instru-ments ha puesto en nosotros a travs de Javier Gutirrez y Guillermo Pradosy la ayuda prestada con la utilizacin de un equipo PXI. Tambin agradecera Jeroni Boixareu por creer en nosotros con este proyecto editorial.

    Agradecer tambin el buen quehacer a todos los miembros del "Grupo deSensores y Magnetismo" (GSYM) al cual pertenecemos y en especial a JorgeAlberola.

    Finalmente, nos gustara agradecer a nuestras familias por su cario, pacien-cia y comprensin.

    LabView-cap_00.qxp 22/12/2006 14:08 Pgina iii

  • LabView-cap_00.qxp 22/12/2006 14:08 Pgina iv

  • Introduccin

    Tras 20 aos en el mercado LabVIEW se ha convertido en un estndar en el des-arrollo de aplicaciones de test y medida, control de instrumentacin y sistemas deadquisicin de datos. Su flexibilidad y potencia, le ha hecho expandirse a otras reastales como visin artificial, PACs, control de movimiento, HMI y SCADAs para auto-matizacin industrial, anlisis de ruido y vibraciones, gestin de informacin y gene-racin de informes, etc. Desde hace 5 aos, LabVIEW est creciendo en nuevas areasestratgicas donde reside nuestra visin desde National Instruments, relacionada connuevos campos de trabajo como Simulacin, Diseo de Control, sistemas embebidosen tiempo real (FPGAs, DSPs, microprocesadores), algoritmos matemticos avanza-dos, etc.

    Durante estos 20 aos, LabVIEW ha tenido una gran expansin en la comunidadeducativa y cientfica, tanto en universidades y centros de enseanza secundaria,como en centros de investigacin, en la elaboracin de prcticas de laboratorio, clasestericas en las reas de control, instrumentacin, tratamiento digital de la seal, elec-trnica, etc, en el desarrollo de proyectos fin de carrera, tesinas y tesis, y siendo unpuente entre la comunidad educativa y la industria a nivel de I+D+i.

    Es un placer, como director de National Instruments Espaa, realizar el prlogo deesta 1 edicin de su libro LabVIEW: Entorno de Programacin Grfico, por la cola-boracin profesional durante 8 aos con el grupo de trabajo de Jos Pelegr y JosRafael Lajara, por su labor docente con LabVIEW durante tantos aos y tambin porla confianza puesta en la programacin grfica como lenguaje de desarrollo.

    Estamos convencidos de que esta edicin totalmente adaptada a la versin deLabVIEW 8.20 ser una referencia en espaol para el aprendizaje del lenguaje G, porsu interpretacin de los principios de funcionamiento de LabVIEW as como su carc-ter prctico en el desarrollo de ejercicios.

    Jos Pelegr y su grupo en la Universidad Politcnica de Valencia en Ganda handecidido dar un paso adelante en la divulgacin cientfica y tecnolgica con este libro,fruto de su experiencia como profesores e investigadores en mbitos de la instrumen-tacin virtual, empleando estndares industriales como PXI, sistemas de adquisicinde datos y GPIB, as como cultivando una estrecha e intensa colaboracin conNational Instruments en estas reas. Gracias por la confianza demostrada y muchasuerte!

    Luis Fco. Bussin Fernndez Guillermo Prados GimenoDirector de National Instruments Espaa. Responsable de rea de Valencia

    Madrid. Noviembre de 2006.

    LabView-cap_00.qxp 22/12/2006 14:08 Pgina v

  • LabView-cap_00.qxp 22/12/2006 14:08 Pgina vi

  • ndice

    Seccin I. INTRODUCCIN

    Captulo 1. Introduccin a LabVIEW. Entorno. . . . . . . . . . . . . . . . 3Introduccin a la herramienta de programacin LabVIEW. Presentacin delentorno de trabajo y los mens de herramientas, controles y funciones. Se indica cmo crear un programa y cmo se ejecuta ste. Se introducen losconceptos de VI, subVI y jerarqua. Cmo generar un proyecto y depurar elde cdigo. Termina con algunos ejercicios propuestos.

    Captulo 2. Estructuras. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Las instrucciones de control permiten a un programa ejecutar un cdigo de forma condicional o repetirlo cierto nmero de veces. En LabVIEW estas instrucciones son estructuras que encierran en su interior el cdigo al que afectan. Cabe destacar las nuevas estructuras introducidas en lasltimas versiones como EVENT y TIMED LOOP, as como las tradicionales FOR y WHILE. Se indican algunos ejemplos prcticos y se proponen algunosejercicios.

    Captulo 3. Tipos de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63Estudio en profundidad de los tipos de datos disponibles en LabVIEW y desu manipulacin. Tambin se explican conceptos como variables, referenciasy propiedades que se pueden utilizar. Se finaliza el captulo con ejemplosprcticos y ejercicios propuestos.

    Seccin II. ADQUISICIN Y COMUNICACIONES

    Captulo 4. Manejo de Ficheros. . . . . . . . . . . . . . . . . . . . . . . . . . . 91En este captulo se tratan las diferentes funciones para manejar ficherosmediante ejemplos. A parte de su utilidad tambin se asentarn losconceptos expuestos en la seccin I. Se finaliza con ejercicios propuestos.

    Captulo 5. Comunicacin serie. . . . . . . . . . . . . . . . . . . . . . . . . . . 115La comunicacin serie no se debe olvidar ya que est presente en multitudde dispositivos. En este captulo se presentan dos ejemplos prcticos en los

    LabView-cap_00.qxp 22/12/2006 14:08 Pgina vii

  • que se puede ver la facilidad de implementar dicho tipo de comunicacin enel entorno de LabVIEW.

    Captulo 6. Bus de comunicaciones GPIB. . . . . . . . . . . . . . . . . . . . 131En sus orgenes, LabVIEW se aplicaba fundamentalmente en el control deinstrumentacin y para tal fin se utilizaban diferentes buses deinstrumentacin, en este caso cabe tratar el bus GPIB. El captulo comienzacon una introduccin terica al estndar IEEE 488.1, al IEEE 488.2 y a lanorma SCPI. A continuacin se describen las funciones para utilizar dichoestndar. De manera sencilla se ve su uso y los comandos bsicos con unosejemplos prcticos. Para finalizar el captulo se proponen unos ejercicios.

    Captulo 7. Adquisicin de datos. . . . . . . . . . . . . . . . . . . . . . . . . . 161En este captulo se trata uno de los principales usos de LabVIEW: laadquisicin y generacin de seales elctricas a travs de tarjetas deadquisicin de datos. Hay varios tipos de sistemas de adquisicin de datos:los Data Loggers, las tarjetas DAQ con interfaces PCI, PCI Express, PCI, yexternas como USB o RS-232. Se describen las capacidades comunes a todasellas as como las funciones que emplea LabVIEW para manejarlas. Ademsse presentar el programa Measurement & Automation (MAX). A continuacin se muestran ejemplos prcticos para asentar los principalesconceptos y se proponen ejercicios.

    Captulo 8. Protocolos de comunicacin: TCP y UDP. . . . . . . . . . . 187La importancia que tiene hoy da internet justifica que se dedique un temacompleto a estudiar sus principales protocolos y la forma en que se puedenmanejar desde LabVIEW.

    Captulo 9. Acceso remoto: VI Servery Comunicaciones Avanzadas. . . . . . . . . . . . . . . . . . . . 205

    Este captulo es una continuacin del anterior, en l se explica cmo usar el servidor web que incluye LabVIEW, cmo manejar un programa residenteen un ordenador desde otro y otros protocolos de nivel superior a los delcaptulo 8. En la segunda parte del captulo se hablar sobre VI Server y su utilidad.

    Seccin III. PROGRAMACIN AVANZADA

    Captulo 10. Sincronizacin y Multihilo. . . . . . . . . . . . . . . . . . . . . . 225Cuando se realiza una programacin ms compleja aparecen trminos comopueden ser multitarea, procesos y sincronizacin. Se dice que los sistemas

    viii

    LabVIEW

    LabView-cap_00.qxp 22/12/2006 14:08 Pgina viii

  • operativos son multitarea porque pueden ejecutar ms de un programa a lavez; este concepto puede extenderse tambin a una sola aplicacin y hacerque la aplicacin pueda tener varios 'hilos' ejecutndose en paralelo.

    Este captulo comienza explicando los conceptos tericos y cmo se aplicanen LabVIEW, a continuacin se describen las tcnicas de sincronizacin y losposibles problemas y soluciones que pueden aparecer cuando se trabaja conmltiples hilos.

    Captulo 11. Modelos de programacin. . . . . . . . . . . . . . . . . . . . . 251Continuando con conceptos avanzados, en este captulo se vern tcnicas ymodelos para distintos tipos de programas: tratamiento de errores, sistemasde comunicaciones y principalmente mquinas de estados y programacinorientada a objetos.

    Captulo 12. Cdigo externo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285Este captulo abre el cdigo de LabVIEW a otros lenguajes de programacin,en l se ver cmo hacer que el cdigo creado con lenguajes como C, C++,C# o Visual Basic se puede usar en LabVIEW y viceversa. Adems tambin se estudiar la forma de usar tecnologas como ActiveX o la reciente .NET en LabVIEW. Una vez ms, las explicaciones se basan en ejemplos prcticos.

    Captulo 13. Optimizacin del interfaz. . . . . . . . . . . . . . . . . . . . . . 313Los dos ltimos captulos tratan de optimizaciones, en este caso sobre elinterfaz de usuario, para ello se muestran algunos elementos nuevos o nohabituales que pueden usarse en los interfaces. El captulo finaliza con unaserie de consejos para dar al programa un aspecto profesional.

    Captulo 14. Optimizacin del cdigo. . . . . . . . . . . . . . . . . . . . . . 337Este captulo comienza con una breve introduccin a la ingeniera delsoftware y a los sistemas de control de versiones para ms tarde centrarseen cmo mejorar el rendimiento de los programas, comparando elrendimiento de ejemplos de programas 'buenos' y 'malos' (o mejor dicho, 'no tan buenos').

    Captulo 15. Otras plataformas. . . . . . . . . . . . . . . . . . . . . . . . . . . . 357

    En el ltimo captulo se vern sencillas aplicaciones del uso de LabVIEW, con algunos mdulos extra, para programar sobre distintas plataformas: enordenadores de mano (PDA), en dispositivos reconfigurables (FPGA) y ensistemas de alto rendimiento (PXI).

    ix

    ndice general

    LabView-cap_00.qxp 22/12/2006 14:08 Pgina ix

  • LabView-cap_00.qxp 22/12/2006 14:08 Pgina x

  • Seccin I

    INTRODUCCIN

    Captulo 1. Introduccin a LabVIEW. Entorno.Introduccin a la herramienta de programacin LabVIEW. Presentacindel entorno de trabajo y los mens de herramientas, controles y funciones.Se indica cmo crear un programa y cmo se ejecuta ste. Se introducenlos conceptos de VI, subVI y jerarqua. Cmo generar un proyecto y depu-rar el de cdigo. Termina con algunos ejercicios propuestos.

    Captulo 2. Estructuras.Las instrucciones de control permiten a un programa ejecutar un cdigode forma condicional o repetirlo cierto nmero de veces. En LabVIEWestas instrucciones son estructuras que encierran en su interior el cdigoal que afectan. Cabe destacar las nuevas estructuras introducidas en lasltimas versiones como EVENT y TIMED LOOP, as como las tradiciona-les FOR y WHILE. Se indican algunos ejemplos prcticos y se proponenalgunos ejercicios.

    Captulo 3. Tipos de datos.Estudio en profundidad de los tipos de datos disponibles en LabVIEW yde su manipulacin. Tambin se explican conceptos como variables, refe-rencias y propiedades que se pueden utilizar. Se finaliza el captulo conejemplos prcticos y ejercicios propuestos.

    LabView-cap_01.qxp 22/12/2006 14:15 Pgina 1

  • LabView-cap_01.qxp 22/12/2006 14:15 Pgina 2

  • 3

    Captulo 1

    Introduccin a LabVIEW. Entorno

    LabVIEW es el acrnimo de Laboratory Virtual Instrument Engineering Workbech. Esun lenguaje y a la vez un entorno de programacin grfica en el que se pueden crearaplicaciones de una forma rpida y sencilla.

    National Instruments es la empresa desarrolladora y propietaria de LabVIEW, comen-z en 1976 en Austin, Texas y sus primeros productos eran dispositivos para el bus deinstrumentacin GPIB. En abril de 1983 comenz el desarrollo de lo que sera su pro-ducto estrella: LabVIEW, que vera la luz en octubre de 1986 con el lanzamiento deLabVIEW 1.0 para Macintosh (los ordenadores ms populares en aquella poca que yadisponan de interfaz grfica) y en 1990 la versin 2. Para Windows habra que esperara septiembre de 1992. Los principales hitos de LabVIEW pueden verse en la Tabla 1.

    Tabla 1 - Evolucin de las diferentes versiones de LabVIEW

    Fecha Hito

    Abril de 1983 Comienza el desarrollo de LabVIEW

    Octubre de 1986 LabVIEW 1.0 para Macintosh

    Enero de 1990 LabVIEW 2.0

    Septiembre de 1992 LabVIEW para Windows

    Octubre de 1992 LabVIEW para Sun

    Octubre de 1993 LabVIEW 3.0 multiplataforma

    Abril de 1994 LabVIEW para Windows NT

    Octubre de 1994 LabVIEW para Power Macintosh

    Octubre de 1995 LabVIEW para Windows 95

    Mayo de 1997 LabVIEW 4.0

    Marzo de 1998 LabVIEW 5.0

    Febrero de 1999 LabVIEW 5.1, LV para Linux y LV Real-Time

    Agosto de 2000 LabVIEW 6i

    Enero de 2002 LabVIEW 6.1

    Mayo de 2003 LabVIEW 7 Express, LabVIEW PDA y FPGA

    Mayo de 2004 LabVIEW 7.1

    LabView-cap_01.qxp 22/12/2006 14:15 Pgina 3

  • Fecha Hito

    Mayo de 2005 LabVIEW DSP

    Junio de 2005 LabVIEW Embedded

    Octubre de 2005 LabVIEW 8

    Agosto de 2006 LabVIEW 8.20 (Edicin especial por el 20 aniversario)

    1.1 EntornoLabVIEW es una herramienta de programacin grfica. Originalmente este programaestaba orientado a aplicaciones de control de instrumentos electrnicos usadas en eldesarrollo de sistemas de instrumentacin, lo que se conoce como instrumentacin vir-tual. Por este motivo los programas creados en LabVIEW se guardarn en ficheros lla-mados VI y con la misma extensin, que significa instrumento virtual (VirtualInstruments). Tambin relacionado con este concepto se da nombre a sus dos ventanasprincipales: un instrumento real tendr un Panel Frontal donde estarn sus botones,pantallas, etc. y una circuitera interna. En LabVIEW estas partes reciben el nombre dePanel Frontal y Diagrama de Bloques respectivamente.

    Panel Frontal, es la parte que ver el usuario, suele tener fondo gris.

    Diagrama de Bloques, es donde se realizar la programacin y suele tener fondoblanco.

    El Panel Frontal y el Diagrama de Bloques estn conectados a travs de los terminales(elementos que sirven como entradas o salidas de datos). De la misma forma que unindicador luminoso de la cartula de un instrumento est representado como un diodoen la circuitera interna, en un programa en LabVIEW ese mismo indicador luminosoestar representado en el Diagrama de Bloques como una salida de tipo booleano sobreel que escribir un valor.

    En la figura 1-1 pueden verse las dos ventanas mencionadas antes. En primer trminoest el Panel Frontal, con fondo gris y dos terminales: uno numrico llamado Meter yotro que simboliza un interruptor llamado Boolean. En el Diagrama de Bloques tam-bin aparecen estos dos elementos bajo los mismos nombres y representados con dosiconos. Al programar en el Diagrama de Bloques se leer y escribir de estos iconos.

    En la parte superior de estas ventanas se sita una barra con varias herramientas. En elDiagrama de Bloques esta barra tiene algunas opciones ms, figura 1-2.

    El primer grupo de herramientas sirve para controlar la ejecucinde un programa en LabVIEW. El primer botn indica si hay errores en el programa(fecha rota) y, cuando no los hay (flecha completa como en la imagen), ejecuta unavez el programa. El segundo botn ejecuta de forma continua el programa, comoregla general este botn no debe usarse, en su lugar se emplear un bucle en el pro-grama. El tercer botn aborta la ejecucin y el cuarto permite realizar una pausa.

    4

    LabVIEW

    LabView-cap_01.qxp 22/12/2006 14:15 Pgina 4

  • Figura 1-1. Panel Frontal y Diagrama de Bloques

    Figura 1-2. Barra de herramientas

    El segundo grupo de botones sirve para ayudar a su depura-cin. El primer botn es Highlight Execution, una de las herramientas ms tilespara depurar, ralentiza la ejecucin permitiendo ver el camino que siguen los datosen el programa. El siguiente, Retain Wire Values permite que al colocar un probese obtenga el valor anterior. Los tres siguientes se utilizan para ejecutar el progra-ma paso a paso.

    El men desplegable permite formatear textos, es reco-mendable usar los formatos predefinidos como Application Font o System Font.

    El siguiente grupo se usa para alinear, distribuir, controlar eltamao, agrupar y ordenar objetos.

    Abre la ayuda.

    En el lateral derecho tanto del Panel Frontal como del Diagrama de Bloques aparece elicono que representa al VI, . Tiene un men contextual que permite acceder adiversas caractersticas que sern tratadas ms adelante.

    Para colocar funciones en el Diagrama de Bloques y terminales en el Panel Frontal setienen las paletas, o mens flotantes, llamadas paleta de funciones y de controles res-pectivamente. Adems tambin se tiene la paleta de herramientas que consta de dife-rentes tiles. En la figura 1-3 puede verse el aspecto de estas tres paletas.

    Las paletas de funciones y controles se despliegan haciendo clic con el botn secunda-rio del ratn sobre una zona vaca del Diagrama de Bloques o del Panel Frontal. Tambinpueden dejarse fijas presionando el clip ( ) de la esquina superior izquierda.

    5

    Introduccin a LabVIEW. Entorno

    LabView-cap_01.qxp 22/12/2006 14:15 Pgina 5

  • Figura 1-3. Diferentes paletas de trabajo: funciones, controles y herramientas

    Otra ventana muy til es la de ayuda contextual, puede abrirse en Help > ShowContext Help. Esta ventana muestra informacin del objeto que est situado bajo el cur-sor, ya sea una funcin, un VI, un control o un indicador. Adems puede aparecer unenlace a la pgina de la ayuda relacionada con ese objeto.

    Figura 1-4. Ventana de ayuda contextual

    A continuacin se muestra la Tabla 2 con los atajos de teclado ms tiles de LabVIEW.Pueden personalizarse en Tools > Options > Menu Shortcuts.

    Tabla 2 - Atajos de teclado ms tiles

    Combinacin de teclas Funcin

    CTRL + R Ejecuta el programa

    CTRL + . Aborta la ejecucin

    CTRL + E Conmuta entre la dos ventanas principales

    6

    LabVIEW

    LabView-cap_01.qxp 22/12/2006 14:15 Pgina 6

  • Combinacin de teclas Funcin

    CTRL + B Elimina los hilos rotos

    CTRL + H Muestra u oculta la ayuda contextual

    CTRL + ? Muestra la ayuda

    CTRL + C Copia los objetos seleccionados al portapapeles

    CTRL + X Corta los objetos seleccionados al portapapeles

    CTRL + V Pega los objetos desde el portapapeles

    CTRL + Z Deshace la ltima accin

    CTRL + SHIFT + Z Rehacer

    CTRL + S Guarda el VI

    TAB Cambia entre las herramientas de la paleta de herramientas

    CTRL + arrastrar Crea una copia de los objetos seleccionados

    SHIFT + arrastrar Mueve los objetos solamente en una direccin

    1.2 Mens (paletas)1.2.1 Men de herramientasMediante la paleta de herramientas se puede seleccionar el instrumento que se deseausar, esto hace cambiar el tipo de cursor del ratn. En la figura 1-5 se puede ver la pale-ta de herramientas con 11 botones.

    Figura 1-5. Paleta de herramientas

    Automatic Tool Selection. Si est activado sirve para que se seleccione laherramienta de forma automtica dependiendo del elemento sobre el que

    site el cursor.

    Operate Value. Sera el cursor disponible cuando el VI est ejecutndose, sirveprincipalmente para cambiar valores en los controles del Panel Frontal.

    Position/Size/Select. Como su nombre indica sirve para posicionar objetos, tantoen el Diagrama de Bloques como en el Panel Frontal. Tambin sirve para cambiar

    el tamao y seleccionar elementos.

    7

    Introduccin a LabVIEW. Entorno

    LabView-cap_01.qxp 22/12/2006 14:15 Pgina 7

  • 8

    LabVIEW

    Edit Text. Cambia el cursor para poder escribir texto. Se puede usar, entre otrascosas, para escribir comentarios en el Diagrama de Bloques.

    Connect wire. Es la herramienta que sirve para cablear. Uniendo unos elementoscon otros por cables, los datos fluirn a travs de ellos. Si los cables aparecen en

    color gris y de forma discontinua significa que el cable est roto (hay un error): el tipode datos es incompatible o los terminales no son los adecuados.

    Object Shortcut Menu. Despliega el men contextual asociado a un elemento. Esequivalente a hacer clic con el botn secundario del ratn.

    Scroll Window. Sirve para mover el contenido de las ventanas del mismo modoque si se usarn las barras de desplazamiento laterales.

    Set/Clear Breakpoint. Crea o borra un punto de ruptura en un determinado ele-mento (funcin, VI, estructura o cable). Cuando la ejecucin llega a ese punto se

    detiene.

    Probe Data. Crea un Probe en un cable. Un probe es una ventana flotante quemuestra el valor que circula por el cable.

    Get Color. Obtiene el valor del color de un elemento.

    Set Color. Colorea un elemento. Tiene dos posibles colores, el principal y el defondo, ambos pueden ser asignados de forma independiente. Uno de los colo-

    res disponibles est marcado mediante una T, se trata del color transparente.

    Figura 1-6. Colores

    1.2.2 ControlesEl men que aparece en el Panel Frontal es el men de controles, en l se pueden selec-cionar los terminales que servirn para interactuar con el usuario.

    Los terminales se dividen en controles e indicadores, aunque a veces se les suele llamara todos genricamente controles. Los controles propiamente dichos son las entradas dedatos y los indicadores las salidas. Estn clasificados segn su estilo en varios subme-ns: Modern, System y Classic. Dentro de cada submen hay otros mens que clasifi-can los controles por el tipo de datos. Los ms usados son los que sirven para dibujargrficas y los de la primera fila del submen Modern, stos de izquierda a derecha,corresponden a datos de tipo numrico, booleano, textos y tipos compuestos.

    LabView-cap_01.qxp 22/12/2006 14:15 Pgina 8

  • Para usar los controles hay que seleccionar el terminal deseado y llevarlo al lugar de-seado del Panel Frontal.

    Figura 1-7. Paleta de controles Figura 1-8. Paleta de grficos

    Los indicadores para grficas merecen un trato aparte debido a su importancia. En lapaleta de grficas hay de varios tipos, siendo los ms importantes Waveform Chart yWaveform Graph.

    Figura 1-9. Comparacin entre un Waveform Graph y un Waveform Chart

    9

    Introduccin a LabVIEW. Entorno

    LabView-cap_01.qxp 22/12/2006 14:15 Pgina 9

  • 10

    LabVIEW

    Los indicadores Waveform Chart se diferencian de los Waveform Graph en que stosltimos dibujan totalmente la grfica cuando llegan nuevos datos, sin embargo losWaveform Chart anexan el nuevo dato a los existentes. El nmero de datos que semuestran puede ajustarse escribiendo sobre los nmeros que aparecen en los ejes odejar que LabVIEW los ajuste automticamente (AutoScale). En los Waveform Charttambin se puede ajustar el nmero mximo de puntos que se guardan a travs de laopcin Chart History Length del men contextual. Mediante los mens contextuales delos elementos de las grficas se pueden modificar muchos otros aspectos como el color,interpolacin, elementos a mostrar, etc.

    En la imagen de la figura 1-9 pueden verse ambos indicadores y sus principales dife-rencias. El cdigo de la parte izquierda repite un bucle 50 veces, en este bucle se gene-ra un nmero aleatorio por cada iteracin, despus se crea un arreglo o array con los 50nmeros y se muestran en un Waveform Graph y un Waveform Chart. En el primeroslo se dibujan 50 puntos, y stos se sobrescriben cada vez que se ejecuta el programa.En el segundo los datos nuevos se van colocando despus de los antiguos (vase lanumeracin del eje X), el resultado mostrado es despus de dos ejecuciones (100 datosgenerados). En conclusin se puede decir que el Waveform Chart tiene memoria y elWaveform Graph no.

    Una prctica recomendable en todos los controles e indicadores es aadirles un textoque indique la funcin que realizan en la ventana que aparece al seleccionar en el mencontextual Description and Tip. Este texto se mostrar en la ventana de ayuda contex-tual cuando el usuario coloque el ratn sobre el terminal.

    Figura 1-10. Ventana que permite describir cada terminal

    Sobre todos los controles e indicadores colocados en el Panel Frontal aparece un texto,por ejemplo Numeric, Boolean, Meter, Waveform Chart, etc. Este texto es la etiqueta oLabel que sirve para identificar al elemento tanto en el Panel Frontal como en elDiagrama de Bloques, as como en variables, propiedades, referencias o mtodos quedependan de ese control. Tambin existe otro texto llamado Caption que slo puede servisible en el Panel Frontal. Aunque no es necesario, es conveniente que cada control

    LabView-cap_01.qxp 22/12/2006 14:15 Pgina 10

  • 11

    Introduccin a LabVIEW. Entorno

    tenga un Label diferente que describa su funcin, si es necesario en el Panel Frontal sepuede usar Caption y tip para presentar una descripcin ms extensa.

    Todos los controles e indicadores tienen elementos comunes en su men contextual,como hacer que tengan un valor por defecto (Data Operations > Make Current ValueDefault), hacer que sean visibles o no (desde el Diagrama de Bloques Hide/ShowControl), etc. Otros elementos del men dependen del tipo de control, como en losarrays aadir ms dimensiones, en los grficos modificar colores, fuentes, tipos deinterpolacin, etc.

    Adems de los controles disponibles en este men, se pueden crear otros nuevosmediante la modificacin de uno existente, para ello primero hay que colocar en elPanel Frontal un control del tipo de datos deseado y despus elegir en el men Edit >Customize Control.

    Figura 1-11. Opcin para modificar o crear un control

    En la parte superior aparece el botn Edit Mode y Customize Mode . El pri-mero de ellos hace que el control se comporte como si estuviera en el Panel Frontal. Elsegundo separara los distintos elementos que componen el control o indicador. Loscontroles estn compuestos de pequeas partes, por ejemplo un slide numrico tendraLabel, escala, display, unidades, botones de incremento y decremento, partes cosmti-cas, etc. Estas partes tambin se pueden ver y modificar en Windows > Show PartsWindow, en esta ventana se puede ajustar su tamao y posicin. Cada parte tiene unmen contextual a travs del cual se pueden importar/exportar imgenes.

    Las partes pueden mostrar diferentes grficos en diferentes momentos. Por ejemplo, uncontrol booleano tiene cuatro grficos diferentes: estado FALSE, estado TRUE, estadoSwitch When Released y estado Latch When Released (mientras est presionado elbotn). Cuando existe la opcin de tener varios grficos, el men contextual tendr laopcin Picture Item para seleccionar uno de ellos.

    Cuando se coloca un control personalizado en un Panel Frontal no existe ningn vn-culo entre el fichero donde el control est definido (*.ctl) y sus instancias empleadas encada VI donde es usado, se trata de copias independientes. Si una instancia se modifi-ca no afecta al resto. Las definiciones de tipos y definiciones de tipos estrictos (TypeDef. y Strict Type Def.) se usan para enlazar todas las instancias de un control o indica-

    LabView-cap_01.qxp 22/12/2006 14:15 Pgina 11

  • dor a un mismo fichero *.ctl. De esta forma al modificar el fichero se modifican todaslas instancias. Se puede elegir cmo se desea crear el control mediante una lista desple-gable en la barra de herramientas junto al botn Edit/Customize Mode.

    Las Type Definitions definen el tipo de datos de un control. Cuando el tipo de datoscambia, todos los controles asociados a l tambin cambian. En el men contextual deuna instancia se puede seleccionar Auto-Update from Type Def. para desactivar laactualizacin automtica.

    Un Strict Type Definition hace que todas las instanciassean iguales, no slo el tipo de datos, tambin en carac-tersticas como el rango, tamao, color, etc. De esta for-ma si se modifica la definicin se actualizaran todas lasinstancias. Desde el men contextual se puede eliminarel enlace entre la instancia y la definicin.

    1.2.3 FuncionesEsta paleta es la que se muestra al trabajar sobre elDiagrama de Bloques, en ella se puede acceder a las dife-rentes funciones, subVIs y estructuras disponibles.

    Al igual que en el men de controles, en este tambinhay varios submens que se dividen dependiendo de laaplicacin. Las funciones ms usadas son las del subme-n Programming.

    El primero de los submens de Programming esStructures. Contiene elementos que son equivalentes alas instrucciones de control de los lenguajes convencio-nales, es decir, son los bucles como WHILE o FOR y laestructura condicional CASE adems de otras. Ms ade-lante se dedica un tema completo a las estructuras.

    Figura 1-13. Paleta de funciones

    12

    LabVIEW

    Figura 1-12. Manejo de los elementos que componen un control

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 12

  • Figura 1-14. Paleta de estructuras

    Los siguientes mens de Programming se dividen segn el tipo de datos. Estn losdatos simples como los numricos, booleanos y strings (texto), adems de los compues-tos como los clusters y arrays. Cada uno de estos mens tiene funciones para trabajarcon esos datos.

    Figura 1-15. Paletas de tipos de datos numricos, booleanos y texto

    Los datos numricos se dividen en enteros y de coma flotante y dentro de cada unopuede haber distintos tamaos, se puede cambiar de unos a otros mediante el mencontextual > Representation, si se aplican dos nmeros, por ejemplo, un entero y otroflotante a una funcin, sta cambiar automticamente el tipo de los datos (coercion)para que as se pueda operar con ellos. Los booleanos nicamente pueden tener dosvalores: Verdadero (TRUE) o Falso (FALSE), por esto son los apropiados para crearbotones.

    13

    Introduccin a LabVIEW. Entorno

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 13

  • Los tipos de datos compuestos estn, como su nombre indica, formados por otrosdatos, por lo tanto no se puede hablar simplemente de arrays sino que se debe decirarray de nmeros, array de booleanos, etc. Los arrays, tambin llamados arreglos, sonlistas ordenadas de valores mientras que los cluster son un conjunto desordenado deotros datos, son equivalentes a los STRUCT del lenguaje C. Para indicar los datos de queestn compuestos basta con arrastrar constantes de otros tipos de datos en el interiorde los arrays o clusters.

    Figura 1-16. Paletas de datos tipo arrays y clusters

    En la figura 1-17 pueden verse varios datos de cada uno de los distintos tipos vistoshasta ahora, en la parte izquierda se representan como controles, en el centro comoconstantes y en la derecha como indicadores. Obsrvese el sentido de la flecha blancaen el lateral de los controles e indicadores, sta sirve para diferenciarlos, si apunta haciaafuera ser un control (lectura de datos) y si apunta hacia dentro ser un indicador(escritura de datos). Adems el color del control ser indicativo del tipo de datos al quecorresponde. En el captulo 3 se estudiarn los tipos de datos en detalle.

    Mediante el men contextual se puede acceder a diferentes opciones, as para losnumricos se puede elegir su formato de representacin, para los strings la forma enque se visualizarn (normal, contrasea, etc.). A los arrays se les pueden aadir dimen-siones, etc.

    Al igual que con los controles, el mtodo para usar las funciones y los VIs de la paletade funciones es arrastrar y colocar. La diferencia entre una funcin y un VI es que lasfunciones son objetos con una funcionalidad fija y sin Panel Frontal mientras que losVIs son programas hechos en LabVIEW por National Instruments u otros programado-res que s tienen Panel Frontal y se puede acceder a l haciendo doble clic sobre el VI.Los VIs disponibles estn en libreras dentro del directorio %directorio de instalacinde LabVIEW%\vi.lib.

    14

    LabVIEW

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 14

  • 15

    Introduccin a LabVIEW. Entorno

    Figura 1-17. Diferentes tipos de datos

    Las funciones y VIs generalmente operarn sobre una o varias entradas y proporciona-rn una o ms salidas. A las entradas se le conectar un dato del tipo requerido quepuede provenir de un control, una constante o una salida de otro VI o funcin y a susalida se podr conectar un indicador o una entrada de algn VI o funcin.

    Figura 1-18. Funcin And

    1.2.4 Personalizacin de los mensLas paletas de controles y de funciones pueden personalizarse y tambin se pueden aa-dir nuevos mens basados en VIs creados por uno mismo o por otros programadores.

    Cuando se crean mens nuevos, por convencin, los VIs y controles se guardan en%directorio de instalacin de LabVIEW%\user.lib y los nuevos mens deben crearsedentro del submen User Libraries y User Controls.

    Para modificar el aspecto de las paletas hay que ir a Tools > Advanced > Edit PaletteSet, figura 1-19. Cuando se hace se abren las dos paletas principales y se puede nave-gar por ellas de forma normal, pero no se pueden arrastrar los VIs y controles alDiagrama de Bloques y al Panel Frontal sino que en cada VI y submen aparece unmen desplegable con una serie de opciones que permiten aadir nuevos mens y VIs,

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 15

  • 16

    LabVIEW

    modificar iconos, hacer que cuando se usen no se aada el VI como subVI sino su cdi-go (Merge VI), etc.

    Figura 1-19. Modificacin del aspecto de paletas

    El esquema de los mens de las paletas se guarda en un fichero con extensin *.MNU.Una vez que se han realizado y guardado los cambios ya estn disponibles los nuevosmens y se podrn utilizar como cualquier men nativo de LabVIEW.

    Figura 1-20. Submen de la librera de usuario

    Tambin en Tools > Options > Control/Function Palettes hay varios parmetros paracambiar su aspecto. Por ltimo hay que decir que si no se encuentra un VI entre todosesos mens o submens tambin se dispone de la opcin de buscar un VI o control porsu nombre mediante el botn Search de la parte superior de las paletas.

    1.3 Creacin de programasEn LabVIEW la programacin se realiza en el Diagrama de Bloques. Un programa habi-tualmente est formado por:

    1. Controles: sirven de entrada para los datos.

    2. Funciones, VIs y estructuras: realizan una o varias operaciones con esos datos.

    3. Indicadores: sirven de salida para los datos.

    Los datos circulan por el programa mediante cables, que sirven para unir unos ele-mentos con otros. Para realizar la conexin se utiliza la herramienta Connect Wire dela paleta de herramientas. Un cable tendr una nica fuente (control, constante o sali-da de otro elemento) y uno o varios destinos (indicador o entradas de otros elementos)de tipos compatibles. El cableado, en general, debe ser lo ms corto posible mantenien-

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 16

  • 17

    Introduccin a LabVIEW. Entorno

    do una claridad suficiente. Una opcin til que aparece en el men contextual de loscables es Clean Up Wire que realiza un trazado automtico de la ruta del cable. Unbuen trazado del cableado no slo es ms elegante sino que tambin puede hacer queel programa tenga unas prestaciones superiores en cuanto a memoria utilizada.

    En la figura 1-21 puede verse un programa en LabVIEW. Consta de dos entradas, unade tipo string y otra numrica. La funcin String Length obtiene el nmero de caracte-res de la entrada de texto, esa cantidad es numrica y se suma a la otra entrada median-te la funcin Add. El programa tiene dos salidas, la primera de ellas es una copia dupli-cada de la entrada tipo string y la segunda es la suma de la longitud de la anterior msla entrada numrica.

    Figura 1-21. Programa sencillo en LabVIEW

    Una vez creado el programa se deben introducir los datos iniciales en los controles delPanel Frontal, ejecutarlo presionando el botn Run (CTRL+R) y cuando acabe ver losresultados en los indicadores. La figura 1-22 muestra la ejecucin del programa anterior.

    Figura 1-22. Ejecucin del programa anterior

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 17

  • 18

    LabVIEW

    Para obtener un alto rendimiento LabVIEW es un lenguaje compilado. Cuando un pro-grama ha sido modificado y se va a guardar o ejecutar generalmente se recompila. Alcompilar el cdigo del Diagrama de Bloques pasa a cdigo mquina. El cdigo compi-lado har llamadas a otras funciones de libreras externas (LabVIEW Run-Time Engine)para tareas como dibujar grficos o acceso a ficheros.

    1.4 Flujo de ejecucinAl lenguaje de programacin que usa LabVIEW tambin se le llama lenguaje G. Lamayora de los lenguajes se basan en una programacin imperativa, la cual es simple-mente una sucesin de operaciones. Sin embargo el lenguaje G no usa una programa-cin imperativa sino una ejecucin basada en el flujo de datos (dataflow).

    Un programa en LabVIEW consiste bsicamente en una serie de funciones unidasmediante cables. Los datos circulan o fluyen por los cables. Una funcin slo podrejecutarse cuando tenga disponibles todos los datos que le sirven como entradas. Estaforma de ejecutar un programa favorece el paralelismo y es ms apropiada para siste-mas multiprocesador y multihilo.

    A continuacin se mostrarn una serie de imgenes para explicar el flujo de ejecucinde LabVIEW mediante un ejemplo.

    El programa consiste en dos operaciones matemticas: la suma de dos nmeros y lamultiplicacin del resultado de sta por otro nmero. En la figura 1-23 se puede ver elprograma y los datos de entrada en el Panel Frontal.

    Figura 1-23. Programa para analizar el flujo de ejecucin

    El primer paso de la ejecucin llevar los datos de los controles Operando A, OperandoB y Operando C a las entradas de las funciones Add y Multiply, en la figura 1-24 puedeverse que las entradas disponibles estn marcadas con un punto.

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 18

  • Figura 1-24. Valores disponibles en las entradas de la funcin Add

    La funcin Add tiene disponibles los valores de sus dos entradas, sin embargo la fun-cin Multiply necesita el valor de otra entrada, por lo tanto en el siguiente paso sepodr ejecutar la funcin Add pero no Multiply. Cuando se ejecute el resultado de lasuma, su valor pasar al indicador A+B que lo mostrar en el Panel Frontal y tambincircular hasta la entrada que faltaba de la multiplicacin, lo que permite que en elsiguiente paso pueda ejecutarse.

    Figura 1-25. Siguiente paso de la ejecucin

    Finalmente el resultado de la multiplicacin pasa al indicador (A+B)*C y el programafinaliza.

    Figura 1-26. Flujo de ejecucin

    19

    Introduccin a LabVIEW. Entorno

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 19

  • 20

    LabVIEW

    En el ejemplo anterior el orden de ejecucin es fijado por la forma de cablear unas fun-ciones con otras. En la figura 1-26 pueden verse dos programas, en el primero ocurre lomismo: el orden de ejecucin lo fija el cableado, primero se ejecutar Increment y des-pus Square Root; en el segundo programa hay dos funciones pero entre ellas no exis-te ninguna dependencia de datos, por lo tanto no habr ningn orden en la ejecucinde Decrement y Square.

    1.5 VI y subVILos ficheros con los programas creados en LabVIEW se llaman VIs (Virtual Instru-ment). En muchas ocasiones un programa ser de un tamao tal que habr que sepa-rarlo en varios ficheros o habr alguna seccin de cdigo que convenga reutilizarlavarias veces. Un VI puede contener a otro de forma que el segundo sera un subVI delprimero, el concepto es equivalente a las funciones de un lenguaje tradicional.

    Figura 1-27. Programa que utiliza diferentes funciones

    En el ejemplo de la figura 1-27 se puede ver un programa que tiene como entradasLmite superior y Lmite inferior, estas entradas se limitan de forma programada a 360y 0 respectivamente mediante las funciones de comparacin Less?, Greater? y Select. Alas salidas de las funciones de comparacin se obtendr un valor TRUE si la compara-cin es cierta y FALSE en caso contrario. Select funciona como un multiplexor: a su sali-da estar el valor de la entrada superior (T) si la seal de seleccin (?) es cierta y el dela entrada inferior (F) si es falsa. Por otra parte, Random Number (0-1) genera un nme-ro aleatorio entre cero y uno.

    La parte central del programa resta las dos entradas y el resultado lo multiplica por lasuma del lmite inferior y el nmero aleatorio. Con esto se consigue generar un nme-ro aleatorio comprendido entre los dos lmites indicados, que nunca sern mayores de360 y menores de 0.

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 20

  • Finalmente este nmero generado se emplear como el valor de un ngulo en coorde-nadas polares, y de l se obtendr un nmero.

    En el ejemplo anterior puede ser deseable hacer una funcin para la generacin delnmero aleatorio entre dos lmites, es decir, hacer que esa parte del cdigo sea un VIdistinto, de esta forma podr ser usado en otras ocasiones. La forma ms sencilla deconseguir esto es seleccionando la parte deseada del Diagrama de Bloques e ir a Edit >Create SubVI. Al hacerlo el cdigo seleccionado ser sustituido por el icono de un VI,con un doble clic sobre este icono se acceder al cdigo de este subVI.

    Figura 1-28. Crear un subVI seleccionando una parte del programa

    Otra forma de crear un VI es definiendo de forma manual su interfaz, es decir, la formaen que se realizarn las conexiones cuando se use como subVI dentro de otro VI. El pri-mer paso ser guardar el VI, despus situarse en su Panel Frontal y hacer clic con elbotn secundario del ratn sobre el icono del VI (parte superior derecha) para desple-gar su men contextual, como se puede ver en la figura 1-29. En el men contextual semostrar el conector, que es el equivalente a la cabecera de las funciones en otros len-guajes. En el conector se podrn aadir o eliminar terminales, los terminales son loslugares donde se conectarn los cables cuando se use como subVI. Para asignar un con-trol o indicador a un terminal se debe seleccionar la herramienta Connect Wire y hacerclic en el terminal y en el control o indicador asociado del Panel Frontal, en ese momen-to el terminal se colorear indicando el tipo de datos.

    Por claridad se conectarn las entradas a la izquierda y las salidas a la derecha. Tambinse puede indicar si la conexin de un terminal debe ser obligatoria (Required), normal(Recommended) u opcional (Optional), en la ventana de ayuda contextual los termina-les se mostrarn en negrita, de forma normal u ocultos respectivamente. Si en el Panel

    21

    Introduccin a LabVIEW. Entorno

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 21

  • 22

    LabVIEW

    Frontal se haba indicado algn valor por defecto en algn control, ste ser el valorque tenga el control si no se le conecta un cable cuando se use como subVI.

    Figura 1-29. Creacin del terminal de un subVI

    Adems del terminal, tambin se puede crear un icono que represente al VI cuando secoloque en el Diagrama de Bloques de otro VI. En la ventana que aparece (figura 1-30)se tiene en la parte izquierda las herramientas para hacer el dibujo, en el centro el lien-zo y a la derecha el icono mostrado dependiendo de los colores que pueda representarla pantalla (o impresora, si va a imprimirse).

    Si en los tres iconos (B&W, 16 Colors y 256 Colors) se crea un dibujo con la misma figu-ra, por ejemplo un tringulo, el VI aparecer como un tringulo en vez de cuadrado. Sise est creando una librera o familia de subVIs es conveniente dar a todos un estiloparecido. Por ltimo hay que decir que se puede acceder a opciones especiales hacien-do doble clic sobre algunas herramientas, como la de texto.

    Desde el men contextual del icono o desde File > VI Properties se acceder a las pro-piedades del VI, en ellas se podr ver informacin y modificar parmetros del VI como:

    General: informacin sobre la versin, cambios sin salvar, etc.

    Memory Usage: espacio que ocupan las distintas partes que componen el VI.

    Documentation: informacin sobre el VI, al usarlo como subVI aparecer en la ven-tana de ayuda contextual y un enlace a un fichero de ayuda en el que se podraampliar la informacin.

    Revision History: configuracin e informacin sobre el historial del VI.

    Editor Options: algunos parmetros que afectan a la hora de crear el VI.

    Security: permite bloquear y/o proteger con contrasea el cdigo del fichero.

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 22

  • Figura 1-30. Editor del icono de un VI

    Window Appearance: configuracin de la ventana que mostrar el Panel Frontal alusuario cuando el VI se ejecute.

    Window Size: tamao de la ventana del programa cuando se ejecute.

    Window Run-Time Position: posicin de la ventana del programa cuando se ejecute.

    Execution: afecta a la forma de ejecutarse de un VI, para ms informacin consul-tar el tema acerca de multihilo.

    Print Options: configura la forma en que se imprimir un VI.

    Una vez creado el VI el siguiente paso ser usarlo. Para insertar un VI dentro de otrose puede usar el mtodo de arrastrar y soltar, desde el directorio donde est almacena-do hasta el Diagrama de Bloques del VI; tambin se puede usar Select a VI... desde lapaleta de funciones o colocar el VI dentro un men de la paleta de funciones.

    Como se puede ver en las propiedades de un VI (File > VI properties > Memory Usage)internamente se compone de un espacio de datos, el cdigo compilado, el Panel Frontaly el Diagrama de Bloques. Al cargar un VI se llevar a memoria el espacio de datos yel cdigo compilado; el Panel Frontal y el Diagrama de Bloques se cargarn cuandoLabVIEW lo considere necesario.

    Cada VI se guardar como un fichero. Para agrupar varios VIs se puede emplear unalibrera, la cual es otro fichero con extensin *.LLB. Hay varios mtodos para crear unalibrera:

    En un fichero nuevo, File > Save as > New LLB.

    En Tools > LLB Manager > File > New LLB.

    Tambin se puede convertir un directorio que contenga VIs a una librera y viceversadesde Tools > LLB Manager, se selecciona el directorio o librera deseados y se eligeEdit > Convert.

    23

    Introduccin a LabVIEW. Entorno

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 23

  • Figura 1-31. Explorador de libreras

    Si est activada la casilla de Tools > Options > Environment > Enable WindowsExplorer for LLB Files se podr tratar el fichero LLB como si fuera un directorio ms(en Windows 2000 o XP) y aadir o borrar ficheros. Tanto desde el LLB Manager comodesde el explorador se podr marcar un VI como Top Level, esto provoca que, cuandola librera se abra desde la lnea de comandos o sin la opcin de explorarlo, se abradirectamente el VI principal. Una vez creada la librera se podr trabajar con elladesde LabVIEW como si fuera un directorio ms, pero para el sistema operativo serslo un fichero.

    Otra alternativa a la hora de guardar VIs es hacerlo en forma de plantillas (templates).Estos ficheros tienen por extensin *.VIT (o *.CTT para controles). Sirven para guardaren ellos cdigos o componentes muy habituales. Son exactamente igual que los VIsexcepto que en lugar de abrirse el fichero de la plantilla, LabVIEW abrir una copiacomo un VI.

    Al igual que en otros lenguajes, LabVIEW tambin admite el polimorfismo o sobrecar-ga de funciones, lo que significa que puede haber funciones distintas bajo el mismonombre que, en principio, pueden tener distinto tipo de datos en las entradas; la fun-cin concreta a usar se puede adaptar a las entradas o seleccionarse de forma manual.Muchas de las funciones y VIs disponibles en la paleta de funciones son polimrficos.

    Para crear un VI polimrfico se debe partir de los VIs que lo compondrn por separa-do; cada una de las instancias del VI polimrfico debe tener la misma estructura en elconector, aunque el tipo de datos obviamente puede ser diferente. En la figura 1-32 semuestra el cdigo fuente de tres VIs con los que se crear un VI polimrfico.

    Una vez creados los VIs con sus respectivos conectores se debe ir a File > New...>Polymorphic VI. En esta ventana se pueden unir todos los VIs en un nico fichero,como se ve en la figura 1-33.

    24

    LabVIEW

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 24

  • 25

    Introduccin a LabVIEW. Entorno

    Figura 1-32. Cdigo fuente de tres VIs con los que crear un VI polimrfico

    Figura 1-33. Creacin de VI polimrfico

    En la figura 1-34 est el resultado. En la parte izquierda se selecciona automticamen-te la instancia concreta del VI a usar de acuerdo al tipo de datos que se conecta y en laderecha se muestra un VI que en su parte inferior tiene un selector para elegir de formamanual la instancia.

    Figura 1-34. Utilizacin del VI polimrfico

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 25

  • 26

    LabVIEW

    1.6 ProyectosAntes de LabVIEW 8.x la organizacin de proyectos de tamao medio o grande eracomplicada, siendo exclusivamente responsabilidad del programador que deba orde-nar los VIs en directorios en el disco (algo que en la prctica no sola ocurrir) e incluirla documentacin y el resto de ficheros necesarios.

    La versin 8.0 de LabVIEW introdujo la opcin de agrupar todos los ficheros en un pro-yecto. El proyecto consiste en un fichero en formato XML y con extensin *.LVPROJ queindica qu ficheros componen el proyecto y cmo se ordenan. Los ficheros que compo-nen el proyecto pueden ser VIs, controles, ficheros de configuracin (por ejemplo paracrear un ejecutable), documentacin o cualquier otro fichero.

    La ventana desde la que se gestiona el proyecto se llama Project Explorer y muestra elaspecto de la figura 135.

    Figura 1-35. Explorador del proyecto

    Los ficheros se pueden agrupar en directorios. Para organizar el cdigo tambin puedeser til emplear libreras. En el contexto de un proyecto estas libreras no deben confun-dirse con ficheros LLB ya que simplemente es otro fichero XML con referencias a losficheros contenidos y la descripcin de sus propiedades. Dentro de las libreras los ele-mentos pueden ser pblicos (accesibles desde otras partes del proyecto) o privados

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 26

  • 27

    Introduccin a LabVIEW. Entorno

    (accesibles slo desde otros VIs de la misma librera), esto es til para distribuir cdigoentre varios programadores. Para definir los elementos pblicos o privados hay queacceder a las propiedades de la librera desplegando su men contextual > Properties> Item Settings.

    La ventana del proyecto se divide inicialmente en tres tems:

    My Computer: es el target, en l se muestran los ficheros que componen el proyec-to y sus propiedades. De cada target descienden Dependencies y Build Specifi-cations.

    Dependencies: muestra las dependencias del proyecto, por ejemplo libreras com-partidas.

    Build Specifications: guarda la configuracin para las distribuciones del proyectocomo archivos comprimidos, ejecutables, libreras, instaladores, etc.

    1.7 Depuracin de cdigoCuando se hace un programa es normal cometer errores. Depurar es el proceso deencontrar y corregir los fallos del programa. LabVIEW dispone de varias herramientaspara ayudar al programador en esta tarea.

    La deteccin de errores de lo que se podra llamar la sintaxis del lenguaje es automti-ca y simplemente consiste en impedir que se ejecute el VI que contiene un error, paraello el botn RUN se sustituye por List Errors y se cambia el icono de la barra de herra-mientas por uno que simboliza una flecha rota .

    Al presionar este botn aparece una lista de los errores y warnings del programa. Alseleccionar un error aparece una descripcin en la parte inferior, y haciendo doble clico presionando el botn Show Error se traslada el foco del programa a la parte donde seha producido el fallo.

    En la figura 1-36 se indica que hay tres errores en el cdigo:

    Una estructura CASE cuyo selector no tiene nada cableado.

    Una funcin de suma que presenta errores en sus terminales.

    Un cable roto, ms concretamente, que no tiene final.

    A parte de los errores sintcticos puede haber otros, debido a innumerables motivos.Una herramienta muy usada en este caso es la Highlight Execution, representada porun icono con forma de bombilla de luz en la barra de herramientas. Cuando esta opcinest activada la ejecucin se ralentiza y se puede ver el fluir de los datos por elDiagrama de Bloques.

    A veces en un programa grande puede ser inviable esperar a que el flujo de ejecucinllegue a la parte deseada con la Highlight Execution, para ello se pueden usar los break-points o puntos de ruptura. stos se seleccionan en la paleta de herramientas y despuspresionando sobre el objeto en el que se desea establecer el punto de ruptura. El objeto

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 27

  • puede ser un cable o una estructura o una funcin, ver figura 1-37. Al crear un break-point aparece una marca roja indicando su situacin. En la siguiente imagen se puedenapreciar tres puntos de ruptura: en el interior de la estructura WHILE, en el cable entreel control de x y la funcin suma y en la propia funcin.

    Figura 1-37. Utilizacin de puntos de ruptura para depuracin de cdigo

    Una vez seleccionados los puntos de ruptura se puede ejecutar el programa de formanormal y al llegar la ejecucin a uno de ellos sta se detendr automticamente, igualque si se hubiera pulsado el botn Pause de la barra de herramientas (el cual pasa atener fondo rojo y se transforma en Continue).

    28

    LabVIEW

    Figura 1-36. Lista de errores de un VI

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 28

  • Si lo que se desea es obtener el valor de un dato cualquiera se puede usar la herramien-ta Probe, ver figura 1-38. Se puede activar sobre un control, indicador o cable usando lapaleta de herramientas o el men contextual del cable; cuando se coloque aparecer unaventana flotante en la que puede verse el valor del dato seleccionado en tiempo real.

    Otra utilidad de los Probe es crear un Custom Probe con una condicin, en ese casocuando se cumpla la condicin el VI se detendr igual que si hubiera un breakpoint. Aesta opcin se puede acceder desde el men contextual de los cables Custom Probe >Conditional [Tipo] Probe. Por ltimo tambin hay que decir que un probe puede per-sonalizarse como un VI con Custom Probe > New.

    Otro mtodo ms para detectar errores es revisar el valor de ciertos datos, como losclusters de error que tienen muchas funciones a la entrada y salida; para esto hay VIsespecializados en la paleta Programming > Dialog & User Interface.

    Los cluster de error son un dato especial. Se componen de tres parmetros:

    Un booleano que indica si hay error o no.

    Un nmero identificativo del error.

    Un string que contiene una descripcin del error.

    Figura 1-38. (a) Utilizacin del Probe. (b) Probe condicional

    Existe una herramienta que ampla la informacin sobre el error, se puede accederdirectamente a ella desde el indicador del cluster presionando con el botn derechosobre l y eligiendo Explain Error. Tambin se puede ir a Help > Explain Error.

    29

    Introduccin a LabVIEW. Entorno

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 29

  • Figura 1-39. Informacin del error detectado

    1.8 Otras herramientas

    1.8.1 OpcionesSe puede acceder a las opciones de configuracin de LabVIEW a travs de Tools >Options. Esta ventana permite modificar muchos parmetros del programa, como:

    Paths: las rutas del directorio de instalacin de LabVIEW, el directorio temporal,libreras, etc.

    Front Panel: varias opciones relacionadas con el Panel Frontal y los controles.

    Block Diagram: manejo automtico de errores y otras ayudas al programador.

    Aligment Grid: permitir y configurar alineamiento a las rejillas.

    Controls/Functions Palettes: formas de presentar las paletas de controles y fun-ciones.

    Source Control: seleccin del servidor de versiones y configuracin.

    Debugging: opciones para depurar errores.

    Colors: cambiar el color de varios elementos de LabVIEW.

    Fonts: define las fuentes de aplicacin, dilogo y sistema.

    Printing: opciones a la hora de imprimir.

    Revision History: permite guardar informacin cada vez que se guarda un VI.

    Menu Shortcuts: modifica y crea atajos de teclado para las opciones de los mens.

    Environment: opciones de configuracin miscelneas.

    Security: permite restringir el acceso a LabVIEW

    30

    LabVIEW

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 30

  • 31

    Introduccin a LabVIEW. Entorno

    Shared Variable Engine: ordenadores que ofrecen servicios para manejar variablescompartidas.

    VI Server: configuracin del acceso a VI Server.

    Web Server: configuracin del servidor web que incorpora LabVIEW.

    Figura 1-40. Ventana de opciones que presenta LabVIEW 8.2

    Adems de estas opciones tambin se pueden realizar ms cambios, algunos de ellosno documentados, en el fichero LabVIEW.ini del directorio de instalacin de LabVIEWo en el fichero *.ini asociado a los ejecutables creados con LabVIEW (en Linux es elfichero .labviewrc y en MacOS Library:Preferences ambos en el directorio home).

    1.8.2 JerarquaCuando se usan unos VIs dentro de otros se va creando una jerarqua de VIs. En View> VI Hierarchy se puede abrir una herramienta para ver la estructura jerrquica de unprograma, ver el ejemplo de la figura 141.

    Adems de ver la estructura de un proyecto de forma grfica tambin puede ser de uti-lidad en grandes proyectos para buscar VIs.

    Una buena jerarqua es la que est organizada por niveles bien definidos, los VIs de unnivel se apoyan en los del nivel inmediatamente inferior y no hay saltos de niveles.

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 31

  • 32

    LabVIEW

    Figura 1-41. Jerarqua de un VI

    Adems de la ventana de jerarqua, tambin se puede acceder a los VIs relacionadoscon el que est activo en View > Browse Relationship.

    1.8.3 Ventana de navegacinLa ventana de navegacin es otra ventana flotante que permite ver toda la ventana acti-va de LabVIEW mediante un zoom automtico. Se puede acceder a ella desde View >Navigation Window y puede ser til cuando el Diagrama de Bloques tiene un tamaosuperior a la pantalla (aunque esto es algo que se debe evitar haciendo el programa msmodular).

    1.8.4 Compilacin masivaLa compilacin masiva es un mtodo que se usa sobre todo al actualizar la versin deLabVIEW. Su funcin bsicamente es abrir todos los VIs de un directorio, relinkar yrecompilar todos los VIs y subVIs que contiene. Se puede acceder a esta herramienta enTools > Advanced > Mass Compile.

    1.8.5 Bsqueda y comparacinEn el men Edit > Find and Replace se halla una herramienta que permite buscar tantotexto como objetos en los VIs cargados en memoria. Los objetos a buscar pueden serVIs, funciones, breakpoints, terminales, etc. En la ventana de resultados se pueden sus-tituir todas las instancias del objeto buscado por otra funcin.

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 32

  • 33

    Introduccin a LabVIEW. Entorno

    Figura 1-42. Utilidad de bsqueda y reemplazo

    LabVIEW tambin dispone de otra utilidad en el men Tools > Compare destinada amostrar las diferencias entre dos VIs, tanto en su cdigo, su aspecto, jerarqua u otraspropiedades. Con estas herramientas simplemente hay que elegir dos VIs y su resulta-do ser una ventana en la que se muestran las diferencias, al hacer doble clic sobre unase mostrarn los VIs con una marca en la diferencia.

    1.8.6 SeguridadLas opciones de seguridad en Tools > Security permiten controlar el acceso y permisosa algunos recursos, como a VI Server (Tools > Options > VI Server: User Access oProyecto > My Computer > Properties > VI Server: User Access). El sistema es pareci-do al de cuentas de usuario, grupos y dominios de los sistemas Windows.

    Para que un usuario se registre como tal debe dirigirse a Tools > Security > Login, ade-ms se puede activar la opcin Tools > Options > Security > Show the login prompt atLabVIEW startup time para hacer que se pida un usuario cada vez que se inicieLabVIEW.

    Algunos mdulos de LabVIEW pueden extender las funciones de seguridad a elemen-tos como variables compartidas o libreras de proyectos.

    1.8.7 EjemplosUna de las cosas ms apreciadas de National Instruments es su soporte, tanto en lneacomo en sus programas. Dentro de la ayuda de LabVIEW ya se ha visto antes la venta-na de ayuda contextual, tambin dispone de muchos documentos explicando detalla-damente cada aspecto del programa. Ahora se hablar sobre su coleccin de ejemplos,a la que se puede acceder desde Help > Find Examples.

    Se puede modificar la ventana que muestra los ejemplos en Tools > Prepare ExampleVIs for NI Example Finder.

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 33

  • 34

    LabVIEW

    1.9 Ejercicios1. Buscar los cinco errores que impiden la ejecucin en la siguiente figura:

    Figura 1-43. Ejercicio 1

    2. Obtener mediante las funciones del men Programming > Numeric el nmero

    ureo y su inverso: .. Ejecutar el programa con Highlight Exe-

    cution activado.

    3. Usar el programa del ejercicio anterior como un subVI de uno nuevo para verifi-

    car si .

    4. Depura el siguiente programa para encontrar y solucionar el motivo por el que nofunciona correctamente.

    Figura 1-44. Ejercicio 4

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 34

  • 1.10 BibliografaNational Instruments, AN 159: LabVIEW Custom Controls, Indicators, and Type Defi-

    nitions, 2004.

    National Instruments, AN 168: LabVIEW Performance and Memory Management,2004.

    National Instruments, LabVIEW Basics I Course Manual, 2000.

    National Instruments, LabVIEW Upgrade Notes Version 8.0, 2005.

    National Instruments, LabVIEW Upgrade Notes Version 8.2, 2006.

    National Instruments, LabVIEW User Manual, 2001.

    Rick Bitter et alt., LabVIEW Advanced Programming Techniques, CRC Press LLC,2001

    35

    Introduccin a LabVIEW. Entorno

    LabView-cap_01.qxp 22/12/2006 14:16 Pgina 35

  • LabView-cap_01.qxp 22/12/2006 14:16 Pgina 36

  • 37

    Captulo 2

    EstructurasLas instrucciones de control permiten a un programa ejecutar un cdigo de forma con-dicional o repetirlo cierto nmero de veces.

    En LabVIEW estas instrucciones son estructuras que encierran en su interior el cdigoal que afectan. Se encuentran en el men Programming > Structures.

    Figura 2-1. Estructuras

    A continuacin se va a tratar cada una de las estructuras que aparecen en la Figura 2-1.

    2.1 SEQUENCEEn los lenguajes tradicionales basados en texto, el orden de ejecucin se correspondecon el orden en que las instrucciones estn escritas. Ya se ha visto que el sistema de eje-cucin de LabVIEW sigue el modelo de flujo de datos (dataflow), un nodo necesitatener disponibles los datos en todas sus entradas para ejecutarse, pero si hay dos nodosen condicin de ejecutarse no se podr determinar, en principio, el orden de ejecucin;esto en la mayora de los casos no ser un problema, es ms, ser incluso beneficioso.No obstante puede haber ocasiones en que haya nodos independientes, ambos en situa-cin de ejecutarse, pero se necesita fijar el orden de los mismos.

    LabView-cap_02.qxp 22/12/2006 16:24 Pgina 37

  • 38

    LabVIEW

    Las estructuras de tipo SEQUENCE sirven precisamente para esto: ordenan el orden deejecucin del cdigo que est en su interior.

    Su diseo recuerda a los fotogramas de una pelcula. En una pelcula los fotogramascolocados al principio se visualizarn antes que los siguientes, con un orden secuencial.Las estructuras SEQUENCE tambin tienen fotogramas o frames ordenados, en el inte-rior de cada frame se situar una seccin de cdigo. La ejecucin comenzar por el pri-mer frame y cuando acabe se pasar a ejecutar el siguiente, y as sucesivamente.

    Hay dos tipos de SEQUENCE: STACKED SEQUENCE y FLAT SEQUENCE.

    La primera era la nica disponible en versiones ms antiguas de LabVIEW, tiene unmen en la parte superior donde se indica la numeracin del frame que se muestra, elnmero total de frames que contiene y adems da la opcin de situarse en otro. En lafigura 2-2 se muestran superpuestos los dos frames de la misma estructura.

    Figura 2-2. Frames de una secuencia

    El men contextual puede desplegarse presionando con el botn secundario del ratnen el borde de la estructura, este men permite crear frames antes y despus del mos-trado, adems de otras opciones. La opcin Sequence Local crea unos tneles entre unframe y los dems para compartir datos, en uno de ellos se escribir un valor (simboli-zado con una flecha hacia el exterior del frame) y en los posteriores podr leerse (conuna flecha hacia el interior), no se podr leer en frames anteriores al de escritura.

    Figura 2-3. Sequence Local: permite compartir datos entre frames

    LabView-cap_02.qxp 22/12/2006 16:24 Pgina 38

  • 39

    Estructuras

    Tambin pueden pasarse y recibirse datos desde una estructura SEQUENCE al exteriora travs de tneles, representados mediante un pequeo cuadrado en el borde de laestructura. Cuando hay un dato de salida, slo un frame de la estructura puede escri-bir valores en l.

    FLAT SEQUENCE funciona de igual forma, slo que es ms visual, los frames se venuno a continuacin del siguiente, el orden de ejecucin ser de izquierda a derecha. Eneste caso no hay Sequence Local y los datos podrn cablearse directamente desde unframe a otro a travs de tneles. El men contextual tambin ser el que permita aa-dir y eliminar frames, tambin se puede cambiar de un tipo de SEQUENCE a otro deforma automtica.

    En la figura 2-4 puede verse una estructura FLAT SEQUENCE con dos frames, en elprimero se genera un nmero aleatorio y se pasa al segundo frame a travs de un tnel.

    Figura 2-4. FLAT SEQUENCE con dos frames

    2.2 CASELa estructura CASE es el equivalente a varias de los lenguajes basados en texto: IF,SWITCH y TRY. Su utilidad es ejecutar un cdigo u otro dependiendo de una condicin.

    Al igual que una estructura SEQUENCE, en este caso tambin se tiene un men en laparte superior donde se puede elegir el subdiagrama que se muestra. En este men sepuede ver la condicin para ejecutar el cdigo del subdiagrama correspondiente. En laFigura 2-5 se muestra un CASE con dos subdiagramas, uno se ejecutar cuando la con-dicin que se evala sea FALSE y otro cuando sea TRUE.

    Figura 2-5. Estructura CASE

    El terminal que aparece en el lado izquierdo marcado con el smbolo ? es llamadoselector. El valor que llega a este selector es la condicin que se evala para seleccionarel subdiagrama a ejecutar. Si el tipo de datos que se conecta al selector del CASE es boo-leano, ste actuar como una sentencia IFTHENELSE de un lenguaje de texto tradi-cional. Tambin pueden conectarse otros tipos de datos, en este caso actuar como un

    LabView-cap_02.qxp 22/12/2006 16:24 Pgina 39

  • SWITCHCASE. Pueden conectarse al selector datos booleanos, numricos (incluidosenum y ring), strings y clusters de error. En la Figura 2-6 se pueden ver todos estoscasos.

    Figura 2-6. Tipos de datos que son vlidos en un CASE

    Para un selector booleano slo se tendrn dos casos: verdadero o falso. Para numricosla condicin ser que el dato del selector sea igual al mostrado en el men del CASE,para datos enum o ring se puede escribir el nombre del tem en lugar del valor num-rico. Con los strings sucede lo mismo que con los numricos enum o ring, el valor mos-trado en el men aparecer como un texto encerrado en comillas dobles. En el caso deconectar al selector un cluster de error cambiar el color del borde de la estructura, lossubdiagramas se ejecutarn dependiendo de si el selector marca un error o no.

    Cuando el selector se conecta a un string o a un dato numrico es obligatorio teneralgn caso que se ejecute por defecto, es decir, debe haber un caso que se ejecute cuan-do en el selector haya un valor que no est asignado explcitamente a algn subdiagra-ma. Para hacer que un subdiagrama sea ejecutado por defecto debe seleccionarse MakeThis The Default Case en el men contextual.

    En los numricos adems se puede asignar una lista de valores escribindolos separa-dos por comas o tambin se puede especificar un rango de valores, por ejemplo si sedesea ejecutar el mismo cdigo cuando la entrada tiene el valor 4, 5, 6, 7 y 8, en el mendel CASE se escribir 4..8.

    Se pueden pasar datos a los subdiagramas del CASE a travs de tneles. En el caso dedatos de salida, todos los subdiagramas deben proporcionar un valor, hasta que esto noocurra LabVIEW indicar el error missing assignament to tunnel y aparecer el tnelcon el interior vaco, como se muestra en la parte derecha de la Figura 2-7. Tambinexiste la opcin de marcar sobre el tnel Use Default If Unwired, con esto se consigueque se asigne el valor por defecto para todos aquellos casos que no se ha cableado unvalor en el tnel de salida.

    Figura 2-7. Error en un CASE: tnel vaco

    40

    LabVIEW

    LabView-cap_02.qxp 22/12/2006 16:24 Pgina 40

  • Por ltimo tambin hay que decir que se puede cambiar el orden de los subdiagramasdesde la opcin Rearrange Cases... del men contextual.

    2.3 WHILEEl bucle WHILE repetir el cdigo de su interior hasta que se cumpla una condicin, lacual es evaluada en cada iteracin.

    En la figura 2-8 puede verse el aspecto de este bucle, en l se aprecian dos terminales:

    El terminal de iteracin es el cuadrado azul con el smbolo i. El valor de este ter-minal es un nmero entero que ir aumentando en una unidad por cada iteracindel bucle, empezando a contar desde cero.

    La condicin de stop es el terminal verde de la esquina inferior derecha de la ima-gen. A este terminal se podr conectar bien un valor booleano, bien un cluster deerror. A travs del men contextual podr elegirse para los booleanos que el buclese detenga cuando el valor sea True (Stop if True) o False (Continue if True), en elcaso de los cluster de error sucede algo parecido con Stop on Error y Continuewhile Error.

    Figura 2-8. Estructura WHILE

    Otra de las opciones que muestra el men contextual es Add Shift Register. Esta herra-mienta aade dos terminales a cada lado de la estructura, estos terminales sirven paratransferir un valor desde una iteracin del bucle a la siguiente. Los valores se pasarna la siguiente iteracin en el terminal de la derecha y se leern en el de la izquierda. Sise conecta un valor al terminal de la izquierda en el exterior de la estructura, ste serel valor inicial que circular por ese cable en la primera iteracin.

    Figura 2-9. (a) Shift register en un bucle WHILE. (b) Varios shift registers

    En la figura 2-9 (a) se muestra el uso de un Shift register. En la primera iteracin se leerel valor 10 del terminal de la izquierda, se le sumar 1 y se escribir en el terminal dela derecha el valor 11. Este valor ser el ledo en la siguiente iteracin en el terminal de la

    41

    Estructuras

    LabView-cap_02.qxp 22/12/2006 16:24 Pgina 41

  • 42

    LabVIEW

    izquierda, al que se le volver a sumar 1 y as sucesivamente hasta que se cumpla lacondicin de parada del bucle, que en este caso es que el nmero sea mayor o igual aquince. Este proceso puede comprobarse ejecutando el cdigo de la figura con la opcinde Highlight Execution activada.

    El shift register de la izquierda puede extenderse para mostrar ms terminales, el ter-minal superior tendr el valor que se escribi en la derecha en la iteracin anterior, elsiguiente terminal tendr el valor que se escribi en la derecha dos iteraciones antes yas sucesivamente.

    En el ejemplo de la figura 2-9 (b) se puede ver un ejemplo del uso de varios shift regis-ter. La Tabla 1 muestra los valores que tendrn cada uno de los terminales en cada ite-racin.

    Tabla 1 - Valores de los shift register en cada iteracin

    Iteracin Shift izq arriba Shift izq centro Shift izq abajo Shift derecha

    1 1 0 0 1+0+0=1

    2 1 1 0 1+1+0=2

    3 2 1 1 2+1+1=4

    4 4 2 1 4+2+1=7

    5 7 4 2 7+4+2=13

    6 13 7 4 13+7+4=24

    Hay una utilidad que funciona de igual forma que un shift register, es el FeedbackNode. ste consta de dos terminales:

    El terminal inicializador permite dar un valor inicial al nodo, es equivalente aconectar un valor al terminal izquierdo de shift register. Este terminal se colocasiempre en el borde izquierdo de la estructura a la misma altura que el FeedbackNode.

    El Feedback Node es el otro terminal, tiene forma de flecha. En el extremo derechose le conectar la salida, cuyo valor ser ledo por el extremo izquierdo en lasiguiente iteracin. En la primera iteracin el valor ledo por el extremo izquierdoser el conectado al terminal inicializador. Lgicamente siempre se ejecuta prime-ro la lectura y despus la escritura.

    Figura 2-10. Feedback Node

    LabView-cap_02.qxp 22/12/2006 16:24 Pgina 42

  • El cdigo de la figura 2-10 ilustra el uso del Feedback Node. El programa es igual al dela figura 2-9.

    En el men Tools > Options > Block Diagram se tiene la opcin de insertar automti-camente Feedback Nodes dentro de los bucles cuando sea necesario.

    Al igual que en otras estructuras, los datos que entren y salgan de una estructuraWHILE lo harn a travs de tneles. Una opcin muy interesante de los tneles en losbucles es el Autoindexing, que se puede habilitar a travs del men contextual deltnel cuando se quiera trabajar con arrays. Cuando se cablea un array desde el exterioral interior de un bucle y se habilita el autoindexing, los valores ledos en ese terminalen el interior del bucle sern los elementos que componen el array, uno por cada itera-cin. Cuando el autoindexing est en una salida del bucle ocurre lo contrario: se cons-truir un array cuyos elementos sern los generados en cada iteracin.

    En la figura 2-11 puede verse un programa parecido al anterior. En el borde derechopueden verse tres terminales, el superior es un tnel, el siguiente un shift register y elinferior una salida indexada. El valor de los dos primeros ser el generado por el pro-grama en su ltima iteracin (15), mientras que el valor en el ltimo terminal ser unalista ordenada de todos los nmeros generados en cada iteracin (11, 12, 13, 14 y 15).

    Figura 2-11. Ejemplo de tnel, shift register y autoindexing

    2.4 FOREl bucle FOR es muy parecido al WHILE, tambin repite el cdigo de su interior unnmero de veces, pero a diferencia del anterior este nmero es fijado a priori y nopuede cambiarse una vez empiece a ejecutarse.

    Consta de dos terminales numricos:

    El terminal de iteracin se sita igual que en el bucle WHILE, est en el interior dela estructura y se va incrementando en una unidad por cada iteracin empezandodesde cero.

    El terminal de cuenta est colocado en la esquina superior izquierda de la estruc-tura simbolizado con una N. En l se conectar un valor numrico que ser elque fije el nmero de repeticiones del bucle.

    Todo lo dicho en la explicacin del bucle WHILE respecto a los shift register, losFeedback Nodes y la salida indexada tambin es vlido para el FOR. Tanto en el mencontextual del WHILE como del FOR se tiene la opcin de sustituir uno por el otro.

    43

    Estructuras

    LabView-cap_02.qxp 22/12/2006 16:24 Pgina 43

  • 44

    LabVIEW

    Figura 2-12. Estructura FOR

    Los tneles indexados son la opcin por defecto en los bucles FOR. Cuando se cableaun array de forma indexada como entrada puede obviarse el terminal de cuenta por-que se toma el tamao del array como el nmero de veces que se ha de repetir el bucle.

    2.5 EVENTLa estructura EVENT fue introducida por primera vez en la versin 6.1 de LabVIEW.Es una estructura muy til en VIs con los que interacta el usuario porque mejora laeficiencia del programa.

    Al igual que la estructura CASE tienen varios subdiagramas y un men en la partesuperior para cambiar el que se muestra. En este men tambin se tiene una condicinque hace que el cdigo del subdiagrama correspondiente se ejecute. La diferencia conCASE es que EVENT detiene la ejecucin del hilo del programa hasta que se da esa con-dicin, es decir, congela el programa hasta que ocurre un evento.

    En la esquina superior izquierda tiene un terminal llamado Event Timeout que se usaen el evento por defecto: el Timeout. El cdigo del diagrama para el evento timeout seejecutar cuando pase el nmero de milisegundos indicados en el terminal EventTimeout.

    Figura 2-13. Estructura EVENT

    Para aadir ms subdiagramas hay que proceder de igual manera que con CASE, esdecir, a travs del men contextual. Cada diagrama debe tener asociados uno o varioseventos, stos se configuran desde la ventana Edit Events, como se puede ver en lafigura 2-14.

    En esta ventana primero se muestra el nmero del diagrama (Events Handled for Case)y a continuacin la lista de los eventos que pueden dar lugar a la ejecucin del diagra-ma (Event Specifiers), para aadir o eliminar eventos se usan los botones de la izquier-da. Para definir un evento primero hay que especificar su fuente en Event Sources, loseventos de las secciones Application y This VI estn predefinidos y son acciones tpi-cas, como cerrar la ventana, presionar una tecla, etc. La fuente de eventos Dynamic slo

    LabView-cap_02.qxp 22/12/2006 16:24 Pgina 44

  • 45

    Estructuras

    est disponible cuando se activa Show Dynamic Event Terminals y se cablean conve-nientemente, para ms informacin se puede consultar el tema dedicado a programa-cin multihilo; Panes se activa cuando el Panel Frontal se divide en varias partes,Splitters slo se activa cuando hay uno de estos elementos en el Panel Frontal y final-mente Controls muestra una lista de todos los controles que hay en el VI. En Events sepodr elegir el evento concreto asociado a la fuente seleccionada.

    Figura 2-14. Ventana de configuracin de eventos

    En la parte izquierda de cada subdiagrama de la estructura EVENT se sita Event DataNode que aporta informacin sobre la fuente del evento, por ejemplo, una referencia alcontrol, su valor actual y el anterior al evento, etc.

    Si se observa con detalle la figura 2-14 puede verse que hay eventos marcados con unaflecha roja que acaban en una interrogacin y otros con el mismo nombre pero con unaflecha verde y sin interrogacin. Los que tienen la flecha roja son llamados filtros. Losfiltros se ejecutan antes que la accin asociada al evento, pudiendo, entre otras cosas,desactivarlo. Cuando se selecciona un filter event aparecer un nodo en la parte dere-cha del diagrama llamado Event Filter Node.

    El ejemplo de la figura 2-15 muestra el uso de los filter events para descartar un even-to, en este caso sirve para impedir que el usuario cierre el Panel Frontal del VI.

    LabView-cap_02.qxp 22/12/2006 16:24 Pgina 45

  • Figura 2-15. Ejemplo de uso de filtros en un evento

    Finalmente hay que nombrar algunas recomendaciones que hace National Instrumentssobre el uso de la estructura EVENT:

    No usar un EVENT dentro de otro.

    Si un EVENT se inserta dentro de un WHILE y ste acaba mediante un botn (unbotn de stop), se debe insertar el botn dentro del subdiagrama asociado al cam-bio de valor de dicho botn.

    Los cambios de valor en controles de forma programada no generan eventos (eneventos registrados de forma esttica), slo se generan cuando se realiza el cambiode valor mediante la interfaz de usuario.

    En esta seccin se han estudiado nicamente los eventos estticos pero hay dos tiposms: eventos dinmicos y definidos por el usuario. stos se explicarn en el tema sobreprogramacin multihilo.

    2.6 TIMED LOOP y TIMED SEQUENCETIMED LOOP es una estructura que apareci en la versin 7.1. Su funcionamiento con-siste en repetir el cdigo de su interior con unas determinadas especificaciones de tiem-po o hasta que se cumpla cierta condicin, por todo ello es muy usado en aplicacionesde tiempo real.

    Su dibujo recuerda a un WHILE circundado por un halo azul, aunque a diferencia deste, no es necesario establecer una condicin de parada o continuacin. Tambin pre-senta varios nodos, stos son (de izquierda a derecha):

    Input: permite configurar el funcionamiento del bucle por medio de un asistente ocableando los datos. Este nodo puede extenderse para cablear ms datos de losmostrados.

    Left Data: proporciona informacin sobre la iteracin anterior, por ejemplo el tiem-po que ha tardado (Iteration Duration), si le ha dado tiempo a acabar la tarea antesde que empiece una nueva ejecucin (Finished Late? [i-1]) y otras.

    Right Data: se trata de una configuracin dinmica, permite modificar los parme-tros de configuracin de la estructura para la siguiente iteracin. Los parmetrosson prcticamente los mismos que en el Input Node, excepto el nombre del bucley el origen del reloj.

    46

    LabVIEW

    LabView-cap_02.qxp 22/12/2006 16:24 Pgina 46

  • 47

    Estructuras

    Output: al igual que el Left Data Node, el Output Node proporciona informa-cin, pero en este caso la informacin se genera despus de que el bucle se hayadetenido.

    Figura 2-16. Estructura TIMED LOOP

    La configuracin puede realizarse cableando los valores adecuados en el Input Node omediante los parmetros que aparecen haciendo doble clic sobre el primer y tercernodo.

    Figura 2-17. Ventana de configuracin del TIMED LOOP

    Timing Source es la fuente de reloj, cuando el programa se ejecute sobre un PC la fuen-te ser un reloj de 1 kHz del sistema operativo; si la ejecucin se realiza en otros dispo-sitivos puede haber otras fuentes disponibles. Para seleccionar la fuente desde el pro-grama puede usarse el VI Create Timing Source, en la paleta Programming > Structures

    LabView-cap_02.qxp 22/12/2006 16:24 Pgina 47

  • 48

    LabVIEW

    > Timed Structures. Los otros VIs de esta paleta permiten abortar programadamente unTIMED LOOP (Stop Timed Structure), sincronizarlos (Syncronize Timed StructureStarts) o controlar el comienzo de cada uno (Building Timing Source Hierarchy).

    Figura 2-18. Estructuras temporizadas

    El periodo ser el tiempo que pase entre el comienzo de dos iteraciones y el offset eltiempo que el bucle espera antes de empezar la primera ejecucin. Deadline es el tiem-po mximo con que cuenta el bucle para ejecutar el cdigo en su interior, en caso de quela ejecucin lleve ms tiempo se avisar con Finished Late? [i-1]. Los modos de Actionon Late Iterations configuran la forma en que el bucle responde cuando la ejecucinlleva ms tiempo del especificado, las opciones son autoexplicativas, bsicamente sir-ven para alinear el comienzo de las ejecuciones y saltar iteraciones.

    Para ejecutarse, cada TIMED LOOP crea su propio sistema de ejecucin que contieneun nico hilo (ver captulo 10 dedicado a multihilo). La prioridad se refiere a la prefe-rencia de ejecucin entre un bucle y los dems. Los valores ms altos correspondern aTIMED LOOPS con mayor prioridad. Cuando dos o ms bucles vayan a empezar suejecucin en un instante determinado, la prioridad de cada bucle determinar el orden,en caso de que haya varios con el mismo nivel de prioridad, el orden ser por el demenor tiempo invertido en la ejecucin.

    Tambin se pueden aadir frames a un TIMED LOOP mediante el men contextual delmismo modo que se haca con un SEQUENCE, con esto un TIMED LOOP podr ejecu-tar varios subdiagramas secuencialmente, cada uno con sus propias especificacionestemporales.

    Figura 2-19. TIMED LOOP con frames

    LabView-cap_02.qxp 22/12/2006 16:24 Pgina 48

  • En este caso el Right Data Node de un frame cambiar los parmetros del siguientesubdiagrama a ejecutarse en lugar de la siguiente iteracin y el Left Data Node propor-cionar informacin sobre el subdiagrama anterior.

    El Left Node del primer subdiagrama y el Right Node del ltimo proporcionan msparmetros que el resto debido a que pueden afectar al siguiente/anterior subdiagra-ma o a toda la estructura.

    En el mismo men, junto a TIMED LOOP, se encuentra una estructura parecida llama-da TIMED SEQUENCE. La principal diferencia con el TIMED LOOP es que en este casono se repite la ejecucin de los subdiagramas, por lo tanto no se podr especificar unperiodo, pero an as s puede tener otras caractersticas temporales como offset, dea-dline, etc.

    Figura 2-20. Estructura TIMED SEQUENCE

    2.7 DISABLE STRUCTUREEstas estructuras tambin han aparecido recientemente, se usaron por primera vez enla versin 8.0. Sirven para comentar el cdigo, por lo que son muy tiles en la depura-cin de programas. Hay dos tipos de estructuras de deshabilitacin: la incondicional yla condicional.

    La incondicional es una estructura que como CASE, STACKED SEQUENCE o EVENTse compone de varios subdiagramas. Uno de ellos estar habilitado y el resto estarndeshabilitados, lgicamente el habilitado ser el nico que se ejecute y el resto no lle-garn a compilarse. Para cambiar el subdiagrama habilitado hay que hacer uso delmen contextual de la estructura.

    Figura 2-21. Estructura DISABLE

    49

    Estructuras

    LabView-cap_02.qxp 22/12/2006 16:24 Pgina 49

  • 50

    LabVIEW

    La condicional funciona de la misma forma que la anterior, slo que el diagrama habi-litado se selecciona de forma automtica dependiendo del valor de unos smbolos aso-ciados al proyecto. Algunos smbolos predefinidos son OS y CPU.

    Tambin se pueden definir nuevos smbolos en la ventana de propiedades del proyec-to correspondiente, como muestra la figura 2-22.

    Figura 2-22. Ventana para crear smbolos

    Una vez creados los smbolos pertinentes hay que editar la condicin de la estructuracon Edit Condition For This Subdiagram... del men contextual. Se puede aadir msde una condicin con el botn +.

    Figura 2-23. Configuracin de la condicin DISABLE

    2.8 FORMULA NODELa estructura FORMULA NODE puede encontrarse tanto en el men Programming >Structures como en Mathematics > Scripts & Formulas.

    LabView-cap_02.qxp 22/12/2006 16:24 Pgina 50

  • A diferencia de las anterio