INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Instrumentación Virtual con LabVIEW ESTRUCTURAS INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA ESTRUCTURAS WHILE FOR.. CASE SEQUENCE Opciones de selección de CASE Controles Visibles Variables Locales y Globales Personalizar controles INSTRUMENTACIÓ INSTRUMENTACIÓN 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 INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Do While Loop Terminal de Iteración Do While condicion is true Execute Sub diagram Loop Terminal Condicionante Ejecuta una rutina hasta que la condición terminal se cumple. •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. Blank.vi INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Do While Loop La primera iteración inicia en cero Con Click derecho derecho podemos cambiar la condición For Loop Contador de Ciclos: indica cuantas veces se repite el subdiagrama Dos atributos: N – Terminal de conteo INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA A partir de LabVIEW 7, haciendo click sobre “WHILE loop” en el diagrama de bloques puede cambiarse por “FOR loop” i - Terminal de Iteración Si N es cero o negativo el ciclo no se ejecuta For I=0 to N-1 Ejecuta Código Next I Terminal de iteración Contiene el número de iteraciones completas Blank.vi Ejercicio EJECUTA UN SUBDIAGRAMA UN DETERMINADO NÚMERO DE VECES NOTA: El CERO es indexado y aparece en la primera iteración INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA INDEXADO Se obtiene el último resultado Se almacenan en cada una de las celdas de una matriz los resultados parciales INSTRUMENTACIÓ INSTRUMENTACIÓN 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 borde derecho 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. INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Ejercicio: Ejercicio Obtener el penúltimo y último resultado del cuadrado de los primeros cinco números naturales. Ejercicio INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA “Shift Registers” EJERCICIO VI INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Sentencias de Selección: Case Structures Esta estructura es equivalente a IF/ THEN/ ELSE If condition=TRUE THEN Execute code ELSE Execute Code End If F a ls e CASE SELECT structures CASE SELECT var var=1, do code1 var=2, do code2 var=3, do code3 otherwise, do code 0 , D e f a u lt var INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Case Structures INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Opciones de Selección para CASE Ejercicio (booleano-numérico-Ring) Ejercicio (tab control) INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Opción de Selección con TAB CONTROL Ejercicio INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA EJERCICIO VI INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Propiedades de Controles e Indicadores Visible INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Marcando el control y haciendo clic derecho con el mouse seleccionamos: Create->Property Node->Visible Propiedades node.vi INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Sentencias de secuenciación En lenguajes tradicionales basados en texto, el orden de ejecución lo impone el orden en que las instrucciones están escritas. En LabVIEW sigue el modelo de Flujo de Datos, (un nodo necesita tener disponibles todos los datos de sus entradas para ejecutarse), por lo tanto no se puede determinar cual es el 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 decir establecer una secuencia de ejecución. INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Sentencias de secuenciación •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. INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Sentencias de secuenciación La herramienta de desarrollo de aplicaciones LabVIEW ofrece dos sentencias de secuenciación. La primera es la Flat Sequence Structure y 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 Before o Add Frame After, para añadir la ventana antes o después de la actual, respectivamente. Simulan como fotogramas de una película Ejercicio INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Ejercicio INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA FLAT SEQUENCE Ejercicio 2.7 Construir un VI que 5 LED´S, que se iluminen en forma cíclica de izquierda a derecha: ejercicio INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Sentencias de secuenciación 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 Sequence Structure por la sentencia Stacked Sequence Structure, Structure 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. INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Sentencias de secuenciación Ejercicio INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Trabajando con Variables Variable Local Variable Global Variable Compartida INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Trabajando con Variables Muchas veces dentro de la programación es necesario almacenar el valor de una variable para poder usarla posteriormente. En LabVIEW también puede realizarse estas sentencias, almacenando una variable para luego usarla dentro de otro bloque del VI o bien en otro VI. LabVIEW dispone de dos tipos de variables locales y globales y a partir de la versión 8.0 las compartidas. INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Creación de una Variable Local Construimos el siguiente VI, utilizando una Flat Sequence Structure Ejercicio INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Creación de una Variable Local A 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 : INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Creación de una Variable Local A continuación hay dos pasos fundamentales a realizar: Primero: determinar a que objeto del programa va a estar enlazado Segundo: 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/Numeric y luego Change to Read INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Creación de una Variable Local INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Creación de una Variable Local Finalmente 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: INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Creación de una Variable Global Las 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 Ejercicio INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Creación de una Variable Global Luego 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 INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Creación de una Variable Global INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Creación de una Variable Global 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: INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Creación de una Variable Global 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 INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA SIMULACIÓN LLENADO Y VACIADO DE UN TANQUE Válvula abierta – Llenado del tanque Válvula cerrada – Vaciado del tanque Aplicación de Flat Sequence y Variable Local Ejercicio INSTRUMENTACIÓ INSTRUMENTACIÓN 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 Create y luego Local Variable Seteado en Write Ahora lo movemos al primer cuadro de la estructura sequence y le anexamos una constante booleana (verdad). INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Personalizar Controles INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Ejemplo INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Customizar controles INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA A partir del agregado de un botón OK, haciendo clic derecho con el mouse seleccionamos Advanced, y luego customize. INSTRUMENTACIÓ INSTRUMENTACIÓN 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. INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Ejercicios Adicionales INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA demo demo INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA video INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Ejercicio 2.9 INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA Graficar un número aleatorio con delay variable calibrado en segundos desde el panel frontal EJERCICIO 2.10 INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA INSTRUMENTACIÓ INSTRUMENTACIÓN 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.11 INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA 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 INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA INSTRUMENTACIÓ INSTRUMENTACIÓN AVANZADA