Instrumentación Virtual I Trabajo Práctico N° 2 Breve introducción ...

FUNCIÓN AIN. Hace una lectura de una señal Análoga convirtiéndola a un Numero entre 0 y2024. FUNCIÓN TO ENG. Según la ga
520KB Größe 66 Downloads 104 Ansichten
Instrumentación Virtual I Trabajo Práctico N° 2 Breve introducción teórica Operaciones Aritméticas y Funciones. Las operaciones aritméticas en LV son muy diferentes a los lenguajes de programación conocidos hasta ahora, debido a que son utilizados gráficos en lugar de código las operaciones son representadas por ciertos gráficos en los cuales se tienen sus entadas a la derecha y su salidas a la izquierda provocando así un resultado. Las funciones son parecidas pero la mayoría solo necesitan de un argumento en la entrada y se tendrá una salida como resultado. Subvi's Los Subvi's es una herramienta propia de LV en la cual se encapsulan los procedimientos algorítmicos para volver a ser reutilizados más adelante en nuestra programación o algún otro programa posterior. Los Subvi´s son archivos de Labview (VI) que son llamados por otro archivo de Labview para realizar una de las siguientes tareas: •

Compactar y organizar los elementos del diagrama. Cualquier operación matemática o lógica puede integrarse a un Subvi, si bien esto compacta y ahorra espacio en el diagrama la memoria que utiliza el archivo es la misma. No es recomendable incluir estructuras While o For Loop en estos Subvi´s.



Generar una función nueva. Suponga que requiere de una operación que necesitará más de una vez en uno o diferentes archivos, esta operación se puede realizar en un Subvi y llamarlo cuantas veces sea necesario. Al igual que en el caso interior no se deben incluir estructuras While o For Loop.



Llamar una Subrutina. Cuando se llama subrutina el VI principal deja de ejecutarse y se ejecuta el VI que contiene la Subrutina. Esto permite generar múltiples ventanas y llamados de VI´s. Contrario a los casos anteriores, para utilizar un Subvi como subrutina es indispensable utilizar estructuras While o For Loop.

Funciones de Comparación Las funciones de comparación mayor que, menor que, igual que, etc. evalúan dos entradas numéricas y entregan a la salida una señal booleana verdadera si la condición

evaluada se cumple, por el contrario entregan una señal booleana falsa si la condición no se cumple. Ejemplo: 5 > 2: Verdadero. 1= 10: Falso. La función Select cuenta con dos entradas numéricas o string A y B (ambas tienen que ser del mismo tipo) y una entrada booleana, Si la entrada booleana es verdadera la salida es igual a la primera entrada numérica o string (A), si la entrada booleana es falsa la salida es igual a la segunda entrada numérica o booleana (B). Por tanto la función Select selecciona entre el término A (Verdadero) y el término B (Falso). WAVEFORM CHART Las gráficas Waveform Chart son indicadores numéricos en forma de registro, este tipo de gráficas pueden adquirir datos numéricos independientes (cada ciclo de ejecución del programa se adquiere un dato) o bien en conjunto o grupos de datos (arreglos de datos). Los datos que se adquieren se grafican en el eje Y mientras que en el eje X se gráfica automáticamente el número de datos adquiridos o la hora de adquisición. CLUSTER y BUNDLE Los Clúster son grupos de datos con elementos del mismo o diferente tipo, se comporta como un bus de datos los cuales son transmitidos simultáneamente por un cable, como un cable de impresora en los cuales cada alambre representa un elemento diferente del Clúster. Bundle es una función que crea un Clúster. WHILE LOOP El While Loop es una estructura de control de ejecución del programa, se ejecuta mientras se cumpla una condición booleana específica. Sin embargo el comportamiento de esta estructura es como Do-While (Se ejecuta por lo menos una ocasión, antes de evaluar por primera vez la condición booleana) SHIFT REGISTER Los Shift Register son registros o memorias de datos de las estructuras While y For Loop, estos registros almacenan información y la transfieren de una iteración a otra posterior, es decir guardan el resultado de una operación o algoritmo obtenido en un ciclo For o While Loop para ser utilizado un ciclo de ejecución posterior.

FUNCIONES MAX-MIN Las funciones Max-Min reciben dos datos numéricos de entrada y los clasifican a la salida en máximo y mínimo respectivamente. FOR LOOP El For Loop es una estructura de control de ejecución del programa, se ejecuta un número predeterminado de veces especificado por un dato numérico conectado a la Terminal de control N en la parte exterior de la estructura. ENABLE Y DISABLE INDEXING Cuando se envían datos al interior o al exterior de una estructura For o While Loop se genera un túnel de datos (veremos en esta práctica específicamente el envío de datos al exterior de la estructura), este túnel de datos puede operar en dos modos: Disable Indexing: El último dato que es enviado al túnel es pasado y actualizado al exterior de la estructura una vez que se termina de ejecutar la misma. Enable Indexing: Cada dato que se recibe en el túnel durante las iteraciones de ejecución de la estructura es almacenado en un grupo de datos llamado arreglo y es enviado y actualizado al exterior de la estructura una vez que la misma termina de ejecutarse. ARREGLOS (Array) Los arreglos son grupos de datos del mismo tipo con un determinado número de elementos y con una o varias dimensiones. Un arreglo puede entenderse mejor por su similitud a una carpeta con hojas, la carpeta representa una dimensión del arreglo y cada hoja representa un elemento o dato del arreglo. Al igual que con una carpeta un arreglo se puede manipular para ser enviado de una parte a otra del programa, ingresar datos, sacar datos o formar un arreglo nuevo a partir de información que genera el propio programa. Es posible generar arreglos de controles e indicadores: Numéricos, Boléanos, String y Clústeres. XY GRAPH La gráfica XY Graph requiere de dos arreglos numéricos del mismo tamaño para desplegar la información, un arreglo para graficar el eje X y otro arreglo para graficar el eje Y. Estos dos arreglos deben conjuntarse en forma de Clúster antes de conectarlos al XY Graph, esto se logra utilizando una función Bundle.

ESTRUCTURA CASE La estructura Case posee dos o más casos o subdiagramas, solo uno puede ser mostrado a la vez y solo uno puede ejecutarse a la vez. El valor de la entrada determina cuál de los casos habrá de ejecutarse. CONTROLES RING Los controles Ring son objetos numéricos que asocian los valores numéricos entregados con texto o imágenes. Los controles Ring son comúnmente utilizados para generar un menú de opciones y controlar una estructura Case de acuerdo a estas opciones. VARIABLES LOCALES Las variables locales son copias de controles e indicadores, se utilizan para leer o modificar una variable en diferentes partes de un mismo programa, por ejemplo en dos estructuras diferentes o subdiagramas diferentes de una misma estructura. ESTRUCTURA SEQUENCE Esta estructura cuenta con dos o más cuadros de subdiagrama, su ejecución se realiza cuadro por cuadro comenzando por del cuadro de menor numeración hacia el cuadro de mayor numeración. Su ejecución es similar a una película donde cada cuadro de subdiagrama representa una escena de la misma. SEQUENCE LOCAL Los Sequence local son memorias de datos de una estructura Sequence, estas memorias permiten enviar e intercambiar información de un cuadro a otro de la estructura con la única condición de que solo se pueden mandar datos de un cuadro anterior a uno posterior de la misma estructura. FUNCIÓN SECOND TO DATE/TIME Esta función entrega un clúster que incluye datos de fecha y hora, si la entrada numérica se deja sin conectar la fecha y hora que entrega es la del reloj de la computadora. UNBUNDLE

Este tipo de funciones hacen la operación inversa del Bundle, es decir, mientras el Bundle genera un Clúster a partir de una serie de elementos de entradas, el Unbundle separa uno o más elementos de un Clúster. FUNCIÓN OUT PORT Escribe un Byte o una Palabra a la dirección de memoria de un puerto. QUOTIENT & REMINDER Función numérica, divide dos números y entrega a la salida el resultado de la división en dos datos numéricos: Resultado entero de la división y resultado remanente. En nuestra práctica utilizaremos el remanente para generar automáticamente los números 0, 1, 2 y 3 para generar la secuencia del motor a pasos. FUNCIÓN IN PORT Lee un Byte o una Palabra del registro de memoria de un puerto. FUNCIÓN AIN Hace una lectura de una señal Análoga convirtiéndola a un Numero entre 0 y2024. FUNCIÓN TO ENG Según la ganancia Configurada convierte del 0-2024 a Unidades de Ingeniería DAQ Una tarjeta de adquisición es un Hardware compuesto entradas/salida digitales, convertidores ADC y DAC, filtros de tratamiento de señal, multiplexores, etc. estos sistemas se comunican con la computadora para llevar y traer información de una prueba o proceso. FUNCIÓN AI SAMPLE CHANNEL.VI Esta función se utiliza para leer un canal analógico de una tarjeta de adquisición de datos de National Instruments, esta función adquiere un dato por cada ciclo de ejecución del programa. WRITE TO DIGITAL LINE.VI Escribe un dato digital a una línea de un canal específico.

Problemas 1. Desarrollar un termómetro que cuente con dos controles digitales: uno es el punto de consigna Alarma alta y otro de Alarma baja. El termómetro es manejado manualmente por el usuario de tal manera que cuando la temperatura es mayor al punto de consigna alto se enciende el indicador booleano y se despliega el mensaje “Alarma Alta” en el indicador String, si la temperatura es menor al punto de consigna bajo se enciende el indicador booleano y se despliega el mensaje “Alarma Baja”. Cuando la temperatura se encuentre entre el punto alto y el punto bajo el mensaje que se deberá desplegar es “Temperatura dentro de parámetros” y el indicador booleano deberá estar apagado. Almacenar el VI con el nombre Ej1.vi.

2. Genere el mismo programa de la punto 4, solo que ahora elabore un Subvi el cual constará de una entrada para la temperatura, dos entradas numéricas: Consigna Alta y consigna Baja. Una salida Booleana para el indicador visual de la alarma y una salida tipo String para visualizar el mensaje. Por lo tanto las funciones de comparación y funciones Select quedarán integradas dentro del Subvi. Almacenar el VI con el nombre Ej2.vi.

3. Diseñar un termómetro que cuente con dos constantes numéricas: una es el punto de consigna Alarma alta (30 °C) y otra de Alarma baja (25 °C). La temperatura es adquirida mediante una función Digital Thermometer.VI de tal manera que cuando la temperatura es mayor al punto de consigna alto se enciende el indicador booleano y se despliega el mensaje “Alarma Alta” en el indicador String, si la temperatura es menor al punto de consigna bajo se enciende el indicador booleano y se despliega el mensaje “Alarma Baja”. Cuando la temperatura se encuentre entre el punto alto y el punto bajo el mensaje que se deberá desplegar es “Temperatura dentro de parámetros” y el indicador booleano deberá estar apagado. Se graficará la temperatura y los puntos de activación de las alarmas. Se adquirirá datos a una razón de 100 datos por minuto. El programa se detiene cuando se grafican los 100 datos o cuando se presiona un botón de paro, lo que ocurra primero. Almacenar el VI con el nombre Ej3.vi.

4. Utilizando un Digital Thermometer.VI obtener la temperatura máxima, mínima y promedio de una serie de 100 lecturas, el cálculo del promedio deberá de realizarse de manera instantánea, es decir deberá mostrar el promedio de las temperaturas leídas en cualquier instante durante la adquisición de temperatura. Utilizar indicadores numéricos para visualizar la temperatura máxima, mínima, promedio e instantánea. Registrar en una sola gráfica estas cuatro variables. Tomar una lectura cada 0.5 segundos. Almacenar el VI con el nombre Ej4.vi.

5. Utilice un control numérico para Amplitud, otro para número de muestras, otro para frecuencia y otro para tiempo de muestra y genere una señal senoidal en una gráfica XY Graph. Visualice además en dos arreglos de indicadores numéricos los datos que se graficaron el ambos ejes. Almacenar el VI con el nombre Ej5.vi.

6. Realice un programa en donde un control Ring tenga las siguientes opciones: Anillo, Rotabit, Espejo, Libre. El panel frontal deberá de contar con 8 indicadores booleanos los cuales ejecutaran la rutina seleccionada en el control Ring, La rutina libre es elegida por el usuario. Colocar además un control numérico para el control del tiempo de ejecución de las rutinas. Almacenar el VI con el nombre Ej6.vi.

7. Diseñe un programa para simular el control de un cruce de semáforos en el cual cada calle tiene un solo sentido. Existirán dos tiempos de cambio de los semáforos que se activarán dependiendo del reloj de la computadora. Los tiempos se describen a continuación: de las 6:00 horas a las 23:00 horas los tiempos del semáforo uno son: Verde 15 s, Amarillo 1 s, Rojo 10 s. Los tiempos del segundo semáforo por lo tanto son: Verde 9 s, Amarillo 1s, Rojo 16 s. Si el horario se encuentra entre las 23:00 horas y las 6:00 horas Los tiempos del semáforo uno son: Verde 20 s; Amarillo 1 s, Rojo 6 s. Los tiempos del segundo semáforo son: Verde 5 s, Amarillo 1 s, Rojo 21 s. Almacenar el VI con el nombre Ej7.vi.

8. Crear un VI que genere tres números aleatorios entre 50 y 150. Entre la generación de cada número aleatorio debe mediar una demora de 3 segundos. Transcurrido 1 segundo después de generar el último número aleatorio se debe calcular el producto de los tres números aleatorios generados. El panel frontal del VI tendrá cuatro

indicadores numéricos para mostrar los tres números aleatorios generados y el producto de estos. Almacenar el VI con el nombre Ej8.vi 9. Crear un VI que presente dos controles numéricos (A, B) y tres indicadores numéricos (C, D y E). El VI debe ejecutar secuencialmente las siguientes tareas. Primera tarea: Ejecutar una demora de 1 segundo. Segunda tarea: Asignar a C la suma de A con B. Tercera tarea: Ejecutar una demora de 2 segundos. Cuarta tarea: Asignar a D la resta de A menos B. Quinta tarea: Ejecutar una demora de 3 segundos. Sexta tarea: Asignar a E el producto de los resultados de las dos operaciones realizadas anteriormente. Almacenar el VI Ej9.vi 10. Crear un VI que presente dos controles booleanos (A, B) y un indicador booleano (C). C es igual a B cuando A vale FALSE. C es igual a B negada cuando A vale TRUE. Almacenar el VI con el nombre Ej10.vi. Nota: Utilizar la estructura CASE 11. Crear un VI que permita calcular la raíz cuadrada de un número. El VI debe avisar a través de una ventana de dialogo cuando no se pueda calcular la raíz cuadrada del número porque es negativo. Salve el VI con el nombre Ej11.vi. Nota: Para mostrar una ventana de dialogo al ejecutar un VI, puede utilizar la función One Button Dialog disponible en la paleta Functions  Programming  Dialog & User interface. 12. Crear un VI que permita calcular las raíces reales de una ecuación cuadrática del tipo aX 2 + bX + c = 0 . El VI debe mostrar una ventana de dialogo indicando el tipo de raíces de la ecuación. Una vez que calculó el usuario deberá tener la posibilidad de elegir si repite o no el cálculo. En caso de repetir el cálculo, volver a ingresar todos los parámetros. Salve el VI con el nombre Ej12.vi. Nota: Se puede utilizar como Subvi lo desarrollado en el práctico anterior.

Ecuación aX 2 + bX + c = 0

Raíces

X 1, 2

− b ± b2 − 4ac = 2a Raíces reales y distintas

X 2 + 7 X + 10 = 0

X1 = -2, X2 = -5

X 2 + 4X + 4 = 0

X1 = X 2 = 2

X 2 + X +1 = 0

No tiene raíces reales.

Raíces reales e iguales

13. Crear un VI que genere un array con los primeros 20 números enteros positivos. Salve el VI con el nombre Ej13.vi. 14. Crear un VI que genere un array con los primeros 20 números enteros positivos comenzando por el 5. Salve el VI con el nombre Ej14.vi. 15. Crear un VI que genere números aleatorios entre 0 y 1000 hasta que se genere un número tal que sea mayor o igual que 1 y menor que 3. El VI debe presentar un indicador numérico que represente el total de números aleatorios generados, además de un array que represente todos los números generados y un array de indicadores booleanos que indique si cada número aleatorio generado es mayor que 100. Observe la forma de los terminales en el diagrama en bloques y el grosor de los cables por donde transitan los datos. Salve el VI con el nombre Ej15.vi. 16. Crear un VI que genere 50 números aleatorios entre 0 y 1. Represente estos 50 números en un array y especifique con un indicador numérico cuantos números del array son menores que 0.2. Salve el VI con el nombre Ej16.vi. 17. Crear un VI que genere números aleatorios cuya magnitud este entre 0 y 1. El VI debe detener su ejecución cuando se hayan generado 50 números aleatorios cuya magnitud este entre 0 y 0.5. Represente estos 50 números generados en un array y utilice un indicador que muestre el total de números generados. Salve el VI con el nombre Ej17.vi. 18. Crear un VI que genere un array formado por 10 números aleatorios entre 0 y 1. El VI debe tener un array de indicadores numéricos que muestre los diez números

aleatorios generados. Además, el VI debe tener cuatro indicadores numéricos para mostrar los valores extremos generados y la posición de estos extremos en el array. Ejecute el VI y compruebe el adecuado funcionamiento del programa. Añada el VI la posibilidad de ordenar los 10 números aleatorios generados de menor a mayor. Represente los números ordenados en otro array de indicadores numéricos. Salve el VI con el nombre Ej18.vi. 19. Crear un VI que genere los 10 primeros productos enteros de los números enteros positivos 1, 2, 3, 4 y 5. Representar estos productos en un Array de dos dimensiones de indicadores numéricos de 10 filas y cinco columnas, de modo tal que en cada columna del array se representen los 10 productos de cada número. Brinde la posibilidad de acceder a un elemento, a una columna y a una fila del array; utilice los controles e indicadores necesarios para que el VI brinde la posibilidad antes mencionada. Salve el VI con el nombre Ej19.vi. 20. Crear un VI que genere un Array de tres dimensiones de indicadores numéricos que represente números aleatorios entre 0 y 100. El array presentara cuatro páginas. Cada página a su vez estará formada por 6 filas y cuatro columnas. Represente los números aleatorios en notación científica con tres dígitos después del punto decimal. Brinde la posibilidad de acceder a un elemento, una columna, una fila y una página del array; utilice los controles e indicadores necesarios para que el VI brinde la posibilidad antes mencionada. Observe la forma de los terminales en el diagrama en bloques y el grosor de los cables por donde transitan los datos. Salve el VI con el nombre Ej20.vi. 21. Crear un VI que genere un número aleatorio entre 20 y 60 cada 1 segundo. El VI detendrá su ejecución solo cuando se generen consecutivamente tres números aleatorios menores que 30. Salve el VI con el nombre Ej21.vi. 22. Crear un VI que contenga en su panel frontal un control, al que se ingrese un número entero positivo, un control tipo dial que permita seleccionar la conversión de ese número a binario, octal o hexadecimal según se seleccione y un indicador que muestre el resultado de la operación. Salve el VI con el nombre Ej22.vi. 23. Crear un VI que sea una calculadora que realice las 4 operaciones y muestre el resultado en un único indicador.

Plazo de entrega: 06/06/14.Consultas: se pueden realizar también por mail, que serán contestadas en el día. Entrega: Se debe remitir por mail a [email protected] en el formato: Apellido, nombre – TP2.zip