Beruflich Dokumente
Kultur Dokumente
JULIO-2017
Indice general
1. Explorando LabVIEW 6
1.1. Que es LabVIEW? . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.1. Grafico y Compilado . . . . . . . . . . . . . . . . . . . . . . 7
1.1.2. Flujo de Datos y Programacion Orientada a Eventos . . . . . 8
1.1.3. Crear Proyecto y VIs . . . . . . . . . . . . . . . . . . . . . . 9
1.2. Explorador de Proyectos . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.1. Panel de Icono y Conectores . . . . . . . . . . . . . . . . . . 11
1.2.2. Tipos de Cables Segun Tipos de Datos . . . . . . . . . . . . . 13
1.2.3. Paleta de Controles e Indicadores . . . . . . . . . . . . . . . 13
1.2.4. Paleta de Funciones . . . . . . . . . . . . . . . . . . . . . . . 14
1.3. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3. Implementacion de un VI 26
3.1. Panel Frontal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2. Controles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.1. Etiquetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.2. Opciones de Controles . . . . . . . . . . . . . . . . . . . . . 28
3.3. Tipos de Datos de LabVIEW . . . . . . . . . . . . . . . . . . . . . . 28
2
3.3.1. Menus Contextuales . . . . . . . . . . . . . . . . . . . . . . 29
3.3.2. Cuadro de Propiedades . . . . . . . . . . . . . . . . . . . . . 30
3.3.3. Tipos de Datos Numericos . . . . . . . . . . . . . . . . . . . 30
3.4. Documentacion de Codigo . . . . . . . . . . . . . . . . . . . . . . . 38
3.4.1. Ayudas y Descripciones . . . . . . . . . . . . . . . . . . . . 38
3.4.2. Programacion Grafica . . . . . . . . . . . . . . . . . . . . . 38
3.5. Bucles While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5.1. Tuneles a traves de Estructuras . . . . . . . . . . . . . . . . . 39
3.5.2. Usando bucles While para chequeo y manejo de errores . . . 40
3.6. Bucles For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.7. Temporizacion de VIs . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.7.1. Funciones de Espera . . . . . . . . . . . . . . . . . . . . . . 42
3.8. Retroalimentacion de Datos en los Bucles . . . . . . . . . . . . . . . 43
3.9. Graficando Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.10. Estructuras Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.10.1. Tuneles de Entrada y Salida . . . . . . . . . . . . . . . . . . 48
3.10.2. Ejemplo Condicion Booleana . . . . . . . . . . . . . . . . . 48
3.10.3. Ejemplo Condicion String . . . . . . . . . . . . . . . . . . . 49
3.10.4. Ejemplo Condicion Enum . . . . . . . . . . . . . . . . . . . 50
3
5.4.2. Arrays Bidimensionales . . . . . . . . . . . . . . . . . . . . 64
5.5. Autoindexado Condicional . . . . . . . . . . . . . . . . . . . . . . . 65
5.5.1. Graficos Waveform Graph . . . . . . . . . . . . . . . . . . . 66
5.6. Clusters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.6.1. Creacion de Controles e Indicadores de Cluster . . . . . . . . 68
5.6.2. Crear Constantes Cluster . . . . . . . . . . . . . . . . . . . . 68
5.6.3. Orden en clusters . . . . . . . . . . . . . . . . . . . . . . . . 68
5.6.4. Funciones de Cluster . . . . . . . . . . . . . . . . . . . . . . 69
5.7. Definiciones Tipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4
8. Resolviendo Desafos de Flujo de Datos con Variables 84
8.1. Comunicacion entre Bucles Paralelos . . . . . . . . . . . . . . . . . 84
8.1.1. Metodo 1 (Incorrecto) . . . . . . . . . . . . . . . . . . . . . 85
8.1.2. Metodo 2 (Incorrecto) . . . . . . . . . . . . . . . . . . . . . 85
8.1.3. Metodo 3 (Solucion) . . . . . . . . . . . . . . . . . . . . . . 86
8.2. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
8.3. Condiciones de Carrera . . . . . . . . . . . . . . . . . . . . . . . . . 87
5
Captulo 1
Explorando LabVIEW
6
1.1.1. Grafico y Compilado
Tipos de Datos
Gestion de Eventos
Variables y Constantes
7
1.1.2. Flujo de Datos y Programacion Orientada a Eventos
s
A (A + 1)
Result = (1.1)
(B + C)2
8
1.1.3. Crear Proyecto y VIs
9
Figura 1.5: Como Crear un Proyecto
10
Figura 1.6: Como Crear un Proyecto
11
Conectores: Terminales que muestran los controles e indicadores (Inputs/Out-
puts) del VI
12
1.2.2. Tipos de Cables Segun Tipos de Datos
13
Figura 1.10: Paleta de Controles y Paleta de Herramientas
14
1.3. Ejemplos
Ver Ejemplo 1 y 2, Grafico de Senoidal Tablas y Archivo txt
15
Captulo 2
Resolucion de Problemas y
Depuracion de VIs
16
Figura 2.1: VI Roto, conexion incorrecta de tipo de datos
17
tema Using Wires to Link Block Diagram Objects en la Ayuda de LabVIEW
para obtener informacion acerca de configurar entradas y salidas obligatorias
Tecnicas de Depuracion
Para eliminar todas las advertencias del VI, seleccione View))Error List y mar-
que la casilla de verificacion Show Warnings para ver todas las advertencias
del VI
Ejecute paso a paso el VI para ver cada accion suya en el diagrama de bloques
Haga clic en el boton Retain Wire Values en la barra de herramientas del dia-
grama de bloques para conservar los valores del cable que utilizara con sondas
18
Use puntos de interrupcion para pausar la ejecucion
Determine si los datos que pasa una funcion o subVI estan sin definir
Error List
19
Figura 2.3: Show Error
Resaltar Ejecucion
20
Ejecucion Paso a Paso
Herramienta de Sonda
21
Puntos de Interrupcion
Suspender Ejecucion de VI
Gestion de Errores
Aunque confe mucho en el VI que cree, no puede predecir todos los problemas
que puede encontrar un usuario. Sin un mecanismo para comprobar los errores, solo
22
sabe que el VI no funciona correctamente. La comprobacion de errores indica donde
y por que se generan los errores. National Instruments recomienda encarecidamente
usar tecnicas de gestion de errores. Existen dos formas de gestion de errores:
Gestion de Errores Automatica: LabVIEW por defecto controla los errores cuan-
do ejecuta los VIs, suspendiendo la ejecucion y resaltando el VI con errores
23
Cluster de Error
Las funciones y VIs generalmente producen codigos de errores, los cluster de error
sirven para poder interpretar esos codigos. Incluyen los siguientes componentes de
informacion:
24
Figura 2.11: Slub 3D (Funcion Merge Errors - Context Help)
25
Captulo 3
Implementacion de un VI
Documentar su codigo
Graficar Datos
26
Manipulando controles en el panel frontal
3.2. Controles
3.2.1. Etiquetas
27
3.2.2. Opciones de Controles
Se pueden setear los valores por defecto de cada control o reinicializar dichos
valores.
28
3.3.1. Menus Contextuales
29
3.3.2. Cuadro de Propiedades
30
Figura 3.6: Representacion de un Control Numerico
31
Figura 3.7: Punto de coercion donde sucede la transformacion
Precision Simple (SGL): los numeros en coma flotante de precision simple tienen
un formato de precision simple de 32 bits IEEE. Use numeros de precision simple
punto flotante cuando el ahorro de memoria es importante y no sobrecargara el rango
de los numeros.
Doble precision (DBL): los numeros en coma flotante de doble precision tienen
un formato de precision doble de 64 bits IEEE. La doble precision es el formato prede-
terminado para objetos numericos. Use los numeros punto flotante de doble precision
para la mayora de las situaciones.
Precision Extendida (EXT): Cuando guarda numeros de precision extendida al
disco, LabVIEW los almacena en una plataforma independiente con formato de 128-
bit format. En memoria, el tamano y precision varan dependiendo de la plataforma.
Use numeros punto flotante de precision extendida solo cuando sea necesario. El ren-
dimiento de la aritmetica de precision extendida vara entre plataformas.
Punto Fijo: numero racional representado por medio de dgitos binarios. El de-
nominador del racional debe ser potencia de dos. Sirve configurar su largo en bits
para plataformas que no aceptan la aritmetica en punto flotante, como FPGA. Largo
Maximo 64 LabVIEW.
32
Numeros enteros
Recomendacion: Enteros pueden ser positivos o negativos. Usar los tipos de datos
Unsigned es recomendable cuando este seguro de que el numero es siempre positivo.
Byte (I8): los numeros enteros Byte tienen 8 bits de almacenamiento y un intervalo
de -128 a 127.
Word (I16): los numeros enteros Word tienen 16 bits de almacenamiento y un
intervalo de -32.768 a 32.767.
Long (I32): los numeros enteros Long tienen 32 bits de almacenamiento y un
intervalo de -2.147.483.648 a 2.147.483.647. En la mayora de los casos es mejor
utilizar un numero entero de 32 bits.
Quad (I64): los numeros enteros Quad tienen 64 bits de almacenamiento y un
intervalo de -1xe19 a 1xe19.
Byte (U8): los numeros enteros sin signo Byte tienen 8 bits de almacenamiento y
un intervalo de 0 a 255.
Word (U16): los numeros enteros sin signo Word tienen 16 bits de almacenamien-
to y un intervalo de 0 a 65.535.
Long (U32): los numeros enteros sin signo Long tienen 32 bits de almacenamiento
y un intervalo de 0 a 4.294.967.295.
Quad (U64): los numeros enteros sin signo Quad tienen 64 bits de almacenamien-
to y un intervalo de 0 a 2xe19.
Numeros Complejos
33
Complejo simple (CSG): los numeros complejos de coma flotante de precision
simple constan de valores reales e imaginarios y tienen un formato de precision simple
de 32 bits IEEE.
Complejo Doble (CDB): los numeros complejos de coma flotante de doble pre-
cision constan de valores reales e imaginarios y tienen un formato de doble precision
de 64 bits IEEE.
Complejo Ampliado (CXT): los numeros complejos de coma flotante de preci-
sion ampliada constan de valores reales e imaginarios y tienen un formato de precision
ampliada IEEE. En la memoria, el tamano y la precision de numeros de precision am-
pliada varan en funcion de la plataforma. En Windows tienen un formato de precision
ampliadade 128 bits IEEE.
Valores Booleanos
Switch when pressed: cambia el valor del control cada vez que hace clic en el
con la herramienta de operaciones
Switch when released: cambia el valor del control solo despues de soltar el
boton del raton mientras hace clic dentro del lmite grafico del control
Switch until released: cambia el valor del control cuando hace clic en el y
conserva el nuevo valor hasta que suelte el boton del raton. En este momento, el
control vuelve a su valor predeterminado
Latch when pressed: cambia el valor del control cuando hace clic en el y con-
serva el nuevo valor hasta que el VI lo lea una vez. En este momento, el control
34
vuelve a su valor predeterminado, aunque siga pulsando el boton del raton. Este
comportamiento es similar al de un disyuntor y es util para detener un bucle
While o para que el VI realice una accion solo una vez cada vez que ajuste el
control
Latch when released: cambia el valor del control solo despues de soltar el
boton del raton dentro del lmite grafico del control. Cuando el VI lo lee una
vez, el control vuelve a su valor predeterminado. Este comportamiento funciona
del mismo modo que los botones de los cuadros de dialogo y del sistema
Latch until released: cambia el valor del control cuando hace clic en el y con-
serva el valor hasta que el VI lo lea una vez o suelte el boton del raton, en
funcion de loque ocurra en ultimo lugar
35
Cadena de Caracteres
Enums
36
Figura 3.10: Editando campos de constante tipo Enum
37
Dinamicos
38
3.5. Bucles While
Al igual que un bucle Do o un bucle Repeat-Until en lenguajes de programacion
basados en texto, un bucle While ejecuta un subdiagrama hasta que ocurra una condi-
cion o sentencia.
Los tuneles suministran datos hacia dentro y hacia fuera de las estructuras como
bucles While. El tunel aparece como un bloque solido en el borde del bucle While. El
bloque es del color del tipo de datos cableado al tunel.
39
Figura 3.13: Tuneles en Estructura While (Entero y String)
40
3.6. Bucles For
Un bucle For ejecuta un subdiagrama cierto numero de veces. Resolvamos el mis-
mo problema anterior pero esta vez con un Bucle For.
La terminal de contaje (N) es una terminal de entrada cuyo valor indica cuantas
veces debe repetir el subdiagrama.
La terminal de iteracion (i) es una terminal de salida que contiene el numero de
iteraciones completadas. IMPORTANTE!!! La cuenta comienza en cero.
41
Figura 3.16: Bucle For con terminal condicional
Wait (ms): espera hasta que el contador de milisegundos cuente una cantidad
42
igual a la entrada que especifique (OJO: Tiempo de ejecucion del bucle menor
al tiempo de la funcion).
43
Figura 3.18: Mismo ejemplo con enfasis en los Registros de Desplazamiento
44
Figura 3.20: Random number en waveform chart
45
Strip Chart: muestra los datos moviles desplazandose continuamente de iz-
quierda a derecha por el grafico con los datos antiguos a la izquierda y con los
nuevos a la derecha (hoja de registro sismos)
46
Sweep Chart: funciona de modo parecido a un scope chart salvo que muestra
los datos antiguos a la derecha y los nuevos a la izquierda separados por una
lnea vertical (Electrocardiograma)
47
La estructura Case acepta como entrada de seleccion un numero entero, un valor
booleano, una cadena de caracteres o una variable compuesta enum.
IMPORTANTE: cuando se cablea variable string, se puede configurar que no re-
conozca entre mayusculas y minusculas Case Insensitive Match.
Se puede setear un caso por defecto con Make This The Default Case.
Puede crear varios tuneles de entrada y salida para una estructura Case. Las en-
tradas estan disponibles en todos los casos, pero los casos no necesitan utilizar cada
entrada. No obstante, debe definir un tunel de salida para cada caso.
Tambien puede hacer clic con el boton derecho en el tunel de salida y seleccionar
Use Default If Unwired en el menu contextual para utilizar el valor predeterminado
para el tipo de datos del tunel en todos los tuneles sin cablear.
48
Figura 3.27: Suma o Resta Condicion Booleana
49
3.10.4. Ejemplo Condicion Enum
50
Captulo 4
51
Figura 4.1: Crear SubVI desde aplicacion principal - Seleccionar
Figura 4.2: Crear SubVI desde aplicacion principal - Edit - Crear SubVI
52
Figura 4.3: Diagrama de Bloques con SubVI
53
Figura 4.5: Apariencia Inicial de SubVI
54
Puede designar que entradas y salidas son obligatorias, recomendadas y opcionales
para evitar que los usuarios olviden cablear terminales del subVI.
Haga clic con el boton derecho en un terminal del panel de conectores y seleccio-
ne This Connection Is en el menu contextual. Una marca de verificacion indica la
configuracion del terminal. Seleccione Required, Recommended u Optional. Tam-
bien puede seleccionar Tools))Options))Front Panel y activar la casilla de verificacion
Connector pane terminals default to required. Esta opcion configura los terminales
del panel conector en Required en lugar de Recommended.
55
Figura 4.8: Aplicacion principal y SubVI
56
Captulo 5
5.1. Arrays
Un array consta de elementos y dimensiones. Los elementos son los datos que
conforman el array. Una dimension es la longitud, altura o profundidad de un array.
Un array puede tener una o mas dimensiones y un maximo de 231 - 1 elementos por
dimension, si lo permite la memoria.
Se puede crear arreglos de cualquier tipo de datos, numericos, booleanos, de ca-
dena de caracteres, formas de onda y clusters.
IMPORTANTE: Los ndices de arrays parten en cero (0), en todas las dimensio-
nes.
57
Restricciones
No se puede crear arrays de arrays. Se puede crear arrays de cluster, donde cada
cluster posee una cantidad de arrays.
Para crear una constante de array en el diagrama de bloques, seleccione una cons-
tante de array en la paleta de Funciones, coloque la estructura array en el diagrama
58
de bloques y coloque una constante de cadena de caracteres, una constante numerica,
una constante booleana o una constante de cluster en la estructura array.
Para anadir un array multidimensional al panel frontal, haga clic con el boton
derecho en la pantalla del ndice y seleccione Add Dimension en el menu contextual.
Tambien puede cambiar el tamano del ndice hasta que tenga tantas dimensiones como
desee.
59
Figura 5.5: Multidimensiones - Add Dimension
Inicializacion
Puede inicializar un array o dejarlo sin inicializar. Para inicializar un array, debe
definir el numero de elementos de cada dimension y el contenido de cada elemento.
Un array sin inicializar contiene un numero fijo de dimensiones pero ningun elemento.
60
Figura 5.7: Initialize Array
61
Figura 5.10: Index Array
5.3. Polimorfismos
Polimorfismo es la habilidad de VIs y funciones de adaptarse automaticamente
para aceptar diferentes tipos de datos. Las funciones son polimorficas en diferentes
grados, ninguna, algunas o todas sus entradas pueden ser polimorficas.
Las funciones aritmeticas aceptan entrada de datos numericos. Con algunas excep-
ciones detalladas en la descripcion de las funciones, la salida predeterminada tiene la
misma representacion que la entrada o si las entradas tienen diferentes representacio-
nes,la salida predeterminada sera igual a la representacion mas larga de las entradas.
Diferentes combinaciones para la funcion Add:
62
5.3.2. Polimorfismos para Funciones Boleanas
5.4. Autoindexado
Si cablea un array hacia o desde un bucle For o While, puede vincular cada ite-
racion del bucle en un elemento de ese array habilitando el autoindexado. La imagen
del tunel cambia de un cuadrado relleno a la imagen para indicar el autoindexado.
Haga clic con el boton derecho en el tunel y seleccione Enable Indexing o Disable
Indexing desde el menu contextual para cambiar el estado del tunel.
63
Figura 5.13: Autoindexado de Entrada y Salida
Puede usar dos bucles For, anidados uno dentro del otro, para crear un array 2D.
El bucle For externo crea los elementos de la fila, mientras que el interno crea los
elementos de la columna.
64
Figura 5.14: Creando Array Bidimenional
65
Figura 5.16: Indexado Con Estructura Case
Los VIs con un grafico normalmente acumulan los datos en un array y despues los
trazan en el grafico.
El grafico tipo waveform graph acepta varios tipos de datos para mostrar varias
curvas. Acepta un array 2D de valores, donde cada fila de esta es una sola curva. El
grafico interpreta los datos como puntos del mismo e incrementa el ndice x en uno,
empezando por x= 0. Cablee un tipo de datos de array 2D al grafico tipo graph, haga
clic en este con el boton derecho y seleccione Transpose Array en el menu contextual
para tratar cada columna del array como una curva.
66
Figura 5.18: Waveform Graph
5.6. Clusters
Los clusters agrupan elementos de datos de tipos mixtos. Un ejemplo de un cluster
es el cluster de error de LabVIEW que combina un valor booleano, uno numerico
y una cadena de caracteres. Un cluster es similar a un registro o una estructura en
lenguajes de programacion basados en texto.
Unir varios elementos de datos en clusters elimina el abarrotamiento de cables en
el diagrama de bloques y reduce el numero de terminales del panel de conectores que
necesitan los subVIs. El panel de conectores tiene como mucho 28 terminales.
67
5.6.1. Creacion de Controles e Indicadores de Cluster
Desde la paleta de funciones se puede crear una estructura cluster y asignarle cons-
tantes del tipo numerico, string, booleano, cluster.
Tambien se puede copiar un control tipo cluster y transformarlo en constante me-
diante la opcion Create - Constant en el menu contextual.
Se puede reordenar cada elemento de un cluster por medio del menu contextual en
la opcion Reorder Controls In Cluster.
68
Figura 5.20: Reordenar elementos de un Cluster
Bundle
69
Unbundle
70
Figura 5.23: Definicion Tipo de Control Tipo Cluster
Todas las copias de una definicion tipo o de una definicion tipo estricta se vinculan
con el archivo original desde donde las creo.
Puede realizar cambios en todas las copias del control o indicador personalizado
modificando solo el archivo de control o indicador personalizado, lo cual resulta util
si usa el mismo control o indicador personalizado en varios VIs.
La diferencia entre typedef y strict typedef es que para el primero solo se nor-
malizan el tipo de datos de los elementos del typedef. Para la segunda, el tipo de
datos, representacion, rango de controles numericos, nombres de los elementos, etc.
permanecen invariables entre copias del mismo typedef.
71
Captulo 6
72
Figura 6.1: Operacion Tpica Con Recursos
Para poder adquirir datos o importar archivos con datos, primero es necesario crear
el recurso de hardware o software, setear su directorio en el caso de ficheros y setear
el nombre del canal, velocidad, registros etc. cuando hablamos de hardware.
Luego, con el recurso creado es posible leer datos o escribirlos segun lo determine
la aplicacion a realizar.
73
Figura 6.3: Leer o Escribir en Recursos
74
de red abiertos usan los refnums para identificar cada objeto.
Debido a que el refnum es un apuntador temporal a un recurso abierto, es so-
lamente valido por el periodo mientras este abierto. Si cierra el recurso, LabVIEW
desasocia el refnum del recurso y el refnum se vuelve obsoleto. Si vuelve a abrir el
recurso, LabVIEW crea un nuevo refnum que es diferente del primer refnum.
Binario: los ficheros binarios son el formato de fichero subyacente del resto de
formatos de fichero
75
6.3.2. E/S de Ficheros Alto Nivel
76
Write to Measurement File
Los VIs y funciones de E/S de fichero de bajo nivel realizan solo una parte del
proceso de E/S de fichero cada uno. Por ejemplo, existe una funcion para abrir un
fichero ASCII, otra para leerlo y otra para cerrarlo. Use funciones de bajo nivel cuando
la E/S de fichero este realizandose en un bucle.
77
Ejemplo
78
Captulo 7
Puede usar una estructura Sequence para forzar el orden de operaciones de los ob-
jetos del diagrama de bloques. Una estructura Sequence contiene uno o mas subdia-
79
gramas, o marcos, que se ejecutan en orden secuencial. Un marco no puede empezar
la ejecucion hasta que se haya completado la ejecucion de todo el codigo del marco
anterior.
80
7.2. Programacion de Estado
Que sucede si debe cambiar el orden de la secuencia?
81
7.3.2. Infraestructura de la Maquina de Estados
Estructura Case: contiene un caso para cada estado y el codigo para ejecutar
en cada estado
82
IMPORTANTE!!! cuando se implementan maquinas de estados con tipo de datos
Enum, es recomendable construir el control de estados mediante un typedef, por si la
cantidad o nombre de los estados cambia.
7.3.4. Transiciones
83
Captulo 8
84
8.1.1. Metodo 1 (Incorrecto)
El Loop Control es una entrada de datos de ambos bucles, por lo que el terminal
Stop Button se lee solo una vez, antes de que cualquier bucle While empiece a ejecu-
tarse. Si False pasa a los bucles, los bucles While se ejecutan indefinidamente. Hacer
clic en el boton Stop no detendra el VI, porque el clic en el boton no se lee durante la
iteracion de cada bucle.
85
Aunque el Loop 1 termina correctamente, el Loop 2 no se ejecuta hasta que recibe
todas sus entradas de datos. El Loop 1 no pasa los datos fuera del bucle hasta que se
detenga el bucle, por lo que el Loop 2 debe esperar al valor final del Stop Button, dis-
ponible cuando termine el Loop 1. Por lo tanto, los bucles no se ejecutan en paralelo.
Asimismo, el Loop 2 se ejecuta solo para una iteracion porque su terminal condicional
recibe un valor True del interruptor Stop Button del Loop 1.
Buscar la ubicacion donde los datos de control del bucle esten almacenados en la
memoria y leer esa ubicacion de memoria directamente. Una variable local permite
hacer esto al leer del mismo control del panel frontal en mas de una ubicacion en el
diagrama. Luego en esta leccion usted aprendera como crear y usar una variable local
que se comunica entre dos bucles paralelos.
86
8.2. Variables
Variables Locales: Las variables Locales transfieren datos dentro de un solo
VI. Leen datos de controles e indicadores del panel frontal
Variable Globales: Una variable global tambien comparte datos, pero entre
varios VIs. Por ejemplo, suponga que tiene dos VIs ejecutandose simultanea-
mente. Cada VI contiene un bucle While y escribe puntos de datos en un grafico
tipo waveform chart. El primer VI contiene un control booleano para terminar
ambos VIs. Puede usar una variable global para terminar ambos bucles con un
solo control booleano
Variable Compartidas: Debe utilizar un archivo de proyecto para usar una va-
riable compartida. Para crear una variable compartida tipo single-process, haga
clic con el boton derecho en My Computer en la ventana Project Explorer
y seleccione New-Variable. Aparecera el cuadro de dialogo Shared Variable
Properties
87