Está en la página 1de 279

INSTRUMENTACIÓN VIRTUAL

Unidad I
Introducción a la
Instrumentación Virtual
I Introducción a la Instrumentación Virtual

1.1 Conceptos Básicos


1.2 Componentes de un Sistema de
Instrumentación Virtual
1.3 Sensores y Transductores en un Sistema de
Instrumentación Virtual
1.4 Aplicaciones de la Instrumentación Virtual
Conceptos Básicos
Históricamente, los sistemas de instrumentación
tradicional se han basado en el uso de aparatos
o instrumentos de medición individuales, los
cuales incluyen el uso de sensores o
transductores para adquirir variables físicas y
convertirlas a señales eléctricas que el usuario
pueda interpretar para su posterior registro o
procesamiento (Denning, 2001).
Conceptos Básicos
Sin embargo, en dichos sistemas se tienen varios
inconvenientes que incluyen:
• El hecho de que se requieran diferentes aparatos
físicos para medir múltiples variables, con la
desventaja que representa la portabilidad de los
mismos;
• además, dichos aparatos pueden incluir diferentes
interfaces o no incluirlas, lo cual ocasiona que no
puedan ingresarse los datos a la computadora de
manera automática.
Conceptos Básicos
Lo anterior representa las mayores desventajas
en el uso de sistemas de instrumentación
tradicionales, ya que no se tiene interacción con
equipos de cómputo en tiempo real, aunado a la
nula posibilidad de comunicación inalámbrica y
aplicaciones móviles.
Conceptos Básicos
Debido a esto, la instrumentación se ha
caracterizado por un incremento continuo en
cuanto a flexibilidad y escalabilidad de equipos e
instrumentos de medición, así como de las
interfaces que permitan ingresar datos a alta
velocidad en la computadora para su posterior
análisis y procesamiento.
Conceptos Básicos
Todo esto ha llevado al nacimiento de la
instrumentación virtual, el cual es un término
asociado al uso de instrumentos virtuales
(virtual instruments o VIs) dado que se
encuentran dentro de la computadora y
mediante los cuales se pueden desarrollar
aplicaciones computacionales basadas en
interfaces gráficas de usuario (graphical user
interfaces o GUIs) (Goldberg, 2000, pp. 10-13).
Conceptos Básicos
Definiciones de Instrumentación Virtual:
Un sistema de instrumentación virtual es un
software que es utilizado por el usuario para
desarrollar un sistema computarizado de prueba
y medición, para controlar un dispositivo externo
de medición desde una computadora de
escritorio y para desplegar datos de prueba o
medición sobre paneles en la pantalla de la
computadora.
Conceptos Básicos
(Santori) un instrumento cuya función general y
capacidades se determinan en software.

(Goldberg) un instrumento virtual se compone


de algunas subunidades especializadas, algunos
ordenadores de propósito general , algún tipo
de software , y un poco de conocimiento.
Conceptos Básicos
Interfaz gráfica de usuario (Graphical User Interface o
GUI):
Código de programa que utiliza un conjunto de
imágenes y objetos gráficos para representar
información y elementos disponibles que permiten la
interacción del usuario de una manera eficiente con la
aplicación. Su principal función consiste en
proporcionar un entorno visual sencillo que permita la
comunicación con el sistema operativo de una
computadora.
Conceptos Básicos
Dicha interacción entre la computadora y usuario
se realiza utilizando un lenguaje de
programación gráfico y permite la adquisición de
datos, el procesamiento de la información y el
despliegue y registro de la misma.

Adquisición de datos (data acquisition o DAQ):


Proceso mediante el cual se miden parámetros
físicos reales de variables como voltaje,
corriente, temperatura, flujo, nivel, posición, etc.
Conceptos Básicos
Dicha información se ingresa a la computadora
para su posterior análisis y procesamiento con el
fin de obtener una salida de información; la cual
puede ser almacenada, desplegada en pantalla o
enviada a un sitio remoto utilizando algún
método de transmisión inalámbrica (Sachenko,
2002, pp. 97-100).
Conceptos Básicos
Para realizar el proceso de adquisición de datos
se requiere el uso de un sensor o transductor, el
cual proporciona señales eléctricas
proporcionales a la magnitud física de la variable
a medir. Dicho sensor se puede conectar a la
computadora utilizando tarjetas electrónicas
para adquirir señales, o bien, puede provenir de
sitios remotos si la adquisición se realiza
mediante dispositivos de conexión inalámbrica
tales como Bluetooth o WiFi.
Conceptos Básicos
Además, también se pueden tener señales que
provengan de puertos o buses de comunicación
asociados a la computadora como son el puerto
serial, el puerto USB o interfaces PCIX.
Adicionalmente se puede hacer uso de
interfaces industriales como GPIB (General
Purpose Interfaz Bus) o PXI (Compact PCI
Extensions), por citar algunas.
Conceptos Básicos
En general, la adquisición de datos se puede realizar
tanto para ingresar señales a la computadora como
para extraer señales de la misma; aunque el término
“adquisición” implica solamente adquirir o ingresar
datos. El método básico para realizar la manipulación
de los datos incluye el uso de tarjetas de adquisición
(DAQ boards), las cuales son dispositivos que se
encargan de adquirir señales físicas provenientes de
los sensores y de generar señales físicas provenientes
de datos procesados por la computadora.
Conceptos Básicos
Las tarjetas de adquisición son la base de la
instrumentación virtual, ya que mediante su uso
se realiza la comunicación de parámetros físicos
del mundo real con la computadora lo cual
permite interactuar físicamente con señales
tanto virtuales como reales (Santori, 1990, pp.
36-39).
Conceptos Básicos
Las tarjetas de adquisición pueden adquirir o generar
señales de acuerdo a su funcionalidad y características
comerciales. En general, se pueden configurar para su
uso en dos modos diferentes, los cuales a su vez se
pueden subdividir en tres modos:
Conceptos Básicos
En estos seis casos diferentes se pueden manipular señales
tanto analógicas como digitales provenientes de sensores que
midan algún parámetro físico o generar señales físicas
procesadas por la computadora. Ejemplos de parámetros
físicos medidos y/o generados por las tarjetas de adquisición
son:
Conceptos Básicos
El uso de las tarjetas de adquisición involucra el uso de
convertidores análogo-digital (ADCs) y convertidores digital-
análogo (DACs). Además, se tienen procesos de
acondicionamiento de las señales para su manipulación correcta,
los cuales involucran métodos de amplificación, filtrado,
aislamiento y/o linealización para evitar efectos negativos como
el ruido, sobrecargas, aliasing, no linealidad y otros. Lo anterior
indica que el uso correcto de las tarjetas de adquisición conlleva
la aplicación de conocimientos en diferentes áreas de ingeniería,
la cual representa una herramienta poderosa para el diseño y
desarrollo de aplicaciones relacionadas con la instrumentación
virtual.
Conceptos Básicos
Hoy en día se tienen varios lenguajes de programación los
cuales pueden utilizarse para desarrollar aplicaciones de
instrumentación virtual en diferentes áreas de estudio.
Estos lenguajes tienen en común el hecho de que se basan
en conjuntos de instrucciones de texto creando líneas de
código. Como ejemplos de estos lenguajes se tienen: C/C+
+, C#, Java, Phyton, por mencionar los más utilizados.
Dichos lenguajes ofrecen diferentes ventajas y desventajas
entre sí, las cuales permiten el desarrollo de interfaces
virtuales aplicables a la instrumentación.
Conceptos Básicos
Sin embargo, la instrumentación virtual se basa
en la interacción del usuario con interfaces
computacionales gráficas para el control y
monitoreo de sistemas físicos, por lo cual los
lenguajes gráficos ofrecen mayores ventajas
respecto a los lenguajes tradicionales basados
en texto (Goldberg, 2000).
Conceptos Básicos
El lenguaje gráfico —también llamado lenguaje G— más
utilizado para desarrollar aplicaciones de
instrumentación virtual es el LabVIEW® (Laboratory
Virtual Instrument Engineering Workbench) desarrollado
por la empresa National Instruments en 1986, el cual
elimina múltiples detalles sintácticos asociados con los
lenguajes basados en texto, ya que se trata de un modelo
de programación gráfica con el cual se tienen diferentes
ventajas en relación a los lenguajes mencionados
anteriormente. Por esta razón, se ha constituido, en la
actualidad, como el estándar para aplicaciones de
instrumentación virtual (National Instruments, 2011).
Conceptos Básicos
Conceptos Básicos
Conceptos Básicos
Ventajas de la Instrumentación Virtual

• Desempeño
• Naturaleza Independiente de la Plataforma
• Flexibilidad
• Bajo Costo
• Hardware conectado y en red
• Reducción de costos en aplicaciones de medición, tiempo
de especificación, implementación y configuración, y
desarrollo de software.
Componentes de un Sistema de
Instrumentación Virtual
Un instrumento virtual se compone de los
siguientes bloques:
• Módulo sensor
• Interface del sensor
• Interface de los sistemas de información
• Módulo de procesamiento
• Interface de la base de datos
• Interface de usuario
Componentes de un Sistema de
Instrumentación Virtual
Componentes de un Sistema de
Instrumentación Virtual
El módulo de sensor realiza el acondicionamiento de señal y la
transforma en una forma digital para su posterior manipulación.
Una vez que los datos están en formato digital en un ordenador, se
pueden visualizar, procesar, mezclados, comparados, almacenados
en una base de datos, o convertida de nuevo al formato analógico
para control del proceso. El módulo de sensor Interfaces de un
instrumento virtual con el mundo exterior, en su mayoría analógico
transformar señales medidas en forma legible por ordenador. Un
módulo sensor consta principalmente de tres partes principales:
- El sensor
- La parte de acondicionamiento de señal
- El convertidor A / D
Componentes de un Sistema de
Instrumentación Virtual
El sensor detecta señales físicas del medio ambiente. Si el
parámetro que se mide no es eléctrico, el sensor debe
incluir un transductor para convertir la información en
una señal eléctrica. El módulo de acondicionamiento de
señal antes de la conversión A/D usualmente hace la
amplificación, excitación del transductor, linealización, el
aislamiento, o el filtrado de las señales detectadas. El
convertidor A / D cambia el voltaje detectado y
acondicionado en un valor digital. El convertidor se define
por su resolución y la frecuencia de muestreo.
Componentes de un Sistema de
Instrumentación Virtual
Interfase de sensor
Hay muchas interfaces necesarias para la comunicación
entre los módulos de sensores y la computadora. Según el
tipo de conexión, interfaces de sensores pueden ser
clasificados como cableadas e inalámbricas.
- Interfaces con cable son generalmente interfaces estándar
paralelas, como GPIB, Small Computer Systems Interface
(SCSI), los buses del sistema (extensión PCI para
instrumentación PXI o VME extensiones de Instrumentación
(VXI), o buses serie (interfaces RS232 o USB).
Componentes de un Sistema de
Instrumentación Virtual
- Interfaces inalámbricas son cada vez más
utilizados por conveniencia. Las interfaces
típicas incluyen 802,11 familia de normas,
Bluetooth o GPRS / GSM interfaz. La
comunicación inalámbrica es especialmente
importante para los sensores implantados en la
conexión del cable es práctico o no es posible.
Componentes de un Sistema de
Instrumentación Virtual
Interface de base de datos
La instrumentación computarizada permite que
los datos medidos sean almacenados para su
procesamiento fuera de línea, o para mantener
registros como parte de la historia. Hay varias
tecnologías de bases de datos actualmente
disponibles que se pueden utilizar para este
propósito.
Componentes de un Sistema de
Instrumentación Virtual
Interface del sistema de Información
Instrumentos virtuales se integran cada vez más con otros sistemas
de información médica, como los sistemas de información del
hospital. Se pueden utilizar para crear cuadros de mando ejecutivos,
apoyando a las decisiones, alertas en tiempo real, y las advertencias
de predicción. Algunas interfaces de herramientas virtuales, como
LabVIEW, proporcionan mecanismos para componentes
personalizados, como los objetos ActiveX, que permite la
comunicación con otros sistemas de información, ocultando los
detalles de la comunicación de código de interfaz virtual. En las
aplicaciones basadas en la Web esta integración se lleva a cabo
normalmente utilizando localizadores de recursos unificadas (URL).
Aplicaciones de la Inst. Virtual
La instrumentación virtual involucra muchas
áreas de conocimiento mediante las cuales se
puede realizar un sinnúmero de aplicaciones.
Para poder desarrollar dichas aplicaciones se
requiere la ejecución de tres etapas básicas:
• Adquisición de señales
• Procesamiento de datos
• Despliegue de resultados
Aplicaciones de la Inst. Virtual
Para la adquisición de señales se requiere utilizar
algún método de captura de parámetros físicos en la
computadora descritos anteriormente (Santori, 1990).
Posteriormente, ya que se tienen los datos en la
computadora, se requiere procesar dicha información
mediante el uso de algoritmos o técnicas de análisis y
procesamiento de señales de acuerdo al área de
aplicación requerida. Dentro de los algoritmos
utilizados para procesamiento de señales en un
sistema de instrumentación virtual se tienen:
Aplicaciones de la Inst. Virtual
• Análisis espectral (transformadas, JTFA,
estimaciones, espectrogramas Fourier, Gabor,
Choi-Williams, Wigner-Ville).
• Filtrado digital (FIR, IIR, adaptivos-LMS).
• Filtrado punto a punto (Butterworth, Chebyshev,
Chebyshev inverso, elíptico, Savitzky-Golay).
• Métodos de ventanas (Hanning, Hamming,
Blackman, Parzen, flat top, KaiserBessel, Bohman,
Welch, Barlett-Hanning, Blakman-Harris, Parzen).
Aplicaciones de la Inst. Virtual
• Ecuaciones diferenciales (Radau IIA, cash carp,
Euler, Runge Kutta, Rosenbrock, Adams-Moulton).
• Interpolación y extrapolación (polinomiales,
racionales, grids, Lagrange, Hermite).
• Operaciones con señales (convolución,
autocorrelación, correlación cruzada,
deconvolución, decimación, normalización).
• Análisis de distorsión y ruido (SINAD, THD,
potencia de espectro, densidad espectral).
Aplicaciones de la Inst. Virtual
• Generación de señales y ruido (Gaussiano, Bernoulli,
gamma, binomial, Poisson).
• Probabilidad y estadística (histogramas, momentos, media,
mediana, moda, varianza, desviación estándar, correlación,
percentiles, coeficientes Spearman, Kendall’s Tau).
• Transformadas (Hilbert, Fourier FFT, DFT, DCT, DST, Laplace,
Wavelet, WalshHadamard, Chirp, Hartley, Dauvechies).
• Integración y diferenciación (trapezoidal, regla de Simpson,
regla de Bode).
Aplicaciones de la Inst. Virtual
• Funciones polinomiales y solución de raíces
(máximo común divisor, mínimo común
múltiplo, euclideano, raíces reales, complejas,
pares conjugados).
• Mediciones de amplitud y niveles (DC, RMS,
pico, promedio, trigger, duty cycle).
• Optimización (lineal, cuadrática, Brent,
Golden, aproximación de Chebyshev).
Aplicaciones de la Inst. Virtual
Dentro de las áreas de aplicación en las cuales se utiliza
la instrumentación virtual se encuentran las
relacionadas con la ingeniería:
• Eléctrica • Ciencias computacionales
• Electrónica • Telecomunicaciones
• Mecatrónica • Robótica
• Mecánica • Diseño y manufactura
• Biomédica • Automotriz
• Biomecánica • Aviónica y aeroespacial
• Biotecnología
Aplicaciones de la Inst. Virtual
Las tendencias actuales de la instrumentación
incluyen aplicaciones en áreas de:
• Algoritmos genéticos • Inteligencia artificial y redes
• Eficiencia energética y neuronales
sistemas sustentables • Interfaces hápticas inteligentes
• Programación dinámica • Controladores programables
• Programación lineal y no • Energía renovable y sistemas
lineal • ambientales
• Control y automatización de • Sistemas de energía nuclear
procesos • Redes de sensores
• Sistemas embebidos y lógica
• Manufactura inteligente
reconfigurable
• Tecnologías inalámbricas
• Reconocimiento de patrones
• Aplicaciones médicas
• Robótica y visión artificial
Partes del Ambiente
Partes del Ambiente
Control Panel

Cuando abre un VI nuevo


o existente, aparece la
ventana del panel frontal
del VI. La ventana del
panel frontal es la interfaz
de usuario para el VI.
Partes del Ambiente
Block Diagram Los objetos del diagrama
de bloques incluyen
terminales, subVIs,
funciones, constantes,
estructuras y cables, los
cuales transfieren datos
junto con otros objetos
del diagrama de bloques.
Después de que crea la
ventana del panel
frontal, añade código
usando representaciones
gráficas de funciones
para controlar los
objetos del panel frontal.
Controls Palette
Cuando el Front Panel es
desplegado, la Controls Palette se
abre también. Esta provee acceso a
los objetos (controles, indicadores,
perillas y gráficas) que se utilizan
en el Front Panel. Puede tener
acceso a la paleta de Controles de
la ventana del panel frontal al
seleccionar View»Controls Palette o
al dar clic con botón derecho en
cualquier espacio en blanco en la
ventana del panel frontal.
Functions Palette
Cuando se edita el Diagrama de Bloques
de un VI, la Functions Palette es
mostrada.
Función: Elemento del programa que no
tiene un panel frontal o diagrama de
bloques, sino un Connector Pane
indicando como debe ser conectada.
VI: Es un programa de LabVIEW.
Express VI: Es un VI más sofisticado que
puede ser configurado mediante una
ventana de diálogo.
Tools Palette
• Automatic Tool Selection Button (Top)
• Operate Value Tool (finger)
• Position/Size/Select Tool (arrow)
• Edit Text Tool (A with cursor)
• Connect Wire Tool (Spool)
• Object Shortcut Menu Tool (Menu icon)
• Scroll Window Tool (Cupped Hand)
• Set / Clear Breakpoint Tool (Stop Sign)
• Probe Data Tool (Probe symbol)
• Get Color Tool (Droper)
• Set Color Tool (Paintbrush)
Ejercicio
•Realizar
  un VI que
• Convierta una temperatura en Centígrados a
Fahrenheit
• Convierta una temperatura en Fahrenheit a
Centígrados

• Limite los grados Centígrados de entrada a un


intervalo entre -5°C y 50°C.
Ejercicio
Realice un VI al cual:
• Se le ingrese un valor numérico entero en
segundos.
• Devuelva la cantidad de horas, minutos y segundos
correspondientes.
• Realice un aviso booleano y textual si el tiempo
excede una hora.
• Presente una interface de usuario ordenada y
amigable, además de un diagrama de bloques con
comentarios.
Operaciones Matemáticas Básicas
• Suma, Resta, Multiplicación, División
• Incremento, Decremento
• Valor Absoluto
• Cuadrado, Raíz Cuadrada
• Recíproco
• Funciones Trigonométricas e Hiperbólicas
• Funciones Logarítmicas y Exponenciales
Ejercicio
• Realizar un VI que calcule una hipotenusa a
partir de los valores de sus catetos. Proteja
contra el ingreso de datos negativos. Dibuje el
triángulo.
• Realizar un VI que calcule las raíces de una
ecuación cuadrática, proporcionando los datos
A, B y C. Debe notificar si el discriminante es
negativo.
Nodos de Diagrama de Bloques
Los nodos son objetos en el diagrama de bloques
que tienen entradas y/o salidas y realizan
operaciones cuando el VI se ejecuta. Son análogos
a instrucciones, operaciones, funciones y sub
rutinas en lenguajes de programación basados en
texto. Los nodos pueden ser funciones, subVIs,
Express VIs o estructuras. Las estructuras son
elementos de control de procesos, como
Estructuras de Casos, Ciclos For o Ciclos While.
Funciones
Las funciones son los elementos de operación
fundamentales de LabVIEW. Las funciones no
tienen ventanas del panel frontal o ventanas del
diagrama de bloques pero no tienen paneles
conectores. Al hacer doble clic en la función
solamente selecciona la función. Una función
tiene un fondo amarillo pálido en su ícono.
Funciones
SubVIs
Después de desarrollar un VI, usted puede usarlo en otro VI.
Un VI llamado desde el diagrama de bloques de otro VI es
llamado un subVI. Usted puede reutilizar un subVI en otros
VIs. Para crear un subVI, necesita desarrollar un panel
conector y crear un ícono.
Un nodo de subVI corresponde a una llamada de subrutina
en lenguajes de programación basados en texto. El nodo no
es subVI, solamente una instrucción de llamada de subrutina
en un programa que no es la propia subrutina. Un diagrama
de bloques que contiene varios nodos de subVI idénticos
llama al mismo subVI varias veces.
SubVIs
Los indicadores y controles de subVI reciben
datos y regresan datos al diagrama de bloques
del VI que hace el llamado. Cuando hace doble
clic en un subVI en el diagrama de bloques,
aparece la ventana del panel frontal. El panel
frontal incluye controles e indicadores. El
diagrama de bloques incluye cables, íconos,
funciones, subVIs probables u otros objetos de
LabVIEW.
SubVIs
Cada VI muestra un ícono en la esquina superior
derecha de la ventana del panel frontal y la
ventana del diagrama de bloques. Un ícono es
una representación gráfica de un VI. El ícono
puede contener texto e imágenes. Si usa un VI
como un subVI, el ícono identifica al subVI en el
diagrama de bloques del VI. El ícono
predeterminado contiene un número que indica
cuántos nuevos VI abrió después de iniciar
LabVIEW.
SubVIs
Para usar un VI como un subVI, necesita construir un
panel conector. El panel conector es un conjunto de
terminales en el ícono que corresponde a los controles
e indicadores de ese VI, similares a la lista de
parámetros de una función llamada en lenguajes de
programación basados en texto. Obtenga acceso al
panel conector al dar clic con botón derecho en el ícono
en la parte superior derecha de la ventana del panel
frontal. Usted puede tener acceso al panel conector
desde el ícono en la ventana del diagrama de bloques.
Un ícono de subVI tiene un fondo blanco en su ícono.
SubVIs
1. Seleccione la parte del diagrama de bloques que desea convertir
en SubVI.
2. Seleccione Edit>Crear SubVI.
3. Haga Doble click en el icono y edítelo.
4. Haga click derecho en el connector pane y desconecte todas las
terminales. Nuevamente haga click derecho y seleccione el
patrón de conexión que sea mas adecuado. Asocie cada terminal
con su control/indicador haciendo click en la terminal y después
en el control/indicador.
5. En File>VI Properties redacte la descripción del Sub VI.
6. En el panel frontal original, haga click derecho en el icono del
subVI y seleccione Relink to SubVI.
7. Guarde los diferentes archivos.
Express VIs
Los Express VIs son nodos que requieren
cableado mínimo ya que usted los configura con
ventanas de diálogo. Use Express VIs para tareas
de medidas comunes. Consulte el tema de
Express VIs de la Ayuda de LabVIEW para más
información. Aparecen en el diagrama de
bloques como nodos expandibles con iconos
rodeados por un campo azul.
Acción Mecánica
• Switch when pressed: Cambia de estado cuando es
presionado. Permanece ahí hasta ser presionado de nuevo.
• Switch when release: Cambia de estado cuando es liberado.
Permanece ahí hasta ser presionado de nuevo.
• Switch until release: Cambia de estado cuando es
presionado. Regresa cuando el botón es liberado.
• Latch when pressed: Cambia de estado cuando es
presionado. Regresa cuando el control es leído por LabVIEW.
• Latch when release: Cambia de estado cuando es liberado.
Regresa cuando el control es leído por LabVIEW.
• Latch until release: Cambia de estado cuando es presionado.
Regresa cuando el control es liberado y leído por LabVIEW.
Ejercicio
1. Realice un VI en el cual se encienda una luz
indicadora cuando se active un switch.
2. Modifique los atributos de color de la luz,
como el tamaño, el color en encendido y
apagado, la etiqueta, etc. Haga lo mismo con
el switch.
3. Modifique la acción mecánica del switch.
Búsqueda
• Search
• Quick Drop (ctrl + space)
Ayudas
• Ayuda de Contexto (Ctrl-H)
• LabVIEW Help
• Find Examples
Componentes de un VI
Front Panel Block Diagram Icon/Connector Pane
Es la interface de usuario.Contiene el código fuente Representa al VI y hace
gráfico. posible usarlo como subVI.
Tiene controles (entradas) Contiene terminales para Mapea las entradas y
e indicadores (salidas) los controles e indicadores salidas al VI.
del front panel.
Panel Frontal
Controles Indicadores
Entrada interactiva Salida interactiva
Perillas, botones, diales y otras entradas. Gráficas, LEDs y otros displays.
simulan dispositivos de entrada de simulan salidas de instrumentos y
instrumentos y suministra datos al suministra datos que el diagrama de
diagrama de bloques. bloques adquiere o genera.
Diagrama de Blocks
Componente Descripción
Terminales Son los puertos de entrada y salida que intercambian información
entre el front panel y el block diagram.
Nodos Son objetos en el diagrama de bloques que tienen entradas y/o salidas
y realizan operaciones cuando se ejecuta un VI. Los nodos son
análogos a declaraciones, operadores, funciones y subrutinas en
lenguajes de programación basados en texto. Los nodos pueden ser
funciones, subVIs o estructuras.
Nodos de Son elementos de operación fundamentales de LabVIEW y no tienen
Funciones front panels o diagramas de bloques. Los íconos de funciones tienen
(Funciones) un fondo amarillo pálido.
SubVIs Son Vis que corren en el diagrama de bloques de otro VI. Ellos tienen
front panel o diagrama de bloques. Cualquier VI tiene el potencial de
ser utilizado como subVI. Con dobleclick a un subVI, se abren el front
panel y el diagrama de bloques.
Ícono - Connector Pane
Componente Descripción
Ícono Son la representación gráfica de los Vis. Usa el ícono que aparece en
la esquina superior derecha del panel frontal.
Connector Es el mapa de entradas y salidas de un VI. Las terminales del
Pane Connector Pane corresponden a los controles e indicadores en el
panel frontal de un VI. No se puede acceder al Connector Pane desde
el diagrama de bloques.
Unidad II
Programación en Lenguaje
Gráfico
Unidad II
1. Programación gráfica para la creación de
instrumentos virtuales.
2. Programación en base a diagrama de bloques y
flujo de datos.
3. Creación, edición y depuración de instrumentos
virtuales (VIs) y sub-instrumentos virtuales
(subVIs).
4. Nodo de Fórmula
5. Enlace con otros entornos de programación
Programación Gráfica para la Creación de
Instrumentos Virtuales
• Partes de un VI
• Tipos de datos
Tipos de Datos
Numéricos (Azul-Naranja):
• Números de tipo entero (I, Integer) 8, 16 y 32 bits
• Números de tipo sin signo (U, Unsigned) 8, 16 y 32 bits
• Números de punto flotante 32 (SGL), 64 (DBL) y 80 (EXT)
• Números de tipo complejo simple (CSG), doble (CDB) y
extendido (CXT)
Booleanos (Verde): 16 bits, el más significativo tiene el valor
booleano.
Alfanuméricos (Rosa): LabVIEW almacena los strings como si un
array uni-dimensional de bytes enteros (caracteres de 8 bits).
Tipo de Dato Cadena de Caracteres
Una cadena es una secuencia de caracteres ASCII visibles
o no visibles. Las cadenas de caracteres ofrecen un
formato independiente a la plataforma para información
y datos. Algunas de las aplicaciones más comunes de
cadena de caracteres incluyen las siguientes:
-Crear mensajes de texto simples.
-Controlar instrumentos al enviar comandos de texto al
instrumento y regresar valores de datos en la forma de
ASCII o cadena de caracteres binarias, las cuales después
puede convertir en valores numéricos.
Tipo de Dato Cadena de Caracteres
-Almacenar datos numéricos a disco. Para almacenar datos
numéricos en un archivo ASCII, primero debe convertir
datos numéricos en cadena de caracteres antes de escribir a
un archivo de disco.
-Instruir o advertir al usuario con ventanas de diálogo.
En el panel frontal, las cadenas de caracteres aparecen
como tabla, cuadros de texto y etiquetas. LabVIEW incluye
VIs integrados y funciones que puede usar para manipular
secuencias, incluyendo formateo de cadena de caracteres,
análisis de cadena de caracteres y otras ediciones. LabVIEW
representa datos de cadena de caracteres en color rosa.
Tipo de Dato Numérico
LabVIEW representa datos numéricos como números
de punto flotante, números de punto fijo, números
enteros, números enteros sin signo y números
complejos. Precisión doble o simple, así como datos
numéricos complejos son representados con el color
naranja en LabVIEW. Todos los datos numéricos
enteros son representados con el color azul.
Nota: La diferencia entre los tipos de datos numéricos
es el número de bits que usan para almacenar datos y
los valores de datos que representan.
Tipo de Dato Booleano
LabVIEW almacena datos Booleanos como valores de 8 bits.
Un Booleano puede ser usado en LabVIEW para representar
un 0 o 1 o un TRUE o FALSE. Si el valor de 18 bits es cero, el
valor Booleano es FALSE. Cualquier valor no igual a cero
representa TRUE. Las aplicaciones comunes para datos
Booleanos incluyen representar datos digitales y servir como
un control de panel frontal que actúa como un conmutador
que tiene una acción mecánica generalmente usada para
controlar una estructura de ejecución como una estructura
de Caso. Un control Booleano generalmente es usado como
la declaración condicional para terminar un Ciclo While. En
LabVIEW el color verde representa datos Booleanos.
Tipo de Dato Dinámico
La mayoría de los Express VIs aceptan y/o regresan tipos de datos
dinámicos, los cuales aparecen como una terminal de color azul obscuro.
Al usar los Convert to Dynamic Data y Convert from Dynamic Data VIs,
usted puede convertir datos Booleanos o numéricos de punto flotante
de los siguientes tipos de datos:
-Arreglo 1D de forma de onda
-Arreglo 1D de escalares
-Arreglo 1D de escalares – valor más reciente
-Arreglo 1D de escalares – un solo canal
-Arreglo 2D de escalares – columnas son canales
-Arreglo 2D de escalares – filas son canales
-Un solo escalar
-Una sola forma de onda
Tipo de Dato Dinámico
Cablear el tipo de datos dinámicos a un indicador que puede
presentar mejor los datos. Los indicadores incluyen una
gráfica, tabla o numérico o indicador Booleano. Sin
embargo, ya que los datos dinámicos experimentan una
conversión automática para igualar al indicador al cual están
cableados, los Express VIs pueden bajar la velocidad de
ejecución del diagrama de bloques.
El tipo de datos dinámico es para uso con Express VIs. La
mayoría de los VIs y funciones que se venden con LabVIEW
no aceptan este tipo de datos. Para usar una función o VI
integrada para analizar o procesar los datos que incluye el
tipo de datos dinámico, debe convertir el tipo de datos
dinámico.
Estructuras de Datos
• Arreglos (Arrays) es un grupo de elementos de datos
del mismo tipo. Se entiende como elemento a los
datos que conforman un arreglo y dimensión como
la longitud, altura o profundidad del mismo. El
indexado permite navegar a través de un arreglo y
además recuperar elementos, filas, columnas, y
páginas de un arreglo en el diagrama de
bloques. Existen ciertas restricciones al momento de
crear arreglos: no se puede crear Arreglos de
Arreglos y no se puede crear Arreglos de gráficos.
Arrays
Un arreglo consiste de elementos y dimensiones. Los elementos son los
datos que componen el arreglo. Una dimensión es la longitud, altura o
profundidad de un arreglo. Un arreglo puede tener una o más
dimensiones y tantos como (2^31) – 1 elemento por dimensión, si la
memoria lo permite.
Puede construir arreglos de tipos de datos numéricos, Booleano, paths,
cadena de caracteres, forma de onda y cluster. Considere usar arreglos
cuando trabaje con una colección de datos similares y cuando realice
cálculos repetitivos. Los arreglos son ideales para almacenar datos que
colecta desde formas de onda o datos generados en ciclos, donde cada
iteración de un ciclo produce un elemento del arreglo.

Nota: Los índices de arreglo en LabVIEW están basados en cero. El índice


del primer elemento en el arreglo, sin importar su dimensión, es cero.
Arrays
Crear Controles e Indicadores tipo Arreglo
Cree un control o indicador tipo arreglo en el panel frontal al añadir una estructura de
arreglo al panel frontal, como se muestra en la Figura 2 y arrastrar un objeto de datos o
elemento, como un control numérico o de cadena de caracteres, a la estructura del
arreglo.

Si intenta arrastrar un control inválido o indicador en la estructura del arreglo, no podrá


colocar el control o indicador en la estructura del arreglo.
Debe insertar un objeto en la estructura del arreglo antes de usar el arreglo en el
diagrama de bloques. De lo contrario, la terminal del arreglo aparece en negro con un
paréntesis vacío y no tiene tipo de datos asociado.
Arrays
Arreglo en 2D
Un arreglo en 2D almacena elementos en una cuadrícula.
Requiere un índice de columna y un índice de fila para ubicar
un elemento, ambos basados en cero.

Para añadir un arreglo multidimensional al panel frontal,


haga clic con botón derecho en la imagen del índice y
seleccione Add Dimension desde el menú de acceso directo.
También puede cambiar el tamaño de la imagen índice del
arreglo hasta que obtenga la cantidad de dimensiones que
desea.
Estructuras de Datos
• Los clusters  agrupan diferentes tipos de elementos o
datos, un cluster es similar a un registro o una
estructura en los lenguajes de programación basados
en texto. La agrupación de los datos en los clusters
reducen el número de conectores o terminales que
un subVI necesita.  Un cluster puede ser un control o
un indicador, además no puede contener una mezcla
de controles e indicadores. La mayoría de los
cluster se caracteriza por su color rosado, Los cluster
de números, se caracterizan por un  color café.
Clusters
• Crear Clusters en el Control Panel
• Crear Clusters en el Block Diagram
• Funciones de Cluster
Clusters
Utilice la función Bundle para ensamblar un cluster a
partir de elementos individuales. Para conectar
elementos a la función Bundle, utilice el ratón para
cambiar el tamaño de la función o haga clic con el
botón derecho en la función y seleccione Agregar
entrada en el menú contextual.
Clusters
Utilice la función Bundle By Name o Bundle para
modificar un clúster existente. Puede cambiar el
tamaño de la función Bundle By Name de la
misma manera que la función Bundle.
Clusters
La función Bundle By Name es muy útil cuando se modifican los
clústeres existentes, ya que le permite saber exactamente qué
elemento del clúster está modificando. Por ejemplo, considere
un clúster que contiene dos elementos de cadena etiquetados
como "String 1" y "String 2." Si utiliza la función Bundle para
modificar el clúster, los terminales de función aparecen en forma
de abc rosados. No sabe qué terminal modifica "String 1" y qué
terminal modifica "String 2."
Clusters
Sin embargo, si utiliza la función Bundle By Name para
modificar el clúster, los terminales de función muestran
la etiqueta de elemento para saber qué terminal
modifica "String 1" y qué terminal modifica "String 2."
Clusters
Utilice la función Unbundle para desmontar un clúster en sus
elementos individuales. Utilice la función Unbundle by Name
para devolver elementos de clúster específicos que especifique
por nombre. También puede cambiar el tamaño de estas
funciones para varios elementos de la misma manera que las
funciones Bundle y Bundle By Name.
Ring y Enum
Los controles text ring y enums son similares en
que ambos contienen listas de cadenas
emparejadas con valores numéricos a través de
los cuales se puede realizar un ciclo. La principal
diferencia entre los dos es que enums requieren
que los valores numéricos sean valores enteros
secuenciales, sin signo, mientras que los text
ring permiten mucho más libertad al asignar un
valor numérico.
Cuando la opción de valores secuenciales está desmarcada en un Text Ring, el usuario
puede establecer el campo de valor para cada uno de los elementos. Las opciones
para los valores numéricos se controlan mediante la Representación seleccionada en
la pestaña Tipo de datos. Como se ve figura, se requiere que los valores del enum
sean valores enteros secuenciales.
Tipos de Datos
• http://www.ni.com/video/1876/en/
Programación en base a diagrama de bloques
y flujo de datos
• Flujo de datos
• Estructuras
• Variables locales y globales
Flujo de Datos
LabVIEW sigue un modelo de flujo de datos para
ejecutar VIs. Un nodo de diagrama de bloques
se ejecuta cuando recibe todas las entradas
requeridas. Cuando el nodo se ejecuta, produce
datos de salida y pasa los datos al siguiente
nodo en la trayectoria del flujo de datos. El
movimiento de datos a través de los nodos
determina el orden de ejecución de los VIs y las
funciones en el diagrama de bloques.
Flujo de Datos
Visual Basic, C++, Java y la mayoría de otros
lenguajes de programación basados en texto
siguen un modelo de flujo de control para
ejecución del programa. En el flujo de control, el
orden secuencial de los elementos del programa
determina el orden de ejecución de un
programa.
Estructuras
• Case
• For
• While
• Events
• Sequence
• Formula Node
Case
Una estructura de Casos tiene dos o más subdiagramas o
casos.
Solamente un subdiagrama es visible a la vez y la estructura
ejecuta solamente un caso a la vez. Un valor de entrada
determina cual subdiagrama se ejecuta. La estructura de Caso
es similar a las instrucciones del interruptor o las instrucciones
si...después... en lenguajes de programación basados en texto.
La etiqueta del selector de caso en la parte superior de la
estructura de Caso contiene el nombre del valor del selector
que corresponde al caso en el centro y a las flechas de
incremento y reducción a cada lado.
Cablee un valor de entrada o selector a la terminal del selector para determinar qué
caso se ejecuta.

Debe cablear un entero, valor Booleano, secuencia o valor de tipo enumerado a la


terminal del selector. Puede colocar la terminal del selector en cualquier parte del
borde izquierdo de la estructura de Casos. Si el tipo de datos de la terminal del
selector es Booleano, la estructura tiene un caso True o un caso False. Si la terminal
del selector es un entero, secuencia o valor de tipo enumerado, la estructura tiene
cualquier número de casos.

Nota: Los valores de cadena de caracteres que cablea a la terminal del selector son
sensibles a las mayúsculas/minúsculas de forma predeterminada. Para mostrar
resultados no sensibles a las mayúsculas/minúsculas, cablee un valor de caracteres
a la terminal del selector, haga clic con botón derecho en el borde de la estructura
de Casos y seleccione Case Insensitive Match del menú.
Si no especifica un caso de forma predeterminada para la estructura de Casos
para manejar los valores fuera del rango, debe enlistar de forma explícita cada
valor de entrada. Por ejemplo, si el selector es un entero y usted especifica los
casos para 1, 2 y 3, debe especificar un caso de forma predeterminada a
ejecutar si el valor de entrada es 4 o cualquier otro valor entero no
especificado.

Nota: Usted no puede especificar un caso de forma predeterminada si cablea


un control Booleano al selector. Si hace clic con botón derecho en la etiqueta
del selector de casos, Make This The Default Case no aparece en el menú.
Haga el control Booleano TRUE o FALSE para determinar cuál caso se ejecuta.

haga clic con botón derecho en el borde de la estructura para añadir, duplicar,
eliminar o reorganizar casos y para seleccionar un caso predeterminado.
Si usted proporciona un valor de
selector que no es del mismo tipo que
el objeto cableado a la terminal del
selector, el valor aparece en rojo. Esto
indica que el VI no se ejecutará hasta
que elimine o edite el valor. También,
por el posible redondeo de error
inherente a la aritmética de punto
flotante, no puede usar los números de
punto flotante como valores de selector
de casos. Si cablea un valor de punto
flotante al caso, LabVIEW redondea el
valor al entero más cercano. Si escribe
un valor de punto flotante en la
etiqueta del selector de casos, el valor
aparece en rojo para indicar que debe
eliminar o editar el valor antes que la
estructura pueda ejecutarse.
Túneles de Estructura
Los túneles alimentan datos desde y hacia estructuras. El túnel
aparece como un bloque sólido en el borde el Ciclo While. El
bloque es el color del tipo de datos cableado al túnel. Los datos
salen fuera de un ciclo después de que el ciclo termina. Cuando
un túnel pasa datos a un ciclo, el ciclo se ejecuta solamente
después que los datos llegan al túnel.
While
La terminal de iteración es una
terminal de salida que contiene el
número de iteraciones terminadas.
La cantidad de iteraciones para el
Ciclo While siempre comienza en
cero.
Nota: El Ciclo While siempre se
ejecuta por lo menos una vez.
While

Ciclos Infinitos
Los ciclos infinitos son un error común de programación
que involucra un ciclo que nunca se detiene.

Si la terminal condicional es Stop if True, usted coloca la


terminal de un control Booleano afuera de un Ciclo
While. Si el control es FALSE cuando el ciclo comienza,
provoca un ciclo infinito.
While
• Condición de Paro
• Auto indexado
• Shift Register

Ejem:
Serie de Fibonacci
Razón Dorada
For
•Ejercicio
 
Realice un VI que grafique un toroide, con las
matrices

Donde u y v son variables que tienen rango


entre 0 y 2π radianes.
Flat Sequence
Consiste en uno o más subdiagramas, o marcos, que se
ejecutan secuencialmente. Use la estructura de secuencia
plana para asegurarse de que un subdiagrama se ejecute
antes o después de otro subdiagrama.
El flujo de datos para la estructura de secuencia plana difiere
del flujo de datos para otras estructuras. Los marcos en una
estructura de secuencia plana se ejecutan de izquierda a
derecha y cuando todos los valores de datos conectados a un
marco están disponibles. Los datos salen de cada cuadro
cuando el cuadro termina de ejecutarse. Esto significa que la
entrada de un cuadro puede depender de la salida de otro
cuadro.
Estructura de secuencia apilada
Una estructura de secuencia apilada consiste en uno o más subdiagramas, o
marcos, que se ejecutan secuencialmente. Haga clic derecho en el borde de la
estructura para agregar y eliminar marcos o para crear locals de secuencia para
pasar datos entre marcos. Use la estructura de secuencia apilada para asegurarse
de que un subdiagrama se ejecute antes o después de otro subdiagrama.
Para crear una estructura de secuencia apilada, coloque una estructura de
secuencia plana en el diagrama de bloques, haga clic con el botón derecho en la
estructura de secuencia plana y seleccione Reemplazar con secuencia apilada.
Use la estructura de Secuencia apilada si desea conservar espacio en el diagrama
de bloques. Use la estructura de secuencia plana para evitar el uso de locals de
secuencia y para documentar mejor el diagrama de bloques. La estructura de la
secuencia apilada no comienza a ejecutarse hasta que llegan todos los datos
conectados a la estructura. Los datos conectados desde cada cuadro salen solo
cuando todos los fotogramas completan la ejecución.
Events
Los eventos son causados ​por acciones que realiza el usuario. Por
ejemplo, al hacer clic en el mouse se genera un evento de mouse, al
presionar una tecla en el teclado se genera un evento de teclado, y
así sucesivamente. Cuando ocurre un evento del sistema, el sistema
operativo es responsable de identificar y responder al evento.
En un programa impulsado por eventos, el programa primero espera
a que ocurran los eventos, responde a esos eventos y luego vuelve a
esperar el próximo evento. La respuesta del programa depende del
código escrito para ese evento específico. El orden en que se ejecuta
un programa basado en eventos depende de qué eventos se
producen y en el orden en que se producen esos eventos. Mientras
el programa espera el próximo evento, libera los recursos de la CPU
que podrían usarse para realizar otras tareas de procesamiento.
En LabVIEW, puede usar la
estructura Event para manejar
eventos en una aplicación. Al igual
que con una estructura de caso,
puede agregar múltiples casos a la
estructura de evento. A
continuación, puede configurar
esos casos para manejar uno o
más eventos.

Cuando ocurren esos eventos, LabVIEW ejecuta el caso


correspondiente. El siguiente diagrama de bloques muestra un
ejemplo de estructura de eventos.
Para configurar los eventos,
haga clic con el botón
derecho en el borde de la
estructura del evento y
seleccione Editar eventos
manejados por este caso en
el menú contextual. Use el
cuadro de diálogo Editar
eventos que aparece para
editar casos únicos o
múltiples.
El uso de la estructura de eventos minimiza el uso de la
CPU porque el VI ya no debe sondear continuamente el
panel frontal para detectar cambios. A diferencia de la
encuesta, la estructura de eventos no pierde eventos
de usuario porque la estructura usa una cola de
eventos para almacenar eventos de usuario y manejar
los eventos de usuario en el orden en que ocurren.
Un evento dado puede ser estático o dinámico y un evento estático
puede ser un evento de notificación o un evento de filtro. Los eventos
estáticos son solo para interacciones con el panel frontal. Los eventos
estáticos y de notificación son los más comunes y solo reaccionan a lo
que ocurrió en el panel frontal. Un ejemplo para un evento de
notificación estático sería un "Cambio de valor" para un botón
Aceptar. Los eventos de filtro estáticos detectan un evento realizado
por el usuario antes de que LabVIEW procese ese evento. El código
dentro de la Estructura del evento puede decidir si ese evento debe
procesarse o no. Un ejemplo de filtro incluso sería un "Panel Cerrar?"
Para que el usuario haga clic en Cerrar en el panel frontal. En la
ventana Editar eventos, los filtros tienen flechas rojas y las
notificaciones tienen flechas verdes.
Hay ocasiones en las que desea incluir eventos
que no ocurren en el panel frontal. Aquí es
cuando necesita registrar un evento dinámico. El
uso de eventos dinámicos permitirá que su
Estructura de Eventos reaccione al código que
ocurre en cualquier lugar de su diagrama de
bloques.
Nodo de Fórmula
Nodo de Propiedad y Nodo de Invocación

• Nodo de Propiedad
– Implícito
– Explícito (Refnum)
• Variables locales
• Variables Globales
• Condición de Carrera
• Type definition
• Adición de imágenes
Variables
Son elementos de un diagrama de bloques que
acceden o almacenan datos en otra localización.
Variable Local Variable Global

Almacena datos en controles e Almacena datos en repositorios


indicadores del panel frontal. especiales a los que se puede tener
acceso desde múltiples Vis.
Úsese para acceder a los objetos del Úsese para acceder y pasar datos entre
panel frontal desde más de una varios VIs.
localización en un mismo VI.
Tiene una relación uno a uno con un Puede contener uno o mas tipos de
control o indicador. datos de variables.
Realizar un proyecto donde cada lazo sea un VI y el botón
de Stop sea compartido por una variable global.
Condición de Carrera (Race Condition)

Ocurre cuando la temporización de eventos o la


programación de tareas puede afectar
involuntariamente a un valor de salida o de
datos.
Las condiciones de carrera constituyen un
problema común en los programas que ejecutan
varias tareas en paralelo y comparten datos
entre las tareas.
Creación, edición y depuración de VIs y
subVIs
• Depuración de programas (Debug)
– Highlight execution
– Probe Data
– Retain Wire Values
– Breakponts
– Single Step
• Modularidad
• Manejo de error
Patrón de Máquina de Estados
Use este patrón de diseño para Vis que son
fácilmente divididos en varias tareas más
simples, tales como VIs que actúan como
interface de usuario.
El patrón de máquina de estados tiene fases de
arranque y paro. La aplicación principal corre
código diferente cada vez que el lazo se ejecuta,
dependiendo de alguna condición.
Estructura de la Máquina de Estados

Código
Código de
funcional
transición
del estado
Máquina de Estados
Unidad III
Adquisición de Datos
• Introducción a los sistemas de adquisición de datos.
• Conceptos relacionados a la adquisición de datos:
resolución, rango, frecuencia de la señal, razón de Nyquist,
etc.
• Acondicionamiento de señales:
amplificación, aislamiento, filtrado, linealización, etc.
• Tarjetas de adquisición de datos.
• Adquisición de datos usando hardware:
análisis y presentación, conversión, almacenamiento,
comunicación, y transmisión de datos
Un canal físico es un terminal o pin en el que puede medir o
generar una señal analógica o digital.
Un canal virtual asigna un nombre a un canal físico y su
configuración, como conexiones de terminales de entrada, el
tipo de medición o generación, y la información de escala. En NI-
DAQmx, los canales virtuales son integrales para cada medida.
Una tarea es uno o más canales virtuales con sincronización,
activación y otras propiedades. Conceptualmente, una tarea
representa una medida o generación para realizar. Puede
configurar y guardar información de configuración en una tarea y
usa la tarea en una aplicación.
DAQ Assistant es una interfaz gráfica para crear, editar y
ejecutar de manera interactiva canales y tareas virtuales de
NI-DAQmx.
Un canal virtual NI-DAQmx consiste en un canal físico en un
dispositivo DAQ y la información de configuración para este
canal físico, como el rango de entrada y la escala
personalizada.
Una tarea NI-DAQmx es una colección de canales virtuales,
información de sincronización y disparo, y otras
propiedades relacionadas con la adquisición o generación.
DAQ Assistant también puede generar código para
configurar y / o realizar la adquisición o generación
especificada.
Crea un canal virtual o conjunto de canales virtuales y los agrega
a una tarea. Las instancias de este VI polimórfico corresponden al
tipo I / O del canal, tal como entrada analógica, salida digital o
salida de contador; La medición o generación a realizar, como
medición de temperatura, generación de voltaje o conteo de
eventos; Y en algunos casos, el sensor a utilizar, tal como un
termopar o RTD para mediciones de temperatura.
Si utiliza este VI dentro de un lazo sin especificar una tarea, NI-
DAQmx crea una nueva tarea en cada iteración del bucle. Utilice
el DAQmx Clear Task VI dentro del lazo después de que haya
terminado con la tarea para evitar la asignación de memoria
innecesaria.
Configura el disparo de la tarea. Las instancias de este VI
polimórfico corresponden al disparo y tipo de disparo a
configurar.

Las propiedades del Disparador DAQmx incluyen todas


las opciones de disparo incluidas en este VI, así como
opciones de disparo adicionales.

Utilice el menú desplegable para seleccionar una


instancia de este VI.
La función NI-DAQmx Trigger configura un disparador para
realizar una acción específica. Las acciones más
comúnmente utilizadas son un disparador de inicio y un
disparador de referencia. Un activador de inicio inicia una
adquisición o generación. Un disparador de referencia
establece la ubicación en un conjunto de muestras
adquiridas donde finaliza el pretrigger de datos y comienza
el posttrigger. Ambos disparos pueden configurarse para
ocurrir en un borde digital, un borde analógico o cuando
una señal analógica ingresa o sale de una ventana.
La función NI-DAQmx Timing configura la temporización para las
operaciones de adquisición de datos programadas por hardware. Esto
incluye especificar si la operación será continua o finita, seleccionar el
número de muestras para adquirir o generar para operaciones finitas y
crear un búfer cuando sea necesario.

Para operaciones que requieren temporización de muestra (entrada


analógica, salida analógica y contador), la instancia Reloj de muestra de
la función NI-DAQmx Timing establece tanto la fuente del reloj de
muestra, que podría ser una fuente interna o externa, como su
velocidad. El reloj de muestra controla la velocidad a la que se adquieren
o generan las muestras. Cada pulso de reloj inicia la adquisición o
generación de una muestra para cada canal virtual incluido en la tarea.
La mayoría de las operaciones de contador no requieren tiempos
de muestreo porque la señal que se mide proporciona el tiempo.
La instancia implícita de la función NI-DAQmx Timing se debe
utilizar para estas aplicaciones. En el siguiente diagrama de
bloques de LabVIEW, la instancia implícita del NI-DAQmx Timing
VI se usa para configurar una adquisición de ancho de pulso
almacenado para que sea finita con un número específico de
muestras.
El modelo de estado utilizado por NI-DAQmx elimina la reconfiguración
innecesaria para obtener un alto nivel de eficiencia y maximizar el rendimiento.
Este modelo de estado consta de cinco estados en los que puede residir una
tarea. La información detallada sobre cada uno de estos estados está disponible
en la Ayuda de NI-DAQmx bajo NI-DAQmx. Conceptos clave »Canales y tareas en
NI-DAQmx» Tareas en NI-DAQmx »Modelo de estado de la tarea.

La función NI-DAQmx Start Task transiciona explícitamente una tarea al estado


en ejecución. En el estado de ejecución, la tarea realiza la adquisición o
generación especificada. Una tarea pasará implícitamente al estado en ejecución
y se iniciará automáticamente si no se utiliza la función Iniciar tarea NI-DAQmx
cuando se ejecuta la función NI-DAQmx Read. Esta transición implícita también
ocurre si la función NI-DAQmx Start Task no se usa y la función NI-DAQmx Write
se ejecuta con su entrada de inicio automático especificada en consecuencia.
Aunque no siempre se requiere, se recomienda
utilizar la función Iniciar tarea de NI-DAQmx para
iniciar explícitamente una tarea que involucre una
adquisición o generación sincronizada por hardware.
Además, si la función NI-DAQmx Read o la función NI-
DAQmx Write se ejecutará varias veces, como en un
bucle, también se debe usar la función NI-DAQmx
Start Task. De lo contrario, el rendimiento de la tarea
se reducirá porque se iniciará y detendrá
repetidamente.
El siguiente diagrama de bloques de LabVIEW demuestra una
situación en la que no es necesario utilizar la función de inicio
NI-DAQmx porque la generación de la salida analógica solo
consiste en una única muestra programada por software.
Por el contrario, el siguiente diagrama de bloques de LabVIEW
demuestra una situación en la que se debe utilizar la función NI-
DAQmx Start porque la función NI-DAQmx Read se ejecuta varias
veces para leer del contador.
La función NI-DAQmx Read lee muestras de la tarea de
adquisición especificada. Las diferentes instancias de la
función permiten el tipo de adquisición (analógica, digital
o contador), la cantidad de canales virtuales, el número de
muestras y el tipo de datos que se seleccionarán. Después
de que la cantidad especificada de muestras haya sido
transferida de la FIFO en la placa DAQ a la PC Buffer en
RAM, la función NI-DAQmx Read mueve muestras desde la
Memoria Intermedia de PC a la Memoria del Entorno de
Desarrollo de Aplicaciones (ADE).
En el siguiente diagrama de bloques de LabVIEW, el NI-
DAQmx Read VI se ha configurado para leer múltiples
muestras de múltiples canales virtuales de entrada
analógica y devolver los datos como formas de onda.
Además, dado que el número de muestras por entrada
de canal se ha cableado a un valor constante de 10,
cada vez que se ejecuta el VI leerá 10 muestras de cada
canal virtual.
Cada instancia de la función NI-DAQmx Write tiene una
entrada de inicio automático para determinar si la función
iniciará implícitamente la tarea si aún no se ha iniciado
explícitamente. Como se discutió previamente en la
sección de tareas de inicio de NI-DAQmx de este
documento, la función de la tarea de inicio de NI-DAQmx
se debe utilizar para iniciar explícitamente una tarea de
generación que utiliza sincronización de hardware.
También se debe usar para maximizar el rendimiento si la
función de escritura NI-DAQmx se ejecutará varias veces.
El siguiente diagrama de bloques de LabVIEW, para una
generación de salida analógica finita, incluye una constante
booleana "Falsa" cableada a la entrada de inicio automático del
VI de escritura NI-DAQmx porque la generación es temporizada
por hardware. El NI-DAQmx Write VI se ha configurado para
escribir múltiples muestras de datos de salida analógica para un
canal en la tarea como una forma de onda analógica.
La función NI-DAQmx Wait Until Done espera a que se complete
la operación de adquisición de datos antes de finalizar. Esta
función se debe utilizar para garantizar que la adquisición o
generación especificada se complete antes de detener la tarea.
Más comúnmente, la función NI-DAQmx Wait Until Done se usa
con operaciones finitas. Una vez que esta función ha terminado
de ejecutarse, la adquisición o generación finita está completa y
la tarea puede detenerse sin perturbar la operación. Además, la
entrada de tiempo de espera permite especificar un tiempo de
espera máximo. Si la adquisición o generación no se completa
dentro de este período de tiempo, la función finaliza y se genera
un error apropiado.
La función Clear task de NI-DAQmx borra la tarea
especificada. Si la tarea se está ejecutando actualmente, la
función primero detiene la tarea y luego libera todos sus
recursos. Una vez que se ha borrado una tarea, no se puede
usar a menos que se vuelva a crear. Por lo tanto, si una tarea
se usará nuevamente, la función NI-DAQmx Stop task se
debe usar para detener la tarea pero no para borrarla.
Para operaciones continuas, la función Borrar tarea NI-
DAQmx se debe usar para detener la adquisición o
generación real.
En el siguiente diagrama de bloques de LabVIEW, se
está generando un tren de pulsos continuo con un
contador. El tren de pulsos continúa emitiéndose hasta
que se salga de While Loop y se ejecute NI-DAQmx
Clear Task VI.
Las propiedades NI-DAQmx proporcionan acceso a todas las
propiedades asociadas a una operación de adquisición de datos.
Estas propiedades pueden establecerse escribiendo en las
Propiedades NI-DAQmx, y los valores actuales de las propiedades
también se pueden leer desde las Propiedades NI-DAQmx.
Se pueden establecer muchas propiedades usando las funciones
NI-DAQmx discutidas anteriormente. Por ejemplo, las
propiedades Sample Clock Source y Sample Clock Active Edge se
pueden configurar mediante la función NI-DAQmx Timing. Sin
embargo, solo se puede acceder a algunas de las propiedades
menos utilizadas a través de las Propiedades NI-DAQmx.
En LabVIEW, un Nodo de Propiedad NI-DAQmx puede
usarse para escribir y / o leer desde propiedades
múltiples. Por ejemplo, el siguiente Nodo de propiedad
de temporización NI-DAQmx de LabVIEW establece el
origen del reloj de muestra. Luego, se lee la fuente del
reloj de muestra. Finalmente, se establece el borde
activo del reloj de muestra.
En el siguiente diagrama de bloques de LabVIEW, se usa
un Nodo de propiedad del canal NI-DAQmx para
habilitar el filtro de paso bajo del hardware y luego
establecer la frecuencia de corte del filtro para su uso
con una medición del strain gage.
Introducción a los Sistemas de Adquisición de
Datos

Típico PC-Based DAQ System


DAQ: Adquisición de Datos. Esta pequeña frase simplemente
se refiere a la recolección de datos en general, por lo general
realizando una conversión A / D. Su significado se amplió para
incluir a veces generación de datos. No confunda DAQ y
DAC).
Un sistema de adquisición de datos y control, construido
alrededor de la potencia y flexibilidad de la PC, puede
consistir en una amplia variedad de diversos bloques de
construcción hardware de diferentes fabricantes de equipos.
Es la tarea del integrador del sistema para reunir estos
componentes individuales en un sistema de trabajo
completa.
La adquisición de datos es el proceso por el cual
los fenómenos físicos del mundo real se
transforman en señales eléctricas que se miden
y convierten en un formato digital para su
procesamiento, análisis y almacenamiento en un
ordenador.
Conceptos Relacionados a la Adquisición de
Datos
resolución, rango, frecuencia de la señal, razón
de Nyquist, etc.
Acondicionamiento de Señales
amplificación, aislamiento, filtrado, linealización,
muestreo, multiplexión, etc.
Amplificación
La amplificación es una de las principales tareas llevadas a cabo por
equipos de acondicionamiento de señal. Se realizan dos funciones
importantes:
• Aumenta la resolución de la medición de la señal.
• Aumenta la relación señal-ruido (SNR).
La amplificación se usa principalmente para aumentar la resolución de
la medición de la señal. Considere una señal de bajo nivel del orden de
una fracción de un mV, alimentado directamente a un convertidor A / D
de 12-bit , con voltaje a escala completa de 10 V. Habrá una
consiguiente pérdida de precisión porque el convertidor A / D tiene una
resolución de solamente 2,44 mV (152 μV para 16 bits de resolución).
La resolución más alta posible se puede lograr mediante la
amplificación de la señal de entrada de modo que la oscilación máxima
del voltaje de entrada sea igual al rango máximo de entrada del ADC.
Otra función importante de la amplificación es aumentar la
SNR. Cuando los transductores están situados lejos de la
tarjeta de adquisición de datos y las mediciones de señales se
transmiten a través de un ambiente con mucho ruido
eléctrico, entonces las señales de voltaje de bajo nivel pueden
ser muy afectados por el ruido. Cuando las señales de bajo
nivel se amplifican en la tarjeta de adquisición de datos
después de haber sido transmitida a través del entorno
ruidoso, entonces cualquier ruido superpuesto sobre la señal
también se amplifica por la misma cantidad que la señal.
Si el ruido es del mismo orden de magnitud que la propia
señal (es decir, el SNR es baja), entonces la medición de la
señal puede perderse en el ruido, dando lugar a mediciones
inexactas y sin sentido.
Amplificar las señales de bajo nivel antes de que se transmitan a
través del entorno ruidoso aumenta el nivel de la señales antes de
que se vean afectadas por el ruido, aumentando así la SNR de la señal
para el mismo nivel de ruido. Consideremos, por ejemplo, un
termopar J, que emite una señal de voltaje muy bajo nivel que varía
alrededor de 50 mV / ⁰C. Si los cables del termopar viajan a través de
un entorno ruidoso por decir 10 m, entonces es posible que la
cantidad de ruido acoplado a los cables de termopar podría ser del
orden de 200 mV. Este error inducido por el ruido corresponde a 4 ⁰ C
en el dispositivo de medición.
Amplificar la señal con una ganancia del amplificador de 500, cerca
del termopar, produce una señal de termopar que varía en
aproximadamente 25 mV / ⁰ C. En este nivel de señal superior, el 200
mV de ruido inducido acoplado al cable 10m daría lugar a un error
mucho más pequeño, agregando sólo una fracción de un grado por
ruido a la temperatura medida.
Aislamiento
Un acondicionador de señal aislada pasa una señal desde su
fuente al dispositivo de medición sin una conexión galvánica
o física. Los métodos más comunes de aislamiento de
circuitos incluyen optoaislamiento, aislamiento magnético
o capacitivo. Optoaislamiento es principalmente usado para
señales digitales. El aislamiento magnético y el capacitivo
son usados para señales analógicas, modulando la señal
para convertirla de voltaje a frecuencia y transmitir la señal
de frecuencia a través de un tranformador o capacitor sin
una conexión física directa antes de ser convertida de
regreso a voltaje.
Tarjetas de adquisición de datos
Adquisición de Datos Usando Hardware

análisis y presentación, conversión,


almacenamiento, comunicación, y transmisión
de datos
Enlace con Otros Entornos de Programación
Lectura / Escritura de Archivos
Operaciones Típicas de I/O de Archivos
1. Abrir archivo
While {
2. Leer / escribir archivo}
3. Cerrar archivo
4. Checar por errores
Funciones de Alto y Bajo Nivel para Lectura/
Escritura de Archivos
Funciones de Alto Nivel para I/O de Funciones de Bajo Nivel para I/O
Archivos de Archivos
Realizan tres de las etapas del
Realizan una etapa del proceso de
proceso de lectura/escritura de
lectura/escritura de archivos.
archivos. (abrir/escribir/cerrar)
Proveen un mejor control del
Simplifican el diagrama de bloques.
acceso a archivos.
Crean una innecesaria sobrecarga
Ahorra recursos de memoria
de recursos cuando son usadas
cuando se usan en lazos.
dentro de lazos.
Son buenas para usarse cuando se
Son buenos para usarse en flujo de
escribe a un archivo en una sola
datos a disco (streaming).
operación.
Funciones de Alto Nivel para
Lectura/Escritura de Archivos

Formatos de
Función Tipo de Dato
Archivo

Write to Spreadsheet File


Arrays 1D o 2D Texto
Read from Spreadsheet File

Write to Measurement File Signals (dynamic .lvm (texto)


Read from Measurement File data types) .tdms (binario)

Write Waveform to File


Waveform data Texto
Read Waveform from File
Ejercicio

Abrir el archivo con un procesador de texto,


aplicación de hoja de datos o editor de texto.
Funciones de Bajo Nivel para
Lectura/Escritura de Archivos
Las funciones de Bajo Nivel proveen funciones individuales
para cada etapa de las operaciones de lectura/escritura.

1. Abrir, inicializar o crear recurso de archivo: LabVIEW crea


un número de referencia (refnum) como un identificador
único para el recurso.
2. Lee/escribe al archivo.
3. Cierra el recurso del archivo: El refnum se vuelve obsoleto.
4. Checa por errores: Despliega cualquier error desde el
recurso del archivo.
Streaming Data to Disk

Es una técnica para mantener archivos abiertos mientras se realizan múltiples


operaciones de escritura. Utilice funciones de bajo nivel cuando la I/O al archivo
ocurre dentro de un lazo para ahorrar recursos de memoria.
Formatos de Archivo
En el nivel mas bajo, todos los archivos son una
serie de bits binarios. Sin embargo, hay
disponibles muchos formatos para organizar y
representar datos en un archivo. Los tres tipos
mas comunes en LabVIEW son:
• Formato ASCII
• Formato TDMS
• Almacenamiento directo en datos binarios.
Comparación de formatos de archivo
ASCII TDMS Binario directo
Precisión Buena La mejor La mejor
numérica
Compartición de La mejor (cualquier Mejor (programas NI Buena (sólo con
datos programa fácilmente, Excell) información
fácilmente) detallada del
formato)
Eficiencia Buena La mejor La mejor
Uso ideal Compartir datos con Almacenar datos de Almacenar datos
otros programas medición y metadata numéricos en forma
cuando el tamaño relacionada. compacta con la
de archivo y Streaming de alta habilidad de acceso
precisión numérica velocidad sin pérdida aleatorio.
no son importantes de información.
Escribiendo y Leyendo Archivos Binarios
Algunas Observaciones
• El uso de archivos binarios debería solo ser
considerado después de evaluar el uso de archivos
de texto o TDMS.
• Comparado con otros formatos, los archivos binarios
son complejos para trabajar, requiriendo de un
profundo conocimiento del formato del archivo.
• La depuración del código puede agregar tiempo
considerable al ciclo de desarrollo si las cosas salen
mal.
Creando Archivos de Texto con Headers
Nombre de la Constante Ícono
Tab
End of Line

Sin Header
24.45 34.54
23.41 35.32
22.97 35.98
21.56 36.76
Con Headers
Operator David
Name
UUT S/N A1234

Test Name Pressure

Channel Name Temperature Pressure

Units Kelvin PSI

Max. Value 24.45 36.76

24.45 34.54

23.41 35.32

22.97 35.98

21.56 36.76
Creando Archivos de Texto con
Headers – Hard Coding

Bueno para codificar


rápidamente Headers simples.
Difícil de debugear headers
complejos.
Creando Archivos de Texto con Headers –
SubVIs
Creando Archivos de Texto con Headers –
SubVIs
Escribiendo Múltiples Canales
LabVIEW guarda datos multicanales en arreglos multidimensionales
usando un orden de filas.

1. Transponga el array para crear un formato de columna.


2. Convierta el arreglo a una tabla de strings. Para arreglos de dos
dimensiones, la tabla resultante separa los elementos de las columnas
con un delimitador especificado por el usuario y separa las filas con un
caracter de final de línea.
Leyendo Datos de los Canales
Dado un Nombre de Propiedad, Encuentre el
Valor
El código ilustra cómo se puede programáticamente extraer un valor de
una propiedad de un archivo buscando un nombre de propiedad en la
primer columna y leyendo en la segunda columna.

La función Search 1D devuelve un valor -1 cuando no encuentra


una coincidencia, lo cual debería ser verificado en el programa
para generar un aviso de error al usuario.
Extrayendo un Canal de Datos
El código muestra cómo extraer una columna de los datos de medición si se
tiene un número de variable de las propiedades del archivo que preceden a
los datos de medición.
Formato de Archivos TDMS
Technical Data Management Streaming

El formato de archivos TDMS fue diseñado específicamente para


guardar datos de mediciones a disco. Use el formato TDMS para
guardar propiedades específicas de canales, tales como el nombre del
canal, unidades de medición, límites de prueba e información del
sensor.

• Propiedades • Atributos
• Datos • Apuntadores
a los Datos

.tdms .tdms_index
Formato de Archivos TDMS
Write To Measurement File Express VI

Es la forma más fácil de escribir archivos TDM o TDMS,


pero no es muy flexible en cuanto al formato del
archivo. Para obtener los beneficios de este formato
use los data storage VIs y/o TDM Streaming API
Data Storage VIS

A todos los canales que vienen del DAQ Assistant se les da el


mismo nombre y  unidad; sin embargo, los data storage VIs
enumeran el nombre del canal para evitar colisiones de nombres.
Puede anular la enumeración automática pasando un array de
nombres de canal a la entrada del nombre o mediante el uso de un
Write Data VI para cada canal . Un beneficio adicional de la Write
Data VI es que calcula automáticamente el valor mínimo y máximo
para cada arreglo de medición y las guarda en el archivo TDMS.
Agregar Información Adicional
Leer Datos
Aunque los datastorage VIs son fáciles de usar y
flexibles, no presentan el mismo desempeño al
escribir datos en el disco que el que se logra con el
TDM Streaming API. El TDM Streaming API fue
diseñado para transmitir datos al disco a altas
velocidades y con un pequeño tamaño, por lo que
también es ideal para la escritura de datos en un
sistema en tiempo real.
Observe que el Write Data VI tiene dos entradas, además de la
entrada de señal. Todos los canales que vienen del DAQ Assistant
se les da el mismo nombre de grupo y canal. Si las entradas de
grupo y nombres de los canales se dejan sin conectar, por
default son nombrados “Untitled".
Lectura de datos
Escribir propiedades antes de escribir
Leer Propiedades
TDMS File Viewer
TDMS File Defragment and Flush
Cada llamada al TDMS VI File Write VI registra un bloque de datos
de archivo, que pueden contener varios canales. Esto evita que los
datos de un solo canal se escriban de forma contigua a través de
múltiples escrituras. El TDMS File Defragmenter VI reorganiza el
archivo por canal para optimizar las operaciones de lectura. De esta
manera, el usuario puede tomar la penalización de rendimiento
sólo una vez al desfragmentar el archivo TDMS "offline" en lugar de
con cada lectura. Por ejemplo, el usuario es capaz de adquirir y
almacenar datos muy rápidamente y luego desfragmentar el
archivo antes de realizar cualquier operación de lectura.
Los TDMS Flush VI forza todos los datos almacenados en caché al
disco, una característica útil para asegurar que los datos no se
pierden en caso de un fallo del sistema. Utilizar el TDMS VI Flush
costará algo de rendimiento del sistema.
Comunicación de Lazos
Variables
Queues
Notificadores
• Funciones notificadores: Son funciones que
suspenden la ejecución de un diagrama de bloques
hasta que reciben datos de otra sección del
diagrama o de otro VI corriendo en la misma
instancia de la aplicación.
• Use notificadores para comunicar lazos en paralelo
cuando se desea una notificación para disparar
uno o mas procesos y el proceso en espera
necesita recibir solo la última notificación y datos.
Suspende la Buffer de Los datos pueden Caso de uso
ejecución en datos? ser leídos por
el lazo lector? múltiples lazos?
Variable Sí Transferir el último
Local/Global dato
Queues Sí Sí Transferir cada
punto de datos
Notificadores Sí Sí Transferir el último
dato a múltiples
lazos que están
esperando la
notificación
Semáforos
Un semáforo es una forma de limitar las tareas que pueden operar
en forma simultánea en un recurso compartido (protegido). Los
recursos protegidos o partes de código críticos pueden incluir las
variables globales o comunicaciones con instrumentos externos. 

Son muy útiles protegiendo dos o más secciones críticas del código
que no deben de ser llamadas concurrentemente. Antes de hacer
uso de una parte crítica del código, el hilo de ejecución debe de
adquirir un semáforo. Si el código crítico se encuentra en el
momento ejecutando un hilo, el hilo entrante debe esperar hasta
que el hilo en ejecución libere el semáforo para poder entrar en
forma inmediata. 
Para lograr lo mencionado anteriormente, se debe de crear un
semáforo y poner la función de adquirir y de liberar el
semáforo (Acquire Semaphore y Release Semaphore) al inicio y
final de los códigos críticos, respectivamente. De esta forma,
cada subVI puede obtener y liberar el semáforo uno a la vez,
para asegurar el flujo de datos apropiado. Al final de la sección,
la referencia del semáforo debe de ser liberada haciendo uso
de la función "Release Semaphore Reference VI". 
Variable Funcional Global (FGV)
Es un VI no reentrante que usa shift registers no
inicializados para almacenar datos globales.
Patrones de Diseño
Patrones de Diseño: Son técnicas e implementaciones
de código que son soluciones a problemas específicos
en diseño de software.

Beneficios:
• Evolucionar a través de los esfuerzos de múltiples
desarrolladores.
• Son afinados para simplicidad, mantenibilidad y
legibilidad.
Patrones de Diseño
1. Patrones de Diseño Simple
A. Patrón de VI Simple
B. Patrón de VI General
C. Máquina de Estados
D. Máquina de Estados Basada en Eventos
2. Patrones de Diseño de Múltiples Lazos
A. Productor-Consumidor
B. Variable Funcional Global
Patrón de VI Simple
Consiste de un solo VI que toma una medición, realiza cálculos
y despliega los resultados o los guarda en disco. Use esta
arquitectura para aplicaciones simples o componentes
funcionales dentro de aplicaciones más grandes.
Patrón de VI Simple
Beneficios:
• Puede realizar cálculos y hacer rápidas mediciones
de laboratorio sin una arquitectura complicada.
• No requiere una acción específica de inicio o paro
del usuario, quien sólo utiliza el botón Run.
• Puede convertir estos simples VIs en SubVIs que
se utilizan como bloques para construir
aplicaciones más grandes.
Patrón de VI General
Tiene tres fases:
• Arranque: Inicializa hardware, lee información de
configuración desde archivos o solicita al usuario
localizaciones de archivos de datos.
• Aplicación principal: Consiste de al menos un lazo que se
repite hasta que el usuario decida salir del programa o el
programa termina por otras razones, como la
terminación de I/O.
• Paro: Cierra archivos, escribe información de
configuración al disco o reinicia I/O a los estados default.
Estructura del VI General

1. Las conexiones del cluster de error controlan el orden de ejecución.


2. El lazo While no se ejecuta hasta que el VI Start Up termina de correr y
regresa los datos del cluster de error.
3. El VI Shut Down no puede correr hasta que la aplicación principal en el
lazo While finaliza y los datos del cluster de error dejan el lazo.
Patrón de Máquina de Estados
Use este patrón de diseño para Vis que son
fácilmente divididos en varias tareas más
simples, tales como VIs que actúan como
interface de usuario.
El patrón de máquina de estados tiene fases de
arranque y paro. La aplicación principal corre
código diferente cada vez que el lazo se ejecuta,
dependiendo de alguna condición.
Estructura de la Máquina de Estados

Código
Código de
funcional
transición
del estado
Máquina de Estados Basada en Eventos

Inicializar

Estado 1 Esperar un Paro


evento

Estado 2
Patrón de Diseño
Productor / Consumidor
El patrón de diseño Productor / Consumidor
separa tareas que producen y consumen datos a
diferentes ritmos. Use este patrón de diseño
para adquirir múltiples conjuntos de datos que
deben ser procesados en orden. Use queues
para comunicar y bufferear datos entre lazos.
Variable Funcional Global (FGV)
Es un VI no reentrante que usa shift registers no
inicializados para almacenar datos globales.
Patrón de Uso Ventaja Desventaja
Diseño
Simple SubVIs estándar Permite aplicaciones No es adecuado para
Cálculos/algoritmos; modulares diseño de interfaces de
procesamiento modular usuario o Vis de nivel
Equivalente LabVIEW a principal
subrutinas en otros lenguajes
General Flujo de control estándar Fases distintas de Incapaz de regresar a una
Bueno para prototipos rápidos o inicialización, proceso y paro. fase previa
simples, aplicaciones directas
que no crecerán en complejidad
Máquina de Controla la funcionalidad de un Controla secuencias UI basado en polling no es
Estados VI por medio de crear una Mantenimiento del código es escalable conforme a
(Polling) secuencia de sistema. fácil porque se pueden aplicación crece
agregar nuevos estados Este patrón de diseño no
fácilmente es inherentemente
paralelo
Máquina de Controla la funcionalidad de un Controla secuencias Este patrón de diseño no
Estados VI por medio de crear una Mantenimiento del código es es inherentemente
(Basada en secuencia de sistema. fácil porque se pueden paralelo
eventos) agregar nuevos estados
fácilmente
Es más eficiente que el
control por polling
Patrón de Uso Ventaja Desventaja
Diseño
Productor / Procesa o analiza datos en Comunicación Buffereada No provee sincronización
Consumidor paralelo con otros elementos de entre procesos de la de lazo
(Datos) análisis o procesamiento aplicación Limitado a un tipo de
datos, a pesar de que los
datos se pueden insertar
en un cluster
Productor / Responde a la interface de Separa la interface de No integra bien eventos
Consumidor usuario con aplicaciones usuario del código intensivo que no sean de la
(Eventos) intensivas para el procesador para el procesador interface de usuario
Variable Uso como subVI para almacenar Almacena datos mientras el No es adecuado para Vis
Funcional datos globales y realizar acciones VI esté en la memoria reentrantes
Global (FGV) sobre los datos Ejecuta operaciones basadas Es problemático cuando
en la selección de la entrada se duplican o escalan
Buena manera de proteger datos globales con
secciones críticas de código múltiples copias y se
para eliminar condiciones de realizan acciones sobre las
carrera copias
Creando y Distribuyendo Aplicaciones

A. Preparando los Archivos


1. Recompile y guarde cambios a VIs.
2. Verifique ajustes deseados a las propiedades del
VI.
3. Asegure que los paths son generados
correctamente.
4. Condicionalmente llame a la función Quit
LabVIEW.
• Propiedades del VI
Use la ventana de diálogo de propiedades del VI
para personalizar la apariencia y tamaño de la
ventana. Tú podrías querer configurar un VI para
esconder las scroll bars o para esconder los
botones sobre la barra de herramientas.
• Paths
• Salir de la aplicación
En aplicaciones independientes, el VI de mas
alto nivel debe salir de LabVIEW o cerrar el
panel frontal cuando termina la ejecución.
B. Especificaciones (Build Specifications)
• Archivos a incluir
• Directorios a crear
• Ajustes para Vis
C. Crear y Debuggear una Aplicación
Independiente
• Propiedades del Ejecutable: Información
Click derecho en Built Specifications en el
proyecto y seleccione New>>Aplication (EXE)
• Propiedades del Ejecutable: Archivos Fuente
• Propiedades del Ejecutable: Advanced
• Propiedades del Ejecutable: Preview

También podría gustarte