2-estruturas labview

26
UNIVERSIDAD NACIONAL JOSÉ MARÍA ARGUEDAS ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS SEPARATA TEMA : ESTRUCTURAS DE LABVIEW ASIGNATURA : SISTEMAS DIGITALES SEMESTRE ACADÉMICO : 2012-II

Upload: ricardo-quispe-perez

Post on 08-Aug-2015

210 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: 2-estruturas labview

UNIVERSIDAD NACIONAL JOSÉ MARÍA ARGUEDAS

ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

SEPARATA

TEMA : ESTRUCTURAS DE LABVIEW

ASIGNATURA : SISTEMAS DIGITALES

SEMESTRE ACADÉMICO : 2012-II

PRESENTADO POR : ING. MARLON E CANALES EGAS

OBJETIVO

Page 2: 2-estruturas labview

Estudiar las estructuras de programación utilizadas por Labview para definir secuencias, decisiones y ciclos. Además, estudiar el nodo de formula del lenguaje G.

DESCRIPCIÓN.

Una estructura en general es uno nodo que controla el flujo de los datos de un programa en G. Labview cuenta en orden, con las siguiente estructuras.

a) For Loop.b) While Loopc) Case structured) Event structuree) Flat sequencef) Formula nodeg) Sequence

y otros mas

Estructuras de Labview.

Para efectos de estudio se comenzara con las estructuras cíclicas que son While Loop y For Loop.

ESTRUCTURA “WHILE LOOP”.

Page 3: 2-estruturas labview

La estructura while loop es un ciclo que repite el subdiagrama que contiene hasta que una condición determinada se cumpla. En G está representada por el marco que se muestra a continuación.

Estructura While Loop.

Por defecto las instrucciones contenidas en el ciclo se repetirán mientras que al terminal de condición, es decir, que ciclo se repite mientras que a este llega un valor falso, basta con hacer clic derecho en dicho terminal y seleccionar la opción STOP IF FALSE como se muestra a continuación. Si el terminal de condición no se cablea, el VI no se podrá ejecutar.

Terminal de condición de la estructura While Loop.

El terminal de iteración determina el número de veces que se ha ejecutado el ciclo y puede ser utilizado para visualización o para alguna operación dentro de la estructura.

Page 4: 2-estruturas labview

Este terminal varía desde 0 hasta N-1, donde N es el número de iteraciones realizadas por el ciclo.

La estructura While Loop del lenguaje G es equivalente a DO..WHILE en C/C++ o a REPEAT…UNTIL en pascal.

Se debe tener en cuenta que el subdiagrama contenido en la estructura While loop se ejecutara por lo menos una vez.

Ejercicio 1. Simulación de la lectura de una temperatura.

En la siguiente figura se muestra el panel frontal y el diagrama de bloques para una simulación simple de la lectura de una temperatura.

Simulación de lectura de temperatura.

El programa se ejecutara hasta que el usuario presione el botón de paro.

Como se desea que el ciclo se detenga sólo cuando se presione el botón de paro, entonces se debe cambiar la lógica por defecto del terminal de condición.

El subVI que simula la lectura de temperatura se encuentra en la paleta de funciones en el submenú tutorial y se llama “digital thermometer.vi”.

Si se desea agregar una espera para el VI no se ejecute tan rápido, se puede utilizar la función wait, que se encuentra en la paleta de funciones en el submenú time&dialog. Esta función produce la espera especificada en milisegundos. A continuación se muestra un retardo de 250 milisegundos en cada iteración.

Page 5: 2-estruturas labview

Función wait en un ciclo.

Una forma fácil de obtener una grafica de los valores de temperatura leídos por el subVI de simulación, es con el indicador “Waveform chart” localizado en la paleta de controles en el submenú Graph como se muestra a continuación.

Waveform Chart

El estudio detallado de este graficador será realizada mas adelante. Por ahora basta decir que este control permite acumular datos escalares y graficarlos.

Ejemplo 2. Generador de una onda Seno.

Se desea generar continuamente una onda seno y verla en un graficador chart hasta que se presione el botón de paro.

A continuación se muestra en el panel frontal y el diagrama de bloque de esta aplicación.

Page 6: 2-estruturas labview

Panel frontal y diagrama de bloques para generar onda seno.

La función seno tomada de la paleta de funciones numéricas recibe el argumento en radianes, por tanto, el terminal de iteraciones utilizado para generar un punto cada grado

debió ser multiplicado por π180

.

La velocidad con que se genera los datos es controlada por la función wait.

ESTRUCTURA “FOR LOOP”.

La estructura For Loop es un ciclo que repite el subdiagrama que contiene un número definido de veces. En G está representada por el marco que se muestra en la figura a continuación.

Estructura For Loop.

Presenta un solo subdiagrama el cual siempre es visible

Presenta un terminal contador (N) y un terminal de iteración (i)

Page 7: 2-estruturas labview

N e i se pueden leer desde el interior de la estructura, pero no se pueden modificar

Terminal contador: contiene el número de veces que se ejecutara el subdiagrama creado en el interior de la estructura. N puede ser igual a cero.

Terminal de iteración: indica el número de veces que se ha ejecutado el subdiagrama creado en el interior de la estructura.

El terminal de iteración indica el número de veces que se ha ejecutado el ciclo.

Varía desde 0 hasta N-1 donde N es el número total de iteraciones que realiza el ciclo. El control de iteraciones contiene el número de veces que se ejecutara el subdiagrama contenido en el ciclo.

En C/C++ es analógico a for(i=0, i<N, i++).

{

}

end.

Ejercicio: grafica de 100 números aleatorios entre 10 y 50.

Solución: como se conoce el numero exacto de veces se debe repetir la tarea se utiliza una estructura For Loop.

La función random genera un número aleatorio entre 0 y 1. Por tanto se debe ajustar su rango al solicitado. Una forma fácil de hacerlo es multiplicar el número generado por 40 y sumarle 10. En general si el rango solicitado es [a,b] entonces el numero aleatorio es N=R(b-a)+a, donde R es la salida de la función random.

Para graficar los 100 números generados se utilizan una grafica Chart. Yal como se muestra a continuación.

Grafica de 100 números aleatorios

Si se desea que el VI se ejecute mas lento, se debe adicionar la función wait.

Page 8: 2-estruturas labview

Es muy frecuente que en las estructuras While Loop y For Loop sea necesario pasar datos entre iteraciones. Para ello se utiliza los “shift register”.

Estos se encuentran en el menú de las estructuras y se obtiene como se muestra a continuación.

Adision de un shift register localizacion de un registro de desplazamiento

Los “shift register” o registro de desplazamiento estan formados po un par de terminales que se adaptan a cualquier tipo de dato y que estan localizados a cada lado de los bornes de la estructura.

La secuencia de comportamiento de un registro de desplazamiento se muestra a continuacion .

Comportamiento de un registro de desplazamiento.

Page 9: 2-estruturas labview

El terminal derecho almacena el dato una vez concluya la iteracion y le entrega el dato al terminal de la izquierda para que sea utilizado en la proxima iteracion.

En la primera iteracion el sistema podria tomar un numero no deseado, por tanto se debe inicializar desde afuera con un valor convenientye del mismo tipo de la variable utilizada.

Ejercicio . sumar los numeros enteros entre 1 y 100.

Solucion . este ejercicio busca encontrar un valor S= 1+2+3+…..+99+100. Para realizar esta suma se utiliza una estructura For loop.

Suma de los n primeros números naturales.

Como el terminal de iteración comienza desde cero se debe incrementar una unidad para que coincida con el terminal del contador.

ESTRUCTURA SEQUENCE

la estructura sequence permite ejecutar varios subdiagramas de manera ordenada y controlada por el programador. En los lenguajes de programación convencionales basados en código de líneas no se requiere y por lo tanto no existe analogía.

Stacked sequence structure: permite establecer un orden de ejecución entre tareas donde no existe una dependencia de datos

Page 10: 2-estruturas labview

Los datos en los túneles de entrada están disponibles para todos los frames.

Un túnel de salida solo puede tener una fuente de dato.

Un túnel de salida puede ser emitido por cualquier frame, pero los datos solo estarán disponibles cuando se termine de ejecutar toda la secuencia de frames.

Para pasar datos entre frames se puede utilizar un terminal denominado sequence local

Ejercicio: Hacer un programa en Labview para simular luces secuenciales a través de leds (8 leds), la secuencia de encendido de uno a otro debe ser de un segundo, solo un led debe encenderse.

Solución: Para la solución del ejercicio utilizaremos la estructura Stacked sequence structure, primeramente pondremos los 8 leds en el panel frontal.

En el diagrama de bloques ponga la estructura la estructura while loop, dentro de éste ponga la estructura Stacked sequence structure, dentro de éste conecte las funciones y terminales tal como se muestra a continuación.

Page 11: 2-estruturas labview

Hacer clic derecho sobre el marco de la estrututura y seleccionar add frame after

1. Otra forma de mostrar el terminal. 2. Determinación de un terminal como variable local. 3. selección de una constante booleano.

Luces secuenciales utilizando Stacked sequence structure.

Page 12: 2-estruturas labview

Flat sequence structure : permite establecer un orden de ejecución entre tareas donde no existe una dependencia de datos.

Ejercicio: Hacer un programa en Labview para simular luces secuenciales a través de leds (8 leds), la secuencia de encendido de uno a otro debe ser de un segundo, solo un led debe encenderse.

Solución: Para la solución del ejercicio utilizaremos la estructura Flat sequence structure, primeramente pondremos los 8 leds en el panel frontal.

En el diagrama de bloques ponga la estructura la estructura while loop, dentro de éste ponga la estructura Flat sequence structure, dentro de éste conecte las funciones y terminales tal como se muestra a continuación.

Page 13: 2-estruturas labview

ESTRUCTURA “CASE”.

La estructura Case posee varios subdiagramas denominados casos (cases) de los cuales solo se ejecuta uno.

Estructura condicional. Presenta varios subdiagramas de los cuales solo se ejecuta un subdiagrama según el dato que llega al selector de subdiagrama.

Selector de subdiagrama booleano: solo dos subdiagramas

Selector de subdiagrama numérico o tipo string: la estructura admite dos ó más subdiagramas

Estrutura case.

Page 14: 2-estruturas labview

Una variable booleana controla el selector de subdiagrama. Solo hay dos subdiagramas.

Estructura falsa estructura verdadera

Una variable numérica controla el selector de subdiagrama. Pueden existir dos ó más subdiagramas

Una variable tipo ENUM (numérica) controla el selector de subdiagrama. Pueden existir dos ó más subdiagramas.

Page 15: 2-estruturas labview

Una variable tipo string controla el selector de subdiagrama, pueden existir dos ó más subdiagramas.

Ahora cada subdiagrama se identifica a través de una cadena de caracteres.

Cuando el selector de subdiagrama es un dato numérico, el identificador de subdiagrama puede ser: un número, una lista, un rango ó una lista y un rango.

Ejercicio: Menú de opciones.

A partir de dos entradas numéricas y un control tipo menú con las opciones suma, resta, multiplicación y división, se busca generar una salida que enseñe su resultado.

Para resolver este ejercicio es necesario utilizar un control tipo menú, que son comúnmente utilizados para seleccionar una opción entre varias posibles.

Los controles tipo ring se encuentra en la paleta de controles en el submenú ring & Enum y son de tipo numérico U16. Para editar un control de menú se debe tomar la herramienta de texto.

Page 16: 2-estruturas labview

Selección y edición del menú ring

El control menú ring posee también un menú al que se accede haciendo clic derecho sobre éste. En él se puede seleccionar acciones como adicionar, remover o deshabilitar ítems. En el cuadro de Edit Items escriba los nombres de las operaciones, seleccione insert y luego OK.

Edición de texto del menú ring. Menú desplegable.

De acuerdo con la figura este control tomará el valor de 0cuando se seleccione sumar, 1 para restar, 2 para multiplicar y 3 para dividir.

Ahora se puede crear los otros elementos. Dos controles numéricos y un indicador numérico.

El terminal del control de menú se utilizará para cablear el terminal de selección de una estructura case como se muestra en la figura siguiente. Como el control posee 4 posibles opciones, se debe adicionar los casos 2 y 3. El caso 0 será el caso por defecto.

Page 17: 2-estruturas labview

Adición de casos.

Ahora se debe colocar las funciones en los respectivos casos, por ejemplo, la función suma en el subdiagrama del caso cero, la resta en el uno y así sucesivamente.

Los datos en todos los túneles de entrada y en el terminal de selección pueden ser accedidos por todos los subdiagramas de casos.

Subdiagrama 0… realice el mismo procedimiento para los otros casos.

Por ultimo, se debe recordar que el programa debe correr por si mismo sin la ayuda del botón de correr continuamente. Para ello se anexa una estructura While Loop que encierre toda la operación

Estructura case controlado por un menú ring. Diagrama completo.

ESTRUCTURA “FORMULA NODE”

Page 18: 2-estruturas labview

Un nodo de formula es una caja redimensionable donde se alojan formulas matemáticas y lógicas para su evaluación.

Algunas veces es preferible programar expresiones matemáticas con funciones basadas en texto, en lugar de hacerlo con iconos (los que pueden tomar mucho espacio en el diagrama).

La cajas pueden cambiar de tamaño para introducir formulas algebraicas directamente a los diagramas de bloque.

Para agregar variables, se presiona el botón derecho del mouse y se escoge la opción de agregar entrada (Add Input) o agregar salida (Add Output). Hay que nombrar las variables de la misma manera en que serán usadas en la formula. (Los nombres son sensibles a capitalización)

Las declaraciones deben terminar con un punto y coma (;)

Al usar varias formulas en un solo nodo de formula, cada variable asignada (las que aparecen en la parte izquierda de cada formula) deben de tener una terminal de salida en el nodo de formula. Sin embargo, estas terminales de salida no necesitan ser cableadas.

Los terminales de entrada y salida son variables numéricas, escalares y reales que se generan adicionándolas desde el menú de la estructura.

Selección de la formula node. Menú de los nodos de formula

La sintaxis interna de los nodos de formula es similar a la de C

Asignación = , condición ?, or || , xor ^ , and && , not ! ,

Relacionales: == , != , < , >, >= , <= .

Aritméticas: + , - , * , / , ** .

Page 19: 2-estruturas labview

Las funciones aceptadas dentro del nodo de formular son.

.. abs acos acosh asin asinh atan atanh ceil cos cosh cot csc exp expm1 floor getexp getman int intrz ln lnp1 log log2 max min mod rand rem sec sign sin sinh sqrt tan tanh.

Dentro del nodo de formula se puede adicionar comentarios encerrándolos dentro de un par slash-asteristisco asi: (/*comentario*/).

Ejercicio: la ecuación cuadrática.

Para resolver la ecuación aX2 + bX + c = 0, se requiere de tres controles numéricos reales para a, b y c, y de dos indicadores complejos para mostrar las raíces encontradas.

Panel frontal para la ecuación cuadrática.

Se sabe que X1 y X2 están dados por la ecuación

Una solución en G para esta ecuación se muestra

Solución de la ecuación cuadrática.

Se utiliza un nodo de formula para calcular los términos mas útiles.

Page 20: 2-estruturas labview

En LabVIEW la función raíz cuadrática no permite un argumento negativo. Por lo tanto se utiliza la función >=0 para determinar el signo del discriminante y luego la función Select para escoger el resultado corregido de la raíz cuadrática.

Ejercicios propuestos.

1. 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.

2. 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. Nota: Utilizar la estructura CASE.

3. Crear un VI que genere un array con los primeros 20 números enteros positivos.

4. 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 númerico 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.

Bibliografía:

LabVIEW tutorial, National Instruments Corporation.

Page 21: 2-estruturas labview