Strack
GUIA DE EJERCICIOS
Nº 4
INSTRUMENTACIÓN AVANZADA
1
Instrumentación Avanzada. G. Murcia- J. Strack
Las estructuras en LabVIEW son representaciones gráficas de ciclos o selección de casos similar
a la programación de lenguajes clásicos. Usamos estructuras para repetir un bloque de código y
ejecutarlo condicionalmente o en un orden específico.
Las estructuras que veremos en este curso son:
WHILE LOOP
FOR LOOP
CASE
SEQUENCE
EVENT
Es una estructura similar a la utilizada en otros lenguajes (do While… Loop), en la que una
rutina (lo que se programe dentro del cuadro gris) se repite hasta que la condición impuesta se
cumple. Para colocar un While Loop en el DB lo seleccionamos desde FunctionsStructures
Terminal
Terminal de Condicionante
Iteración
While Loop ejecuta el subdiagrama hasta que la condición terminal reciba un específico valor
booleano. Por defecto el terminal condicional detiene el ciclo While si es verdad “Sop if
True” y haciendo clic con el botón derecho del mouse sobre el mismo puede cambiarse a
continuar si es verdad “Continue is True”. El contador de la iteración representado con una “i”
cuenta las veces que el while se ejecuta y siempre arranca de cero.
En For Loop la rutina lo que se programe dentro del cuadro se ejecuta un número determinado
de veces, impuesto por el contador de ciclos N (borde superior izquierdo).
Contador de Ciclos:
indica cuantas N – Terminal de conteo
veces se repite el
subdiagrama i - Terminal de Iteración
EJECUTA UN
Si N es cero o SUBDIAGRAMA UN
negativo DETERMINADO NÚMERO
el ciclo DE VECES
no se
ejecuta Terminal de iteración
Contiene el número de
iteraciones completas
Next I
2
Instrumentación Avanzada. G. Murcia- J. Strack
A la estructura For Loop se le puede agregar un terminal condicional similar al que tiene la
estructura While, en ese caso, la rutina se ejecuta N veces o hasta que la condición se cumpla (lo
que ocurra primero).
Para agregar un terminal condicional solo hay que hacer clic con el botón derecho del mouse
sobre el cuadro For Loop y seleccionar la opción correspondiente. Aparece ahora un pequeño
círculo rojo sobre la cantidad de ciclos y el terminal condicional.
La estructura Case:
Esta estructura es equivalente a IF/ THEN/ ELSE de los lenguajes tradicionales de texto. Es
decir:
If condition=TRUE then
Ejecute el código 1
ELSE
Ejecute el código 2
Endif
Por defecto toma la forma de la siguiente figura, donde el valor de la variable Booleana cableada
al terminal condicional determina si se ejecuta el código 1 o el 2 programado dentro de
cada cuadro.
Ejecuta el Ejecuta el
código 1 código 2
La estructura Case no queda limitada a dos casos (caso Verdadero o caso Falso) sino que se
puede extender a un sinnúmero de casos, solo hace falta cablear, por ejemplo, una variable
numérica al terminal condicional booleano que, automáticamente, cambia a la forma de
número entero (color azul).
Haciendo clic con el botón derecho del mouse sobre el cuadro “0, Default” se pueden agregar
nuevos casos con “Add Case After” o “Add Case Before” en la cantidad que uno quiera.
3
Instrumentación Avanzada. G. Murcia- J. Strack
Este tipo de estructura se presenta como un rollo de película de cine o de cámara fotográfica,
para transmitir la idea de algo que se ejecuta en un orden (en una película se ve primero la escena
1, luego la escena 2, etc, por ejemplo).
En efecto, una estructura Secuence presenta varios subdiagramas o cuadros como si fueran las
escenas en una película de cine. Estos cuadros se ejecutan en orden, de modo que esta estructura
secuencia la ejecución de un programa. Por defecto hay un solo cuadro, pero se pueden agregar
los que uno quiera.
Primero se Luego se
ejecuta este ejecuta este
código otro código
La diferencia entre Flat Secuence y Stacked Secuence es que en la Stacked Secuence los cuadros
están superpuestos por lo que únicamente se puede visualizar uno en pantalla.
Para pasar datos de una hoja a otra se pulsará el botón derecho del ratón sobre el borde de la
estructura, seleccionando la opción “Add sequence local”.
La estructura Event:
La estructura Event detiene la ejecución del hilo del programa hasta que se dé una condición, es
decir, congela un programa hasta que ocurre un evento. Sirven para hacer una interfaz con el
usuario.
Por defecto la estructura Event presenta un evento “Timeout”. El código del diagrama para el
evento Timeout se ejecutará cuando pase la cantidad de milisegundos especificada en el terminal
“Event Timeout” (reloj color azul de la esquina superior izquierda)
4
Instrumentación Avanzada. G. Murcia- J. Strack
Se pueden agregar mas subdiagramas haciendo clic con el botón derecho sobre esta estructura.
Cada nuevo subdiagrama tendrá un evento asociado que se configura en la ventana “Edit Event”.
Si bien no son estructuras los “Shiftregisters” (SR) se utiliza tanto en los WhileLoop como en
ForLoop y resultan muy útiles:
5
Instrumentación Avanzada. G. Murcia- J. Strack
Ejercicio 4.1.
Simular en una estructura “Sequence” el siguiente proceso:
Etapa 1: Un tanque se llena a un nivel predeterminado.
Etapa 2: Una vez lleno el tanque se le pregunta a un operador si desea calentar su
contenido hasta alcanzar una temperatura predeterminada.
Etapa 3: Si el operador acepta el tanque se calienta, de lo contrario no.
Etapa 4: Se muestra un cuadro de dialogo que dice “Proceso Finalizado” si el tanque llegó
a la temperatura predeterminada o el operador presionó NO en la Etapa 3.
Ejercicio 4.2.
Una tensión continua entre 0 y 5V se mide con una entrada analógica de la placa USB.
Construir una aplicación que muestre en pantalla el valor actual de esa tensión y memorice
sus valores máximo y mínimo durante el tiempo que se encuentre ejecutando. Muestre el
historial de estas mediciones con un “Waveform Chart”.
Un botón de “STOP” debe finalizar la ejecución del programa.
6
Instrumentación Avanzada. G. Murcia- J. Strack
Ayuda…:
Ejercicio 4.3.
Construir una aplicación que mediante una estructura “Event” muestre un panel con
cuatro botones.
Si se presiona el botón “PROCESO 1 ON” la salida digital 1 de la placa USB se debe
encender, y si se lo vuelve a presionar se debe apagar.
Lo mismo debe suceder si se presiona el botón “PROCESO 2 ON” o “PROCESO 3 ON”
pero accionando los leds 2 y 3 de la placa USB.
Un cuarto Botón debe detener la ejecución del programa.
Nota: Una vez construido observe que sucede con el indicador “Iteraciones”.
7
Instrumentación Avanzada. G. Murcia- J. Strack
Ejercicio 4.4.
La idea de este ejercicio es crear un programa (que luego transformaremos en un Sub-vi)
que sea capaz de reconocer automáticamente a que puerto COM virtual hemos conectado
nuestra Placa PIC o Arduino y deje disponible dicho puerto para que lo podamos usar en
cualquier otra aplicación, sin que lo tengamos que seleccionar.
Para resolver este ejercicio vamos a introducir una nueva fracción de código en nuestra Placa
PIC o Arduino de manera similar a como venimos haciendo hasta aquí. Es decir, así como el
envío de una “A” hace que la Placa PIC o Arduino escriba las salidas digitales, el envío de una
“B” nos permite leer las entradas digitales y el envío de una “C” nos permite leer una entrada
analógica, ahora enviaremos una letra “I” para que la placa nos devuelva una cadena de texto que
nos permita identificarla.
Abrimos el PIC C-Compiler, tomamos el código presentado en el Ejercicio 2-4 de la Guía N°2 y
le sumamos este nuevo “if” en el ciclo While infinito donde comparábamos si recibíamos una A,
B o C.
Luego compilamos y si no tiene errores lo cargamos en el PIC con el software SIOW siguiendo
el procedimiento de carga visto en la clase 2.
Abrimos el entorno IDE, tomamos el código presentado en la Guía N°3 y le sumamos este nuevo
“if” en el ciclo While infinito.
8
Instrumentación Avanzada. G. Murcia- J. Strack
Ejercicio 4.5.
Usando el sub-vi creado en el ejercicio anterior construya una aplicación que reconozca
automáticamente la placa USB conectada y encienda secuencialmente sus 4 leds.
9
Instrumentación Avanzada. G. Murcia- J. Strack
10