Lab View
Lab View
TAREA
ÍNDICE GENERAL
1. INTRODUCCIÓN A LabVIEW
proyecto, con lo cual en vez de estar una gran cantidad de tiempo en programar un
dispositivo/bloque, se le permite invertir mucho menos tiempo y dedicarse un poco más
en la interfaz gráfica y la interacción con el usuario final. Cada VI consta de dos partes
diferenciadas:
Panel Frontal: El Panel Frontal es la interfaz con el usuario, la utilizamos para
interactuar con el usuario cuando el programa se está ejecutando. Los usuarios podrán
observar los datos del programa actualizados en tiempo real(como van fluyendo los
datos, un ejemplo sería una calculadora, donde tu le pones las entradas, y te pone el
resultado en la salida). En esta interfaz se definen los controles (los usamos como
entradas, pueden ser botones, marcadores etc..) e indicadores (los usamos como
salidas, pueden ser gráficas ....).
Diagrama de Bloques: es el programa propiamente dicho, donde se define su
funcionalidad, aquí se colocan íconos que realizan una determinada función y se
interconectan (el código que controla el programa --. Suele haber una tercera
parte icono/conector que son los medios utilizados para conectar un VI con otros VIs.-
-
En el panel frontal, encontraremos todo tipos de controles o indicadores, donde cada
uno de estos elementos tiene asignado en el diagrama de bloques una terminal, es
decir el usuario podrá diseñar un proyecto en el panel frontal con controles e
indicadores, donde estos elementos serán las entradas y salidas que interectuaran con
la terminal del VI. Podemos observar en el diagrama de bloques, todos los valores de
los controles e idicadores, como van fluyendo entre ellos cuando se está ejecutando
un programa VI.
La Figura 1 muestra un Diagrama de Bloques de un programa en el que se genera
un array de 100 elementos aleatorios, a continuación se hace la FFT de este array y
se muestra en una gráfica:
2. INSTRUMENTO VIRTUAL
Un instrumento virtual es un módulo software que simula el panel frontal de
instrumento que antes hemos comentado y, apoyándose en elementos hardware
accesibles por el computador (tarjetas de adquisición, tarjetas DSP, instrumentos
accesibles vía GPIB, VXI, RS-232, USB, ethernet), realiza una serie de medidas como
si se tratase de un instrumento real.
De este modo, cuando se ejecuta un programa que funciona como instrumento virtual
o VI (Virtual Instrument), el usuario o usuaria ve en la pantalla de su computador un
panel cuya función es idéntica a la de un instrumento físico, facilitando la visualización
y el control del aparato. A partir de los datos reflejados en el panel frontal, el VI debe
actuar recogiendo o generando señales, como lo haría su homólogo físico.
El control de instrumentación por computador no resulta nuevo; incluso el uso del PC
en sistemas de medida se usaba en los setenta mediante la interface de bus IEEE 488
o GPIB (General Purpose Interface Bus). Pero ha sido en los noventa cuando los
procesadores de 16 y 32 bits se han incorporado a equipos asequibles, consiguiendo
altas velocidades y grandes capacidades de memoria. Esta popularización de
computadores de altas prestaciones ha traído consigo un fuerte desarrollo de potentes
paquetes software que simplifican la creación de aplicaciones.
3. EQUIPAMIENTO BÁSICO DE LABORATORIO
Para la consecución de nuestros objetivos se dispone del instrumental existente en
un laboratorio general de instrumentación electrónica. Cada puesto de trabajo consta
del siguiente equipamiento:
• Generador de funciones programable con conexión GPIB.
• Fuente de alimentación programable con conexión GPIB.
• Osciloscopio digital con conexión GPIB.
LUNES 08 DE MAYO DE 2017 5
COMPUTACIÓN APLICADA A LA INGENIERÍA | LUNES 08 DE MAYO DE 2017
5. INTERCONEXIÓN DE BLOQUES
Usaremos For Loop cuando queramos que una operación se repita un número
determinado de veces. Su equivalente en lenguaje convencional es:
For i = O to N – 1
Ejecuta subdiagrama
Al colocar un For Loop en la ventana Diagram observamos que tiene asociados dos
terminales:
1. Terminal contador: contiene el número de veces que se ejecutará el subdiagrama
creado en el interior de la estructura. El valor del contador se fijará externamente.
2. Terminal de iteración: indica el número de veces que se ha ejecutado la estructura:
cero durante la primera iteración, uno durante la segunda y así hasta N - 1.
Ambos terminales son accesibles desde el interior de la estructura, es decir, sus
valores podrán formar parte del subdiagrama, pero en ningún caso se podrán
modificar.
6.2 WHILE LOOP
Usaremos While Loop cuando queramos que una operación se repita mientras una
determinada condición sea cierta o falsa. Su equivalente en lenguaje convencional es:
Do ejecutar subdiagrama
While condición TRUE (or FALSE) (aunque esta estructura es más similar al comando
Repeat-Until, ya que se repite como mínimo una vez, independientemente del estado
de la condición).
Al igual que For Loop contiene dos terminales:
1. Terminal condicional: a él conectaremos la condición que hará que se ejecute el
subdiagrama. LabVIEW comprobará el estado de este terminal al final de cada
iteración. Podemos configurar este terminal de manera que pare si la condición es
cierta (Stop if True ¡H) o bien que pare si la condición es falsa (Continué if True
6.3 CASE
Usaremos la estructura Case (figura 4.7) en aquellas situaciones en las que el número
de alternativas disponibles sean dos o más. Según qué valor tome el selector dentro
de los n valores posibles, se ejecutará en correspondencia uno de los n subdiagramas.
La estructura Case consta de un terminal llamado selector y un conjunto de
subdiagramas, cada uno de los cuales está dentro de un case o suceso y etiquetado
por un identificador del mismo tipo que el selector.
7. ARRAYS
Un array es una colección de datos, todos ellos del mismo
tipo. Puede tener una o más dimensiones y hasta 2 31
elementos por dimensión, según la memoria disponible.
Un array puede ser de cualquier tipo excepto otro array,
chart o graph. La creación de arrays de control o indicadores
en el panel frontal se hace mediante la combinación del
icono Array de la paleta Array & Cluster del menú Controls,
con un objeto de datos que puede ser numérico, booleano o
string.
En la imagen que sigue se presenta un array vacío. Para crear un array hemos de
llevar un objeto dentro de la Ventana de Objetos o situarlo directamente usando el
menú Pop-up.
Podemos indexar e introducir elementos dentro de los arrays en los bordes de las
estructuras For Loop y White Loop de manera automática. Esto es lo que se llama
auto-indexing (autoindexado). La imagen inferior presenta un ejemplo de ello: cada
iteración crea el siguiente elemento del array; una vez que se ha completado, el array
pasa al indicador. Obsérvese que el cable se hace más grueso al cambiar a array.
8. APLICACIÓN PRÁCTICA
Nuestra aplicación consiste principalmente en encender 12 leds de forma correlativa,
estando en cada momento únicamente un solo led encendido y pudiendo escoger
entre empezar a encenderlos por la izquierda o por la derecha.
Vamos a dividir nuestra aplicación en diferentes objetivos, de forma que en cada una
utilicemos alguna de las estructuras vistas en los apartados anteriores.
De esta manera, además, dividiremos nuestro problema en otros más sencillos y, por
tanto, más fáciles de programar. Lo primero que haremos será crear en el panel frontal
los siguientes controles:
• Un array booleano con 12 leds cuadrados visibles y nombre de la etiqueta «array
booleano».
0: de izquierda a derecha.
1: de derecha a izquierda.
Nota:
Para realizar esta acción es necesario dar clic derecho sobre ring-menú y seleccionar
la opción <<Edit ítems>>
• Un interruptor vertical.
Objetivo 1:
Crear un array booleano de 12 posiciones de forma que cada una contenga el estado
del led (apagado = false, encendido = true), cuya posición coincidirá con el índice del
array. Para encender todos los leds será necesario repetir el proceso 12 veces.
Nota: Para esto es necesario introducir un for loop, dos constantes con el número 12,
un initialize array y dos replace array subset, un decremento, dos false y un true.
Finalmente conectar de la siguiente manera. Ycorrerlo una vez que la flecha de run
este completa.
Objetivo 2:
Como habremos podido comprobar, los leds se encienden tan rápido que es
prácticamente imposible darse cuenta. Para poderlo apreciar mejor, después de
encender cada led introduciremos un tiempo de espera mediante la estructura
Sequence.
Nota: para esto se necesita agregar una estructura sequence encima de el for loop y
seleccionar la cara 1 [0..1] dentro de esta agregar un wait (ms) milisegundos y una
constante 100. Y se ejecuta el Vis.
Objetivo 3:
Podemos apreciar cómo se van encendiendo los leds de izquierda a derecha, pero
cuando se llega al último led el programa se detiene y a nosotros nos interesa que el
proceso se repita hasta que sea abortado mediante un control disponible en el propio
programa. Para ello utilizaremos la estructura While y un control booleano (Stop), que
nos determinará la condición de repetición.
Objetivo 4:
Ahora tan sólo nos queda hacer que los leds también se puedan encender de derecha
a izquierda. Introduciremos un case dentro del frame O al que conectaremos el menú
del panel frontal que nos determinará hacia qué lado habremos de hacer el barrido.
Hemos conseguido nuestro nuevo objetivo, pero la única manera de hacer que los leds
dejen de rotar en ambas direcciones consecutivamente es pulsar el botón STOP, ya
que, aunque en el menú queramos cambiar la dirección de rotación, no podremos
porque la variable Control ya no se vuelve a poner a O hasta que se reinicie el
programa. Para devolver el control al menú podemos crear un interruptor booleano en
el panel frontal que únicamente se habilite cuando entremos en el case 2 y que cuando
sea pulsado cambie el valor de la variable Control a O para devolver el dominio de la
rotación al menú. Para habilitar o deshabilitar un control utilizaremos los property
nodes. El case 2 quedará entonces como sigue:
Esta estructura irá colocada fuera del FOR pero dentro del WHILE y se utiliza para
detectar cuándo entramos en el Case 2. Si el valor de la variable CONTROL es igual
a cero querrá decir que no hemos entrado, pero si es uno sí que habremos entrado y
entonces hemos de cambiar el valor de la variable local Menú. Primero
comprobaremos el valor de dicha variable y si es cero la pondremos a uno, y si es uno
la pondremos a cero, para asegurar la rotación alternativa de los leds.
Dentro del While pero fuera del For añadiremos un case que compruebe si hemos
pulsado el interruptor y, si es así, que ponga la variable global Control a 0; además,
entonces habrá que habilitar de nuevo el menú, deshabilitar el interruptor y ponerlo en
off. Para hacer esto aprovecharemos el case True de la estructura que comprueba el
valor de la variable Control:
APLICACIÓN
(2do ejercicio)
Control de nivel de un tanque
9. BIBLIOGRAFÍA
http://www.ni.com/labview/why/esa/
https://estuelectronic.wordpress.com/2012/08/06/que-es-y-para-que-sirve-
labview/
http://sandralabview.blogspot.mx/2008/06/definicin.html