Instrumentación Avanzada. J. A. Suárez
GUIA DE INICIACIÓN PRÁCTICA Nº 1 INSTRUMENTACIÓN AVANZADA
PROGRAMACION GRAFICA LABVIEW
1
Instrumentación Avanzada. J. A. Suárez
1.-INTRODUCCIÓN AL ENTORNO LABVIEW 1.- Creación de controles. En el frontal (PF) nos encontramos con controles e indicadores, conformando las entradas y salidas de datos respectivamente. Desde el Frontal, incorporamos los siguientes controles: 1) 2) 3) 4) 5) 6) 7) 8)
Control Numérico Control Booleano Control String Indicador “Meter” Indicador “Thermometer” Indicador “Tank” Indicador “Boolean” Indicador “String”
Con la paleta Tools activada en selección automática podemos incrementar el valor del control numérico, haciendo clic en las flechas o bien ingresando un número con doble clic en el control. Con la combinación de teclas “CTRL+E”, intercambiamos las pantallas desde PF a DB y viceversa y con “CTRL+T” aparecen juntas una al lado de la otra.
El DB está compuesto por nodos, terminales y cables. El cableado se completa acercando el cursor a los terminales y teniendo la paleta Tools en Selección Automática o bien haber presionado antes el icono , el resultado es el que se muestra en la figura siguiente:
2
Instrumentación Avanzada. J. A. Suárez
En el gráfico diferenciamos tres cableados con colores distintos: a) Color Naranja para los datos numéricos de punto flotante (azul en caso de enteros) b) Color Verde para datos del tipo booleano. c) Color Violeta para los datos Strings. El grosor del cableado indicará si se trata una magnitud escalar, de una matriz de una o de dos dimensiones. Para mejorar la presentación del cableado apoyamos el cursor sobre el mismo y con la tecla derecha nos aparece un menú pop-up. Seleccionando la primera opción “Clean Up Wire” automáticamente se optimizará las conexiones. Con la combinación de teclas “CTRL+B” limpiamos las conexiones que pudieran quedar quebradas. Finalizado el cableado pulsando el botón en la barra de herramientas de Estado el programa se ejecuta. Si el botón apareciera con la flecha quebrada es indicio que el programa tiene irregularidades, con pulsar el botón aparecerá un diálogo con las fuentes de errores. Entre los errores más comunes aparecen:
a) Terminal de entrada de una función sin conectar. b) Cable roto en el DB por incompatibilidad de tipos de datos o bien por conexiones sin continuidad. c) Un Sub VI está roto.
3
Instrumentación Avanzada. J. A. Suárez
Ejercicio 1.1 Crear un VI para convertir °C a °F 1. Seleccionamos File →New, para abrir un nuevo PF. 2. Ubicamos un control numérico desde la paleta Controls→ →Numeric. Este control le ponemos etiqueta °C. 3. Ubicamos en el PF un indicador numérico, con etiqueta °F. 4. Seleccionando Windows→ Show Diagram o bien con CTRL+E, pasamos al DB. 5. Seleccionamos las funciones Multiply y Add desde la paleta Functions→Numeric. 6. Completamos los cableados entre funciones, controles e indicadores, agregando en cada uno de los terminales de las funciones dos constantes: 1.8 y 32. Para esto último estando la paleta en Selección Automática, acercamos el cursor sobre el terminal inferior de las funciones, con clic derecho en el menú pop-up optamos por Create→ Constant.
7. Luego grabamos el archivo VI desde File→Save. 8. Pulsando el botón obtendremos en el PF el resultado de la aplicación:
4
Instrumentación Avanzada. J. A. Suárez
CREACION DE SUB VI Después de crear un VI, este puede ser usado en otra aplicación VI. Cuando un VI se introduce dentro de otro VI se lo llama sub VI y se corresponde con una subrutina llamada en un lenguaje de programación (VB, Pascal, etc.). Ejercicio 1.2: Convertir la aplicación del Ejercicio 1.1 en un sub VI. 1. Seleccionamos desde File→Open el ejercicio Conversor de C a F
2. Seleccionamos con clic derecho sobre el icono de la aplicación (borde superior derecho) la opcion “Edit Icon”, apareciendo el editor de iconos: Dibujar y borrar pixel
Select Tool
Con Select Tool y presionando la tecla
removemos el icono por defecto y creamos el siguiente:
3. Pulsando OK cerramos el editor de iconos y repetimos la operación indicada en 2, pero esta vez optamos por “Show Connector”:
5
Instrumentación Avanzada. J. A. Suárez
Puesto que la aplicación tiene dos terminales, uno de entrada el control numérico (°C) y otro de salida el indicador numérico (°F), seleccionamos desde Patterns la opción con dos terminales, tal como muestra la figura anterior. Ahora con la opción desde la paleta Tools marcamos el conector izquierdo (el conector cambiará a negro) y luego hacemos clic en el control numérico (el conector cambiará a naranja). Repetimos para el conector derecho asignándole el indicador numérico. Para agregarle una descripción a la aplicación que luego se leerá con la ayuda contextual CTRL+H, desde File→VI properties→Documentation agregamos “Sub VI convertidor de grados centigrados a grados Farenheit”. Finalmente grabamos creando de esta manera un sub VI con el nombre “conversor c a f” listo para ser aplicado en otras aplicaciones. Ejercicio 1.3.- Termómetro VI. 1. Seleccionamos File→New y completamos el siguiente esquema en el frontal:
Desde el DB reemplazamos el sensor adquisidor de datos de temperatura por la función “Demo Read Voltage”. Se incorpora la función Select desde la paleta Functions→Comparison. Esta función regresa Falso si el valor de temperatura está en Farenheit y Verdad si está en °C. El sub VI C→ F se incorpora desde Functions→Select a VI→ conversor c a f.vi
Función Select
Finalmente el archivo es guardado como termometro.vi.
6
Instrumentación Avanzada. J. A. Suárez
Ejercicio 1.4 Convertir el ingreso de segundos al formato hora, minutos y segundos, utilizando la función Quotient&Remainder
Ejercicio 1.5 Construir una aplicación VI que a partir de dos temperaturas ingresadas máxima y mínima se comparen con otra actual indicando en pantalla el alerta cuando la máxima y mínima es superada. Caso a) no hay alarma:
Caso b) se supera el mínimo
Caso c) se supera el máximo
7
Instrumentación Avanzada. J. A. Suárez
Ejercicios adicionales: 1) Construir un VI que compare dos números e indique en un LED si el primero es mayor o igual al segundo. 2) Construir un VI que genere un número aleatorio entre 0.00 y 10, dividiendo este número por otro especificado desde el PF. Si el divisor es cero, el VI debe indicarlo encendiendo un LED de control. 3) Ejecutar en una aplicación VI la siguiente ecuación:
4) Graficar la ecuación x3+x+3, para x=1 hasta 100. 5) Ingresar en el PF dos números x1 y x2. Realizar las cuatro operaciones matemáticas (suma, resta, producto y división). Agregar controles booleanos que indiquen si A=B, A>B, A
8
Instrumentación Avanzada. J. A. Suárez
USO DE ESTRUCURAS
While Loop Es una estructura similar a la utilizada en otros lenguajes (do While… Loop), en la que una rutina se repite hasta que la condición impuesta se cumple. Para colocar un While Loop en el DB lo seleccionamos desde Functions→Structures
Terminal Condicionante
Terminal de Iteración
While Loop ejecuta el subdiagrama hasta que la condición terminal reciba un específico valor “Sop if True” y booleano. Por defecto el terminal condicional se detiene si es verdad haciendo clic sobre el mismo puede cambiarse a continuar si es verdad “Continue is True”. El contador de la iteración siempre arrancará desde cero. Ejercicio 2.1. Armar un VI que cuente la cantidad de iteraciones para alcanzar la igualdad con un número ingresado por el operador: En el frontal quedará esta presentación:
El diagrama de bloques será el siguiente:
Se ha introducido la función “Increment” (+1), para contar el número real de iteraciones, dado que como se ha dicho se inician en cero.
9
Instrumentación Avanzada. J. A. Suárez
FOR LOOP
Contador de Ciclos: indica cuantas veces se repite el subdiagrama
N – Terminal de conteo i - Terminal de Iteración
EJECUTA UN SUBDIAGRAMA UN DETERMINADO NÚMERO DE VECES
Si N es cero o negativo el ciclo no se ejecuta
Terminal de iteración Contiene el número de iteraciones completas
For I=0 to N-1
NOTA: El CERO es indexado y aparece en la primera iteración
Ejecuta Código Next I
En For Loop la rutina se ejecuta un número determinado de veces, impuesto por el contador de ciclos N (borde superior izquierdo). Ejercicio 2.2 Ejecutar una aplicación VI que genere 100 números aleatorios y los muestre en un gráfico (Waveform Chart). Diagrama de Bloques:
Frontal:
Opciones de Waveform Chart Desde el menú propiedades (con clic derecho): Update Mode: Strip Chart 10
Instrumentación Avanzada. J. A. Suárez
Desde el menú Plot efectuar los siguientes cambios:
Con la paleta Tools efectuar el cambio de color de fondo (negro a blanco) de la pantalla.
Generación de un Array Se puede usar tanto la secuencia FOR como WHILE LOOP para generar un array. Esto es llamado autoindexado y se logra a través de un túnel en el borde de la estructura. Ejercicio 2.3 Obtener el resultado en un array de los cuadrados de los primeros 10 números naturales y graficarlos.
Auto-Indexed Tunnel
Si en el túnel con clic derecho pasamos a Disable Indexing, aparecerá el cableado de salida quebrado. Si apoyamos el cursor con Create habilitamos un nuevo indicador numérico, que solo entregará el último resultado de la iteración. Comprobar lo anterior agregando un nuevo tunel a For:
11
Instrumentación Avanzada. J. A. Suárez
Shift
“Shift s” (SR) se utiliza tanto en los WHILE LOOP como en FOR LOOP. Se utilizan para transferir datos desde una iteración a la siguiente. Son similares a las variables estáticas en los lenguajes de programación basados en texto. Un SR se crea haciendo click sobre el borde derecho o izquierdo del loop y seleccionando “Add Shift s” desde el menú emergente. Los datos a cablear en los terminales de cada SR deben ser del mismo tipo.
Ejercicio 2.4 Ejecutar un VI que realice un número determinado de iteraciones (hasta 5), mostrando en el frontal los valores correspondientes a x(i-1), x(i-2), x(i-3):
12
Instrumentación Avanzada. J. A. Suárez
CASE STRUCTURE Esta estructura es equivalente a IF/ THEN/ ELSE de los lenguajes tradicionales de texto. If condition=TRUE then Ejecute el código 1 ELSE Ejecute el código 2 Endif
Ejercicio 2.5 Ejecute una aplicación para obtener la raíz cuadrada de un número. Si el número ingresado es menor que cero debe aparecer un diálogo de advertencia. Si el número ingresado es positivo ejecuta la rutina True:
Si el número ingresado es negativo ejecuta la rutina False.
13
Instrumentación Avanzada. J. A. Suárez
Ejercicio 2.6 Construir una aplicación VI que muestre en un solo termómetro la medición de temperatura en ºC y ºF, utilizando la estructura CASE y las propiedades de NODE visible.
14
Instrumentación Avanzada. J. A. Suárez
Ejercicio 2.7 Construir un VI que 5 LED´S, que se iluminen en forma cíclica de izquierda a derecha:
Ejercicio 2.8 Construir un VI que simule el llenado y vaciado de un tanque. El nivel del tanque debe controlarse desde el frontal. Debe incorporarse el control de apertura y cierre de la válvula.
Válvula abierta – Llenado del tanque
Válvula cerrada – Vaciado del tanque
Ejercicio 2.9 Crear un vi que cuente un número ingresado y lo muestre. El programa puede reiniciarse con el botón contar, cada vez que un nuevo número es ingresado
Ejercicio 2.10 Graficar un número aleatorio con “delay” variable en el frontal en segundos.
15
Instrumentación Avanzada. J. A. Suárez
Ejercicio 2.11 Graficar la temperatura actual y la media con dos sensores de temperatura ubicados en dos lugares distintos (cámara 1 y cámara 2).
Ejercicio 2.12 En un arreglo de 10 LEDS hacer que encienda a través de un control numérico un determinado LED. De la misma manera con otro control numérico efectuar la operación de apagado.
Ejercicio 2.13 Simular la presión en el interior de un tanque agregando una imagen de archivo en el frontal. 1) Creamos desde File→New un nuevo archivo. 2) Desde Edit seleccionamos “Import Picture to Clipboard”, seleccionamos la imagen tanque.jpg desde la carpeta ejercicios. 3) En el frontal agregamos un control para la alarma –un LED- cuando se supere el valor máximo de 5.5 kg/cm2. Al LED desde propiedades le cambiamos el color a rojo. 4) Insertamos un control para medir la presión GAUGE.
16
Instrumentación Avanzada. J. A. Suárez
5) Desde el DB agregamos las funciones Random Number, Add y Greater. Completamos con un While Loop y un temporizador Wait con una constante igual a 1000, simulando la adquisición de un dato cada segundo.
17
Instrumentación Avanzada. J. A. Suárez
2.14 .- Simular el llenado el vaciado de un Tanque 1, simultáneamente con el llenado del Tanque 2, luego de la apertura de la válvula. Completar el esquema del VI con tuberías y simulación del control de apertura-cierre de la válvula
.
2.15.- Crear un VI que simule el cierre de un interruptor (control personalizado) y arranque el motor de una cinta que al llegar al 90% de su recorrido se detenga, abriendo el interruptor.
18