Sie sind auf Seite 1von 10

Instrumentación Avanzada. G. Murcia- J.

Strack

GUIA DE EJERCICIOS
Nº 4
INSTRUMENTACIÓN AVANZADA

Estructuras Básicas en LabVIEW

1
Instrumentación Avanzada. G. Murcia- J. Strack

4- USO DE ESTRUCURAS BÁSICAS

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

La estructura While Loop:

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 FunctionsStructures

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.

La estructura For Loop:

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

For I=0 to N-1 NOTA: El CERO es indexado y


aparece en la primera iteración
Ejecuta Código

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

La estructura Secuence: (Flat Secuence o Stacked Secuence

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

Estructura Flat Secuence

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.

Estructura Stacked Secuence

La Stacked Secuence también posee un identificador del subdiagrama mostrado en su parte


superior, con posibilidad de avanzar o retroceder a otros subdiagramas gracias a las flechas
situadas a ambos lados del mismo. Estos subdiagramas se insertan pulsando el botón derecho del
ratón sobre el borde de la estructura, seleccionando la opción “Add Frame After”.

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”.

National Instrument respecto de la estructura Event dice:


 No usar una estructuta Event dentro de otra.
 Si un Event se inserta dentro de un While y este acaba mediante un botón de STOP, se
debe insertar dicho botón dentro del subdiagrama asociado al cambio de estado de dicho
botón.
 Los cambios de valor en los controles de forma programada no generan eventos, solo se
realizan cuando se generan cambios de valor mediante la interfaz de usuario.

Los Shift Registers

Si bien no son estructuras los “Shiftregisters” (SR) se utiliza tanto en los WhileLoop como en
ForLoop y resultan muy útiles:

 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 “AddShiftregisters” desde el menú emergente.
 Los datos a cablear en los terminales de cada SR deben ser del mismo tipo.

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.

Ayuda…: ¿Cómo sigue el resto?

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

Ayuda…: ¿Qué pasa en los otros eventos?

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.

Para el caso de una placa PIC

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.

if (c=='I') // entra en rutina de enviar identificación


{ Poner el número asignado en
printf(usb_cdc_putc,"Placa PIC18F2550 N-04"); la etiqueta de la placa
} // FIN DE ATENCIÓN AL COMANDO 'I'

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.

Para el caso de una placa Arduino

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.

if (caracterEntrada == 'I') { Poner el número asignado en


Serial.println("Placa ARDUINO UNO-03"); la etiqueta de la placa
delay(10);
}// FIN DE ATENCIÓN AL COMANDO 'I'

8
Instrumentación Avanzada. G. Murcia- J. Strack

Luego compilamos y si no tiene errores lo cargamos en el Arduino.

Ahora programamos en LabVIEW lo siguiente:

Luego de probar su funcionamiento construimos un sub-vi para


que tenga el aspecto de la figura de la izquierda.

Grabamos este sub-vi dentro de la librería


“daqPIC18F2550_v2012.dll” que se encuentre en el DVD de la
asignatura y grabamos esta dll en el directorio “user.lib” donde
hayamos instalado Labview. De esta forma hemos agregado una
herramienta más a la paleta “INSTRUMENTACIÓN
AVANZADA”

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

Das könnte Ihnen auch gefallen