Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad I
Introducción a la
Instrumentación Virtual
I Introducción a 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
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.
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
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.
Los siguientes son ejemplos de cómo las propiedades pueden mejorar la facilidad
de uso en una aplicación o VI:
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
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.
Formatos de
Función Tipo de Dato
Archivo
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
24.45 34.54
23.41 35.32
22.97 35.98
21.56 36.76
Creando Archivos de Texto con
Headers – Hard Coding
• Propiedades • Atributos
• Datos • Apuntadores
a los Datos
.tdms .tdms_index
Formato de Archivos TDMS
Write To Measurement File Express VI
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
Código
Código de
funcional
transición
del estado
Máquina de Estados Basada en Eventos
Inicializar
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