material de labview v4 terminado

38
Material Importante referente a la filosofía de LabView Paletas de LabView Panel Frontal.- La paleta de Controls es utilizada para seleccionar controles o indicadores que serán colocados en el instrumento virtual. Se accede a través del menú de View-Controls Palette Diagrama Bloques.- La paleta de Functions es utilizada para colocar bloques de programación grafica . Se accede a través 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 través del menú de View-Tools Palette. Cuando está activado el botón de selección automática (botón superior de la paleta), LabView selecciona la herramienta a utilizar al 1

Upload: joaquin-guillen

Post on 24-Jun-2015

1.874 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

Paletas de LabView

Panel Frontal.- La paleta de Controls es utilizada para seleccionar controles o indicadores que serán colocados en el instrumento virtual. Se accede a través del menú de View-Controls Palette

Diagrama Bloques.- La paleta de Functions es utilizada para colocar bloques de programación grafica . Se accede a través 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 través del menú de View-Tools Palette. Cuando está activado el botón de selección automática (botón superior de la paleta), LabView selecciona la herramienta a utilizar al mover el mouse sobre objetos del panel frontal o del diagrama de bloques.

1

Page 2: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

Teclas de Acceso Rápido 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

Formula Node : Soluciones de LabView programando en C

Un recurso para solucionar problemáticas utilizando dentro de LabView programación de texto similar a C es la estructura Formula Node. A través 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.

2

Page 3: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

Al utilizar una estructura Formula Node se agregan entradas y salidas a la estructura oprimiendo el botón derecho en el borde de la estructura. Las entradas se etiquetan con un nombre y dicho nombre puede usarse en la programación como si fuera una variable, las etiquetas de los nombres de salida deben corresponder con variables declaradas dentro del programa.

En la figura de abajo se muestra un simple programa de LabView que suma dos números, se muestra la solución utilizando alambrado común y la solución con Formula Node.

3

Page 4: Material de LabView V4 Terminado

Material Importante referente a la filosofía 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.

USO DE SHIFT REGISTER´S EN LabView

Los Shift Register´s sirven para transferir valores de una iteración a otra dentro de los ciclos for´s y while´s. Para crear un shif register en un ciclo for o while se hace clic con el botón derecho en uno de los bordes de la estructura cíclica dentro del diagrama de bloques y se elige Add Shift Register. Aparecen entonces en los extremos izquierdo y derecho de la estructura símbolos 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 números. A través de un control se proporciona el valor de N y el resultado se despliega en un indicador numérico.

4

Page 5: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

En el diagrama se alambra el valor del control N a la entrada N que controla el ciclo for, este es el número de veces que se ejecutará el ciclo El contador automático i que proporciona el ciclo for da los valores de 0 para la primera ejecución del ciclo, 1 para la segunda ejecución del ciclo, 2 para la tercera ejecución y N-1 para la última ejecución 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 iteración del ciclo y así sucesivamente.

TIMING

La paleta de Timing nos proporciona herramientas de programación que se relacionan con tiempo.

5

Page 6: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

Los 2 bloques más 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 múltiplo de una cantidad dada de milisegundos.

EJEMPLO:

Desplegar en un indicador numérico los múltiplos de la serie de un número especificado en otro control, como un indicador sólo puede tener un valor a la vez, los múltiplos se deberán desplegar uno por uno con una separación de 500 milisegundos entre ellos. El programa se detendrá cuando el usuario oprima un botón de STOP.

Solución

6

Page 7: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

Cabe hacer notar aquí, que si durante la ejecución del programa se modifica el control Serie, comenzarán a aparecer múltiplos del valor nuevo de dicho control ya que este control es leído una vez por cada una de las ejecuciones del ciclo.

Túneles

Un túnel es la manera en que LabView pasa información de una parte del diagrama a una estructura o viceversa. Hay túneles de entrada a una estructura y túneles de salida de la estructura, además existen diferentes tipos de túneles, cada uno opera de manera diferente, el más simple es el túnel relleno, en este tipo de túnel el valor se pasa por una única vez hacia el interior de una estructura o hacia fuera de una estructura. En este túnel o nodo el valor transferido es almacenado dentro del mismo túnel para ser utilizado dentro de la estructura (túnel de entrada) o fuera de ella (túnel de salida).

Una cosa importante de recordar es que una estructura(cualquiera que ésta sea) es ejecutada sólo cuando ya se han almacenado los valores que provienen de fuera de la estructura dentro de los túneles de entrada, esto significa que los túneles son lugares de almacenamiento de información.

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 través de un túnel de entrada.

7

Page 8: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

La operación sería casi idéntica al ejercicio de la sección de Timing, sin embargo si durante la ejecución se modifica el control Serie se seguirían desplegando los múltiplos del primer valor de dicho control, esto significa que éste es leído en el diagrama únicamente una vez y su valor almacenado en el túnel de entrada.

En el diagrama de bloques a través del botón Highlight Execution se puede ver el flujo de valores que se generan en la ejecución de un programa de LabView, se puede observar para este caso que el control llamado Serie es leído una única vez(al iniciar la ejecución del programa), se almacena entonces en el túnel y después de esto se procede a la ejecución del ciclo.

8

Page 9: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

Lo mencionado previamente significaría que si sacó el botón de stop fuera del ciclo, el programa nunca se detendría pues el botón se lee únicamente una vez antes de comenzar ejecución del ciclo, por lo que sería completamente incorrecto hacer algo así.

Colocar el indicador Múltiplo fuera del ciclo y conectarlo a través de un túnel como lo muestra la siguiente figura, haría que solamente el último valor generado antes de oprimir el botón stop apareciera en el indicador, esto es, en este tipo de túneles de salida, el último valor almacenado en ellos es el transferido. Por lo tanto la ejecución en LabView sigue un orden dado por el flujo de información que fluye por el alambrado.

9

Page 10: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

Algunas veces es deseable sustituir o reemplazar un túnel en una estructura cíclica por un shift register , esto se hace oprimiendo con el botón derecho sobre el túnel y eligiendo la opción Replace with Shift Register. El proceso inverso también es posible(cambiar un shift register por un túnel).

Implementación de if’s en LabView

La filosofía de LabView para implementar instrucciones análogas a la instrucción if encontrada en lenguajes como C es la estructura Case. Dicha estructura puede encontrarse en la paleta Structures de la sección de Programming como lo muestra la siguiente figura.

10

Page 11: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

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. Para cambiarse de una opción a otra se hace un clic en la parte superior y se elije la opción que se desea codificar o visualizar.

En el siguiente ejemplo se muestra un programa de LabView con un control númerico y un indicador. El programa obtiene la raíz cuadrada del valor del control, se muestra la codificación para el caso en que el número sea mayor o igual a cero y cuando no lo es. En el caso en que el control tenga un valor negativo se envía un cuadro de dialogo al usuario indicando que hay un error.

El programa utiliza un túnel para transferir la información del control a la estructura Case y otro túnel para emitir el valor de la raíz cuadrada hacia fuera de la estructura. Algo importante que recordar respecto a los túneles de salida en una estructura Case, es el hecho de que dichos túneles 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).

11

Page 12: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

Nótese que en la codificación de False se envía el valor -99999.0 al indicador cuando se intenta obtener la raíz cuadrada de un número negativo. La figura inferior muestra los resultados al correr el programa con valores positivos y negativos.

12

Page 13: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

Algo similar a la estructura Case pero más 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).

El siguiente diagrama muestra un ejemplo de un programa en LabView que despliega en un indicador string una serie de números separados por comas que van descendiendo con diferencias de 100, 200, 300, 400, etc. entre ellos. El primer número se da a través de un control llamado valor de inicio y se indica a través de otro control el número de elementos que se desplegarán. El bloque select se utiliza aquí para eliminar la última coma que podría aparecer en el último número desplegado.

13

Page 14: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

14

Page 15: Material de LabView V4 Terminado

Material Importante referente a la filosofía 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 más adecuada de hacer esto es creando un Nodo de Propiedad(Property Node) del control o indicador, esto se hace oprimiendo con el botón 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 Múltiplo 1 de un programa 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 Múltiplo 1). El valor del control o indicador se puede obtener alambrando desde dicho campo (si la punta que aparece después 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.

15

Page 16: Material de LabView V4 Terminado

Material Importante referente a la filosofía 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 múltiplos de una serie pero utilizando Property Node´s. Nótese que los bloques originales que se generan en el diagrama de bloques al crear los controles e indicadores en el panel frontal no se están utilizando directamente.

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

16

Page 17: Material de LabView V4 Terminado

Material Importante referente a la filosofía 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 simultáneamente sin ningún 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 más rápido ya que tiene un retardo menor.

17

Page 18: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

Cada ciclo se detendrá cuando el usuario oprima el botón stop correspondiente.

Programación Secuencial en LabView

Cuando se desea seguir un orden determinado en la ejecución 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 mayoría de los casos es indiferente usar una u otra estructura Sequence, su función principal es facilitar la programación secuencial, es decir definir que secciones del programa se ejecutan antes y cuales se ejecutan después. En la siguiente figura se muestra una Flat Sequence(su formato gráfico es parecido a un rollo de película) conteniendo 3 secciones .

18

Page 19: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

En la primera sección aparece el ciclo que genera una serie, después aparece un retardo de 5 segs. Y finalmente otro ciclo generando otra serie. A diferencia del ejemplo encontrado en la sección de paralelismo, en este si existe un orden de ejecución definido de izquierda a derecha en la estructura Sequence. El retardo sólo se ejecutará cuando el usuario haya parado el primer ciclo a través del botón stop 1. Cuando se acabe el retardo se generarán entonces los múltiplos correspondientes al segundo ciclo y éste terminara sólo cuando el usuario oprima el botón stop 2.

Cuando se crea un flat sequence sólo aparece un área o frame donde colocar bloques de LabView, las demás secciones necesitadas para realizar programación secuencial se hacen haciendo un clid derecho en el borde de la estructura y eligiendo Add Frame After. La siguiente figura muestra este concepto.

Un programador que conozca lenguajes como C. tiene una filosofía secuencial de pensamiento al programar, por ejemplo el código para hacer una sumatoria de los primeros N números positivos sería parecido a:

suma = 0;

for (i = 1; i<=N ; i++) {

suma = suma + i;

}

cout<<”La suma es:”<<suma;

19

Page 20: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

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

Nótese 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, después se ejecuta el ciclo que hace el proceso de acumulación. La programación ahora es muy parecida a

20

Page 21: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

como se hace en un lenguaje como C, sin embargo es mucho más elegante trabajar con Shift Registers como se hizo al principio de este documento para el mismo ejemplo.

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 rápido 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 número de elementos en el arreglo. En este documento sólo hablaremos de arreglos de 1 dimensión para facilitar su comprensión.

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 típicamente para desplegar información 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 vacía del mismo un indicador como lo muestra la figura de más abajo (dependiendo de la problemática se podría integrar un control).

21

Page 22: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

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

Para visualizar información 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).

CREACIÓN DE UN ARREGLO EN EL DIAGRAMA DE BLOQUESUn arreglo en el diagrama de bloques puede ser creado de diferentes maneras, la problemática a resolver definirá la manera de crear un arreglo. A continuación se muestran algunos ejemplos con las maneras más comunes de hacerlo.

22

Page 23: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

a) Crear un arreglo de tamaño 10 con un valor idéntico en cada una de sus posiciones.

En el ejemplo se crea un arreglo de tamaño 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

En el ejemplo se inicializa un arreglo de 0 elementos y se van añadiendo elementos al final del arreglo a través del bloque Build Array, el nuevo arreglo creado es alimentado entonces al nuevo

23

Page 24: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

ciclo a través de registros shift y como el ciclo se repite 10 veces el arreglo final tendrá este número de elementos.

c) Crear un arreglo con valores constantes definidos por el usuario.

Cuando se desea utilizar un arreglo conteniendo valores constantes se accede a la paleta Array->Array Constant, se introduce después una constante numérica de la paleta de Numeric , se introducen entonces los números 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.

24

Page 25: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

d) Crear un arreglo cuyo tamaño va creciendo y se detiene dicho crecimiento cuando se cumpla se cumpla una condición en el programa

En el ejemplo se va creando un arreglo con números enteros entre 0 y 10, primero se multiplica un número entre 0 y 1 por 10 y se redondea al valor más cercano. La construcción del arreglo se detiene cuando se produce el número 0 (en este caso Random Number x 10 generaría un valor entre 0 y 0.49999999), cabe mencionar que el cero también 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 iteración del ciclo.

CREANDO UN ARREGLO EN EL PANEL FRONTAL DESDE EL DIAGRAMA DE BLOQUESComo comentario relevante cabe destacar que las líneas que llevan arreglos en el diagrama de bloques son más gruesas que las que llevan datos simples, esto se muestra claramente en los ejemplos previamente descritos.

La manera más sencilla de crear un arreglo de indicadores en el panel frontal para mostrar el contenido de un arreglo es haciendo clic derecho con el ratón 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.

25

Page 26: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

MANIPULANDO ARREGLOS EN EL DIAGRAMA DE BLOQUESEn 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 modificación, 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.

Los bloques más utilizados dentro de un arreglo se describen a continuación:

Array Size

26

Page 27: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

Entrada- Un arreglo

Salida- Un entero conteniendo el tamaño del arreglo

Index Array

Entrada- Un arreglo y una posición

Salida- El elemento del arreglo que se encuentra en dicha posición.

Replace Subset

Entrada- Un arreglo, una posición y un nuevo elemento

Salida- un arreglo idéntico en tamaño y valores al de entrada excepto por el nuevo elemento el cual colocado en la posición dada(el valor que previamente estaba ahí desaparece).

Insert into Array

Entrada-Un arreglo, una posición y un nuevo elemento

Salida- un arreglo de tamaño mayor en 1 unidad respecto al arreglo de entrada y con los mismos valores además de un elemento insertado en la posición dada a la entrada(los valores después de esa posición son corridos).

Delete from Array

Entrada-Un arreglo, una posición y un número 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 tamaño del arreglo a crear y un valor inicial indicando el valor almacenado en todas las posiciones del arreglo creado

27

Page 28: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

Salida- Un arreglo creado del tamaño y valor indicado

Build Array

Entrada-Un arreglo y un elemento a añadir al final del arreglo

Salida- Un arreglo de tamaño 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

Salida- Un nuevo arreglo del mismo tamaño pero ordenado en forma ascendente.

Reverse 1D Array

Entrada-Un arreglo

Salida- Un nuevo arreglo del mismo tamaño pero con los valores invertidos respecto al arreglo de entrada.

Rotate 1D Array

Entrada-Un arreglo y un número indicando las posiciones que se rotarán los elementos

Salida- Un nuevo arreglo del mismo tamaño que el de entrada pero rotado en sus elementos cierto número de posiciones

28

Page 29: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

Ejemplo Final

Diseñe 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 información del arreglo en un indicador y se desplegará en otros indicadores el valor mayor de todos, la posición del mayor, el valor menor de todos y la posición del menor.

Una solución pensada inicialmente por un programador común e inexperto en cómo operan los túneles y registros shift´s en LabView además de desconocer la manera correcta como operan los bloques de la paleta de Array se vería similar a la siguiente figura.

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

29

Page 30: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

El proceso general para la solución propuesta del problema es el siguiente:

1. Se Inicializo un arreglo de tamaño 10 con valores en 0 en todos los elementos del mismo.

2. El arreglo fue copiado al túnel e introducido al ciclo para su modificación.

3. En cada una de las iteraciones del ciclo se sustituyó el valor de la posición i del arreglo con un valor al azar entre 0 y 100 generado a través de la multiplicación 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 penúltima figura, la ejecución 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 consideración:

Utilizar el bloque Replace Array Subset crea un nuevo arreglo con el valor modificado en la posición dada por i, sin embargo dicho arreglo no se utiliza en la siguiente iteración 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 posición 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 solución a la problemática presentada es mostrada en la siguiente figura

30

Page 31: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

La única diferencia en el diseño de los diagramas de bloques es la sustitución de los nodos por shift registers, de esta manera el arreglo de salida en cada iteración del ciclo es retroalimentado y se convierte en un arreglo de entrada para el siguiente ciclo.

VARIABLES

La manera más simple de relacionar el concepto de variables en un lenguaje de programación textual como C respecto a LabView es considerar a cada control o indicador como una variable. A través de un Property Node en el campo Value es posible acceder o modificar el valor de un control o indicador como ya se había mencionado previamente.

Los valores que pasan a través 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 cuestión, con eso el dato que pasa a través 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 cuestión y seleccionando Create -> Indicator como se había mencionado previamente.

El siguiente programa de LabView muestra la solución del mismo ejercicio previo pero ahora se van mostrando visualmente como entran los valores al azar al arreglo. En la solución, el indicador del arreglo es creado al inicializar el arreglo y no a la salida del ciclo, además se crea un Property

31

Page 32: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

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.

Pudiera pensarse que si se hubiesen usado túneles normales en vez de shift register´s también seria correcta la solución, 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 erróneo) para el mismo ejemplo utilizando túneles normales.

32

Page 33: Material de LabView V4 Terminado

Material Importante referente a la filosofía de LabView

Otra solución factible para el problema del ejemplo podría realizarse utilizando Property Node´s en vez de shift registers, esta solución es mostrada en la figura de abajo. Aquí se utilizan dos properties nodes, uno de lectura y otro de escritura, nótese que en vez de alimentar el arreglo a través 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.

33