Está en la página 1de 312

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.
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.
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
Ciclos Infinitos
Los ciclos infinitos son un error común de
programación que involucra un ciclo que nunca
se detiene.
While
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
• El nodo Feedback

Ejem:
1. Factorial de un número
2. Serie de Fibonacci y Razón Dorada
While
Añadir Temporización a los Ciclos
Cuando un ciclo termina de ejecutar una iteración,
inmediatamente comienza la próxima iteración, a menos que
alcance una condición de paro. A menudo se necesita controlar
la frecuencia y la temporización de la iteración Por ejemplo, si
está adquiriendo datos y desea adquirir los datos una vez cada
10 segundos, necesita una manera de temporizar las iteraciones
del ciclo para que ocurran una vez cada 10 segundos. Aún si no
necesita que la ejecución ocurra a una cierta frecuencia, necesita
proporcionar al procesador el tiempo para completar otras
tareas, como responder a la interfaz de usuario.
Función de Espera
Coloque una función de Espera dentro del ciclo para
permitir que un VI se duerma por un cierto tiempo. Esto
permite que su procesador maneje otras tareas durante el
tiempo de espera. Las funciones de espera utilizan el reloj
de milisegundos del sistema operativo. La función de Espera
(ms) espera hasta que el contador de milisegundos cuenta
una cantidad igual a la entrada que usted especificó. Esta
función garantiza que la razón de ejecución del ciclo sea por
lo menos la cantidad de la entrada que usted especificó.
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.
Gráficas
• Waveform Chart
• Waveform Graph
• XY Graph
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 (polling), 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 Expresión
Realice un VI que calcule la temperatura que mide un termopar J
según el milivoltaje en terminales (V en mV). Calcule el resultado
utilizando la fórmula directa y utilizando un ciclo for con array.

4
 
𝑇 = ∑ 𝑎𝑖 𝑉
𝑛=0
Nodo de Propiedad y Nodo de Invocación

• Nodo de Propiedad
– Implícito
Hacemos click derecho en el control o indicador
deseado y selecciona create -> property node
– Explícito (Refnum)
Selecciona
Las propiedades son atributos de un VI, objeto o aplicación. Los
métodos realizan acciones en un VI, objeto o aplicación. Puede
obtener o establecer propiedades y métodos en instancias de
aplicaciones locales o remotas, VI y objetos utilizando el Nodo
de propiedad y el Nodo de invocación. Puede obtener y
establecer muchas configuraciones de aplicaciones, VI y objetos
solo a través de propiedades y métodos.

Consulte el directorio labview \ examples \ viserver para ver


ejemplos de uso de las propiedades y métodos de la Aplicación
y Clase VI.
Nodos de propiedad
Use el Nodo de propiedad para obtener y establecer varias propiedades en una
aplicación o VI. Seleccione las propiedades del nodo utilizando la herramienta
Operativa para hacer clic en el terminal de propiedades o haciendo clic con el botón
derecho en el área blanca del nodo y seleccionando Propiedades en el menú
contextual.

Los siguientes son ejemplos de cómo las propiedades pueden mejorar la facilidad
de uso en una aplicación o VI:

• Establezca el foco del texto en el control principal más utilizado.


• Deshabilite u oculte los controles que actualmente no son relevantes o válidos.
• Guíe al usuario a través de los pasos resaltando los controles.
• Cambie los colores para llamar la atención sobre las condiciones de error.
Puede leer o escribir múltiples propiedades usando un solo nodo. Sin embargo, algunas
propiedades no son legibles y otras no se pueden escribir. Use la herramienta de Posicionamiento
para cambiar el tamaño del Nodo de Propiedad para agregar nuevos terminales. Una pequeña
flecha de dirección a la derecha de la propiedad indica una propiedad que leyó. Una pequeña
flecha de dirección a la izquierda de la propiedad indica una propiedad que usted escribe. Haga
clic con el botón derecho en la propiedad y seleccione Cambiar para leer o Cambiar para escribir
en el menú contextual para cambiar el funcionamiento de la propiedad.

El nodo se ejecuta de arriba a abajo. El nodo de propiedad no se ejecuta si se produce un error


antes de ejecutarse, por lo que siempre debe verificar la posibilidad de errores. Si ocurre un error
en una propiedad, LabVIEW ignora las propiedades restantes y devuelve un error. Si hace clic
derecho en el Nodo de Propiedad y selecciona Ignorar Errores dentro del Nodo, LabVIEW ejecuta
las propiedades restantes en el Nodo de Propiedad. El nodo de propiedad solo devuelve el primer
error. El clúster de error de salida contiene información sobre qué propiedad causó el error.

Si el Nodo de propiedad se abre y devuelve una referencia a un objeto, use la función Cerrar
referencia para cerrar la referencia.
HW1 (jue 26 de marzo)
Ejercicio: Realice una simulación de un control manual On-
Off de nivel de un tanque, con las siguientes características:
1. Al inicio la ventana del VI se debe centrar a sí misma.
2. Al encender un switch (de una bomba) el nivel se debe
incrementar lentamente. Por el contrario si se apaga.
3. Al llegar a un nivel muy alto (digamos 85%) o muy bajo
(15%) el líquido en el tanque debe cambiar de color y
mostrar un mensaje de alarma.
4. Al llegar a 100% o a 0% se debe mostrar un aviso de
accidente.
Utilice los nodos de propiedad y de invocación.
La imagen debajo muestra como usted puede
abrir un VI Reference, Invoke Nodes (Nodos de
Invocar), y Cerrar el VI Reference para abrir un VI
y ejecutarlo automáticamente desde otro VI.
• 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.
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.
Ejercicio

Realice un VI donde haga la secuencia de leds del auto increíble,


o bien un semáforo (con parpadeo del verde inclusive). Utilice
variable local.

Realizar un proyecto donde cada lazo sea un VI y el botón de


Stop sea compartido por una variable global.
Type Definition
Un TypeDef o un Strict TypeDef es un control o indicador
personalizado vinculado al archivo guardado para ese control
o indicador personalizado.
• Cuando guarda un control o indicador personalizado como
un TypeDef, cualquier cambio de tipo de datos que realice
en el TypeDef afecta a todas las instancias del TypeDef en
todos los VI que lo usan.
• Cuando guarda un control o indicador personalizado como
un Strict TypeDef, cualquier tipo de datos y cambios
cosméticos que realice en el Strict TypeDef afectan a todas
las instancias del panel frontal de la Strict TypeDef.
HW4 (3 abr)
Realice un VI que simule un control ON-OFF con banda
diferencial de un tanque. El flujo de llenado deberá tener una
válvula manejada por el control y otra en el flujo de salida que
se accionará por el usuario.
• Las válvulas deberán indicar su estado mediante cambio
color.
• De la misma manera, la tubería deberá indicar si hay flujo en
ella.
• El flujo de llenado es mayor que el de demanda (constante).
Creación, edición y depuración de VIs y
subVIs
• Depuración de programas (Debug)
– Highlight execution
– Retain Wire Values
– Single Step
– Probe Data
– Breakpoints
– Diagram Disable
• Modularidad (SubVIs)
• Manejo de error
Highlight Execution
Haga clic en el botón Highlight Execution para mostrar una
animación de la ejecución del diagrama de bloques cuando
ejecute el VI. Note el flujo de datos a través del diagrama de
bloques. Haga clic en el botón otra vez para deshabilitar la
ejecución animada.
La Highlight Execution muestra el movimiento de los datos en
el diagrama de bloques desde un nodo a otro usando burbujas
que se mueven a lo largo del cable. Use la Highlight Execution
con la herramienta single-stepping para ver cómo los valores
de los datos se mueven de nodo a nodo a través del VI.
Nota: La Highlight Execution reduce enormemente la
velocidad a la cual se ejecuta el VI.
Retain Wire Values
Haga clic en el botón Retain Wire Values para guardar los valores
del cable en cada punto en el flujo de ejecución para que cuando
coloque una sonda de prueba en el cable pueda retener
inmediatamente los valores más recientes de los datos que pasaron
a través del cable. Debe ejecutar con éxito el VI por lo menos una
vez antes de que pueda retener los valores del cable.
Ejecución paso a paso
Haga clic en el botón Step Into para abrir un nodo y hacer pausa.
Cuando hace clic en el botón Step Into otra vez, ejecuta la primera
acción y hace pausa en la siguiente acción del subVI o estructura.
También puede presionar el <Ctrl> y la flecha hacia abajo. Avance a
través de los pasos de VI por medio del VI nodo por nodo. Cada nodo
se prende para denotar cuando está listo para ejecutarse.
Haga clic en el botón Step Over para abrir un nodo y hacer pausa al
siguiente nodo. También puede presionar el <Ctrl> y la flecha hacia
arriba. Al presionar el nodo, ejecuta el nodo sin avance simple a través
del nodo.
Haga clic en el botón Step Out para terminar de ejecutar un nodo
actual y hacer pausa. Cuando el VI termina se ejecutarse, el botón
Step Out está en color tenue. También puede presionar el <Ctrl> y la
flecha hacia arriba. Al presionar un nodo, completa el avance en el
nodo y navega al siguiente nodo.
Probe Data (Sonda de Prueba)
Use la herramienta Probe para verificar los valores intermedios en un
cable mientras un VI se ejecuta.
Use la herramienta de Probe si tiene un diagrama de bloques
complicado con una serie de operaciones y cualquiera de ellas puede
regresar datos incorrectos. Use la herramienta de Probe con la
identificación de ejecución, avance simple y puntos de paro para
determinar donde están los datos incorrectos. Si los datos están
disponibles, la punta de prueba se actualiza inmediatamente y muestra
los datos en la Probe Watch Window durante la identificación de
ejecución, avance simple o cuando hace pausa en un punto de paro.
Cuando la ejecución hace pausa en un nodo por avance simple o un
punto de paro, también puede medir el cable que se ejecutó para ver el
valor que fluye a través de ese cable.
Breakpoint
Use la herramienta Breakpoint, para colocar un punto de
interrupción en un VI, nodo o cable y pausar la ejecución en
esa ubicación.
Cuando establece un Breakpoint en un cable, la ejecución se
detiene después de que los datos pasan a través del cable y el
botón Pausa aparece en rojo. Coloque un Breakpoint en el
diagrama de bloques para pausar la ejecución después de que
se ejecuten todos los nodos en el diagrama de bloques. El
borde del diagrama de bloques aparece en rojo y parpadea
para reflejar la ubicación de un Breakpoint.
Cuando un VI hace una pausa en un Breakpoint, LabVIEW trae
el diagrama de bloques al frente y usa un recuadro para
resaltar el nodo, el cable o la línea de script que lo contiene.
Cuando alcanza un Breakpoint durante la ejecución, el VI hace una pausa y el
botón Pausa aparece en rojo. Además, el fondo del VI y el borde comienzan a
parpadear. Puede realizar las siguientes acciones:
• Ejecución de un solo paso utilizando los botones de Single Step.
• Verifique los valores intermedios en las Probes que colocó en los cables
antes de ejecutar el VI.
• Verifique los valores intermedios en las Probes que coloque después de
ejecutar el VI si ha habilitado la opción Conservar valores de cable.
• Cambiar los valores de los controles del panel frontal.
• Consulte el menú desplegable Lista de llamadas para ver la lista de VI que
llaman al VI que se detiene en un punto de interrupción.
• Haga clic en el botón Pausa para continuar corriendo hasta el siguiente
Breakpoint o hasta que el VI termine de ejecutarse.
LabVIEW guarda breakpoints con un VI, pero están activos solo cuando
ejecuta el VI. Puede ser útil guardar un breakpoint para su uso repetido,
en lugar de eliminarlo y recrearlo. Sin embargo, es posible que no
desee que todos los breakpoints estén activos cada vez que ejecute el
VI. Deshabilite los breakpoints para que la ejecución no se detenga en
ese breakpoint cuando ejecute el VI. Puede usar la ventana del
Administrador de breakpoints para deshabilitar, habilitar, borrar o
localizar breakpoints existentes. Abra la ventana del Administrador de
breakpoints seleccionando View » breakpoints Manager o haciendo clic
con el botón derecho en un objeto en el diagrama de bloques y
seleccionando breakpoint»breakpoint Manager en el menú contextual.
Puede eliminar breakpoint individualmente o en toda la jerarquía de VI.
Cómo LabVIEW destaca los breakpoints
LabVIEW se comporta de manera diferente en términos de cómo se resaltan los puntos
de interrupción y cuándo las pausas de ejecución dependen de dónde haya colocado
los puntos de interrupción en el diagrama de bloques. Puede colocar puntos de
interrupción en estructuras, nodos y cables.

Breakpoints de estructura
La siguiente ilustración muestra un bucle For con un breakpoint. El VI se detiene antes
de que todo el bucle For termine de ejecutarse. Un borde rojo alrededor del diagrama
de bloques resalta el breakpoint. Si el diagrama de bloques está dentro de una
estructura, la estructura incluye el borde rojo. La pausa en la ejecución ocurre cuando
todos los nodos en el diagrama de bloques terminan de ejecutarse.
Si un breakpoint está en una
estructura de bucle, la pausa se
produce después de cada iteración
de bucle.
Nodo
La siguiente ilustración muestra un breakpoint en el nodo Incremento. El VI se
detiene antes de que se ejecute la función Incremento. Un cable también tiene un
breakpoint. El VI se detiene nuevamente después de que se ejecuta la función
Multiplicar. Un borde rojo alrededor del nodo resalta el breakpoint. Puede sondear
todas las señales de entrada en el nodo con la herramienta Probe.

Cable
La siguiente ilustración muestra un breakpoint en un
cable con una sonda conectada. Cuando ha
seleccionado Retain Values y coloca el cursor sobre un
cable, aparece una tira de punta, como se muestra,
que incluye el valor de los datos en el cable. La pausa
en la ejecución ocurre después de que los datos pasan
a través del cable y la Probe muestra los datos de la
iteración actual. Una bala roja en el medio del cable
resalta el punto de ruptura. Si conecta una Probe al
cable, ésta también tiene un borde rojo.
Breakpoint desactivado
La siguiente ilustración muestra breakpoints en el bucle For,
el nodo Incremento, un cable y en una línea en un nodo
MathScript. Todos los breakpoints están deshabilitados. El
VI no se detiene en ninguno de los breakpoints. El borde
rojo alrededor de los objetos del diagrama de bloques es
más delgado de lo normal para indicar que ha deshabilitado
el punto de interrupción. Si habilita los breakpoints, el
borde rojo vuelve a un ancho más grueso.
Depuración de secciones de diagramas de bloques
Puede ejecutar un VI con una sección del diagrama de
bloques deshabilitada, similar a comentar una sección de
código en un lenguaje basado en texto. Deshabilite una
sección del diagrama de bloques para determinar si el VI
funciona mejor sin él. Coloque la sección que desea
deshabilitar dentro de una estructura Diagram Disable.
También puede depurar
una sección de código
para aislar el problema.
Coloque el código que
desea depurar dentro de
una estructura de
Conditional Disable.
Manejo Automático de Errores
Cada error tiene un código numérico y un
mensaje de error correspondiente.
LabVIEW maneja automáticamente, de forma
predeterminada, cualquier error cuando se
ejecuta un VI al suspender la ejecución,
identificando el subVI o función donde ocurrió el
error y mostrando una ventana de diálogo de
error.
Para deshabilitar el manejo automático de errores para
el VI actual, seleccione File»VI Properties y seleccione
Execution en el menú de acceso directo Category. Para
deshabilitar el manejo de errores automático para
cualquier VI en blanco que usted crea, seleccione
Tools»Options y seleccione Block Diagram en la lista
Category. Para deshabilitar el manejo automático de
errores para un subVI o función en un VI, cablee su
parámetro error out al parámetro error in para otro
subVI o función o a un indicador error out.
Manejo Manual de Errores
Puede escoger otros métodos de manejo de errores. Por ejemplo, si un VI de
E/S en el diagrama de bloques se multiplica, usted no querrá que la
aplicación completa se detenga y muestre una ventana de diálogo de error.
También puede querer que el VI intente nuevamente en un cierto periodo de
tiempo. Puede realizar estas decisiones de manejo de error en el diagrama
de bloques del VI.
Use los VIs del manejo de errores de LabVIEW y las funciones en la paleta
Dialog & User Interface y los parámetros error in y error out de la mayoría de
los VIs y las funciones para manejar errores. Por ejemplo, si LabVIEW
encuentra un error, puede mostrar el mensaje de error en diferentes tipos de
ventanas de diálogo, o puede arreglar el error de forma programática y
después borrar el error al cablear la salida error out del subVI o función a la
entrada error in del VI Borrar Errores.
Utilice el manejo de errores con las herramientas de depuración para
encontrar y manejar errores.
Cuando realice cualquier tipo de entrada y salida
E/S, considere la posibilidad de que pueden
ocurrir errores. Casi todas las funciones de E/S
regresan información de error. Incluyendo la
verificación de errores en los VIs, especialmente
para operaciones de E/S (archivo, serial,
instrumentación, DAQ y comunicación) y
proporciona un mecanismo para manejar
errores apropiadamente.
Cluster de Error
El manejo de error en LabVIEW sigue el modelo del flujo de datos. Cablee la información del
error desde el inicio del VI hasta el final. Incluya un VI para manejo de error, como el Simple
Error Handler VI, al final del VI para determinar si el VI se ejecutó sin errores. Use los clusters
error in y error out en cada VI que utilice o construya para pasar la información del error a
través del VI.
Conforme el VI se ejecuta, LabVIEW hace pruebas para errores en cada nodo de ejecución. Si
LabVIEW no encuentra ningún error, el nodo se ejecuta normalmente. Si LabVIEW detecta un
error, el nodo pasa el error al siguiente nodo sin ejecutar la parte del código. El siguiente
código hace lo mismo y así sucesivamente. Al final del flujo de ejecución, LabVIEW reporta el
error.
Use los controles e indicadores del cluster de error para crear entradas y salidas de error en
los subVIs.
Los clusters error in y error out incluyen los siguientes componentes de información:
• status es un valor Booleano que reporta TRUE si ocurre un error.
• code es un entero firmado de 32 bits que identifica el error de forma numérica. Un código
de error no igual a cero unido a un estatus FALSE emite una advertencia más que un error.
• source es una cadena de caracteres que identifica donde ocurrió el error.
Usar Ciclos While para Manejo de Errores
Puede cablear un cluster de error a la terminal condicional de un Ciclo
While o For con una terminal condicional para detener la iteración del
ciclo. Si cablea el cluster de error a la terminal condicional, solamente el
valor TRUE o FALSE del parámetro status del cluster de error pasa a la
terminal. El Ciclo For se ejecuta hasta que ocurre un error o hasta que se
completa el número de iteraciones establecido.
Si cablea un cluster de error a la terminal condicional, el menú muestra
Stop if True y Continue if True cambia a Stop on Error y Continue while
Error.
En la Figura, el cluster de error y un botón stop son usados juntos para
determinar cuándo detener al ciclo. Este es el método recomendado para
detener la mayoría de los ciclos mientras el ciclo se detiene cuando usted
lo pide, o cuando se produce un error, lo que suceda primero.
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