INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Instrumentación Virtual con LabVIEW
ESTRUCTURASESTRUCTURAS
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
�ESTRUCTURAS
�WHILE�FOR.. �CASE�SEQUENCE�Opciones de selección de CASE
�Controles Visibles�Variables Locales y Globales�Personalizar controles
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
1.- ENTORNO DE PROGRAMACIÓN
2.- ESTRUCTURAS
3.-ARRAYS Y CLUSTERS
4.- MATHSCRIPTS Y MATLAB
5.- STRINGS & FILES
6.- GRAFICOS
7.- ADQUISICION DE DATOS
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Do While LoopDo While Loop
Terminal de Iteración
Terminal Condicionante
Do While condicion is trueExecute Sub diagram
Loop
•While Loop revisa la condición al final del ciclo. •El ciclo se ejecuta al menos una vez. •El terminal de iteración contiene el número de veces que el ciclo se ha ejecutado.
Ejecuta una rutina hasta que la condición terminal se cumple.
Blank.viBlank.vi
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Do While Loop
Con Click derecho derecho podemos cambiar la condición
La primera iteración inicia en cero
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
For LoopFor LoopContador de Ciclos:indica cuantas veces
se repite el subdiagrama
Terminal de iteración
Contiene el número de iteraciones completas
Dos atributos:
N – Terminal de conteo
i - Terminal de Iteración
For I=0 to N-1
Ejecuta Código
Next I
NOTA: El CERO esindexado y aparece en la primera iteración
A partir de LabVIEW 7, haciendoclick sobre “WHILE loop” en el diagrama de bloques puedecambiarse por “FOR loop”
EJECUTA UN SUBDIAGRAMA UN DETERMINADO NÚMERO DE VECES
Si N es cero o negativo el ciclo no se ejecuta
EjercicioEjercicio
Blank.viBlank.vi
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Se obtiene el último resultado
Se almacenan en cada una de las celdas de una matriz los resultados parciales
INDEXADO
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Shift Registers“Shift registers” se utiliza tanto en los WHILE LOOP como en FOR LOOP.
Se usan 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 “Shift register” se crea haciendo click sobre el bordederecho o izquierdo del loop y seleccionando “Add Shift registers” desde el menú emergente.
Los datos a cablear en los terminales de cada SR deben ser del mismo tipo.
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
EjercicioEjercicio
EjercicioEjercicio: Obtener el penúltimo y último resultado del cuadrado de los primeros cinco números naturales.
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Sentencias de Selección: Case Structures
Esta estructura es equivalente a IF/ THEN/ ELSE
CASE SELECT structures
F a ls e If condition=TRUE THENExecute code
ELSEExecute Code
End If
CASE SELECT varvar=1, do code1var=2, do code2var=3, do code3otherwise, do code
0 , D e f a u lt
v a r
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Opciones de SelecciOpciones de Seleccióón para CASE n para CASE
Ejercicio (booleanoEjercicio (booleano--numnumééricorico--Ring)Ring)
Ejercicio (Ejercicio (tabtab control)control)
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Opción de Selección con TAB CONTROL
EjercicioEjercicio
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Propiedades de Controles e IndicadoresPropiedades de Controles e IndicadoresVisibleVisible
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Marcando el control y haciendo clic derecho con el mouseseleccionamos:
Create->Property Node->Visible
Propiedades Propiedades node.vinode.vi
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
En lenguajes tradicionales basados en texto, el orden de ejecución lo impone el orden en que las instrucciones estánescritas.
En LabVIEW sigue el modelo de Flujo de Datos, (un nodonecesita tener disponibles todos los datos de sus entradasparaejecutarse), por lo tanto no se puede determinar cual esel orden de las tareas a ejecutar.
Puede presentarse el caso de nodos independientes, en situación de ejecutarse simultáneamente, pero por manejo de los datos, es necesario fijar el orden de los mismos, es decirestablecer una secuencia de ejecución.
Sentencias de secuenciación
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
•Se trata de un tipo de sentencia que garantiza la ejecución secuencial (uno detrás de otro) de varios módulos de código.
•Cuando en el diagrama de LabVIEW son definidos varios módulos de código, en realidad no se sabe en qué orden van a ser ejecutados, es decir, no se sabe cuál de ellos se ejecutará en primer lugar y cuál en el último lugar. Hay aplicaciones en las que este orden de ejecución no es importante, pero en otras es de vital importancia. Por ello, en las aplicaciones donde el orden de ejecución de los distintos módulos es crítico, resulta imprescindible utilizar las sentencias de secuenciación para garantizar esa secuencia de ejecución de los módulos.
Sentencias de secuenciación
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Simulan como fotogramas de una película
La herramienta de desarrollo de aplicaciones LabVIEW ofrece dos dos sentencias de secuenciación. La primera es la Flat Sequence Structurey se encuentra en Functions/Programming/Structures. Cuando es insertada en el diagrama de nuestra aplicación, aparece con una única ventana o Frame: es la unidad o elemento donde irá un módulo dado del código de nuestra aplicación. Para añadir más ventanas, se pulsa sobre la ventana con el botón derecho del ratón y se ejecuta Add Frame Beforeo Add Frame After, para añadir la ventana antes o después de la actual, respectivamente.
Sentencias de secuenciación
EjercicioEjercicio
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
FLAT SEQUENCEFLAT SEQUENCE
ejercicio
Ejercicio 2.7Construir un VI que 5 LED´S, que se iluminen en forma cíclica de izquierda a derecha:
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Cuando son necesarias muchas ventanas, porque así lo requiere la aplicación, aparece el problema del espacio en el diagrama, de tener que desplazar varias pantallas desde el inicio de la secuencia hasta su final. Entonces, lo lógico es sustituir la sentencia Flat Flat SequenceSequenceStructureStructurepor la sentencia StackedStackedSequenceSequenceStructureStructure, la cual funciona exactamente igual que la anterior, solo que apila las ventanas una encima de otra. Aunque a simple vista no sea posible ver la secuencia, resulta muy práctico su uso cuando el espacio disponible es pequeño.
Sentencias de secuenciación
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Trabajando con Variables�Variable Local�Variable Global�Variable Compartida
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Trabajando con VariablesTrabajando con Variables
Muchas veces dentro de la programación es necesario almacenar el valor de una variable para poder usarla posteriormente.
En LabVIEWtambién puede realizarse estas sentencias, almacenando una variable para luego usarla dentro de otro bloque del VIo bien en en otro VI.otro VI.
LabVIEW dispone de dos tipos de variables locales y globales y a partir de la versión 8.0 las compartidas.
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Creación de una Variable LocalConstruimos el siguiente VI, utilizando una Flat Sequence Structure
EjercicioEjercicio
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Creación de una Variable LocalA continuación le agregamos un cuadro a la secuencia, que consistirá en una variable local que almacenará el último número generado y lo presentará en el PF. La variable local la seleccionamos dentro de Structures :
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Creación de una Variable LocalA continuación hay dos pasos fundamentales a realizar: Primero: determinar a que objeto del programa va a estar enlazadoSegundo: elegir si va a ser de lectura (read) o escritura (wirte).
Para el caso del ejemplo hacer click derecho sobre la variable local y seleccionar Select Item/Numericy luego Change to Read
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Creación de una Variable LocalFinalmente le agregamos un indicador a la variable y ejecutamos el programa, comprobando que este termina con dos indicadores con valores idénticos, es decir el último número registrado:
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Creación de una Variable GlobalLas variables locales solo tienen vida dentro de un mismo VI y no pueden ser llamadas desde otro VI. Esto si ocurre con las variables globales.En el ejercicio siguiente se va a utilizar una variable global para almacenar un número generado en un VI para ser llevado a otro VI.Para esto primero desde el DB creamos desde Structures la variable global
EjercicioEjercicio
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Creación de una Variable GlobalLuego grabamos el VI como Global y cerramos.
A continuación se va a seleccionar la entrada de la variable Global a utilizar, para esto hacemos click derecho en la variable y en Select Item optamos por la entrada 1, verificando que esté en modo Write
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Paso siguiente sin cerrar el actual VI (Variable Global 1), creamos otro VI (Variable Global 2) para rescatar el valor anterior y mostrarlo en pantalla.
Para este segundo VI, creamos uno en blanco y llamamos a la variable Global como si se llamase a un SubVI, luego cambiar a lectura y realizar el programa siguiente:
Creación de una Variable Global
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Ejecutamos Variable Global 2 en modo continuo activando el control booleano y luego ejecutamos el VI anterior (Variable Global 1), y se observará como va cambiando el número, es decir el valor generador en el primer VI, es rescatado en el segundo VI
Creación de una Variable Global
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
SIMULACIÓN LLENADO Y VACIADO DE UN TANQUE
Ejercicio
Válvula abierta – Llenado del tanque Válvula cerrada – Vaciado del tanque
AplicaciAplicacióón de Flat n de Flat SequenceSequencey Variable Localy Variable Local
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Creación de una Variable Local(Control de la Válvula apertura-cierre de entrada de líquido)
Haciendo con el mouse clic derecho sobre el control Válvula vamos a Createy luego Local Variable
Ahora lo movemos al primer cuadro de la estructura sequence y le anexamos una constante booleana (verdad).
Seteado en Write
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
A partir del agregado de un botón OK, haciendo clic derecho con el mouse seleccionamos AdvancedAdvanced, , y luego customize.
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Importante : Sin en lugar de Picture Item aparece Text Item, debe separarse previamente el texto del control de la imagen. En este caso mover OK por fuera del dibujo.
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
EJERCICIO 2.10EJERCICIO 2.10
Graficar un número aleatorio con delayvariable calibrado en segundos desde el panel frontal
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
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.11Ejercicio 2.11
INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA
Ejercicio 2.12.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.12