Curso Básico LabVIEW
1.- CONCEPTOS BÁSICOS DE LabVIEW. INTRODUCCIÓN A LabVIEW. LabVIEW es un lenguaje de programación en gráficos, que utiliza iconos en sustitución de líneas de texto para crear aplicaciones. LabVIEW utiliza una programación basada en el flujo de datos, la cual determina la ejecución del programa. En LabVIEW se debe construir una interfase de usuario mediante un conjunto de herramientas y objetos disponibles, esta interfase es conocida como PANEL FRONTAL. Posteriormente se agrega el código del programa utilizando una representación grafica de funciones para controlar los objetos en el panel frontal, lo cual se realiza en una sección llamada DIAGRAMA A BLOQUES.
INTRODUCCIÓN A LOS INSTRUMENTOS VIRTUALES. Los programas realizados en LabVIEW son llamados INSTRUMENTOS VISTUALES (VI´s) (VI´s),, porque porque su aparienc apariencia ia simula simula físicam físicament entee instrum instrument entos os tales tales como un multím multímetr etro, o, frecuencímetro, osciloscopio, etc. Un VI contiene principalmente los siguientes componentes: 1. PANEL PANEL FRONTA FRONTAL.L.- Funcio Funciona na como la interf interfase ase de usuari usuario. o. 2. DIAGR DIAGRAM AMA A A BLOQUE BLOQUES.S.- Contiene Contiene el código código fuente fuente en forma de gráfico gráficoss que determina la función del VI.
PANEL FRONTAL. El panel frontal es la interfase de usuario del programa. La figura 1.1 muestra un ejemplo de un panel frontal.
Figura 1.1 Panel frontal en LabVIEW.
Página 1
Curso Básico LabVIEW El panel frontal se construye con controles e indicadores, los cuales son entradas y salidas respectivamente en el VI. Los controles permiten la entrada de datos al diagrama a bloques del VI y pueden ser perillas, interruptores, push buttons, entre otros dispositivos de entrada. Los indicadores muestran los datos provenientes del diagrama a bloques y pueden ser graficas, LEDs, indicadores de aguja, etc.
DIAGRAMA A BLOQUES. El diagrama a bloques contiene el código fuente en forma de gráficos para realizar el control de los objetos colocados en el panel frontal. Los objetos en el panel frontal aparecen en forma de terminales en el diagrama a bloques. La figura 1.2 muestra un ejemplo de un diagrama a bloques en el cual se pueden ver funciones, terminales y conexiones por medio alambres, además del panel frontal.
Figura 1.2 Ejemplo de diagrama a bloque y su panel frontal correspondiente.
TERMINALES, NODOS Y ESTRUCTURAS. Las terminales representan el tipo de dato del control o indicador. Por ejemplo una terminal con la iniciales DBL y de color naranja representa un control o indicador numérico de punto flotante de doble precisión. La tabla 1.1 muestra las formas en que son representados los diferentes tipos de datos en LabVIEW por medio de terminales.
Página 2
Curso Básico LabVIEW
Control
Indicador
Tipo de dato
Color
Numérico de punto flotante sencillo
Naranja
Numérico de punto flotante de doble precisión
Naranja
Numérico de punto flotante extendido
Naranja
Numérico complejo de punto flotante sencillo
Naranja
Numérico complejo de punto flotante doble precisión Numérico complejo de punto flotante extendido Numérico entero de 8 bits con signo
Naranja Naranja Azul
Numérico entero de 16 bits con signo
Azul
Numérico entero de 32 bits con signo
Azul
Numérico entero de 8 bits sin signo
Azul
Numérico entero de 16 bits sin signo
Azul
Numérico entero de 32 bits sin signo
Azul
Tipo enumerado
Azul
Booleano
Verde
Cadena
Rosa
Arreglo (Toma el color del tipo de dato que maneja) Cluster
Varios Café o rosa
Path (Ruta de archivos en memoria)
Aqua
Forma de onda
Cafe
Tabla 1.1 Terminales que representan los tipos de dato en LabVIEW.
Los nodos son los objetos en el diagrama a bloques que contienen entradas o salidas y ejecutan operaciones cuando el programa se está ejecutando. Se puede decir que son análogos a instrucciones, operadores, funciones y subrutinas en los lenguajes de programación en líneas de texto. Las estructuras son representaciones gráficas de ciclos y condiciones como case en los lenguajes de programación en líneas de texto.
Página 3
Curso Básico LabVIEW
2.- CREANDO VIs (Instrumentos Virtuales) y SubVIs. PRIMER PROGRAMA EN LabVIEW El primer programa a realizar en LabVIEW calcula la suma, resta, multiplicación y división de dos números, por lo cual necesitamos dos controles para ingresar el valor de los datos de entrada y cuatro indicadores que mostrarán los resultados. En la figura 2.1 a y b se muestra el panel de control y el diagrama a bloques respectivamente de dicho programa. Se usara el tipo de dato DBL que es el asignado automáticamente. Los controles e indicadores se colocan utilizando la paleta de controles sobre el panel frontal mediante la selección adecuada de estos, mientras que las funciones se colocan en el diagrama a bloques utilizando la paleta de funciones. Realice las conexiones necesarias utilizando la herramienta de conexión (conecct wire) que se encuentra en la paleta de herramientas.
Figura 2.1 a Panel frontal del VI para sumar, restar, multiplicar y dividir dos números.
Página 4
Curso Básico LabVIEW
Figura 2.1 b Diagrama a bloques del VI para sumar, restar, multiplicar y dividir dos números.
EJERCICIO 1. Realice un VI, el cual convierta grados centígrados a grados fahrenheit. Los °C y °F deben de mostrarse además de un indicador numérico en uno de tipo gráfico como lo es un termómetro.
Página 5
Curso Básico LabVIEW
UTILIZACIÓN DE DATOS BOOLEANOS EN LabVIEW Como es conocido los datos de tipo booleano son aquellos que sólo tienen dos valores posibles: FALSO o VERDADERO (1 o 0, encendido o apagado, etc). En la tabla 1.1 se muestra que los datos de tipo booleano se representan en LabVIEW con la terminal con las iniciales TF (TRUE/FALSE) en color verde. Los controles booleanos más utilizados en LabVIEW son los interruptores y los indicadores son los LEDs. La figura 2.2 muestra el panel frontal y el diagrama a bloques de un interruptor controlando el encendido y apagado de un LED.
Figura 2.2 Empleo de datos booleanos en LabVIEW utilizando un interruptor como control y un LED como indicador.
El siguiente ejemplo muestra como utilizar las funciones booleanas AND, OR y EXOR en LabVIEW. Se utilizan dos entradas por medio de los interruptores A y B y como indicadores LEDs que representan las funciones booleanas mencionadas.
Figura 2.3 Utilización de las funciones AND, OR y EX-OR.
EJERCICIO 2. Realice un VI el cual implemente la siguiente expresión booleana: S(A, B, C, D)=(A.B).((A+B)+(C.D)). Página 6
Curso Básico LabVIEW
EJERCICIO 3. Realizar un VI el cual calcule el promedio de tres calificaciones y muestre mediante un LED que encenderá en color verde si el promedio es mayor o igual a 70 o de lo contrario encenderá color rojo.
UTILIZACIÓN DE STRINGS (CADENAS) EN LabVIEW Los datos tipo string son aquellos que involucran el empleo de caracteres alfanuméricos, como pueden ser nombres propios, direcciones, ciudades, etc. En LabVIEW se utiliza un control tipo string para entrada de datos y un indicador string para la salida. Además existe una serie de funciones para la manipulación de las cadenas, como concatenar, longitud de cadena, conversión entre mayúsculas y minúsculas, etc. En la figura 2.4 se observa un VI el cual utiliza datos tipo sring. Contiene tres controles para entrada de datos (nombre, apellido paterno y apellido materno), y un indicador en el cual se puede observar juntos la tres cadenas de entrada. Se muestra también el diagrama a bloques correspondiente en el cual se emplea la función de concatenación de cadenas.
Figura 2.4 Utilización de datos tipo string en LabVIEW.
EJERCICIO 4. Crear un VI con un control sring y un indicador booleano (LED). El LED encenderá solo cuando se teclea en el control la palabra: LABVIEW. Nota: Este ejemplo servirá para basarse en como colocar palabras de acceso (PASSWORD) a futuras aplicaciones.
3.- ESTRUCTURAS Página 7
Curso Básico LabVIEW
Las estructuras son representaciones graficas de ciclos y sentencias en los lenguajes de programación basados en texto. La utilización de estructuras en el diagrama a bloques permite repetir bloques de programación y evaluar condiciones que deben cumplirse para realizar una sentencia. Las estructuras disponibles en el diagrama a bloques en LabVIEW son las siguientes: a) CASE: Contiene múltiples sub diagramas, de los cuales solo uno se ejecuta dependiendo del valor de entrada a la estructura. b) FOR LOOP: Ejecuta un sub diagrama un número de veces establecido. c) WHILE LOOP: Ejecuta un sub diagrama mientras la condición de control lo permite. d) SEQUENCE: Contiene uno o mas sub diagramas , los cuales se ejecutan en forma secuencial. e) FORMULA NODE: Ejecuta operaciones matemáticas basadas en los valores de entrada.
ESTRUCTURA CASE Una estructura CASE puede tener dos o mas sub diagramas u opciones. Solo un sub diagrama es visible a la vez, y la estructura ejecuta una opción a la vez. Un valor de entrada determina cual sub diagrama se ejecuta. La estructura CASE es similar a las sentencias CASE e IF... THEN... ELSE en los lenguajes de programación en líneas de texto. La forma básica de utilizar una estructura CASE es con dos sub diagramas u opciones, una se ejecutará si una condición es falsa y la otra si es verdadera. Por ejemplo se tienen dos controles numéricos y un solo indicador el cual puede mostrar el resultado de la suma o la resta de los datos de entrada según la posición que tenga un interruptor. Este ejemplo se muestra en la figura 3.1.
Figura 3.1 Utilización de la estructura case con solo dos opciones. Se muestra solo la opción falsa en el diagrama a bloques.
Página 8
Curso Básico LabVIEW En el ejemplo anterior se utilizó la estructura CASE solo con dos opciones y el control de la ejecución es realizado por un interruptor el cual permite obtener solo dos estados: FALSO Y VERDADERO. Es posible utilizar un CASE con mas de dos opciones, en lugar de utilizar un control booleano se puede utilizar un control numérico que permitirá seleccionar mas de dos opciones. El ejemplo siguiente va a permitir seleccionar la operación deseada (suma, resta, multiplicación o división) a los dos datos de entrada y desplegar el resultado en un indicador. La operación se seleccionará mediante otro control numérico el cual cuando esté colocado a 0 significará suma, 1 = resta, 2 = multiplicación y 3 = división. Lo anterior se muestra en la figura 3.2.
Página 9
Curso Básico LabVIEW
Figura 3.2 Utilización de la estructura CASE con mas de dos opciones, utilizando un control numérico como seleccionador de la opción. Se muestran las cuatro opciones posibles.
EJERCICIO 5. Realice el mismo programa anterior, solo que en lugar de utilizar un control numérico como seleccionador, a) utilice una lista de texto y b) un control tipo string.
EJERCICIO 6. Utilizando la estructura CASE, realizar un VI, el cual permita cambiar grados Centígrados a grados Fahrenheit o Kelvin según una opción que se sea seleccionada.
ESTRUCTURA FOR LOOP Una estructura FOR LOOP ejecuta un sub diagrama un número de veces establecido. Un valor en la terminal de conteo (terminal de entrada -N- ) indica cuantas veces se repetirá el sub diagrama. La terminal de iteración (-i-) contiene el número de iteraciones realizadas. El contador de iteraciones siempre empieza en cero. En la figura 3.3 se muestra la estructura FOR LOOP y se señalan las terminales de entrada y de iteración. Terminal de entrada
Terminal de iteración Figura 3.3 Estructura FOR LOOP en LabVIEW.
Página 10
Curso Básico LabVIEW El ejemplo siguiente muestra la utilización de un ciclo FOR LOOP el cual ejecuta el sub diagrama 10 veces e imprime el valor de la iteración sobre un indicador digital.
Figura 3.4 Utilización de la estructura FOR LOOP para imprimir los números del 0 al 9.
Al ejecutar el programa mostrado en la figura 3.4 solo se aprecia en el indicador el número 9, debido a que el programa se ejecuta a la velocidad del equipo de computo lo cual no permite apreciar la impresión de las primeras iteraciones. Si se desea observar como se imprime cada valor de la iteración, es necesario agregar un retardo entre cada iteración. Se puede hacer un retardo utilizando la función: Wait Until Next ms Múltiple, la cual realiza un retardo en milisegundos especificado a la entrada de dicha función. La figura 3.5 muestra el ejemplo anterior con la función de retardo dentro de la estructura FOR LOOP, la cual realizará un retardo de 1 segundo entre cada iteración.
Figura 3.5 Utilización de la función Wait Until Next ms Múltiple para realizar un retardo de 1 segundo entre cada iteración de la estructura FOR LOOP.
EJERCICIO 7. Imprima en pantalla los números del 0 al 20 en incrementos de 2, haciendo un retardo de medio segundo entre cada iteración.
EJERCICIO 8. Imprima en pantalla los números del 9 al 0 en decrementos de 1, haciendo un retardo de 2 segundos entre cada iteración.
Página 11
Curso Básico LabVIEW Se pueden utilizar graficas como indicadores en cualquier aplicación. La figura 3.6 muestra el empleo de la grafica: Waveform Chart como indicador de las iteraciones realizadas por un ciclo FOR LOOP como el de los ejemplos anteriores, mientras que la figura 3.7 utiliza una grafica: Waveform Graph.
Figura 3.6 Utilización de Waveform Chart como indicador dentro de un ciclo FOR LOOP.
Figura 3.7 Utilización de Waveform Graph como indicador fuera de un ciclo FOR LOOP.
Puede observarse la diferencia al utilizar las dos graficas en los ejemplo anteriores. La grafica tipo Chart grafica dato por dato, por lo cual es necesario colocar su terminal dentro del ciclo. Por otro lado la de tipo Graph, grafica un conjunto o arreglo de datos es por eso que
Página 12
Curso Básico LabVIEW es necesario colocarla fuera del ciclo, el cual se encarga de pasarle todos los datos de las iteraciones a la vez.
EJERCICIO 9. Generar una grafica de 50 datos aleatorios con valores entre 0 y 10, utilizando: a) Waveform Chart y b) Waveform Graph, si el valor del dato es mayor a 5, activar un LED rojo como indicador de este evento.
EJERCICIO 10. Generar y mostrar 2 ciclos de una señal senoidal con una amplitud de 10 y una frecuencia de 10Hz. En el siguiente ejemplo se ve la forma de mostrar un número en binario mediante el empleo de LEDs. Se utiliza un control digital para la entrada de datos y tipo de dato U8 (entero sin signo de 8 bits) para ser mostrados en un arreglo de 8 LEDs. Los 8 LEDs, que representarán cada bit en binario son colocados dentro de un arreglo. Se utiliza la función: Number to Boolean Array, la cual se encarga de convertir un número a un arreglo de bits en binario. Lo anterior se puede observar en la figura 3.8
Figura 3.8 Utilización de la función Number to Boolean Array para convertir un número a un arreglo de bits.
EJERCICIO 11. Mostrar los números en un arreglo de LEDs de las iteraciones de un ciclo desde 0 a 255. Realizar un retardo de 300 milisegundos entre cada iteración.
EJERCICIO 12. En el arreglo de 8 LED, encender cada LED en forma secuencial desde el bit 0 hasta el 7. Nota: Utilizar la función Scale by Power of 2.
EJERCICIO 13. Encender los LEDs en forma secuencial pero ahora del bit 7 al 0. EJERCICIO 14. Realizar los dos ejercicios anterior utilizando un arreglo de constantes de lugar de la función Scale by Power of 2.
Página 13
Curso Básico LabVIEW
ESTRUCTURA WHILE LOOP Esta estructura es similar a los ciclos DO WHILE o REPEAT UNTIL en los lenguajes de programación en líneas de texto. Una estructura WHILE LOOP ejecuta un sub diagrama mientras una condición coincide. Esta estructura ejecuta el sub diagrama hasta que la terminal de condición recibe un valor booleano especificado. La condición por default en la terminal de condición de la estructura es: Continue If True (Continuar si es verdadero). En esta condición, el ciclo ejecutará el sub diagrama hasta que recibe un valor falso a la entrada de la terminal. Puede cambiarse el estado de la condición a: Stop If True (Parar si es verdadero). Cuando la terminal de conexión está en Stop If True, el ciclo ejecutará el sub diagrama hasta que la terminal de entrada reciba un valor verdadero. Este ciclo siempre ejecutará por lo menos una vez el sub diagrama, debido a que la condición se verifica hasta el final de cada iteración. La figura 3.9 muestra la estructura WHILE LOOP y sus componentes. En la parte de arriba de la figura se aprecia la terminal de condición en la posición: Continue If True, mientras que la figura de bajo muestra la condición: Stop If True.
Terminal de condición: Continue If True
Terminal de condición: Stop If True
Figura 3.9 Estructura WHILE LOOP. La figura superior muestra la terminal de condición en el estado: Continue If True, mientras que la inferior muestra el estado: Stop If True.
Página 14
Curso Básico LabVIEW El ejemplo en la figura 3.10 genera un dato aleatorio y es desplegado en una grafica (Waveform Chart) cada 300ms, hasta que se presiona un botón de paro, el cual detiene la ejecución de un ciclo WHILE LOOP. Nótese que la terminal de condición se encuentra en la posición: STOP IF TRUE.
Figura 3.10 Estructura WHILE LOOP con la terminal de condición en la posición: STOP IF TRUE.
FUNCIÓN PARA GRABAR DATOS EN UN ARCHIVO Si se desea grabar los datos hacia un archivo o de lo contrario leer datos, se pueden utilizar las funciones: Write To Spreadsheet File y Read From Spreadsheet File respectivamente. Estas funciones graban datos en un archivo en formato de texto.
Figura 3.11 Funciones para grabar y leer datos hacia y desde un archivo en formato de texto.
Página 15
Curso Básico LabVIEW Estas funciones se encuentran en la barra de funciones en la sección FILE I/O. Al utilizar estas funciones solamente se tiene que indicar la ruta (path) del archivo que se desea abrir para realizar la escritura o lectura de datos, así como especificar algunos parámetros de escritura y lectura. El siguiente VI genera 100 datos aleatorios mediante el empleo de la estructura FOR LOOP y finalmente se almacenan a un archivo tipo texto ubicado en la siguiente ruta del disco duro: C:\Archivo1.txt.
Figura 3.12 Utilización de la función Write To Spreadsheet File
A continuación se utiliza la función Read From Spreadsheet para leer los datos del archivo que se mandó a grabar en el ejemplo anterior.
Figura 3.13 Función Read From Spreadsheet para cargar los datos desde un archivo en formato de texto.
Página 16
Curso Básico LabVIEW
EJERCICIO 15. Generar 3 ciclos de una señal senoidal de 1000Hz y amplitud de 5. Graficar la señal y grabar los datos en un archivo tipo texto, esto debe realizarse sólo cuando se presione un botón que de la orden de graficar y grabar. Nota: Para evitar ejecutar el programa en modo continuo, es preferible agregar un ciclo WHILE LOOP que controle la ejecución de todo el programa, esto es recomendable realizarlo en todos los programas para tener un mejor control del VI.
EJERCICIO 16. Cargar los datos del archivo grabado en el ejercicio anterior y mostrarlos sobre una gráfica.
EJERCICIO 17. Grabar y leer los datos del ejercicio 15 utilizando un archivo en formato binario.
Página 17
Curso Básico LabVIEW
ESTRUCTURA FORMULA NODE Esta estructura es un nodo basado en texto que puede realizar una operación matemática dentro del diagrama a bloques. Esta estructura acepta la sintaxis muy similar a la utilizada en los compiladores de C. Esta estructura es útil para ecuaciones que poseen varias variables. La estructura Formula Node puede tener una o mas sentencias delimitadas por punto y coma muy similar a la sintaxis utilizada en C. La figura 3.14 muestra un ejemplo de cómo utilizar la estructura mencionada.
Figura 3.14 Estructura Formula Node para calcular el valor de una ecuación con cuatro variables de entrada y una de salida.
En el ejemplo anterior se ve como pueden crearse las variables necesarias para calcular una expresión, En este se puede ver la utilización de cuatro variables de entrada las cuales reciben el dato mediante un control o una constante y una variable de salida que pasa el valor calculado a un indicador. Cuando se trabaja con expresiones de una sola variable se puede utilizar la función Expression Node. Esta función utiliza el valor que se le pasa a la terminal de entrada y la terminal de salida devuelve el valor calculado. El ejemplo siguiente muestra el uso de esta función.
Figura 3.15 Función Expression Node.
Página 18