Está en la página 1de 56

Material Importante referente a la filosofa de LabView

Paletas de LabView

Panel Frontal.- La paleta de Controls es utilizada para seleccionar controles o indicadores que sern colocados en el instrumento virtual. Se accede a travs del men de View-Controls Palette

Diagrama Bloques.- La paleta de Functions es utilizada para colocar bloques o funciones de programacin grfica. Se accede a travs del men de View-Functions Palette

Tools Palette.- Es una paleta que tiene herramientas particulares que pueden ser usadas dentro del panel frontal del diagrama de bloques. . Se accede a ella a travs del men de View-Tools Palette. Cuando est activado el botn de seleccin automtica (botn superior de la paleta), LabView selecciona la herramienta a
utilizar al mover el mouse sobre objetos del panel frontal o del diagrama de bloques.

Material Importante referente a la filosofa de LabView

Teclas de Acceso Rpido en LabView


CTRL<E> Cambia entre el panel frontal y el de bloques

CTRL<H> Muestra ayuda respecto a los bloques sobre los que pasa el cursor en el diagrama de bloques o sobre los objetos del panel frontal CTRL<B> Hace una limpieza en el diagrama de bloques eliminando alambres no conectados y mal alambrado

Filosofa de Operacin de LabView


LabView opera basado en un modelo de flujo de datos, a travs del alambrado en el diagrama de bloques fluye la informacin de un programa. Cada bloque, funcion y estructuras en un diagrama slo pueden ser ejecutado(a) cuando TODAS las entradas a los mismos han sido recibidas.

PREGUNTA TIPO EXAMEN

Material Importante referente a la filosofa de LabView

Formula Node : Soluciones de LabView programando en C


Un recurso para solucionar problemticas utilizando dentro de LabView programacin de texto similar a C es la estructura Formula Node. A travs de esta estructura se pueden alimentar datos de entrada y obtener datos de salida. La estructura Formula Node se encuentra en la paleta de Structures.

Al utilizar una estructura Formula Node se agregan entradas y salidas a la estructura oprimiendo el botn derecho en el borde de la estructura. Las entradas y salidas se etiquetan con un nombre y dicho nombre puede usarse 3

Material Importante referente a la filosofa de LabView en la programacin como si fuera una variable, las etiquetas de los nombres de salida pueden(aunque no es obligatorio) corresponder con variables declaradas dentro del formula node, esto con el fin de definir explcitamente el tipo de dato de salida.

En la figura de abajo se muestra un simple programa de LabView que suma dos nmeros, se muestra la solucin utilizando alambrado comn y la solucin con Formula Node.

Material Importante referente a la filosofa de LabView

Los tipos de datos que pueden ser usados dentro de la estructura Formula Node son: int, int8, int16, int32, uInt8, uInt16, uInt32, float, float32 y float64.

PREGUNTA TIPO EXAMEN

USO DE SHIFT REGISTERS y FEEDBACK NODES EN LabView


Los Shift Registers sirven para transferir valores de una iteracin a otra dentro de los ciclos fors y whiles. Para crear un shif register en un ciclo for o while se hace clic con el botn derecho en uno de los bordes de la estructura cclica dentro del diagrama de bloques y se elige Add Shift Register. Aparecen entonces en los extremos izquierdo y derecho de la estructura smbolos encuadrados con flechas hacia abajo y arriba(entrada y salida del shift register) donde se puede realizar el alambrado. En la siguiente figura se muestra el panel frontal y el diagrama de bloques en un programa de LabView que suma los primeros N nmeros. A travs de un control se proporciona el valor de N y el resultado se despliega en un indicador numrico.

Material Importante referente a la filosofa de LabView

En el diagrama se alambra el valor del control N a la entrada N que controla el ciclo for, este es el nmero de veces que se ejecutar el ciclo El contador automtico i que proporciona el ciclo for da los valores de 0 para la primera ejecucin del ciclo, 1 para la segunda ejecucin del ciclo, 2 para la tercera ejecucin y N-1 para la ltima ejecucin del ciclo. Dicho contador es entonces incrementado en 1 para as poder sumar 1+2+3+N en vez de 0+1+2+3+. +N-1. En la primera vez que se ejecuta el ciclo for, se transfiere un cero al alambre superior del bloque de suma, Como el resultado del bloque de suma va al Shift Register de salida, este valor es transferido al Shift Register de entrada en la siguiente iteracin del ciclo y as sucesivamente. Como nota MUY IMPORTANTE cabe mencionar que slo al finalizar la ejecucin del ltimo ciclo el valor del shift register de salida se transfiere al indicador Suma de los primeros N nmeros. Esto es, para que el ciclo emita o genere valores hacia fuera de l se debe de haberse terminado completamente, de lo contrario todo el procesamiento del flujo de datos en LabView se lleva a cabo dentro del mismo.

PREGUNTA TIPO EXAMEN

Material Importante referente a la filosofa de LabView

SHIFT Register estackeados Existe la posibilidad de acceder a valores generados en iteraciones previas a travs de shift registers estackeados, para crear un nuevo registro de este tipo se oprime con clic derecho un shift register existente en el borde izquierdo del ciclo y se elige Add Element.

Se generan de esta manera los shift registers estackeados necesarios en el borde izquierdo del ciclo de tal forma que en el smbolo superior se tendr el valor producido en la ltima iteracin, en el siguiente smbolo (hacia abajo) el resultado de la penltima iteracin y as sucesivamente. El siguiente diagrama muestra una rutina con 2 shift registers estackeados que suma en la primera iteracin 0+1, en la segunda 1+0, en la tercera 1+1, en la cuarta 2+1, en la 7

Material Importante referente a la filosofa de LabView quinta 3+2 y as sucesivamente hasta que elusuario oprime un botn de stop, el resultado de la ltima iteracin es desplegado en un indicador numrico.

PREGUNTA TIPO EXAMEN


Nota: El DAQ Assistant.vi realiza una lectura de voltaje de un puerto de una tarjeta de adquisicin de datos. La funcin Compound Arithmetic est configurada para hacer una sumatoria de todos los valores de sus entradas.

FeedBack Nodes

Material Importante referente a la filosofa de LabView Un feedback node hace la misma funcin que un shift register pero sin la necesidad de usar alambrado largo dentro de un ciclo. Al finalizar el ciclo, el valor final es transferido a travs de un nodo a un indicador, funcin o estructura externa. Para colocar un feedback node en el diagrama de bloques se accede a la paleta Structures-> Feedback node.

En la figura inferior se muestra un caso similar al del ejemplo de shift registers que suma los nmeros enteros 1,2,3,4.etc.. La diferencia con este ejemplo es que aqu la suma se sigue realizando hasta que el usuario oprime el botn STOP, los valores intermedios de la sumatoria se almacenan en el nodo de salida del ciclo, sin embargo ningn valor puede fluir hacia fuera del ciclo hasta que ste termine completamente. El ltimo valor del nodo es entonces 1+2+3+4+5++N, donde N es el nmero de veces que se haba repetido el ciclo cuando el usuario oprimi el botn STOP.

Material Importante referente a la filosofa de LabView

REPRESENTACIN DE LA INFORMACIN DENTRO DE LABVIEW


NMERICA
Los controles, indicadores y constantes utilizadas en LabView tienen un tipo de representacin, para acceder y/o modificar a esta representacin se hace un clic derecho sobre el control, indicador o constante de manera similar a como se muestra en la siguiente figura:

Las representaciones tipo EXT(extended), DBL(double), SGL(single) representaciones para nmeros reales y van de mayor a menor precisin.

son

Las representaciones tipo I32(integer 32), I16(integer 16) y I8(integer 8) son representaciones para nmeros enteros con signo de 32,16 y 8 bits. Las representaciones tipo U32(unsigned 32), U16(unsigned 16) y U8(unsigned 8) son representaciones para nmeros enteros sin signo de 32, 16 y 8 bits. 10

Material Importante referente a la filosofa de LabView Para entender la diferencia entre integer y unsigned se puede mostrar con una comparacin: un I8 puede almacenar valores entre -128 y 127 mientras que un U8 puede almacenar valores de 0 a 255. Las representaciones tipo CXT(complex extended), CDB(complex double) y CSG(complex single) son representaciones para nmeros complejos de mayor a menor precisin. Por default LabView maneja datos de tipo DBL y I32 para las representaciones nmericas no complejas y dibuja alambrado color naranja y rojo para informacin real y entera respectivamente. Se debe recordar que mayor precisin y/o rango ocupan ms memoria en la computadora por lo que la seleccin del tipo de dato a usar debe ser el adecuado para la funcin que se est realizando.

Coercion dots(puntos de coercin)


Las funciones de LabView permiten manipular informacin nmerica de un mismo tipo a la vez, sin embargo cuando una funcin recibe entrada de varios tipos(por ejemplo una entrada tipo entera y una tipo double) la funcin convierte la representacin menor a la mayor, esto es indicado a travs de un pequeo punto a la entrada de la funcin como se muestra en la figura:

Este pequeo punto(coercin dot) indica al usuario que internamente LabView realizar una conversin intrna , esto causar a un VI usar ms memoria y ms tiempo para ejecutarse. Debe evitarse utilizar en un diagrama muchas funciones con coercin dots. En el ejemplo del feedback node presentado anteriormente se ..

PREGUNTA TIPO EXAMEN


11

Material Importante referente a la filosofa de LabView

TIMING
La paleta de Timing nos proporciona herramientas de programacin que se relacionan con tiempo.

Los 2 bloques ms utilizados son el Wait(ms) y el Wait Until Next ms multiple. El primero retarda cierta cantidad de tiempo en milisegundos y el segundo produce una espera hasta que el timer del sistema es mltiplo de una cantidad dada de milisegundos.

12

Material Importante referente a la filosofa de LabView

EJEMPLO: Desplegar en un indicador numrico los mltiplos de la serie de un nmero especificado en otro control, como un indicador slo puede tener un valor a la vez, los mltiplos se debern desplegar uno por uno con una separacin de 500 milisegundos entre ellos. El programa se detendr cuando el usuario oprima un botn de STOP. Solucin

13

Material Importante referente a la filosofa de LabView

Cabe hacer notar aqu, que si durante la ejecucin del programa se modifica el control Serie, comenzarn a aparecer mltiplos del valor nuevo de dicho control ya que este control es ledo una vez por cada una de las ejecuciones del ciclo.

Tneles
Un tnel es la manera en que LabView pasa informacin de una parte del diagrama a una estructura o viceversa. Hay tneles de entrada a una estructura y tneles de salida de la estructura, adems existen diferentes tipos de tneles, cada uno opera de manera diferente, el ms simple es el tnel relleno, en este tipo de tnel el valor se pasa por una nica vez hacia el interior de una estructura o hacia fuera de una estructura. En este tnel o nodo el valor transferido es almacenado dentro del mismo tnel para ser utilizado dentro de la estructura (tnel de entrada) o fuera de ella (tnel de salida).

14

Material Importante referente a la filosofa de LabView Una cosa importante de recordar es que una estructura(cualquiera que sta sea) es ejecutada slo cuando ya se han almacenado los valores que provienen de fuera de la estructura dentro de los tneles de entrada, esto significa que los tneles son lugares de almacenamiento de informacin. Por ejemplo, abajo se muestra un diagrama donde se ha sacado de la estructura while el control llamado Serie del ejemplo previo y su valor se ha introducido al ciclo a travs de un tnel de entrada.

La operacin sera casi idntica al ejercicio de la seccin de Timing, sin embargo si durante la ejecucin se modifica el control Serie se seguiran desplegando los mltiplos del primer valor de dicho control, esto significa que ste es ledo en el diagrama nicamente una vez y su valor almacenado en el tnel de entrada. En el diagrama de bloques a travs del botn Highlight Execution se puede ver el flujo de valores que se generan en la ejecucin de un programa de LabView, se puede observar para este caso que el control llamado Serie es ledo una nica vez(al iniciar la ejecucin del programa), se almacena entonces en el tnel y despus de esto se procede a la ejecucin del ciclo.

15

Material Importante referente a la filosofa de LabView

Lo mencionado previamente significara que si sac el botn de stop fuera del ciclo, el programa nunca se detendra pues el botn se lee nicamente una vez antes de comenzar ejecucin del ciclo, por lo que sera completamente incorrecto hacer algo as.

Colocar el indicador Mltiplo fuera del ciclo y conectarlo a travs de un tnel como lo muestra la siguiente figura, hara que solamente el ltimo valor generado antes de oprimir el botn stop apareciera en el indicador, esto es, en este tipo de tneles de salida, el ltimo valor almacenado en ellos es el transferido. Por lo tanto la ejecucin en LabView sigue un orden dado por el flujo de informacin que fluye por el alambrado.

16

Material Importante referente a la filosofa de LabView

Algunas veces es deseable sustituir o reemplazar un tnel en una estructura cclica por un shift register , esto se hace oprimiendo con el botn derecho sobre el tnel y eligiendo la opcin Replace with Shift Register. El proceso inverso tambin es posible(cambiar un shift register por un tnel).

Probes

17

Material Importante referente a la filosofa de LabView

Implementacin de ifs en LabView


La filosofa de LabView para implementar instrucciones anlogas a la instruccin if encontrada en lenguajes como C es la estructura Case. Dicha estructura puede encontrarse en la paleta Structures de la seccin de Programming como lo muestra la siguiente figura.

Por default la estructura aparece con una entrada tipo boolean (la cual puede ser true o false), cada una de las 2 opciones se codifica dentro de la estructura. 18

Material Importante referente a la filosofa de LabView Para cambiarse de una opcin a otra se hace un clic en la parte superior y se elije la opcin que se desea codificar o visualizar.

En el siguiente ejemplo se muestra un programa de LabView con un control nmerico y un indicador. El programa obtiene la raz cuadrada del valor del control, se muestra la codificacin para el caso en que el nmero sea mayor o igual a cero y cuando no lo es. En el caso en que el control tenga un valor negativo se enva un cuadro de dialogo al usuario indicando que hay un error. El programa utiliza un tnel para transferir la informacin del control a la estructura Case y otro tnel para emitir el valor de la raz cuadrada hacia fuera de la estructura. Algo importante que recordar respecto a los tneles de salida en una estructura Case, es el hecho de que dichos tneles deben de estar alambrados en el interior de la estructura para todas las opciones posibles del Case (en el ejemplo mostrado para las opciones true y false).

19

Material Importante referente a la filosofa de LabView

Ntese que en la codificacin de False se enva el valor -99999.0 al indicador cuando se intenta obtener la raz cuadrada de un nmero negativo. La figura inferior muestra los resultados al correr el programa con valores positivos y negativos.

Algo similar a la estructura Case pero ms enfocado al control de flujo de datos en el alambrado es el bloque Select encontrado en la paleta de Comparison dentro de Programming. Dicho bloque permite que una de 2 entradas(t f en la figura de abajo) pueda fluir hacia la salida del bloque acorde al valor booleano de una entrada (s en la figura de abajo).

20

Material Importante referente a la filosofa de LabView

El siguiente diagrama muestra un ejemplo de un programa en LabView que despliega en un indicador string una serie de nmeros separados por comas que van descendiendo con diferencias de 100, 200, 300, 400, etc. entre ellos. El primer nmero se da a travs de un control llamado valor de inicio y se indica a travs de otro control el nmero de elementos que se desplegarn. El bloque select se utiliza aqu para eliminar la ltima coma que podra aparecer en el ltimo nmero desplegado.

21

Material Importante referente a la filosofa de LabView

Uso de valores de controles e indicadores en varias secciones de un programa de LabView

Muchas veces es requerido modificar o utilizar el valor de un control o indicador que se encuentra lejos en un diagrama de bloques. La manera ms adecuada de hacer esto es creando un Nodo de Propiedad(Property Node) del control o indicador, esto se hace oprimiendo con el botn derecho del indicador o control en el diagrama de bloques y seleccionando Create->Property Node-->Value , como se muestra en la siguiente figura al hacerlo sobre el indicador llamado Mltiplo 1 de un programa de LabView. 22

Material Importante referente a la filosofa de LabView

Una vez hecho esto se crea un nodo del control o indicador con el campo Value (mostrado en la sig. Figura para el indicador Mltiplo 1). El valor del control o indicador se puede obtener alambrando desde dicho campo (si la punta que aparece despus del nombre del campo se dirige hacia fuera) hacia el lugar deseado.

En caso de que se desee modificar el valor del control o indicador se deber de hacer clic derecho sobre el nombre del campo y seleccionar Change to Write como se muestra en la sig. Figura.

23

Material Importante referente a la filosofa de LabView

La punta ahora aparecer antes del nombre del campo y se dirigir hacia adentro de tal forma que podemos alambrar un valor nuevo hacia el control o indicador. La siguiente figura muestra el mismo programa que produce mltiplos de una serie pero utilizando Property Nodes. Ntese que los bloques originales que se generan en el diagrama de bloques al crear los controles e indicadores en el panel frontal no se estn utilizando directamente.

Se pueden hacer cuantos nodos sean requeridos para cada indicador o control, de esta forma se evita demasiado alambrado y confusin en un programa de LabView.

24

Material Importante referente a la filosofa de LabView

Paralelismo en LabView
LabView es en esencia un programa que maneja paralelismo de manera muy natural, estructuras no conectadas entre s pueden estarse ejecutando simultneamente sin ningn problema. La siguiente figura muestra el diagrama de bloques de 2 ciclos generando dos series diferentes. Ambos ciclos corren en paralelo y generan series diferentes en los indicadores, El ciclo inferior genera su serie ms rpido ya que tiene un retardo menor.

25

Material Importante referente a la filosofa de LabView

Cada ciclo se detendr cuando el usuario oprima el botn stop correspondiente.

Programacin Secuencial en LabView


Cuando se desea seguir un orden determinado en la ejecucin de un programa es muy til la estructura llamada Sequence, existen dos versiones de este tipo, la Flat y la Stacked y se encuentran en la paleta de Structures como lo muestra la sig. Figura.

En la mayora de los casos es indiferente usar una u otra estructura Sequence, su funcin principal es facilitar la programacin secuencial, es decir definir que secciones del programa se ejecutan antes y cuales se ejecutan despus. En la 26

Material Importante referente a la filosofa de LabView siguiente figura se muestra una Flat Sequence(su formato grfico es parecido a un rollo de pelcula) conteniendo 3 secciones .

En la primera seccin aparece el ciclo que genera una serie, despus aparece un retardo de 5 segs. Y finalmente otro ciclo generando otra serie. A diferencia del ejemplo encontrado en la seccin de paralelismo, en este si existe un orden de ejecucin definido de izquierda a derecha en la estructura Sequence. El retardo slo se ejecutar cuando el usuario haya parado el primer ciclo a travs del botn stop 1. Cuando se acabe el retardo se generarn entonces los mltiplos correspondientes al segundo ciclo y ste terminara slo cuando el usuario oprima el botn stop 2. Cuando se crea un flat sequence slo aparece un rea o frame donde colocar bloques de LabView, las dems secciones necesitadas para realizar programacin secuencial se hacen haciendo un clid derecho en el borde de la estructura y eligiendo Add Frame After. La siguiente figura muestra este concepto.

27

Material Importante referente a la filosofa de LabView

Un programador que conozca lenguajes como C. tiene una filosofa secuencial de pensamiento al programar, por ejemplo el cdigo para hacer una sumatoria de los primeros N nmeros positivos sera parecido a:

suma = 0; for (i = 1; i<=N ; i++) { suma = suma + i; } cout<<La suma es:<<suma;

Usando Property Nodes y una estructura sequence se podra codificar este programa en un diagrama de bloques de la siguiente manera:

28

Material Importante referente a la filosofa de LabView

Ntese que se han creado 3 property nodes del control SUMA, dos de ellos de escritura y uno de lectura. Al inicio de la estructura sequence se asigna un valor de cero al control SUMA, despus se ejecuta el ciclo que hace el proceso de acumulacin. La programacin ahora es muy parecida a como se hace en un lenguaje como C, sin embargo es mucho ms elegante trabajar con Shift Registers como se hizo al principio de este documento para el mismo ejemplo.

29

Material Importante referente a la filosofa de LabView

CICLO FOR Y MANEJO DE ARREGLOS


Los arreglos agrupan elementos de datos del mismo tipo. Un arreglo consiste de elementos y dimensiones. Un arreglo utiliza un ndice para que se pueda tener acceso rpido a cualquier elemento en particular. El ndice para acceder a los elementos del arreglo inicia en cero, lo que significa que tiene un rango de 0 a n-1, donde n es el nmero de elementos en el arreglo. En este documento slo hablaremos de arreglos de 1 dimensin para facilitar su comprensin. Un arreglo puede ser creado en el panel frontal y/o en el diagrama de bloques, cuando se crea en el panel frontal se utiliza tpicamente para desplegar informacin del contenido de un arreglo que est siendo procesado en el diagrama de bloques. CREANDO UN ARREGLO DIRECTAMENTE DESDE EL PANEL FRONTAL Se accede a Controls->Array, Matrix & Cluster -> Array para crear un arreglo directamente en el Panel frontal.

Para definir el tipo de elementos que contendr este arreglo se integra al rea vaca del mismo un indicador como lo muestra la figura de ms abajo (dependiendo de la problemtica se podra integrar un control).

30

Material Importante referente a la filosofa de LabView

Una vez colocado el indicador o control se puede hacer ms grande el arreglo de tal forma que muestre ms elementos como se muestra en la siguiente figura:

Para visualizar informacin en ese arreglo de indicadores se puede crear un arreglo en el diagrama de bloques y conectarlo a l. El primer elemento que se muestra del arreglo es el elemento dado por el ndice del control que se muestra a la izquierda del contenido del arreglo (por default est en 0 indicando que es el primer elemento del arreglo). CREACIN DE UN ARREGLO EN EL DIAGRAMA DE BLOQUES Un arreglo en el diagrama de bloques puede ser creado de diferentes maneras, la problemtica a resolver definir la manera de crear un arreglo. A 31

Material Importante referente a la filosofa de LabView continuacin se muestran algunos ejemplos con las maneras ms comunes de hacerlo. a) Crear un arreglo de tamao 10 con un valor idntico en cada una de sus posiciones.

En el ejemplo se crea un arreglo de tamao 10 y se almacena un 5 en todas sus localidades, se conecta entonces al arreglo de indicadores hecho previamente en el panel frontal para mostrarlo. b) Crear un arreglo de 10 elementos con valores al azar entre 0 y 1

32

Material Importante referente a la filosofa de LabView

En el ejemplo se inicializa un arreglo de 0 elementos y se van aadiendo elementos al final del arreglo a travs del bloque Build Array, el nuevo arreglo creado es alimentado entonces al nuevo ciclo a travs de registros shift y como el ciclo se repite 10 veces el arreglo final tendr este nmero de elementos. c) Crear un arreglo con valores constantes definidos por el usuario.

33

Material Importante referente a la filosofa de LabView

Cuando se desea utilizar un arreglo conteniendo valores constantes se accede a la paleta Array->Array Constant, se introduce despus una constante numrica de la paleta de Numeric , se introducen entonces los nmeros requeridos dentro del arreglo, si se desea mostrar el contenido de este arreglo en el panel frontal se puede conectar a un arreglo de indicadores como lo muestra la figura. d) Crear un arreglo cuyo tamao va creciendo y se detiene dicho crecimiento cuando se cumpla se cumpla una condicin en el programa

En el ejemplo se va creando un arreglo con nmeros enteros entre 0 y 10, primero se multiplica un nmero entre 0 y 1 por 10 y se redondea al valor ms cercano. La construccin del arreglo se detiene cuando se produce el nmero 0 (en este caso Random Number x 10 generara un valor entre 0 y 0.49999999), cabe mencionar que el cero tambin se introduce en el arreglo pues todos los procesos del ciclo deben de finalizar antes de que se termine de ejecutar la estructura while o de que inicie una nueva iteracin del ciclo.

34

Material Importante referente a la filosofa de LabView CREANDO UN ARREGLO EN EL PANEL FRONTAL DESDE EL DIAGRAMA DE BLOQUES Como comentario relevante cabe destacar que las lneas que llevan arreglos en el diagrama de bloques son ms gruesas que las que llevan datos simples, esto se muestra claramente en los ejemplos previamente descritos. La manera ms sencilla de crear un arreglo de indicadores en el panel frontal para mostrar el contenido de un arreglo es haciendo clic derecho con el ratn y eligiendo Create->Indicator en el alambre que lleva dicho arreglo o en la salida de la estructura o bloque que lleve este tipo de datos. En el ejemplo inferior se hace un clic derecho sobre el registro shift de salida de una estructura while para crear un arreglo de indicadores que aparecer en el panel frontal.

MANIPULANDO ARREGLOS EN EL DIAGRAMA DE BLOQUES En el diagrama de bloques La paleta de Array provee muchos bloques para manipular arreglos(en realidad no se manipulan, simplemente se crean nuevos arreglos en base a los ya existentes), por lo tanto en los bloques referentes a arreglos, el arreglo de salida es un arreglo diferente al arreglo de entrada, y ste ltimo(el de entrada) no sufre ninguna modificacin, solo sirve para crear un arreglo nuevo(el arreglo de salida) , por lo tanto es importante recordar que el arreglo de entrada y el de salida son entidades distintas.

35

Material Importante referente a la filosofa de LabView

Los bloques ms utilizados dentro de un arreglo se describen a continuacin:

Array Size Entrada- Un arreglo Salida- Un entero conteniendo el tamao del arreglo Index Array Entrada- Un arreglo y una posicin Salida- El elemento del arreglo que se encuentra en dicha posicin.

Replace Subset Entrada- Un arreglo, una posicin y un nuevo elemento Salida- un arreglo idntico en tamao y valores al de entrada excepto por el nuevo elemento el cual colocado en la posicin dada(el valor que previamente estaba ah desaparece).

Insert into Array Entrada-Un arreglo, una posicin y un nuevo elemento Salida- un arreglo de tamao mayor en 1 unidad respecto al arreglo de entrada y con los mismos valores adems de un elemento 36

Material Importante referente a la filosofa de LabView insertado en la posicin dada a la entrada(los valores despus de esa posicin son corridos).

Delete from Array Entrada-Un arreglo, una posicin y un nmero representando los elementos a eliminar del arreglo Salida-Un arreglo con el/los elementos eliminados y otro arreglo conteniendo solamente el/los elementos eliminados.

Initialize Array Entrada-Un valor indicado el tamao del arreglo a crear y un valor inicial indicando el valor almacenado en todas las posiciones del arreglo creado Salida- Un arreglo creado del tamao y valor indicado

Build Array Entrada-Un arreglo y un elemento a aadir al final del arreglo Salida- Un arreglo de tamao mayor en 1 unidad respecto al arreglo de entrada

Array Max & Min Entrada-Un arreglo Salida- Cuatro valores, los valores mayor y menor dentro del arreglo y las posiciones en donde se encuentran dichos valores.

Sort 1D Array Entrada-Un arreglo

37

Material Importante referente a la filosofa de LabView Salida- Un nuevo arreglo del mismo tamao pero ordenado en forma ascendente.

Reverse 1D Array Entrada-Un arreglo Salida- Un nuevo arreglo del mismo tamao pero con los valores invertidos respecto al arreglo de entrada.

Rotate 1D Array Entrada-Un arreglo y un nmero indicando las posiciones que se rotarn los elementos Salida- Un nuevo arreglo del mismo tamao que el de entrada pero rotado en sus elementos cierto nmero de posiciones

Ejemplo Final Disee un programa que cree un arreglo con 10 datos al azar entre 0 y 100, cada dato ser guardado en el arreglo cada 500 milisegundos, una vez almacenados los datos en el arreglo, se deber desplegar la informacin del arreglo en un indicador y se desplegar en otros indicadores el valor mayor de todos, la posicin del mayor, el valor menor de todos y la posicin del menor. Una solucin pensada inicialmente por un programador comn e inexperto en cmo operan los tneles y registros shifts en LabView adems de desconocer la manera correcta como operan los bloques de la paleta de Array se vera similar a la siguiente figura.

38

Material Importante referente a la filosofa de LabView

Para la propuesta de esta solucin se desarroll primero completamente el diagrama de bloques , se colocaron entonces indicadores desde el diagrama de bloques haciendo un clic derecho con el ratn en aquellos alambres donde se deseaba incluir un indicador en el panel frontal, Se seleccion ah la opcin Create->Indicator. En la figura inferior se muestra este proceso para la creacin del indicador llamado ndice.

El proceso general para la solucin propuesta del problema es el siguiente: 39

Material Importante referente a la filosofa de LabView 1. Se Inicializo un arreglo de tamao 10 con valores en 0 en todos los elementos del mismo. 2. El arreglo fue copiado al tnel e introducido al modificacin. ciclo para su

3. En cada una de las iteraciones del ciclo se sustituy el valor de la posicin i del arreglo con un valor al azar entre 0 y 100 generado a travs de la multiplicacin de 100 por un valor al azar entre 0 y 1. 4. El arreglo final es entonces utilizado para ser desplegado , obtener el menor, el mayor y sus posiciones. Como se muestra en la penltima figura, la ejecucin del programa no da los resultados esperados ya que solo modifica el ltimo valor del arreglo. Esto se debe a que no se ha hecho la siguiente consideracin: Utilizar el bloque Replace Array Subset crea un nuevo arreglo con el valor modificado en la posicin dada por i, sin embargo dicho arreglo no se utiliza en la siguiente iteracin y por lo tanto se pierde. Para las siguientes iteraciones del ciclo se vuelve a tomar el arreglo original y se reemplaza el elemento de la posicin i por un valor al azar entre 1 y 100 y se vuelve a perder excepto en el ltimo ciclo, ya que este arreglo de salida es utilizado para ser desplegado y para obtener el mayor, el menor y sus posiciones. Una solucin a la problemtica presentada es mostrada en la siguiente figura

40

Material Importante referente a la filosofa de LabView La nica diferencia en el diseo de los diagramas de bloques es la sustitucin de los nodos por shift registers, de esta manera el arreglo de salida en cada iteracin del ciclo es retroalimentado y se convierte en un arreglo de entrada para el siguiente ciclo.

VARIABLES
La manera ms simple de relacionar el concepto de variables en un lenguaje de programacin textual como C respecto a LabView es considerar a cada control o indicador como una variable. A travs de un Property Node en el campo Value es posible acceder o modificar el valor de un control o indicador como ya se haba mencionado previamente. Los valores que pasan a travs del alambrado en un diagrama de bloques se pierden una vez que fueron transferidos a otra parte del diagrama de bloques, la nica manera de retener su valor es utilizando un indicador ligado al alambre en cuestin, con eso el dato que pasa a travs del alambre se almacena y puede ser utilizado en otras partes del programa. La manera de crear un indicador ligado a un alambre en particular es haciendo un clic derecho sobre el alambre en cuestin y seleccionando Create -> Indicator como se haba mencionado previamente.

El siguiente programa de LabView muestra la solucin del mismo ejercicio previo pero ahora se van mostrando visualmente como entran los valores al azar al arreglo. En la solucin, el indicador del arreglo es creado al inicializar el arreglo y no a la salida del ciclo, adems se crea un Property node del arreglo de tal manera que el arreglo de salida del bloque Replace Array Subset sea almacenado en el indicador y as se muestra visualmente como se va modificando el arreglo.

41

Material Importante referente a la filosofa de LabView

Pudiera pensarse que si se hubiesen usado tneles normales en vez de shift registers tambin seria correcta la solucin, esto debido a que la salida del arreglo creado con el nuevo valor almacenado se vuelve a almacenar en el arreglo llamado Array, sin embargo esto no es as, ya que el nodo que recibe el arreglo en el lado izquierdo de la estructura for en realidad almacena una copia del arreglo original(el arreglo de 10 elementos con valor de cero) y por lo tanto se accede a esta copia en cada una de las iteraciones del ciclo. La siguiente figura muestra el diagrama de bloques y el resultado (el cual es errneo) para el mismo ejemplo utilizando tneles normales.

42

Material Importante referente a la filosofa de LabView Otra solucin factible para el problema del ejemplo podra realizarse utilizando Property Nodes en vez de shift registers, esta solucin es mostrada en la figura de abajo. Aqu se utilizan dos properties nodes, uno de lectura y otro de escritura, ntese que en vez de alimentar el arreglo a travs de un nodo se usa el property node de lectura y con esto se asegura que la entrada al bloque Replace Array Subset sean los valores del indicador del arreglo llamado Array y no una copia del arreglo original inicializado en cero.

43

Material Importante referente a la filosofa de LabView

44

Material Importante referente a la filosofa de LabView SUB VIs

MANEJO DE ERRORES

VARIABLES LOCALES Y GLOBALES

45

Material Importante referente a la filosofa de LabView

CHARTS AND GRAPHS

MAQUINA DE ESTADOS

46

Material Importante referente a la filosofa de LabView

EVENTOS

47

Material Importante referente a la filosofa de LabView

FILOSOFIA PRODUCTOR CONSUMIDOR

REGISTROS(clusters)

48

Material Importante referente a la filosofa de LabView

ARCHIVOS

TYPE DEFS

ACCIONES MECANICAS EN LOS SWITCHES

Coercion Dots
Coercion dots appear on block diagram nodes to alert you that you wired two different numeric data types together. The dot means that LabVIEW converted the value passed into the node to a different representation. For example, the Add function expects two doubleprecision, floating-point inputs. If you change one of those inputs to an integer, a coercion dot appears on the Add function, as shown in the following figure.

49

Material Importante referente a la filosofa de LabView

The block diagram places the coercion dot on the border of the terminal where the conversion takes place. Because VIs and functions can have many terminals, a coercion dot can appear inside an icon if you wire through one terminal to another terminal. Coercion dots also appear on the terminal when you wire any data type to a variant terminal, except when you wire two variants together. Coercion dots can cause a VI to use more memory and increase its run time. Try to keep data types consistent in the VIs you create. Coercion dots appear as gray dots by default. You can change the color that LabVIEW uses to show coercion dots by selecting ToolsOptions and selecting Colors from the Category list.

Shift Registers
Use shift registers when you want to pass values from previous iterations through the loop to the next iteration. A shift register appears as a pair of terminals, shown as follows, directly opposite each other on the vertical sides of the loop border.

The terminal on the right side of the loop contains an up arrow and stores data on the completion of an iteration. LabVIEW transfers the data connected to the right side of the register to the next iteration. After the loop executes, the terminal on the right side of the loop returns the last value stored in the shift register.

50

Material Importante referente a la filosofa de LabView

Create a shift register by right-clicking the left or right border of a loop and selecting Add Shift Register from the shortcut menu. A shift register transfers any data type and automatically changes to the data type of the first object wired to the shift register. The data you wire to the terminals of each shift register must be the same type. You can add more than one shift register to a loop. If you have multiple operations that use previous iteration values within your loop, use multiple shift registers to store the data values from those different processes in the structure, as shown in the following figure.

Initializing Shift Registers


Initializing a shift register resets the value the shift register passes to the first iteration of the loop when the VI runs. Initialize a shift register by wiring a control or constant to the shift register terminal on the left side of the loop, as shown in the following figure.

In the previous figure, the For Loop executes five times, incrementing the value the shift register carries by one each time. After five iterations of the For Loop, the shift register passes the final value, 5, to the indicator and the VI quits. Each time you run the VI, the shift register begins with a value of 0.
51

Material Importante referente a la filosofa de LabView

If you do not initialize the shift register, the loop uses the value written to the shift register when the loop last executed or the default value for the data type if the loop has never executed. Use an uninitialized shift register to preserve state information between subsequent executions of a VI. The following figure shows an uninitialized shift register.

In the previous figure, the For Loop executes five times, incrementing the value the shift register carries by one each time. The first time you run the VI, the shift register begins with a value of 0, which is the default value for a 32-bit integer. After five iterations of the For Loop, the shift register passes the final value, 5, to the indicator, and the VI quits. The next time you run the VI, the shift register begins with a value of 5, which was the last value from the previous execution. After five iterations of the For Loop, the shift register passes the final value, 10, to the indicator. If you run the VI again, the shift register begins with a value of 10, and so on. Uninitialized shift registers retain the value of the previous iteration until you close the VI.

Stacked Shift Registers


Stacked shift registers let you access data from previous loop iterations. Stacked shift registers remember values from multiple previous iterations and carry those values to the next iterations. To create a stacked shift register, right-click the left terminal and select Add Element from the shortcut menu. Stacked shift registers can occur only on the left side of the loop because the right terminal transfers the data generated only from the current iteration to the next iteration, as shown in the following figure.

52

Material Importante referente a la filosofa de LabView

If you add another element to the left terminal in the previous figure, values from the last two iterations carry over to the next iteration, with the most recent iteration value stored in the top shift register. The bottom terminal stores the data passed to it from the previous iteration.

Feedback Node
The Feedback Node, shown as follows, appears automatically in a For Loop or While Loop when you wire the output of a node or group of nodes to the input of that node or group of nodes.

You also can select the Feedback Node on the Functions palette and place it inside a For Loop or While Loop. Use the Feedback Node to avoid long wires across loops. Like a shift register, the Feedback Node stores data when the loop completes an iteration, sends that value to the next iteration of the loop, and transfers any data type. The Feedback Node arrow indicates in which direction the data values flow along the wire. The arrow automatically changes direction if the direction of data flow changes. If you connect the wire to the tunnel after the Feedback Node, the Feedback Node passes each value back to the input of the node and then passes the last value to the tunnel. For example, the For Loop in the following figure iterates five times. The Feedback Node passes the value from the previous iteration to the input of the Increment function each time the loop iterates. On the last iteration of the loop, the Feedback Node passes the value from the previous iteration (4) to the input of the Increment function, which adds 1 to the value
53

Material Importante referente a la filosofa de LabView

and sends the result to the tunnel. When the VI finishes running, the value in the numeric indicator is 5.

The following figure shows the same block diagram implemented with shift registers instead of a Feedback Node.

The For Loop in the following figure also iterates five times. The Feedback Node passes the value from the previous iteration of the loop to the tunnel before it passes the value to the input of the Increment function. The value in the tunnel is always the value from the previous iteration. On the last iteration of the loop, the Feedback Node holds the last value, which in this case is 5, but does not pass that value to the tunnel or to the numeric indicator. When the VI finishes running, the value in the numeric indicator is 4, which is the value from the previous, not the last, iteration of the loop.

54

Material Importante referente a la filosofa de LabView

The following figure shows the same block diagram implemented using shift registers instead of a Feedback Node.

Initializing Feedback Nodes


Right-click the Feedback Node and select Initializer Terminal from the shortcut menu to add the initializer terminal to the loop border to initialize the loop. When you select the Feedback Node on the Functions palette or if you convert an initialized shift register to a Feedback Node, the loop appears with an initializer terminal. Initializing a Feedback Node resets the initial value the Feedback Node passes to the first iteration of the loop when the VI runs. If you do not initialize the Feedback Node, the Feedback Node passes the last value written to the node or the default value for the data type if the loop has never executed. If you do not wire the input of the initializer terminal, each time the VI runs, the initial input of the Feedback Node is the last value from the previous execution.

Replacing Shift Registers with a Feedback Node


Replace a shift register with a Feedback Node by right-clicking the shift register and selecting Replace with Feedback Node from the shortcut menu. Replace a Feedback Node with shift registers by right-clicking the Feedback Node and selecting Replace with Shift Register from the shortcut menu.

Default Data in Loops


55

Material Importante referente a la filosofa de LabView

While Loops produce default data when the shift register is not initialized. For Loops produce default data if you wire 0 to the count terminal of the For Loop or if you wire an empty array to the For Loop as an input with auto-indexing enabled. The loop does not execute, and any output tunnel with auto-indexing disabled contains the default value for the tunnel data type. Use shift registers to transfer values through a loop regardless of whether the loop executes.

56