instrumentaciÓn avanzada - fi.mdp.edu.ar · instrumentaciÓn avanzada 1.- entorno de programaciÓn...

62
INSTRUMENTACI INSTRUMENTACI Ó Ó N AVANZADA N AVANZADA Instrumentación Virtual con LabVIEW ESTRUCTURAS ESTRUCTURAS

Upload: dinhmien

Post on 28-Jul-2018

234 views

Category:

Documents


1 download

TRANSCRIPT

INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA

Instrumentación Virtual con LabVIEW

ESTRUCTURASESTRUCTURAS

INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA

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

EJERCICIO VI

“Shift Registers”

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

Case Structures

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

EJERCICIO VI

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

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

Sentencias de secuenciación

Ejercicio

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 Local

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

Creación de una Variable Global

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

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

Personalizar Controles

INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA

EjemploEjemplo

INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA

INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA

CustomizarCustomizarcontrolescontroles

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

INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA

Ejercicios Ejercicios AdicionalesAdicionales

INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA

demo demo

INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA

INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA

INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA

INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA

videovideo

INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA

Ejercicio 2.9

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

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

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

INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA

INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA

INSTRUMENTACIINSTRUMENTACIÓÓN AVANZADAN AVANZADA