Читать книгу LabVIEW: Entorno gráfico de programación - José Pelegrí Sebastià - Страница 7

Оглавление

Capítulo 1

Introducción a LabVIEW. Entorno

LabVIEW es el acrónimo de Laboratory Virtual Instrument Engineering Workbech. Es un lenguaje y, a la vez, un entorno de programación gráfica en el que se pueden crear aplicaciones de una forma rápida y sencilla.

National Instruments, la empresa desarrolladora y propietaria de LabVIEW, se fundó en 1976 en Austin, Texas. Sus primeros productos eran dispositivos para el bus de instrumentación GPIB. En abril de 1983 comenzó el desarrollo de lo que sería su producto estrella: LabVIEW, que vería la luz en octubre de 1986 con el lanzamiento de LabVIEW 1.0 para Macintosh (los ordenadores más populares en aquella época y que ya disponían de interfaz gráfica) y en 1990 la versión 2. Para Windows habría que esperar a septiembre de 1992. Los principales hitos de LabVIEW pueden verse en la tabla 1-1.

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
Mayo de 2005 LabVIEW DSP
Junio de 2005 LabVIEW Embedded
Octubre de 2005 LabVIEW 8
Agosto de 2006 LabVIEW 8.20 (Edición especial por el 20° aniversario)
Agosto de 2007 LabVIEW 8.5
Agosto de 2008 LabVIEW 8.6
Agosto de 2009 LabVIEW 2009
Agosto de 2010 LabVIEW 2010

Tabla 1-1. Evolución de las diferentes versiones de LabVIEW.

Como puede verse, en los últimos años se han liberado las nuevas versiones de LabVIEW en agosto, coincidiendo con el evento NI Week. Además, es habitual que aparezca una revisión menor a los 6 meses de la versión principal a modo de Service Pack que corrige bugs.

1.1. Entorno

LabVIEW es una herramienta de programación gráfica. Originalmente este programa estaba orientado para aplicaciones de control de equipos electrónicos usados en el desarrollo de sistemas de instrumentación, lo que se conoce como instrumentación virtual. Por este motivo los programas creados en LabVIEW se guardarán en ficheros llamados VI (Virtual Instrument), y con la misma extensión. De una forma similar, también se da nombre a sus dos ventanas principales: un instrumento real tendrá un Panel Frontal donde estarán sus botones, pantallas, etc. y una circuitería interna. En LabVIEW estas partes reciben el nombre de Panel 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 programación y suele tener fondo blanco.

El Panel Frontal y el Diagrama de Bloques están conectados a través de los terminales (elementos que sirven como entradas o salidas de datos). De la misma forma que un indicador luminoso de la carátula de un instrumento está representado como un diodo en la circuitería interna. En un programa en LabVIEW ese mismo indicador luminoso estará representado como una entrada de tipo booleano en el Diagrama de Bloques, sobre esta entrada el programa o el usuario podrá escribir un valor.

En la figura 1-1 pueden verse las dos ventanas mencionadas antes. En primer término está el Panel Frontal, con fondo gris y dos terminales: uno numérico llamado Meter y otro que simboliza un interruptor, llamado Boolean. En el Diagrama de Bloques también aparecen estos dos elementos bajo los mismos nombres y representados con dos iconos. Una vez que se ejecute este programa, desde el código se escribirá y leerá de estos iconos.


Figura 1-1. Panel Frontal y Diagrama de Bloques

En la parte superior de estas ventanas se sitúa una barra con varias herramientas. En el Diagrama de Bloques esta barra tiene algunas opciones más, como aparece en la figura 1-2.


Figura 1-2. Barra de herramientas

El primer grupo de herramientas sirve para controlar la ejecución de un programa en LabVIEW. El primer botón indica si hay errores en el programa (flecha rota) y, cuando no los hay (flecha completa como en la imagen), ejecuta una vez el programa. El segundo botón ejecuta de forma continua el programa, como regla general este botón no debe usarse, en su lugar se empleará un bucle en el programa. El tercer botón aborta la ejecución y el cuarto permite realizar una pausa o reanudar la ejecución.

El segundo grupo de botones sirve para ayudar a su depuración. El primer botón es Highlight Execution, una de las herramientas más útiles para depurar, ralentiza la ejecución permitiendo ver el camino que siguen los datos en el programa. El siguiente, Retain Wire Values permite que, al colocar un probe, se obtenga el valor anterior. Los tres siguientes se utilizan para ejecutar el programa paso a paso.

El menú desplegable permite formatear textos; es recomendable usar los formatos predefinidos como Application Font o System Font.

En el siguiente grupo se usan los tres primeros para alinear, distribuir, controlar el tamaño, agrupar y ordenar objetos. El último botón se utiliza para realizar una ordenación automática de los elementos en el Diagrama de Bloques; también se pueden ordenar sólo algunos elementos seleccionándolos o excluir una determinada estructura de la ordenación desde su menú contextual.

El primer elemento, una caja de texto, permite hacer una búsqueda, mientras el segundo abre la ayuda contextual.

En el lateral derecho tanto del Panel Frontal como del Diagrama de Bloques aparece el icono que representa al VI, . Tiene un menú contextual que permite acceder a diversas características que serán tratadas más adelante.

Para colocar funciones en el Diagrama de Bloques y objetos en el Panel Frontal se tienen las paletas o menús flotantes, llamadas paleta de funciones y de controles respectivamente. Además, también se tiene la paleta de herramientas que consta de diferentes utilidades. En la figura 1-3 puede verse un aspecto de estas tres paletas (el aspecto puede modificarse desde Tools > Options > Controls/Functions Palettes).


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

Las paletas de funciones y controles se despliegan haciendo clic con el botón secundario del ratón sobre una zona vacía del Diagrama de Bloques o del Panel Frontal. También pueden dejarse fijas presionando el clip () de la esquina superior izquierda. Otra opción muy útil es el botón Search de la esquina superior derecha, que sirve para buscar funciones o controles por su nombre. Estos menús se pueden personalizar desde Tools > Advanced > Edit Palette Set.

Otra ventana muy útil es la de ayuda contextual. Puede abrirse en Help > Show Context Help o desde el atajo CTRL+H. Esta ventana muestra información del objeto que esté situado bajo el cursor, ya sea una función, un VI, un control o un indicador. Además, puede aparecer un enlace a la página de la ayuda relacionada con ese objeto.


Figura 1-4. Ventana de ayuda contextual.

A continuación se muestra la tabla 1-2 con los atajos de teclado más útiles de LabVIEW. Pueden personalizarse en Tools > Options > Menu Shortcuts. Como recomendación personal, podemos decir que tenemos personalizado un atajo de teclado para abrir la paleta de herramientas.

Combinación de teclas Función
CTRL + R Ejecuta el programa
CTRL + . Aborta la ejecución
CTRL + E Conmuta entre la dos ventanas principales
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 acción
CTRL + SHIFT + Z Rehacer
CTRL + S Guarda el VI
CTRL + U Ordena de forma automática los objetos del programa
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 dirección

Tabla 1-2. Atajos de teclado más útiles.

1.2. Menús (paletas)

1.2.1. Menú de herramientas

Mediante la paleta de herramientas se puede seleccionar el instrumento que se desea usar; esto hace cambiar el tipo de cursor del ratón. En la figura 1-5 se puede ver la paleta de herramientas con 11 botones.


Figura 1-5. Paleta de herramientas

Automatic Tool Selection . Si está activado sirve para que se seleccione la herramienta de forma automática dependiendo del elemento sobre el que se sitúe el cursor.

Operate Value . Sería el cursor disponible cuando el VI está ejecutándose, sirve principalmente para cambiar valores en los controles del Panel Frontal.

Position/Size/Select . Como su nombre indica, sirve para posicionar objetos, tanto en el Diagrama de Bloques como en el Panel Frontal. También sirve para cambiar el tamaño y seleccionar elementos.

Edit Text . Cambia el cursor para poder escribir texto. Se puede usar, entre otras cosas, para escribir comentarios en el Diagrama de Bloques o dar nombre a controles e indicadores.

Connect Wire . Es la herramienta que sirve para cablear. Uniendo unos elementos con otros por cables, los datos fluirán a través de ellos. Si los cables aparecen en color gris y de forma discontinua, significa que el cable está roto (hay un error): el tipo de datos es incompatible o los terminales no son los adecuados. El color y grosor del cable indicará el tipo de datos. Además, desde la versión 2010 se les puede poner etiquetas para indicar su función o poner un comentario.

Object Shortcut Menu . Despliega el menú contextual asociado a un elemento. Equivale a hacer clic con el botón secundario del ratón.

Scroll Window . Sirve para mover el contenido de las ventanas del mismo modo que si se usaran las barras de desplazamiento laterales.

Set/Clear Breakpoint . Crea o borra un punto de ruptura en un determinado elemento (función, VI, estructura o cable). Cuando la ejecución llega a ese punto se detiene; más tarde puede reanudarse mediante el botón de Pause.

Probe Data . Crea un probe en un cable. Un probe es una ventana flotante que muestra 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 de fondo; ambos pueden ser asignados de forma independiente. Uno de los colores disponibles está marcado mediante una T en la esquina superior derecha; se trata del color transparente.


Figura 1-6. Colores.

1.2.2. Controles

El menú que aparece en el Panel Frontal es el menú de controles, y en él se pueden seleccionar los terminales que servirán para interactuar con el usuario.

Los terminales se dividen en controles e indicadores, aunque a veces se les suele llamar a todos genéricamente controles. Los controles propiamente dichos son las entradas de datos, y los indicadores las salidas. Están clasificados según su estilo en varios submenús: Modern, System y Classic. Dentro de cada submenú hay otros menús que clasifican los controles por el tipo de datos. Los más usados son los que sirven para dibujar gráficas y los de la primera fila del submenú Modern. Éstos, de izquierda a derecha, corresponden a datos de tipo numérico, booleano, textos y tipos compuestos.

Para usar los controles hay que seleccionar un objeto y llevarlo al lugar deseado del Panel Frontal.


Figura 1-7. Paleta de controles.

Los indicadores para gráficas merecen un trato aparte debido a su importancia. En la paleta de gráficas hay varios tipos, siendo los más importantes Waveform Chart y Waveform Graph.


Figura 1-8. Paleta de gráficos.

Los indicadores Waveform Chart se diferencian de los Waveform Graph en que estos últimos dibujan totalmente la gráfica cuando llegan nuevos datos; sin embargo, los Waveform Chart anexan el nuevo dato a los existentes. El número de datos que se muestran puede ajustarse escribiendo sobre los números que aparecen en los ejes o dejar que LabVIEW los ajuste automáticamente (Auto-Scale). En los Waveform Chart también se puede ajustar el número máximo de puntos que se guardan a través de la opción Chart History Length del menú contextual. Mediante los menús contextuales de los elementos de las gráficas se pueden modificar muchos otros aspectos como el color, interpolación, elementos a mostrar, etc.


Figura 1-9. Comparación entre un Waveform Graph y un Waveform Chart.

En la imagen de la figura 1-9 pueden verse ambos indicadores y sus principales diferencias. El código de la parte izquierda repite un bucle 50 veces. En este bucle se genera un número aleatorio por cada iteración, después se crea un arreglo o array con los 50 números y se muestran en un Waveform Graph y un Waveform Chart. En el primero sólo se dibujan 50 puntos, y éstos se sobrescriben cada vez que se ejecuta el programa. En el segundo, los datos nuevos se van colocando después de los antiguos (véase la numeración del eje X). El resultado se muestra después de dos ejecuciones (100 datos generados). En conclusión: puede decirse que el Waveform Chart tiene memoria y el Waveform Graph no. Tanto este programa como el resto de los que aparecen en este libro pueden consultarse desde el CD adjunto.

Una práctica recomendable en todos los controles e indicadores es añadirles un texto que indique la función que realizan en la ventana que aparece al seleccionar en el menú contextual Description and Tip. Este texto se mostrará en la ventana de ayuda contextual cuando el usuario coloque el ratón 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 o Label que sirve para identificar el elemento tanto en el Panel Frontal como en el Diagrama de Bloques, así como en variables, propiedades, referencias o métodos que dependan de ese control. También existe otro texto llamado Caption que sólo puede ser visible en el Panel Frontal. Aunque no es necesario, es conveniente que cada control tenga un Label diferente que describa su función. Si es necesario, en el Panel Frontal se puede usar Caption y tip para presentar una descripción más extensa. Se puede hacer visible o invisible un Label o Caption presionando con el botón derecho sobre el control en el Panel Frontal para ir al menú contextual y después a Visible Items.

Todos los controles e indicadores tienen elementos comunes en su menú contextual, como hacer que tengan un valor por defecto (Data Operations > Make Current Value Default), hacer que sean visibles o no (desde el Diagrama de Bloques Hide/Show Control), etc. Otros elementos del menú dependen del tipo de control, como en los arrays añadir más dimensiones, en los gráficos modificar colores, fuentes, tipos de interpolación, etc.

1.2.2.1. Personalización de controles

Además de los controles disponibles en este menú, se pueden crear otros nuevos mediante la modificación de uno existente. Para ello, primero hay que colocar en el Panel Frontal un control del tipo de datos deseado y después elegir en el menú Edit > Customize Control.


Figura 1-11. Opción para modificar o crear un control

En la parte superior aparece el botón Edit Mode y Customize Mode . El primero de ellos hace que el control se comporte como si estuviera en el Panel Frontal. El segundo separará los distintos elementos que componen el control o indicador. Los controles están compuestos de pequeñas partes, por ejemplo un slide numérico tendría Label, escala, display, unidades, botones de incremento y decremento, partes cosméticas, etc. Estas partes también pueden verse y modificarse en Windows > Show Parts Window. En esta ventana se puede ajustar su tamaño y posición.

Cada parte tiene un menú contextual a través del cual se pueden importar/exportar imágenes. Las partes pueden mostrar diferentes gráficos en diferentes momentos. Por ejemplo, un control booleano tiene cuatro gráficos diferentes: estado FALSE, estado TRUE, estado Switch When Released y estado Latch When Released (mientras está presionado el botón). Cuando existe la opción de tener varios gráficos, el menú contextual tendrá la opción Picture Item para seleccionar uno de ellos.


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

Cuando se coloca un control personalizado en un Panel Frontal no existe ningún vínculo entre el fichero donde el control está definido (*.ctl) y sus instancias empleadas en cada VI donde es usado, se trata de copias independientes. Si una instancia se modifica no afecta al resto.

Las definiciones de tipos y definiciones de tipos estrictos (Type Def. y Strict Type Def.) se usan para enlazar todas las instancias de un control o indicador a un mismo fichero *.ctl. De esta forma, al modificar el fichero se modifican todas las instancias. Se puede elegir el tipo cuando se crea el control mediante una lista desplegable en la barra de herramientas junto al botón Edit/Customize Mode.

Las Type Definitions definen el tipo de datos de un control. Cuando el tipo de datos cambia, todos los controles asociados a él también cambian. En el menú contextual de una instancia se puede seleccionar Auto-Update from Type Def. para desactivar la actualización automática.

Un Strict Type Definition hace que todas las instancias sean iguales, no sólo el tipo de datos sino también en características como el rango, tamaño, color, etc. De esta forma, si se modifica la definición se actualizarían todas las instancias. Desde el menú contextual se puede eliminar el enlace entre la instancia y la definición.

1.2.3. Funciones

Esta paleta es la que se muestra al trabajar sobre el Diagrama de Bloques; con ella se puede acceder a las diferentes funciones, subVI y estructuras disponibles.


Figura 1-13. Paleta de funciones.

Al igual que con el menú de controles, en éste también hay varios submenús que se dividen dependiendo de la aplicación. Las funciones más usadas son las del submenú Programming.

El primero de los submenús de Programming es Structures. Contiene elementos que son equivalentes a las instrucciones de control de los lenguajes convencionales, es decir, son los bucles como WHILE o FOR y la estructura condicional CASE además de otras. Más adelante se dedica un capítulo completo a las estructuras.


Figura 1-14. Paleta de estructuras.

Los siguientes menús de Programming se dividen atendiendo al tipo de datos. Están los datos simples, como los numéricos, booleanos y strings (texto); además de los compuestos, como los clusters y arrays. Cada uno de estos menús tiene funciones para trabajar con esos datos.


Figura 1-15. Paletas de tipos de datos numéricos, booleanos y texto.

Los datos numéricos se dividen en enteros, de coma flotante y complejos, y dentro de cada uno puede haber distintos tamaños. Se puede cambiar de unos a otros mediante el menú contextual > Representation. Si se aplican dos números, por ejemplo un entero y otro flotante a una función, ésta cambiará automáticamente el tipo de los datos (coercion) para que así se pueda operar con ellos. Los booleanos únicamente pueden tener dos valores: Verdadero (TRUE) o Falso (FALSE), por esto son los apropiados para crear botones.

Los tipos de datos compuestos están, como su nombre indica, formados por otros datos, por lo que no se puede hablar simplemente de arrays sino que se debe decir array de números, array de booleanos, etc. Los arrays, también llamados arreglos, son listas ordenadas de valores, mientras que los cluster son un conjunto desordenado de otros datos y son equivalentes a los STRUCT del lenguaje C. Para indicar de qué están compuestos los datos, basta con arrastrar constantes de otros tipos de datos en el interior de 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 vistos hasta ahora. En la parte izquierda se representan como controles, en el centro como constantes y en la derecha como indicadores. Obsérvese el sentido de la flecha blanca en el lateral de los controles e indicadores. Ésta sirve para diferenciarlos: si apunta hacia afuera será un control (lectura de datos), y si apunta hacia dentro será un indicador (escritura de datos). Además, el color del control será indicativo del tipo de datos al que corresponde. En el capítulo 3 se estudiarán los tipos de datos en detalle.

Mediante el menú contextual puede accederse a diferentes opciones. Así para los numéricos se puede elegir su formato de representación; para los strings, la forma en que se visualizarán (normal, contraseña, hexadecimal, etc.). En los arrays se les pueden añadir dimensiones, etc.


Figura 1-17. Diferentes tipos de datos.

Al igual que con los controles, el método para usar las funciones y los VI de la paleta de funciones es ‘arrastrar y colocar’. La diferencia entre una función y un VI es que las funciones son objetos con una funcionalidad fija y sin Panel Frontal, mientras que los VI son programas hechos en LabVIEW por National Instruments u otros programadores que sí tienen Panel Frontal. Se puede acceder a un VI haciendo doble clic sobre él. Los VI disponibles están en librerías dentro del directorio %directorio de instalación de LabVIEW%\vi.lib.

Las funciones y VI generalmente operarán sobre una o varias entradas y proporcionarán una o más salidas. A las entradas se les conectará un dato del tipo requerido que puede provenir de un control, una constante o una salida de otro VI o función y a su salida se podrá conectar un indicador o una entrada de algún VI o función.


Figura 1-18. Función And.

1.2.4. Personalización de los menús

Las paletas de controles y de funciones pueden personalizarse y también se pueden añadir nuevos menús basados en VI creados por uno mismo o por otros programadores.

Cuando se crean menús nuevos, por convención, los VI y controles se guardan en %directorio de instalación de LabVIEW%\user.lib y los nuevos menús deben crearse dentro del submenú User Libraries y User Controls.

Para modificar el aspecto de las paletas hay que ir a Tools > Advanced > Edit Palette Set (Figura 1-19). Al hacerlo se abren las dos paletas principales y se puede navegar por ellas de forma normal, pero no se pueden arrastrar los VI y controles al Diagrama de Bloques y al Panel Frontal, sino que en cada VI y submenú aparece un menú desplegable con una serie de opciones que permiten añadir nuevos menús y VI, modificar iconos, hacer que cuando se usen no se añada el VI como subVI sino su código (Place VI Contents), etc.


Figura 1-19. Modificación del aspecto de paletas.

El esquema de los menús de las paletas se guarda en un fichero con extensión *.MNU. Una vez que se han realizado y guardado los cambios, ya están disponibles los nuevos menús y se podrán utilizar como cualquier menú nativo de LabVIEW.


Figura 1-20. Submenú de la librería de usuario.

También en Tools > Options > Control/Function Palettes hay varios parámetros para cambiar su aspecto. Por último hay que decir que si no se encuentra un VI entre todos esos menús o submenús también se dispone de la opción de buscar un VI o control por su nombre mediante el botón Search de la parte superior de las paletas.

Una opción avanzada y poco conocida es personalizar el menú Tools, para lo cual simplemente hay que guardar los programas que queramos que aparezcan en el directorio Project de la carpeta de instalación de LabVIEW.

1.3. Creación de programas

En LabVIEW la programación se realiza en el Diagrama de Bloques. Un programa habitualmente está formado por:

• Controles: sirven de entrada para los datos.

• Funciones, VI y estructuras: realizan una o varias operaciones con esos datos.

• Indicadores: sirven de salida para los datos.

Los datos ‘circulan’ por el programa mediante cables, que sirven para unir unos elementos con otros. Para realizar la conexión se utiliza la herramienta Connect Wire de la paleta de herramientas. Un cable tendrá una única fuente (control, constante o salida de otro elemento) y uno o varios destinos (indicador o entradas de otros elementos) de tipos compatibles. El cableado, en general, debe ser lo más corto posible manteniendo una claridad suficiente. Una opción útil que aparece en el menú contextual de los cables es Clean Up Wire que realiza un trazado automático de la ruta del cable. También se puede hacer un cableado automático de todo el diagrama en Edit > Clean Up Diagram. Un buen trazado del cableado no sólo es más elegante sino que también puede hacer que el programa tenga unas prestaciones superiores en cuanto a memoria utilizada, pero sobre todo será más fácil de mantener y modificar.

En la figura 1-21 puede verse un programa en LabVIEW. Consta de dos entradas, una de tipo string (String de entrada) y otra numérica (Número de entrada). La función String Length (puede encontrarse en el menú Programming > String de la paleta de funciones) obtiene el número de caracteres de la entrada de texto; esa cantidad es numérica y se suma a la otra entrada mediante la función Add (Programming > Numeric). El programa tiene dos salidas: la primera de ellas es una copia duplicada de la entrada tipo string, y la segunda es la suma de la longitud de la anterior más la entrada numérica. Los Label de ambas funciones se han mostrado mediante su menú contextual > Visible Items.


Figura 1-21. Programa sencillo en LabVIEW.

Una vez creado el programa, se deben introducir los datos iniciales en los controles del Panel Frontal, ejecutarlo presionando el botón Run (CTRL+R) y, cuando acabe, ver los resultados en los indicadores. La figura 1-22 muestra la ejecución del programa anterior.


Figura 1-22. Ejecución del programa anterior.

LabVIEW es un lenguaje compilado para obtener un alto rendimiento. Cuando un programa ha sido modificado y se va a guardar o ejecutar, generalmente se recompila. Al compilar el código del Diagrama de Bloques pasa a código máquina. El código compilado hará llamadas a otras funciones de librerías externas (LabVIEW Run-Time Engine) para tareas como dibujar gráficos o acceso a ficheros.

1.4. Flujo de ejecución

Al lenguaje de programación que usa LabVIEW también se le llama lenguaje G. La mayoría de los lenguajes se basan en una programación imperativa, que es simplemente una sucesión de operaciones. Sin embargo, el lenguaje G no usa una programación imperativa sino una ejecución basada en el flujo de datos (dataflow).

Un programa en LabVIEW consiste básicamente en una serie de funciones unidas mediante cables. Los datos ‘circulan’ o ‘fluyen’ por los cables. Una función sólo podrá ejecutarse cuanto tenga disponibles todos los datos que le sirven como entradas. Esta forma de ejecutar un programa favorece el paralelismo y es más apropiada para sistemas multiprocesador y multihilo, y también es más parecida al funcionamiento de los circuitos hardware e incluso al lenguaje VHDL.

A continuación se mostrarán una serie de imágenes para explicar el flujo de ejecución de LabVIEW mediante un ejemplo.

El programa consiste en dos operaciones matemáticas: la suma de dos números y la multiplicación del resultado de ésta por un tercer número. En la figura 1-23 se puede ver el programa y los datos de entrada en el Panel Frontal.


Figura 1-23. Programa para analizar el flujo de ejecución.

El primer paso de la ejecución llevará los datos de los controles Operando A, Operando B y Operando C a las entradas de las funciones Add y Multiply. En la figura 1-24 puede verse que las entradas disponibles están marcadas con un punto. El flujo de datos se indica con flechas en paralelo a los cables.


Figura 1-24. Valores disponibles en las entradas de la función Add.

La función Add tiene disponibles los valores de sus dos entradas; sin embargo, la función Multiply necesita el valor de otra entrada que no tiene disponible. Por lo tanto, en el siguiente paso se podrá ejecutar la función Add pero no Multiply. Cuando se ejecute el resultado de la suma, su valor pasará al indicador A+B, que lo mostrará en el Panel Frontal, y también circulará hasta la entrada que faltaba de la multiplicación, lo que permite que en el siguiente paso pueda ejecutarse.


Figura 1-25. Siguiente paso de la ejecución.

Finalmente, el resultado de la multiplicación pasa al indicador (A+B)*C y el programa finaliza.

En el ejemplo anterior el orden de ejecución es fijado por la forma de cablear unas funciones con otras. En la figura 1-26 pueden verse dos programas. En el primero ocurre lo mismo; el orden de ejecución lo fija el cableado: primero se ejecutará Increment y después Square Root. En el segundo programa hay dos funciones pero entre ellas no existe ninguna dependencia de datos, por lo que no habrá ningún orden en la ejecución de Decrement y Square; podemos considerar que ambas se ejecutan en paralelo.


Figura 1-26. Flujo de ejecución.

1.5. VI y subVI

Los ficheros con los programas creados en LabVIEW se llaman VI (Virtual Instrument). En muchas ocasiones un programa será de un tamaño tal que habrá que separarlo en varios ficheros o habrá alguna sección de código que convenga reutilizarla varias veces. Un VI puede contener a otro de forma que el segundo sería un subVI del primero; el concepto es equivalente a las funciones o procedimientos de un lenguaje tradicional.


Figura 1-27. Programa que utiliza diferentes funciones.

En el ejemplo de la figura 1-27 puede verse un programa que tiene como entradas Límite superior y Límite inferior. Estas entradas se limitan de forma programada a 360 y 0 respectivamente mediante las funciones de comparación Less?, Greater? y Select. A las salidas de las funciones de comparación se obtendrá un valor TRUE si la comparación es cierta y FALSE en caso contrario. Select funciona como un multiplexor: a su salida estará el valor de la entrada superior (T) si la señal de selección (?) es cierta, y el de la entrada inferior (F) si es falsa. Por otra parte, Random Number (0-1) genera un número aleatorio entre cero y uno.

La parte central del programa resta las dos entradas y el resultado lo multiplica por la suma del límite inferior y el número aleatorio. Con esto se consigue generar un número aleatorio comprendido entre los dos límites indicados, que nunca serán mayores de 360 y menores de 0.

Finalmente, este número generado se empleará como el valor de un ángulo en coordenadas polares, y de él se obtendrá la parte real e imaginaria.

En el ejemplo anterior puede ser deseable hacer una función que se encargue de la generación del número aleatorio entre dos límites, es decir, hacer que esa parte del código sea un VI distinto, de forma que pueda ser usado en otras ocasiones. La forma más sencilla de conseguir esto es seleccionando la parte deseada del Diagrama de Bloques e ir a Edit > Create SubVI. Al hacerlo, el código seleccionado será sustituido por el icono de un VI. Con un doble clic sobre este icono se accederá al código 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. La interfaz es la forma en que se realizarán las conexiones cuando se use como subVI dentro de otro VI. El primer paso será guardar el VI, después situarse en su Panel Frontal y hacer clic con el botón secundario del ratón sobre el icono del VI (parte superior derecha) para desplegar su menú contextual, como se puede ver en la figura 1-29. En el menú contextual se mostrará el conector, que es el equivalente a la cabecera de las funciones en otros lenguajes. En el conector se podrán añadir o eliminar terminales, que son los lugares donde se conectarán los cables cuando se use como subVI. Para asignar un control o indicador a un Terminal, se debe seleccionar la herramienta Connect Wire y hacer clic en el terminal y en el control o indicador asociado del Panel Frontal. En ese momento el terminal se coloreará indicando el tipo de datos.

Por claridad se recomienda conectar las entradas a la izquierda y las salidas a la derecha. También se puede indicar si la conexión de un terminal debe ser obligatoria (Required), normal (Recommended) u opcional (Optional). En la ventana de ayuda contextual los terminales se mostrarán en negrita, de forma normal u ocultos respectivamente. Si en el Panel Frontal se había indicado algún valor por defecto en alguna entrada, éste será el valor que tenga el control si no se le conecta un cable cuando se use como subVI. Como regla de estilo podemos recomendar que se indique el valor por defecto en el Label de cada control al final entre paréntesis.

Además del terminal, también se puede crear un icono que represente al VI cuando se coloque en el Diagrama de Bloques de otro VI. En la ventana de la figura 1-30, aparecen en la parte izquierda diferentes pestañas con las diversas opciones para hacer el dibujo, y a la derecha el icono y una barra de herramientas típica de un programa de edición de imágenes.


Figura 1-29. Creación del terminal de un subVI.

Esta herramienta se ha mejorado desde la versión 2009. Entre las nuevas mejoras destaca el empleo de capas (pestaña Layers), de plantillas (Templates) y de imágenes prediseñadas (Glyphs).

Dentro de las plantillas podemos hacer que el icono de un VI sea rectangular en lugar de cuadrado. Esto se suele utilizar cuando únicamente hay una en trada o una salida. Yendo un paso más allá, podemos hacer cualquier forma al icono, como triángulos, borrando todo el contenido en el icono fuera del contorno que queramos darle.

Si se está creando una librería o familia de subVI, es conveniente dar a todos un estilo parecido. Para ello, se pueden usar las plantillas que vienen por defecto o crear y emplear nuestras propias plantillas e imágenes prediseñadas (File > Save as > Template).

Por último, hay que decir que puede accederse a opciones especiales haciendo doble clic sobre algunas herramientas, como seleccionar el tipo de letra con doble clic sobre la herramienta de texto, seleccionar todo con la de select o sobre el dibujo del cuadrado.


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

Desde el menú contextual del icono o desde File > VI Properties se accederá a las propiedades del VI, en las que se podrá ver información y modificar parámetros del VI como:

General: información sobre la versión, cambios sin salvar, etc.

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

Documentation: información sobre el VI. Al usarlo como subVI aparecerá en la ventana de ayuda contextual y un enlace a un fichero de ayuda en el que se podría ampliar la información.

Revision History: configuración e información sobre el historial del VI.

Editor Options: algunos parámetros que afectan a la hora de crear el VI.

Protection: permite bloquear y/o proteger con contraseña el código del fichero.

Window Appearance: configuración de la ventana que mostrará el Panel Frontal al usuario cuando el VI se ejecute.

Window Size: tamaño de la ventana del programa cuando se ejecute.

Window Run-Time Position: posición de la ventana del programa cuando se ejecute.

Execution: afecta a la forma de ejecución de un VI; para más información consultar 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 otro se puede usar el método de arrastrar y soltar desde el directorio donde esté almacenado hasta el Diagrama de Bloques del VI. También se puede usar Select a VI… desde la paleta de funciones o colocar el VI dentro de un menú de la paleta de funciones.

Como puede verse en las propiedades de un VI (File > VI Properties > Memory Usage), internamente un VI se compone de un espacio de datos, el código compilado, el Panel Frontal y el Diagrama de Bloques. Al cargar un VI se llevará a memoria el espacio de datos y el código compilado; el Panel Frontal y el Diagrama de Bloques se cargarán cuando LabVIEW lo considere necesario.

1.5.1. Librerías

Cada VI se guardará como un fichero. Para agrupar varios VI se puede emplear una librería, la cual es otro fichero con extensión *.LLB. Hay varios métodos para crear una librería:

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

• En Tools > LLB Manager > File > New LLB.

También se puede convertir un directorio que contenga VI en una librería y viceversa desde Tools > LLB Manager (Figura 1-31). Después se debe seleccionar el directorio o librería deseado y se elige Edit > Convert. La ventaja de las librerías es que, a la hora de distribuir una aplicación, todos los ficheros necesarios pueden estar empaquetados en un único archivo.

Desde el LLB Manager se podrá marcar uno o varios VI como Top Level, lo que provoca que, cuando la librería se abra desde la línea de comandos, se abra directamente el VI ‘principal’. Una vez creada la librería, se podrá trabajar con ella desde LabVIEW como si fuera un directorio más, pero para el sistema operativo será sólo un fichero.


Figura 1-31. Explorador de librerías.

Además del uso de los ficheros LLB, también se podrán utilizar librerías de proyecto empaquetadas. Estas nuevas librerías sólo se pueden crear dentro del ámbito de un proyecto, que se estudiará en la siguiente sección.

Otra alternativa a la hora de guardar VI es hacerlo en forma de plantillas (templates). Estos ficheros tienen por extensión *.VIT (o *.CTT para controles). Sirven para guardar en ellos códigos o componentes muy habituales. Son exactamente igual que los VI excepto que en lugar de abrirse el fichero de la plantilla, LabVIEW abrirá una copia como un VI.

Finalmente, resta comentar la posibilidad de crear VI Express mediante Tools > Advanced > Create or Edit Express VI...

1.5.2. Polimorfismo

Al igual que en otros lenguajes, LabVIEW también admite el polimorfismo o sobrecarga de funciones, lo que significa que puede haber funciones distintas bajo el mismo nombre. En principio, todos los VI que componen un VI polimórfico pueden tener distinto tipo de datos en las entradas; la función concreta a usar se puede adaptar a las entradas o seleccionarse de forma manual mediante un pequeño menú bajo el icono del VI. Muchas de las funciones y VI disponibles en la paleta de funciones son polimórficos.

Para crear un VI polimórfico debe partirse de los VI que lo compongan por separado; cada una de las instancias del VI polimórfico debe tener la misma interfaz (la misma estructura en el conector), aunque el tipo de datos obviamente puede ser diferente. En la figura 1-32 se muestra el código fuente de tres VI con los que se creará un VI polimórfico.


Figura 1-32. Código fuente de tres VI con los que crear un VI polimórfico.

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


Figura 1-33. Creación de VI polimórfico.

En la figura 1-34 está el resultado. En la parte izquierda se selecciona automáticamente la instancia concreta del VI a usar de acuerdo al tipo de datos que se conecta, y en la derecha se muestra un VI que en su parte inferior tiene un selector para elegir de forma manual la instancia.


Figura 1-34. Utilización del VI polimórfico.

1.6. Proyectos

Antes de LabVIEW 8.x la organización de proyectos de tamaño medio o grande era complicada, siendo exclusivamente responsabilidad del programador que debía ordenar los VI en directorios en el disco (algo que en la práctica no solía ocurrir) e incluir la documentación y el resto de ficheros necesarios.

La versión 8.0 de LabVIEW introdujo la opción de agrupar todos los ficheros en un proyecto. El proyecto consiste en un fichero en formato XML, con extensión *.LVPROJ que indica qué ficheros componen el proyecto y cómo se ordenan. Los ficheros que componen el proyecto pueden ser VI, controles, ficheros de configuración (por ejemplo para crear un ejecutable), documentación o cualquier otro fichero.

La ventana desde la que se gestiona el proyecto se llama Project Explorer, y muestra el aspecto de la figura 1-35.


Figura 1-35. Explorador del proyecto.

Los ficheros se pueden agrupar en directorios. Para organizar el código también puede ser útil emplear librerías. En el contexto de un proyecto estas librerías no deben confundirse con ficheros LLB, ya que simplemente es otro fichero XML con referencias a los ficheros contenidos y la descripción de sus propiedades. Dentro de las librerías los elementos pueden ser públicos (accesibles desde otras partes del proyecto), privados (accesibles sólo desde otros VI de la misma librería) o community (accesibles desde VI de la misma librería o desde VI de otras librerías marcadas como ‘amigos’ en sus propiedades), lo que es útil para distribuir código entre varios programadores. Para definir los elementos públicos o privados hay que acceder a las propiedades de la librería desplegando su menú contextual > Properties > Item Settings/Friends.

La ventana del proyecto se divide inicialmente en tres ítems:

My Computer: es el target. En él se muestran los ficheros que componen el proyecto y sus propiedades. De cada target descienden Dependencies y Build Specifications. Al programar sobre otras plataformas también aparecerán otros targets, como una PDA o una FPGA.

Dependencies: muestra las dependencias del proyecto, por ejemplo librerías compartidas (*.dll).

Build Specifications: guarda la configuración para las distribuciones del proyecto como archivos comprimidos, ejecutables, librerías, instaladores, librerías empaquetadas, servicios web, etc.

La creación de ejecutables y dll se verá en la sección 12.3, mientras que los servicios web en la sección 9.4. Ahora veremos las librerías empaquetadas. Para crear una debemos acceder al menú contextual de la opción Build Specifications del proyecto. En ese momento aparecerá un asistente en el que, a través del menú de categorías, hay que configurar el nombre de la librería, los ficheros que la componen (los VI visibles se marcarán como top level y deben estar en un lvlib), dónde se guardará, etc. El resultado es un único fichero con extensión *.lvlibp que contiene los VI ya compilados.

1.7. Depuración de código

Cuando se hace un programa es normal cometer errores. Depurar es el proceso de encontrar y corregir los fallos del programa. LabVIEW dispone de varias herramientas para ayudar al programador en esta tarea.

La detección de errores de lo que se podría llamar la sintaxis del lenguaje es automática y simplemente consiste en impedir que se ejecute el VI que contiene un error. Para ello, el botón RUN se sustituye por List Errors y se cambia el icono de la barra de herramientas por uno que simboliza una flecha rota .

Al presionar este botón aparece una lista de los errores y warnings del programa. Al seleccionar un error aparece una descripción en la parte inferior, y haciendo doble clic o presionando el botón Show Error se traslada el foco del programa a la parte donde se ha producido el fallo.

En la figura 1-36 se indica que hay tres errores en el código:

• Una estructura CASE cuyo selector no tiene nada cableado.

• Una función de suma que presenta errores en sus terminales.

• Un cable ‘roto’, más concretamente que no tiene final.


Figura 1-36. Lista de errores de un VI.

Aparte de los errores sintácticos, puede haber otros debido a innumerables motivos. Una herramienta muy usada en este caso es la Highlight Execution, representada por un icono con forma de bombilla de luz en la barra de herramientas. Cuando esta opción está activada, la ejecución se ralentiza y se puede ver el fluir de los datos por el Diagrama de Bloques. Ésta es una de las herramientas más utilizadas en LabVIEW y muy útil para entender el funcionamiento de otros VI.

A veces, en un programa grande puede ser inviable esperar a que el flujo de ejecución llegue a la parte deseada con la Highlight Execution. Para ello se pueden usar los breakpoints o puntos de ruptura. Éstos se seleccionan en la paleta de herramientas y después se presionan sobre el objeto en el que se desea establecer el punto de ruptura. El objeto puede ser un cable o una estructura o una función (Figura 1-37). Al crear un breakpoint aparece una marca roja indicando su situación. En la siguiente imagen se pueden apreciar tres puntos de ruptura: en el interior de la estructura WHILE, en el cable entre el control de x y la función suma y en la propia función.


Figura 1-37. Utilización de puntos de ruptura para depuración de código.

Una vez seleccionados los puntos de ruptura, se puede ejecutar el programa de forma normal y al llegar la ejecución a uno de ellos, ésta se detendrá automáticamente, igual que si se hubiera pulsado el botón Pause de la barra de herramientas (el cual pasa a tener fondo rojo y se transforma en Continue). Cuando se detiene la ejecución, se puede volver a reanudar con la opción Highlight Execution activada.

Desde la versión 8.6 se dispone de un manejador de breakpoints al que se puede acceder desde View > Breakpoint Manager. En este programa se podrán habilitar, deshabilitar y borrar los breakpoints colocados en el programa.

Si lo que se desea es obtener el valor de un dato cualquiera sin detener ni ralentizar la ejecución, se puede usar la herramienta Probe (Figura 1-38). Se puede activar sobre un control, indicador o cable usando la paleta de herramientas o el menú contextual del cable; cuando se coloque aparecerá una ventana flotante llamada Probe Watch Window en la que puede verse el valor del dato seleccionado en tiempo real de cada uno de los probe del programa. Incluso en determinados tipos de datos se puede disponer de una visualización en gráficos o tablas.

Otra utilidad de los probe es crear un Custom Probe con una condición. En ese caso, cuando se cumpla la condición, el VI se detendrá igual que si hubiera un breakpoint. En este caso aparecerá en Probe Watch Window una nueva pestaña en la que definir las condiciones en las cuales parará la ejecución del programa. Por ejemplo, una condición puede ser que el contenido de un indicador sea un determinado valor. Cuando se coloca un probe sobre un cluster de error, esta opción aparece como una nueva pestaña.

También se puede dotar a un probe de características avanzadas programándolas. A esta opción se puede acceder desde el menú contextual de los cables Custom Probe > New… Al crear un Custom Probe aparece un asistente que guía en su creación. Finalmente, se guarda el VI que implementa el Custom Probe. El Custom Probe permite crear un nuevo programa dentro del propio probe que, por ejemplo, puede guardar los valores en un fichero, parar el programa con una condición que no puede ser especificada mediante el método anterior o enviar una alarma por email. El VI creado como Custom Probe dispone de un indicador con el valor del cable y otro control booleano para indicar si se debe detener la ejecución.

Otro método más para detectar errores es revisar el valor de ciertos datos, como los clusters de error que tienen muchas funciones a la entrada y salida; para esto, hay VI especializados en la paleta Programming > Dialog & User Interface.

Los cluster de error son un dato especial. Se componen de tres parámetros:

• Un booleano que indica si hay error o no.

• Un número identificativo del error.

• Un string que contiene una descripción del error.


Figura 1-38. Creación de tres probes y ventana Watch.

Existe una herramienta que amplía la información sobre el error. Puede accederse directamente a ella desde el indicador del cluster presionando con el botón derecho sobre él y eligiendo Explain Error. También se puede ir a Help > Explain Error. En la sección 11.2 se ampliará la información sobre el control de errores en tiempo de ejecución.


Figura 1-39. Información del error detectado.

1.8. Otras herramientas

1.8.1. Snippet

Desde la versión 2009 se pueden hacer capturas de pantalla de tipo snippet. Para hacer una hay que seleccionar una porción de código e ir a Edit > Create VI Snippet from Selection.

Esta herramienta generará una imagen en formato PNG del código seleccionado, pero además es capaz de embeber el propio código en el fichero de la imagen, de tal forma que, al arrastrarse esa imagen al Diagrama de Bloques de un VI, lo que se copiará no será una imagen, sino el propio código.

Esta herramienta es especialmente útil para intercambiar código en foros a través de internet, pero también puede utilizarse para generar una colección particular de trozos de código que sean muy frecuentes.

1.8.2. Opciones

Se puede acceder a las opciones de configuración de LabVIEW a través de Tools > Options. Esta ventana permite modificar muchos parámetros del programa, como:

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

Block Diagram: manejo automático de errores y otras ayudas al programador.

Controls/Functions Palettes: formas de presentar las paletas de controles y funciones.

Environment: opciones de configuración misceláneas.

Search: habilitar y priorizar lugares donde realizar búsquedas.

Paths: las rutas del directorio de instalación de LabVIEW, el directorio temporal, librerías, etc.

Printing: opciones a la hora de imprimir.

Source Control: selección del servidor de versiones y configuración.

Menu Shortcuts: modifica y crea atajos de teclado para las opciones de los menús.

Revision History: permite guardar información cada vez que se guarda un VI.

Security: permite restringir el acceso a LabVIEW.

Shared Variable Engine: ordenadores que ofrecen servicios para manejar variables compartidas.

VI Server: configuración del acceso a VI Server.

Web Server: configuración del servidor web que incorpora LabVIEW.


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

Además de estas opciones, también pueden realizarse más cambios, algunos de ellos no documentados, en el fichero LabVIEW.ini del directorio de instalación de LabVIEW o en el fichero *.ini asociado a los ejecutables creados con LabVIEW (en Linux es el fichero .labviewrc).

1.8.3. Jerarquía

Cuando se usan unos VI dentro de otros, se va creando una jerarquía de VI. En View > VI Hierarchy se puede abrir una herramienta para ver la estructura jerárquica de un programa (ver el ejemplo de la Figura 1-41).

Además de ver la estructura de un proyecto de forma gráfica, también puede ser de utilidad en grandes proyectos para buscar VI.

Una buena jerarquía es la que está organizada por niveles bien definidos: los VI de un nivel se apoyan en los del nivel inmediatamente inferior y no hay ‘saltos de niveles’.


Figura 1-41. Jerarquía de un VI.

Además de la ventana de jerarquía, también se puede acceder a los VI relacionados (por ejemplo, VI padres o subVI) con el que está activo en View > Browse Relationship.

1.8.4. Ventana de navegación

La ventana de navegación es otra ventana flotante que permite ver toda la ventana activa de LabVIEW mediante un zoom automático. Se puede acceder a ella desde View > Navigation Window y puede ser útil cuando el Diagrama de Bloques tiene un tamaño superior a la pantalla (aunque esto es algo que se debe evitar haciendo el programa más modular mediante el empleo de subVI).

1.8.5. Compilación masiva

La compilación masiva es un método que se usa al actualizar la versión de LabVIEW o para recompilar un proyecto con una nueva versión de LabVIEW.

Su función básicamente es abrir todos los VI de un directorio, relinkar y recompilar todos los VI y subVI que contiene. Se puede acceder a esta herramienta en Tools > Advanced > Mass Compile.

1.8.6. Búsqueda y comparación

En el menú Edit > Find and Replace (CTRL+F) se encuentra una herramienta que permite buscar tanto texto como objetos en los VI cargados en memoria. Los objetos a buscar pueden ser VI, funciones, breakpoints, terminales, etc. En la ventana de resultados se pueden sustituir todas las instancias del objeto buscado por otra función.


Figura 1-42. Utilidad de búsqueda y reemplazo.

LabVIEW también dispone de otra utilidad en el menú Tools > Compare destinada a mostrar las diferencias entre dos VI, tanto en su código, su aspecto, jerarquía u otras propiedades. Con estas herramientas simplemente hay que elegir dos VI y su resultado será una ventana en la que se muestran las diferencias, al hacer doble clic sobre una se mostrarán los VI con una marca en la diferencia.

1.8.7. Seguridad

Las opciones de seguridad en Tools > Security permiten controlar el acceso y permisos a algunos recursos, como a VI Server (Tools > Options > VI Server: Browser Access o Proyecto > My Computer > Properties > VI Server: User Access). El sistema es parecido 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; además, se puede activar la opción Tools > Options > Security > Show the login prompt at LabVIEW startup time para hacer que se pida un usuario cada vez que se inicie LabVIEW.

Algunos módulos de LabVIEW pueden extender las funciones de seguridad a elementos como variables compartidas o librerías de proyectos.

1.8.8. Ejemplos

Una de las cosas más apreciadas de National Instruments es su soporte, tanto en línea como en sus programas. Dentro de la ayuda de LabVIEW ya se ha visto antes la ventana de ayuda contextual. También dispone de muchos documentos que explican detalladamente cada aspecto del programa. Se puede acceder a la colección de ejemplos desde Help > Find Examples.

Puede modificarse la ventana que muestra los ejemplos en Tools > Prepare Example VI for NI Example Finder.

Finalmente, también hay que comentar que desde la página web de National Instruments se pueden descargar numerosos ejemplos, hacer consultas en los foros o solicitar soporte de los ingenieros de NI.

1.9. Ejercicios

1. Buscar los cinco errores que impiden la ejecución en la siguiente figura:


Figura 1-43. Ejercicio 1.

2. Obtener, mediante las funciones del menú Programming > Numeric, el número áureo y su inverso: . Ejecutar el programa con Highlight Execution activado.

3. Usar el programa del ejercicio anterior como un subVI de uno nuevo para verificar si .

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


Figura 1-44. Ejercicio 4.

1.10. Bibliografía

National Instruments, AN 159: LabVIEW Custom Controls, Indicators, and Type Definitions, 2004.

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

National Instruments, LabVIEW Basics I Course Manual, 2000.

National Instruments, LabVIEW User Manual, 2001.

National Instruments, LabVIEW Upgrade Notes Version 8.0, 2005.

National Instruments, LabVIEW Upgrade Notes Version 8.2, 2006.

National Instruments, LabVIEW Upgrade Notes Version 2009, 2009.

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

LabVIEW: Entorno gráfico de programación

Подняться наверх