Libro de Texto
Elementos de Programación para Instrumentación Virtual Dr. Gerardo Trujillo Schiaffino Instituto Tecnológico de Chihuahua División de Estudios de Posgrado e Investigación
Agosto 2011
Contenido
Capítulo I. Fundamentos de Instrumentación Virtual
1
1.1 Introducción a la instrumentación virtual
1
1.2 Evolución de la instrumentación
2
1.3 Instrumentos tradicionales
4
1.4 Instrumentos virtuales
5
1.4.1
Ejemplos de instrumentos virtuales
7
1.4.2
Arquitecturas básicas
9
1.4.3
Aplicaciones
11
1.5 Comparación entre instrumentos tradicionales y virtuales
12
1.6 Herramientas de programación
13
1.6.1
Programación tradicional
13
1.6.2
Programación gráfica
15
Capítulo II. Fundamentos de LabVIEW
19
2.1 Ambiente de programación gráfica
19
2.1.1
Panel frontal
21
2.1.2
Diagrama a bloques
23
2.1.2.1 Sub-instrumentos exprés
24
2.1.2.2 Sub-instrumentos estándar
26
i
2.1.2.3 Funciones
27
2.1.3
Paleta de controles
27
2.1.4
Paleta de funciones
30
2.1.5
Paleta de herramientas
32
2.1.5.1.
Herramienta automática
33
2.1.5.2.
Herramienta de operación
34
2.1.5.3.
Herramienta de posición / selección
34
2.1.5.4.
Herramienta de etiquetado
34
2.1.5.5.
Herramienta de cableado
34
2.1.5.6.
Herramienta de menú
35
2.1.5.7.
Herramienta de arrastre
35
2.1.5.8.
Herramienta de punto de paro
35
2.1.5.9.
Herramienta de punto de prueba
35
2.1.5.10.
Herramienta de muestra de color
36
2.1.5.11.
Herramienta de colorear
36
2.1.6
Barra de herramientas
36
2.1.6.1.
Botón de ejecución
37
2.1.6.2.
Botón de ejecución continua
37
2.1.6.3.
Botón de cancelación
37
2.1.6.4.
Botón de pausa
38
2.1.6.5.
Menú de configuración de textos
38
2.1.6.6.
Menú de alineación de objetos
38
2.1.6.7.
Menú de distribución de objetos
38
2.1.6.8.
Menú de redimensionamiento
39
2.1.6.9.
Menú de reordenamiento
39
2.1.6.10.
Botón de ejecución resaltada
39
ii
2.1.6.11.
Botón de entrada al ciclo
40
2.1.6.12.
Botón de saltar ciclo
40
2.1.6.13.
Botón de salida de ciclo
40
2.2 Paradigma de programación por flujo de datos
40
2.2.1. Creación de un instrumento virtual
41
2.2.2. Cableado de funciones en el diagrama a bloques
43
2.2.3. Programación por flujo de datos
46
2.3 Opciones de ayuda
48
2.3.1. Ventana de ayuda contextual
48
2.3.2. Ayuda de LabVIEW
50
2.3.3. Atajos en LabVIEW
51
2.4 Técnicas de depuración de errores
52
2.4.1. Lista de errores
52
2.4.2. Ejecución resaltada
53
2.4.3. Ventanas de prueba
53
2.4.4. Puntos de paro
54
2.5 Documentación del VI
55
2.6 Sub-instrumentos virtuales
56
2.6.1
Conceptos básicos
56
2.6.2
Creación de sub-instrumentos estándar
58
2.6.2.1.
Diseño del ícono
58
2.6.2.2.
Creación del conector
59
2.6.2.3.
Asignación de Terminales
61
2.6.3
Librerías de sub-instrumentos
62
2.6.4
Uso de los sub-instrumentos
62
iii
Capítulo III. Estructuras de Programación
64
3.1 Ciclo While
65
3.2 Ciclo For
67
3.3 Registros de corrimiento
69
3.4 Nodos de retroalimentación
71
3.5 Case
73
3.5.1. Case booleano
74
3.5.2. Case string
75
3.5.3. Case numérico
75
3.6 Secuencias
76
3.6.1. Secuencias apiladas
77
3.6.2. Secuencias extendidas
79
3.7 Nodos de fórmula
80
Capítulo IV. Herramientas y Funciones de Programación
4.1
Arreglos
84
84
4.1.1. Controles e indicadores de arreglo
85
4.1.2. Arreglos auto-indexados
88
4.1.2.1.
Auto-indexamiento de salida
88
4.1.2.2.
Auto-indexamiento de entrada
90
4.1.2.3.
Arreglos auto-indexados multidimensionales
91
4.1.3. Arreglos constantes
92
iv
4.1.4. Funciones para arreglos
4.2
93
4.1.2.1.
Tamaño de arreglo
93
4.1.2.2.
Inicializar arreglo
94
4.1.2.3.
Construir arreglo
94
4.1.2.4.
Subconjunto de arreglo
95
4.1.2.5.
Índice de arreglo
95
Clústeres
96
4.3.1. Controles e indicadores de clúster
97
4.3.2. Clústeres constantes
98
4.3.3. Orden en el clúster
99
4.3.4. Funciones para clústeres
100
4.3.1.1.
Agrupar
100
4.3.1.2.
Agrupar por nombre
101
4.3.1.3.
Desagrupar
101
4.3.1.4.
Desagrupar por nombre
102
4.3.5. Clúster de error
4.3
102
4.2.5.1.
Estatus
103
4.2.5.2.
Código
103
4.2.5.3.
Fuente
104
Gráficas
105
4.3.1. Registradores de formas de onda
105
4.3.1.1.
Trazo sencillo
106
4.3.1.2.
Personalización de la gráfica
106
4.3.1.3.
Modo de actualización de datos
108
4.3.1.4.
Trazos múltiples
108
4.3.1.5.
Trazos múltiples apilados
109
v
4.3.1.6.
Consideraciones de uso
4.3.2. Gráficas de forma de onda
110
4.3.2.1.
Trazo sencillo
112
4.3.2.2.
Trazos múltiples
113
4.3.2.3.
Personalización de la gráfica
115
4.3.2.4.
Consideraciones de uso
116
4.3.3. Gráficas XY
4.4
116
4.3.3.1.
Trazo simple
117
4.3.3.2.
Trazos múltiples
118
4.3.3.3.
Personalización de la gráfica
119
4.3.3.4.
Consideraciones de uso
120
Cadenas de caracteres
120
4.4.1. Controles e indicadores para cadenas de caracteres
121
4.4.2. Activación de la barra de desplazamiento
122
4.4.3. Modos de despliegue de texto
122
4.4.4. Funciones para manejo de texto
123
4.4.4.1.
Longitud de texto
124
4.4.4.2.
Concatenar cadenas
124
4.4.4.3.
Subconjunto de cadena
124
4.4.5. Cadenas de caracteres constantes 4.5
110
Archivos
125 125
4.5.1. Archivos de texto
126
4.5.1.1.
Escribir en archivo de texto
126
4.5.1.2.
Leer en archivo texto
126
4.5.2. Archivos de hoja de cálculo 4.3.1.1.
127
Escribir en archivo de hoja de cálculo
vi
127
4.3.1.2. 4.6
4.7
4.8
Leer de archivo de hoja de cálculo
Variables locales
128 128
4.6.1. Creación de una variable local
129
4.6.2. Uso de las variables locales
131
Variables globales
132
4.7.1. Creación de una variable global
133
4.7.2. Uso de las variables globales
135
Nodos de propiedades
136
4.8.1. Creación de un nodo de propiedades
136
4.8.2. Uso de los nodos de propiedades
137
4.8.3. Acceso a propiedades múltiples
138
Capítulo V. Arquitecturas de Programación
140
5.1
Arquitectura de un VI simple
140
5.2
Arquitectura de un VI general
141
5.3
Arquitectura de una máquina de estados
143
Capítulo VI. Adquisición de Datos
145
6.1 Introducción a los sistemas de adquisición de datos
145
6.2 Transductores y actuadores
146
6.4.1. Transductores
146
vii
6.4.2. Actuadores
147
6.3 Acondicionadores de señal
147
6.3.1. Amplificación
147
6.3.2. Aislamiento
148
6.3.3. Filtrado
148
6.3.4. Excitación
149
6.3.5. Linealización
149
6.4 Tarjetas de adquisición de datos
150
6.4.1. Señales analógicas
150
6.4.2. Líneas de entrada analógica
153
6.4.2.1.
Número de canales y modos de medición
153
6.4.2.2.
Resolución
158
6.4.2.3.
Rango de voltaje del dispositivo
159
6.4.2.4.
Rango de voltaje de la señal
160
6.4.2.5.
Razón de muestreo
162
6.4.2.6.
Tiempo de establecimiento
163
6.4.2.7.
Ruido
164
6.4.3. Salidas analógicas
165
6.4.3.1.
Tiempo de establecimiento
165
6.4.3.2.
Resolución
166
6.4.4. Puertos digitales de entrada / salida
166
6.4.5. Líneas temporizadas de entrada / salida
168
6.5 Funciones de software para adquisición de datos
171
6.5.1. Instalación del hardware de adquisición
172
6.5.2. Controladores NI-DAQ
172
6.5.3. Software de configuración
174
viii
6.5.4. DAD Assistant
177
ix
INTRUDUCCIÓN
Este libro nace de la necesidad de contar con un libro de texto específicamente diseñado para la asignatura “Elementos de Programación para Instrumentación Virtual” que se imparte en el programa de Maestría en Ciencias en Ingeniería Electrónica del Instituto Tecnológico de Chihuahua.
Actualmente no existe un libro que cubra en su totalidad la estructura del programa de la asignatura antes mencionada, si bien existen algunos libros publicados sobre el tema, la mayoría están escritos en ingles (solamente existe uno escrito en español), ninguno de ellos tiene una estructura tal que le permita usarse como libro de texto para la asignatura en cuestión, solo sirven como libros de consulta.
Además de cubrir totalmente el contenido de esta asignatura, los temas presentados en este libro también son de gran utilidad en otras asignaturas de las áreas de instrumentación,
control,
automatización
industrial,
procesamiento
de
señales,
procesamiento de imágenes y programación en general.
El contenido del libro se estructuró en seis capítulos, correspondiendo cada uno de ellos a una de las unidades de aprendizaje de la asignatura.
El capítulo I se titula “Fundamentos de Instrumentación Virtual” y en él se desarrollan los temas correspondientes a los conceptos fundamentales que dan origen al paradigma de la instrumentación virtual como son: la evolución que ha sufrido la instrumentación industrial para llevarla desde la instrumentación analógica hasta la instrumentación
x
virtual de nuestros días, los conceptos de instrumento tradicional e instrumento virtual, la comparación entre los instrumentos tradicionales y los instrumentos virtuales, y una breve descripción de algunas de las herramientas de programación utilizadas para el desarrollo de instrumentos virtuales.
El capítulo II se titula “Fundamentos de LabVIEW” y en él se describe el ambiente de programación gráfica de LabVIEW, el paradigma de programación por flujo de datos, las distintas opciones para obtener ayuda del software, las distintas técnicas para depurar los errores de programación, los procedimientos para generar la adecuada documentación de un programa y el concepto de un sub-instrumento y el procedimiento para su creación.
El capítulo III se titula “Estructuras de Programación” y en él se desarrollan los temas concernientes al diseño de la estructura de control para un programa de aplicación a través del uso correcto de los ciclos while, ciclos for, registros de corrimiento, nodos de retroalimentación, estructuras case (booleanas, numéricas y de cadenas de caracteres), estructuras de secuencia y nodos de formula.
El capítulo IV se titula “Herramientas y Funciones de Programación” y en él se detallan todos los aspectos correspondientes a conceptos, herramientas y funciones para el manejo de arreglos, clústeres, gráficas, cadenas de caracteres, archivos, variables locales, variables globales y nodos de propiedades.
El capítulo V se titula “Arquitecturas de Programación” y en él se describen los tres distintos tipos de arquitectura que puede tener un programa de LabVIEW cuando se
xi
maneja su paradigma de programación por flujo de datos: Instrumento virtual simple, Instrumento virtual general y máquina de estados.
Y finalmente, el capítulo VI se titula “Sistemas de Adquisición de Datos” y en él se presentan los aspectos fundamentales de los sistemas de adquisición de datos, una breve descripción de transductores y actuadores, la clasificación de los principales tipos de acondicionamiento de señales, los principales parámetros que debe tomarse en cuenta para la selección de un tarjeta de adquisición de datos y todo lo referente a las distintas capas se software relacionadas a los sistemas de adquisición.
xii
Capítulo I
Fundamentos de Instrumentación Virtual
CAPÍTULO I: FUNDAMENTOS DE INSTRUMENTACIÓN VIRTUAL.
1.1. INTRODUCCION A LA INSTRUMENTACIÓN VIRTUAL.
Como resultado de la vertiginosa evolución que los sistemas computacionales han tenido en los últimos años, la instrumentación en general y la instrumentación industrial muy en particular han sufrido una notable transformación, para pasar de los tradicionales medidores de aguja a modernos sistemas computarizados con funciones y características que hace 50 años hubieran sido inimaginables.
Qué pensaría, por ejemplo, un instrumentista de los años 50s que recorría toda la línea de producción tomando lecturas de las carátulas de los medidores para llenar a mano interminables hojas de registro y generar de ahí los reportes y las gráficas de control de procesos, si se encontrara frente a una moderna sala de instrumentos donde una computadora monitorea y controla simultáneamente todas las variables
del proceso de
producción, generando automáticamente reportes y registro de eventos.
La instrumentación por computadora es hoy en día una práctica cotidiana en la industria moderna. Esto ha dado lugar al nacimiento de nuevos conceptos como el de la instrumentación virtual, donde se integran diversas tecnologías computacionales con instrumentos programables, tarjetas digitalizadoras y sofisticado software para el desarrollo de interfaz de usuario, operando todo en conjunto bajo el esquema de un instrumento único especializado.
Instituto Tecnológico de Chihuahua
1
Dr. Gerardo Trujillo Schiaffino
Capítulo I
Fundamentos de Instrumentación Virtual
1.2. EVOLUCIÓN DE LA INSTRUMENTACIÓN.
Para comprender mejor el concepto de la instrumentación virtual,
es importante
conocer la evolución que ha sufrido la instrumentación. En los últimos años, los instrumentos han evolucionado a la par de los grandes avances de la ciencia y la tecnología.
Esta evolución ha sido principalmente en términos de flexibilidad y grado en que los instrumentos se integran a los sistemas computacionales.
La primera generación de instrumentos fueron instrumentos autónomos, controlados manualmente desde sus paneles frontales. Las mediciones efectuadas en estos instrumentos tenían que ser registradas a mano y los usuarios carecían de flexibilidad en cuanto al diseño de la interfaz, capacidad de medición, ó capacidades computacionales.
Con la invención del GPIB (Bus de Interface de Propósito General) y de los instrumentos digitales programables, los usuarios tuvieron la opción de controlar los instrumentos de ambas maneras: manualmente y por programa desde una computadora. Cada instrumento GPIB fue diseñado para un tipo específico de mediciones, y los usuarios reunían y apilaban una serie de instrumentos para crear un sistema de medición completo.
Hoy en día, los instrumentos son una combinación de computadoras personales o estaciones de trabajo, software gráfico, instrumentos digitales programables, y tarjetas digitalizadoras de propósito general.
Instituto Tecnológico de Chihuahua
2
Dr. Gerardo Trujillo Schiaffino
Capítulo I
Fundamentos de Instrumentación Virtual
Estos instrumentos modernos pueden optimizar el rendimiento utilizando técnicas modernas como la programación de registros, memoria compartida, y el poder computacional de una PC. Estos instrumentos, también incluyen direccionamiento de señales sofisticadas al igual que opciones programables de disparo. Se puede personalizar el interface de usuario con software de alto nivel. Utilizando este software con digitalizadores de propósito general y tecnología de Procesamiento Digital de Señales (DSP), estos instrumentos se convierten en herramientas muy versátiles debido a que son fácilmente reconfigurables. Se puede re direccionar rápidamente los datos adquiridos para que sean utilizados por un gran número de programas de aplicación para el análisis, almacenamiento o la generación de reportes.
El término que describe esta nueva generación de instrumentos basados en computadora es Instrumentación Virtual.
Con los instrumentos virtuales, se puede utilizar una gran variedad de hardware de instrumentación, y personalizar completamente la funcionalidad del instrumento y su interfaz de usuario a través de software de alto nivel.
La figura 1.1 nos muestra una representación de la evolución que ha sufrido la instrumentación.
En esta evolución la palabra clave ha sido flexibilidad, los instrumentos virtuales se caracterizan por la flexibilidad con que se ajustan a los requerimientos de la industria moderna.
Instituto Tecnológico de Chihuahua
3
Dr. Gerardo Trujillo Schiaffino
Capítulo I
Fundamentos de Instrumentación Virtual
Instrumentación Virtual Instrumentación Programable Instrumentación Analógica
Fig. 1.1 Evolución de la instrumentación.
1.3. INSTRUMENTOS TRADICIONALES.
En el contexto de la instrumentación tradicional, un instrumento es un equipo autónomo al cual se conecta una o varias señales de entrada y para obtener información de que refleje una medición de alguna o algunas características de las señales de entradas aplicadas.
Instituto Tecnológico de Chihuahua
4
Dr. Gerardo Trujillo Schiaffino
Capítulo I
Fundamentos de Instrumentación Virtual
La funcionalidad de un instrumento tradicional se puede categorizar en tres elementos básicos: adquisición de datos, análisis de datos y presentación de datos, tal como se muestra en la figura 1.2. Generalmente, estas tres funciones son realizadas en hardware.
Adquisición (Hardware)
a)
Análisis (Hardware)
Presentacion (Hardware)
b)
Fig. 1.2. a) Instrumento tradicional, b) Elementos funcionales
Históricamente hablando, un instrumento tradicional contiene todos estos elementos funcionales dentro de un solo gabinete.
1.4. INSTRUMENTOS VIRTUALES.
Por otro lado, cuando analizamos un instrumento virtual, este también contiene estos mismos elementos funcionales (adquisición, análisis y presentación de datos).
Sin embargo, por lo general estos elementos no necesariamente residen en el mismo gabinete, lo cual da pie a la virtualización del instrumento.
La figura 1.3 muestra la composición básica de un instrumento virtual.
Instituto Tecnológico de Chihuahua
5
Dr. Gerardo Trujillo Schiaffino
Capítulo I
Fundamentos de Instrumentación Virtual
Hardware para Instrumentación
Software para Instrumentación
Computadora
Instrumento Virtual
Fig. 1.3. Componentes de un Instrumento Virtual
En este orden de ideas, podemos definir un instrumento virtual como:
“Conjunto de software y/o hardware adicionando a una computadora, operando bajo el esquema de un instrumento único especializado.”
Es importante hacer notar el término “y/o” utilizado en la definición, el cual nos indica que el hardware puede o no estar presente en, es decir, un instrumento virtual puede estar formado tan solo por la computadora y el software; esto puede clarificarse mejor a través de algunos ejemplos.
Instituto Tecnológico de Chihuahua
6
Dr. Gerardo Trujillo Schiaffino
Capítulo I
Fundamentos de Instrumentación Virtual
1.4.1. Ejemplos de Instrumentos Virtuales
Cuando se le pide que describan un instrumento virtual, algunas personas citan el ejemplo de una computadora controlando un instrumento a través de RS232 o GPIB, con un panel frontal gráfico en la pantalla de la computadora para controlar el instrumento. Este instrumento puede ser operado como unidad independiente a través de su panel frontal físico, o bien, a través de la pantalla de la computadora donde está representado el mismo panel frontal físico del instrumento remoto, con lo que se puede sentir como si se manipulara directamente el instrumento. Esto resulta en la sensación de que se está operando virtualmente el instrumento original, pero con la ventaja de hacerlo desde una localización remota.
Otros describen a un instrumento virtual como un panel frontal gráfico en una computadora, pero con una tarjeta de adquisición de datos o un módulo PXI trabajando como si se tratara de un instrumento externo. En este caso, el hardware del instrumento no tiene un panel frontal por sí solo, por lo que no puede usarse como un instrumento independiente. La computadora, de esta manera, es un componente necesario para el instrumento, y el panel frontal de la computadora es el único medio de operarlo.
Finalmente, algunos otros describen un instrumento virtual como un panel frontal gráfico sin instrumento físico ni hardware de adquisición conectado a la computadora. En este caso la computadora adquiere y analiza datos de archivos o de otras computadoras en una red, o bien datos que la misma computadora simula de un proceso físico o evento, calculando matemáticamente los datos como si se tratara de una adquisición en el mundo real.
Instituto Tecnológico de Chihuahua
7
Dr. Gerardo Trujillo Schiaffino
Capítulo I
Fundamentos de Instrumentación Virtual
a)
b)
c)
Fig. 1.4 a) Computadora controlando un instrumento programable, b) Panel frontal gráfico en la computadora manejando un módulo PXI, c) Panel gráfico sin instrumento físico conectado
Para los dos primeros ejemplos, el instrumento virtual está formado por la computadora, el hardware de adquisición y el software de análisis y presentación, como se muestra en la figura 1.5.
Adquisición (Hardware)
Análisis (Software)
Presentación (Software)
Fig. 1.5. Representación funcional de un instrumento virtual con hardware y software
Sin embargo, en el caso del último ejemplo, el instrumento virtual está formado solo por la computadora y el software que realiza las funciones de adquisición, análisis y presentación, como se muestra en la figura 1.6.
Instituto Tecnológico de Chihuahua
8
Dr. Gerardo Trujillo Schiaffino
Capítulo I
Fundamentos de Instrumentación Virtual
Adquisición (Software)
Análisis (Software)
Presentación (Software)
Fig. 1.6. Representación funcional de un instrumento virtual con software solamente.
Para ambos casos la computadora y el software representan la base indispensable para tener un instrumento virtual, quedando el hardware como elemento opcional.
Sin embargo, la mayor parte de los instrumentos virtuales utilizados en los laboratorios y en la industria contienen algún tipo de hardware de adquisición y/o control, por lo que normalmente el análisis de los instrumentos virtuales se hace base a este tipo de instrumentos (Computadora + Hardware + Software).
1.4.2. Arquitecturas Básicas.
Los instrumentos virtuales pueden presentar muy diversos tipo de arquitecturas para su construcción, las cuales pueden variar dependiendo de si se trata de un instrumento con la combinación hardware-software
o solamente software, dependiendo también de la
plataforma de computación que se seleccione (PC, Mac, Sun, etc.), o bien, dependiendo del ambiente de programación para el software (lenguajes tradicionales, programación gráfica, etc.).
Instituto Tecnológico de Chihuahua
9
Dr. Gerardo Trujillo Schiaffino
Capítulo I
Fundamentos de Instrumentación Virtual
Sin embargo, considerando el caso del instrumento hardware-software, por ser el más representativo, independientemente de la plataforma y el ambiente de programación elegido se puede categorizar la arquitectura de acuerdo al hardware de adquisición y/o control que se utilice. Las principales arquitecturas de hardware utilizadas en la instrumentación virtual son: bus de interface de propósito general (GPIB), extensión del bus VME para instrumentación (VXI), tarjetas de adquisición de datos (DAQ), comunicación serie (RS232, RS485) y sistemas de visión. Un detalle importante es que el uso de estas arquitecturas no es excluyente, es decir, un instrumento virtual puede estar formado por una o varias de estas arquitecturas, lo que le da una versatilidad y flexibilidad que difícilmente podría tener un instrumento tradicional. La figura 1.7 nos muestra estas arquitecturas básicas de hardware.
Computadora
Software
GPIB
VXI
DAQ
Serial
Visión
Proceso o Unidad Bajo Prueba
Fig. 1.7. Arquitecturas básicas de la instrumentación virtual
Instituto Tecnológico de Chihuahua
10
Dr. Gerardo Trujillo Schiaffino
Capítulo I
Fundamentos de Instrumentación Virtual
En un caso extremo, de ser necesario, un instrumento virtual puede incluir todas estas arquitecturas juntas, trabajando coordinadas por el software como si se tratara de un solo instrumento.
1.4.3. Aplicaciones.
Las principales áreas en que se aplica la Instrumentación Virtual son:
a) Sistemas de Automatización Industrial Automatización de Procesos Control Supervisorio Interfaces Hombre - Máquina Adquisición de Datos Control Estadístico de Procesos Automatización de Laboratorios Control de Maquinaria Visión por Computadora
b) Sistemas de Prueba y Medición Equipos de Prueba Automática Inspección Automática Prueba Electrónica Prueba de Vibración
Instituto Tecnológico de Chihuahua
11
Dr. Gerardo Trujillo Schiaffino
Capítulo I
Fundamentos de Instrumentación Virtual
Prueba Acústica Monitoreo y Control en Tiempo Real
1.5. INSTRUMENTOS TRADICIONALES VS. INSTRUMENTOS VIRTUALES.
Históricamente, en la instrumentación ha existido un enorme conflicto entre la rigidez de los instrumentos definidos por el vendedor y la flexibilidad y funcionalidad de los instrumentos definidos por el usuario. Una comparación entre los instrumentos tradicionales y los instrumentos virtuales se presenta en la tabla 1.1.
Tabla 1.1 Comparación entre un instrumento virtual y un instrumento tradicional.
INSTRUMENTOS TRADICIONALES
INSTRUMENTOS VIRTUALES
Definidos por el vendedor.
Definido por el usuario.
Funciones específicas, independiente,
Sistema orientado a la aplicación, conectividad
Conectividad limitada.
a redes de trabajo, periféricos, y aplicaciones.
Hardware es la clave.
Software es la clave.
Costoso.
Barato, reutilizable.
Cerrado, funcionalidad fija.
Abierto, funcionalidad flexible, escalable con tecnología computacional de uso común.
Lento avance tecnológico.
Rápido avance tecnológico.
(ciclo de vida 5 - 10 años)
(ciclo de vida 1-2 años)
Alto costo de mantenimiento y desarrollo.
Mínimo costo de mantenimiento y desarrollo.
Instituto Tecnológico de Chihuahua
12
Dr. Gerardo Trujillo Schiaffino
Capítulo I
Fundamentos de Instrumentación Virtual
1.6. HERRAMIENTAS DE PROGRAMACIÓN
En la Instrumentación Virtual es posible manejar un sinnúmero de opciones de programación para el desarrollo del software, estas opciones incluyen desde la más básica programación a bajo nivel (lenguaje ensamblador), hasta los más sofisticados ambientes de programación de alto nivel. Estos últimos se pueden clasificar en dos grandes grupos: la programación tradicional (secuencial o estructurada) representada por ambientes de desarrollo como BASIC, Pascal, C, C++, o hasta LabWindows/CVI; y la moderna programación gráfica representada por ambientes como LabVIEW, HPVEE o Génesis.
1.6.1. Programación Tradicional
La programación tradicional de alto nivel se refiere a los lenguajes tradicionalmente utilizados para el desarrollo de software, estos incluyen los lenguajes secuenciales (como Basic) y los lenguajes estructurados (como Pascal o C), existiendo para cada uno de ellos un sinnúmero de ambientes de desarrollo de diversos proveedores.
Sin embargo, aunque
existen librerías especializadas con funciones de instrumentación virtual para la mayoría de estos ambientes, resulta más práctico y conveniente utilizar alguno de los ambientes de desarrollo especializados para instrumentación virtual.
Un excelente ejemplo de programación para instrumentación virtual utilizando lenguajes tradicionales es LabWindows/CVI de National Instruments. Lab Windows/CVI es un ambiente de desarrollo de software interactivo para construir sistemas de instrumentación utilizando el estándar de programación ANSI C.
Instituto Tecnológico de Chihuahua
13
Dr. Gerardo Trujillo Schiaffino
Capítulo I
Fundamentos de Instrumentación Virtual
El objetivo de este ambiente es desarrollar las aplicaciones fácil y rápidamente. LabWindows/CVI combina el poder y la flexibilidad del lenguaje de programación C con herramientas y librerías de software para instrumentos específicos. Estas librerías incluyen GPIB, RS-232, VXI, DAQ, y análisis. La figura 1.8 muestra el ejemplo de la presentación de un programa fuente desarrollado en LabWindows/CVI.
Fig. 1.8. Programa fuente desarrollado en Lab Windows/CVI
LabWindows/CVI simplifica el diseño de interfaces de usuario, haciéndolas amigables y fáciles de diseñar. En ellas se pueden incluir gran variedad de controles (entradas de datos) o indicadores (salidas de
datos), tales como perillas, botones, interruptores, medidores,
gráficas, etc., por lo que el resultado final es un programa de aplicación versátil, flexible y poderoso. La figura 1.9 muestra una interfaz de usuario desarrollado en este ambiente.
Instituto Tecnológico de Chihuahua
14
Dr. Gerardo Trujillo Schiaffino
Capítulo I
Fundamentos de Instrumentación Virtual
Fig. 1.9. Interfaz de Usuario de un Programa en Lab Windows/CVI.
1.6.2. Programación Gráfica.
La programación gráfica, también conocida como programación por flujo de datos o lenguaje G, representa una novedosa alternativa para el desarrollo de software para instrumentación virtual
Un excelente ejemplo de programación gráfica lo constituye el ambiente de programación LabVIEW, también de National Instruments. El concepto de LabVIEW, un interfaz de usuario de panel frontal combinado con una innovadora metodología de programación por diagrama a bloques, es ideal para crear instrumentos virtuales. LabVIEW trabaja con todos los aspectos de que incluye un sistema de instrumentación: adquisición de datos, análisis de datos y presentación de datos. LabVIEW simplifica el desarrollo de los sistemas de instrumentación
Instituto Tecnológico de Chihuahua
15
Dr. Gerardo Trujillo Schiaffino
Capítulo I
Fundamentos de Instrumentación Virtual
En la programación gráfica, los programas son llamados Instrumentos Virtuales (VI) y están formados por tres partes principales: Panel Frontal. Diagrama a Bloques e IconoConector.
Los paneles frontales son un concepto tomado de la instrumentación tradicional, ya que corresponden al interfaz de usuario donde se representa el panel frontal físico de un instrumento, con la ventaja de que éste es realizado en software. Un beneficio adicional de utilizar el panel frontal en software, es que se pueden crear interfaces genéricos, independientemente del hardware que se utilice. Pero a diferencia de un panel físico, en un panel de software podemos representar sólo los parámetros de interés a nuestra aplicación particular. La figura 1.10 muestra el ejemplo de un panel frontal desarrollado en LabVIEW.
Fig. 1.10. Ejemplo de un Panel Frontal de LabVIEW.
Instituto Tecnológico de Chihuahua
16
Dr. Gerardo Trujillo Schiaffino
Capítulo I
Fundamentos de Instrumentación Virtual
LabVIEW permite crear paneles frontales amigables y de excelente presentación, dándole al interfaz de usuario una operabilidad intuitiva y sencilla. La programación a través de diagramas a bloque aproxima la programación a la utilización de los diagramas de flujo utilizados por muchos ingenieros y científicos, de hecho también se le conoce como programación por flujo de datos. La figura 1.11 muestra en ejemplo de un diagrama de flujo de LabVIEW. En diagrama a bloques está libre de muchos de los detalles sintácticos de los lenguajes de programación convencional, lo que permite construir los programas en menor tiempo.
Fig. 1.11 Ejemplo de un Diagrama a Bloques de LabVIEW.
Instituto Tecnológico de Chihuahua
17
Dr. Gerardo Trujillo Schiaffino
Capítulo I
Fundamentos de Instrumentación Virtual
El icono - conector es una poderosa herramienta que le permite a la programación gráfica trabajar con modularidad y jerarquía. El icono es la representación gráfica de un instrumento virtual, a través de la cual se puede representar a un instrumento virtual dentro de otro, utilizándolo como función o subrutina. El conector es la representación del icono que nos indica las terminales de conexión a través de las cuales podemos pasar los datos de entrada a un instrumento virtual y leer sus salidas cuando se utiliza dentro de otro instrumento virtual. El icono es la representación gráfica y el conector son las terminales de entrada y salida de un instrumento virtual para ser utilizado como sub-instrumento virtual. La figura 1.12 muestra un icono-conector.
Fig. 1.12. Ejemplo de un Icono y Conector.
Instituto Tecnológico de Chihuahua
18
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
CAPÍTULO II FUNDAMENTOS DE LABVIEW
2.1 AMBIENTE DE PROGRAMACIÓN GRÁFICA (LABVIEW).
LabVIEW es el acrónimo para Laboratory Virtual Instrument Engineering Workbench y representa en la actualidad una poderosa y flexible plataforma de desarrollo de software. LabVIEW se basa en el paradigma de la programación por flujo de datos, pero también puede ser aplicado bajo los paradigmas de programación por máquinas de estados, programación por eventos y programación orientada a objetos. En general, también se le conoce como lenguaje G por ser un lenguaje esencialmente gráfico.
Los programas en LabVIEW son llamados instrumentos virtuales (VIs). Cada VI contiene tres partes principales:
•
Panel frontal
•
Diagrama de bloque
•
Icono/Conector
El panel frontal, como el mostrado en la figura 2.1, es utilizado para interaccionar con el usuario cuando el programa está corriendo. El usuario puede controlar el programa, cambiar entradas, y ver datos actualizados en tiempo real.
Instituto Tecnológico de Chihuahua
19
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
Fig. 2.1. Panel frontal de un instrumento virtual
Cada control o indicador del panel frontal tiene una terminal correspondiente en el diagrama de bloques, como se muestra en la figura 2.2.
Fig. 2.2. Diagrama a bloques de un instrumento virtual
Instituto Tecnológico de Chihuahua
20
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
Cuando un VI se ejecuta, los valores de los controles fluyen a través del diagrama de bloques, en donde estos son usados en las funciones del diagrama, y los resultados son pasados a otras funciones o indicadores.
El tercer elemento del VI es su icono conector, tal como se muestra en la figura 2.3, este se encuentra localizado en la esquina superior derecha del panel frontal y del diagrama a bloques, su función es representar al VI cuando se utiliza como subVI (sub-programa) dentro otro VI y proporcionar las terminales de conexión adecuadas, pero esto será a tratado a detalle más delante.
Fig. 2.3. Icono - Conector de un instrumento virtual
2.1.1 Panel frontal.
El panel frontal es la interface del usuario con el VI. El panel frontal se construye con controles e indicadores, que son las entradas y salidas que interactúan con las terminales del VI, respectivamente. Los controles son usados como entradas, por ejemplo, ajustando controles de deslizamiento para colocar un valor de alarma, encendiendo o apagando un interruptor, o deteniendo un programa. Los controles son interruptores, botones, perillas, cajas de texto y otros componentes de entradas. Los controles simulan dispositivos de entrada de
Instituto Tecnológico de Chihuahua
21
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
equipos y suministra datos al diagrama de bloques del VI. Los indicadores son usados como salidas, por ejemplo, termómetros, luces, y otros indicadores indican valores del programa. Esto puede incluir datos, estados de programa y otra información.Los indicadores son las gráficas, luces y otros dispositivos. Los indicadores simulan salidas de instrumentos y suministra datos que el diagrama de bloques adquiere o genera.
Barra de herramientas del panel frontal
Icono
Control Booleano
Leyenda del gráfico
Gráfico de Forma de onda Leyenda de la escala
Leyenda de la gráfica
Fig. 2.4. Ejemplo de un panel frontal sencillo
La figura 2.4 muestra un ejemplo de panel frontal, en esta imagen, el interruptor de encendido es un control booleano. Un valor booleano contiene ambos un valor verdadero o falso. El valor es falso hasta que el interruptor se presione. Cuando el interruptor se presiona, el valor se convierte en verdadero. El indicador del historial de temperatura es una gráfica de forma de onda. Esta muestra valores múltiples. En este caso, la gráfica indica grados Fahrenheit vs. Tiempo (seg.).
Instituto Tecnológico de Chihuahua
22
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
El panel frontal también contiene una barra de herramientas, y sus funciones serán discutidas más delante.
2.1.2 Diagrama a bloques.
El diagrama de bloque contiene el código fuente grafico. Los objetos del panel frontal aparecen como terminales en el diagrama de bloque. Adicionalmente, el diagrama de bloque contiene funciones y estructuras incorporadas en las bibliotecas de LabVIEW VI. Los cables conectan cada uno de los nodos en el diagrama de bloques, incluyendo controles e indicadores de terminal, funciones y estructuras, estableciendo un flujo de datos que representa la lógica del programa. La figura 2.5 muestra un ejemplo de un diagrama de bloque.
Barra de herramientas del diagrama a bloques
Función de dividir
SubVI Terminal gráfica Cableado de datos
Estructura de ciclo While
Constante numérica
Función Retardo tiempo
Terminal de control booleano
Fig. 2.5. Ejemplo de un diagrama a bloques sencillo
Instituto Tecnológico de Chihuahua
23
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
En este diagrama de bloque, el subVI Temp llama a una subrutina, la cual obtiene una temperatura desde una tarjeta de adquisición de datos (DAQ). Esta temperatura es graficada junto con el valor promedio de la temperatura en la gráfica de forma de onda Temperature History. El interruptor de encendido (Power) es un control booleano en el panel frontal el cual va a detener la ejecución de la estructura de ciclo While. La estructura de ciclo While también contiene una función de tiempo para controlar que tan frecuentemente la estructura se repite.
Además de las terminales de controles e indicadores y funciones propias de LabVIEW, el diagrama puede contener sub-instrumentos virtuales (subVIs) que en realidad son programas independientes que fueron encapsulados para ser utilizados como funciones dentro de un programa principal, los subVIs pueden ser de dos tipos esenciales: subVIs exprés, o subVIs estándar.
2.1.2.1. SubVI exprés
A partir de LabVIEW 7.0 se introduce un nuevo tipo de sub-instrumento virtual llamado VIs exprés. Estos son VIs interactivos que tienen como medio de configuración una ventana de dialogo que permite al usuario personalizar la funcionalidad del VI exprés seleccionando los distintos parámetros y argumentos. LabVIEW entonces genera un subVI de funcionalidad específica basado en estos argumentos. La figura 2.6 muestra un ejemplo de un VI exprés con su ventana de configuración abierta.
Instituto Tecnológico de Chihuahua
24
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
Fig. 2.6. Ejemplo de un subVI exprés
Cuando se coloca por primera vez un subVI exprés en el diagrama a bloques de un programa de LabVIEW, su ventana de configuración se abre automáticamente para permitir la configuración inicial del subVI; una vez finalizada la configuración inicial el subVI se recompila quedando con la funcionalidad seleccionada. Si fuera necesario realizar cambios en la configuración de un subVI exprés, es necesario hacer un doble click sobre el subVI para abrir de nuevo la ventana de configuración.
Su rápida reconfiguración hace de estos sub-instrumentos una herramienta muy efectiva para economizar tiempo de desarrollo del programa, es conveniente recordar que uno de los propósitos principales de LabVIEW es precisamente el ahorrar tiempo en la implementación de los programas. Sin embargo, esta ventaja en velocidad de desarrollo se contrapone con la flexibilidad ya no es posible tener acceso el código interno de estos subVIs ni hacer cambios o modificaciones en funcionalidad fuera de las características configurables desde su ventana.
Instituto Tecnológico de Chihuahua
25
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
Una vez colocados en el diagrama a bloques los subVIs exprés se pueden reconocer por el recuadro azul cielo que rodea el icono del SubVI. Para efectos de ahorro de espacio en el diagrama este recuadro puede ser removido.
2.1.2.2. SubVI estándar
Por otro lado los sub-instrumentos estándar, que son un concepto clásico desde las primeras versiones de LabVIEW, son en realidad programas hechos en LabVIEW con su propio panel frontal y diagrama a bloques que son encapsulados dentro de un icono conector para ser usados adentro de otro VI. La figura 2.7 muestra un ejemplo de un VI estándar.
Fig. 2.7. Ejemplo de un subVI estándar
Estos sub-instrumentos no son tan rápidamente reconfigurables como los exprés, sin embargo haciendo doble click sobre su icono se abre la ventana de su panel frontal y se tiene acceso a su diagrama a bloques, el cual de ser necesario puede ser modificado.
Instituto Tecnológico de Chihuahua
26
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
Una vez colocados en el diagrama a bloques los subVIs estándar se pueden reconocer por el recuadro amarillo que rodea el icono del SubVI. Para efectos de ahorro de espacio en el diagrama este recuadro puede ser removido.
En secciones posteriores los subVIs estándar serán tratados a detalle.
2.1.2.3. Funciones
Las funciones son los bloques de construcción básicos de todos los VIs. Las funciones no tienen un panel frontal o un diagrama de bloque, fueron desarrollados en lenguaje C y constituyen las funciones primitivas de LabVIEW. La figura 2.8 muestra el ejemplo de una función aritmética de multiplicación.
Fig. 2.8. Ejemplo de una función
2.1.3 Paleta de controles.
La paleta de controles (Controls) se utiliza para colocar los controles e indicadores en el panel frontal. La paleta de controles está disponible solamente en el panel frontal.
Para acceder a la paleta de controles, seleccione View» Controls Palette en la barra de menú principal, esto activa de manera fija la paleta de controles o haga click derecho en el
Instituto Tecnológico de Chihuahua
27
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
espacio de trabajo en el panel frontal esto la activa de manera temporal. Para desaparecer la paleta de controles fija presione el botón de cerrar, característico de Windows, en la parte superior derecha de la paleta, para cerrar la paleta temporal haga click izquierdo sobre el panel o click derecho sobre la misma paleta de controles. Para fijar la paleta temporal haga click sobre el sujetador de la esquina superior izquierda.
a)
b)
Fig. 2.9. Paleta de controles a) fija, b) temporal.
En esta paleta los controles e indicadores están agrupados de acuerdo al tipo de variable o aplicación correspondiente: controles e indicadores numéricos, controles e indicadores booleanos, controles e indicadores de texto, indicadores de gráficos, entradas / salidas, etc. También es tan clasificados en diferentes categorías como modernos, de sistema, clásicos, exprés, .NET & ActiveX o selección del usuario.
Instituto Tecnológico de Chihuahua
28
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
Las distintas categorías contienen un sin número de grupos de controles e indicadores diferentes en funcionalidad o en presentación.
Aunque por default cuando se llama a la paleta de funciones aparece seleccionada la categoría de controles e indicadores modernos, es posible cambiar esta selección y utilizar los elementos de cualquier otra categoría, e incluso es posible activarlas todas para mostrar simultáneamente todos los grupos y tipos de controles disponibles tal como se muestra en la figura 2.10. Para lograr esto se parte de la paleta fija y se van seleccionado una a una las distintas categorías. Si esto mismo se intenta con la paleta temporal, solo se podrá tener acceso a una categoría a la vez.
Fig. 2.10. Despliegue simultáneo de todas las categorías de controles e indicadores en la paleta de controles.
Instituto Tecnológico de Chihuahua
29
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
Para colocar un control o indicador en el panel primero se selecciona la categoría, luego el grupo y finalmente el elemento deseado, el cual se arrastra y se coloca en la posición que tendrá sobre el panel. La figura 2.11 muestra el ejemplo de colocación de un control numérico tipo dial sobre el panel frontal
1) click
3) Arrastre
4) click
2) click
Fig. 2.11. Colocación de un control sobre el panel frontal.
2.1.4 Paleta de Funciones.
La paleta de funciones (Functions), se utiliza para construir un diagrama de bloque. La paleta de funciones está disponible solamente en el diagrama de bloque. Seleccione View» Functions Palette en la barra de menú esto activa de manera fija la paleta de funciones o haga click derecho en el espacio de trabajo del diagrama esto la activa de manera temporal. Para desaparecer la paleta de funciones fija presione el botón de cerrar, característico de
Instituto Tecnológico de Chihuahua
30
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
Windows, en la parte superior derecha de la paleta, para cerrar la paleta temporal haga click izquierdo sobre el diagrama o click derecho sobre la misma paleta de controles. Para fijar la paleta temporal haga click sobre el sujetador de la esquina superior izquierda.
a)
b)
Fig. 2.11. Paleta de funciones a) fija, b) temporal.
Al igual que en la paleta de controles, en la paleta de funciones, estas están ordenadas en grupos dentro de diferentes categorías: programación, instrumentos de entrada/salida, visión y movimiento, matemáticas, procesamiento de señales, comunicación de datos, conectividad y exprés.
Instituto Tecnológico de Chihuahua
31
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
Esta paleta opera de manera muy similar a la paleta de controles del panel, tanto en su forma fija como temporal.
La figura 2.12 muestra el ejemplo de la colocación de una función numérica de generación de un número aleatorio en el diagrama a bloques.
3) Arrastre
4) click
1) click
2) click
Fig. 2.12. Colocación de una función sobre el diagrama a bloques.
2.1.5. Paleta de Herramientas.
Por ser LabVIEW un lenguaje gráfico, la mayor parte del manejo del ambiente de programación se hace a través del ratón o dispositivo de señalización de la computadora, esto
Instituto Tecnológico de Chihuahua
32
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
implica entonces la necesidad poder cambiar la funcionalidad del apuntador para ejecutar tareas muy diversas.
La paleta de herramientas es una paleta flotante que permite cambiar la funcionalidad del cursor. Esta paleta contiene herramientas de edición y depuración Generalmente se encuentra activada por default, sin embargo, de no ser así se le puede activar manualmente seleccionando Window»Show Tools Palette en la barra de menú principal. Para desaparecer la paleta de funciones presione el botón de cerrar, característico de Windows, en la parte superior derecha de la paleta. Esta paleta permite seleccionar entre 11 herramientas diferentes. La figura 2.13 muestra la apariencia que tiene la paleta de herramientas.
Fig. 2.12. Paleta estándar de herramientas
2.1.5.1. Herramienta automática
Si la herramienta de selección automática está habilitada y usted mueve el cursor sobre un objeto en el panel frontal o en el diagrama de bloque, LabVIEW automáticamente selecciona la herramienta correspondiente de la paleta de controles. Cambie a la herramienta de selección automática tecleando el botón de Selección de Herramienta Automática en la paleta de Herramientas.
Instituto Tecnológico de Chihuahua
33
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
2.1.5.2. Herramienta de operación
Utilice la herramienta de operación para cambiar valores o para seleccionar texto de un control.
2.1.5.3. Herramienta de posición / selección
Utilice la herramienta de posicionamiento para seleccionar, mover o redimensionar objetos. La herramienta de posicionamiento cambia las formas cuando se mueve sobre una esquina de un objeto reajustable permitiendo cambiar su tamaño.
2.1.5.4. Herramienta de Etiquetado
Utilice la herramienta de etiquetado para editar textos y crear etiquetas libres. La herramienta de etiquetado se convierte en cursor cuando usted crea etiquetas libres.
2.1.5.5. Herramienta de cableado
Utilice la herramienta de cableado
para cablear objetos juntos en el diagrama de
bloque y establecer el flujo de los datos en el programa.
Instituto Tecnológico de Chihuahua
34
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
2.1.5.6. Herramienta de menú
Utilice la herramienta de menú emergente para acceder a los menús emergentes de los objetos colocados en el panel frontal o en el diagrama de bloque, para modificar sus configuraciones.
2.1.5.7. Herramienta de arrastre
Utilice la herramienta de arrastre para mover todo el panel frontal o diagrama de bloque.
2.1.5.8. Herramienta de punto de paro
Utilice la herramienta de punto de quiebre para colocar puntos de quiebre a lo largo del diagrama de bloque y detener momentáneamente la ejecución del programa con el fin de depurar el programa.
2.1.5.9. Herramienta de punto de prueba
Utilice la herramienta de punto de prueba para colocar puntos de prueba a lo largo del diagrama de bloque y observar los valores correspondientes durante la ejecución del programa con el fin de depurar el programa.
Instituto Tecnológico de Chihuahua
35
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
2.1.5.10. Herramienta de muestra de color
Utilice la herramienta de muestra de color para obtener una muestra (copia) del color de un objeto.
2.1.5.11. Herramienta de colorear
Utilice la herramienta de colorear para cambiar el color de un objeto.
2.1.6. Barra de Herramientas.
La barra de herramientas es una barra fija que contiene herramientas de ejecución, y cosméticas, se encuentra tanto en el panel frontal como en el diagrama de bloque, ambas presentan casi las mismas herramientas salvo una herramienta cosmética que solo aparece en el panel frontal y cuatro herramienta de depuración que solo aparecen en el diagrama de bloque. La figura 2.13 muestra las barras de herramientas del a) panel frontal y b) diagrama de bloque.
a)
b)
Fig. 2.13. Barra de herramientas del a) panel frontal, b) diagrama de bloque
Instituto Tecnológico de Chihuahua
36
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
2.1.6.1. Botón de ejecución
Pulse el botón de ejecución (Run) para ejecutar el VI. Mientras el VI se está ejecutando, el botón de ejecución aparecerá con una flecha negra si es que el VI es un VI principal, lo que significa que no ha sido llamado por otro VI y por lo tanto este no es un subVI.
2.1.6.2. Botón de ejecución continúa
Pulse el botón de ejecución continua (Continuous Run) para ejecutar el VI hasta que el botón de cancelación de ejecución o de pausa sea presionado. Usted también puede pulsar este botón nuevamente para deshabilitar la ejecución continua.
2.1.6.3. Botón de cancelación
Mientras el VI se está ejecutando, El botón de cancelación de ejecución (Abort Execution) aparece. Presione este botón para detener el VI inmediatamente.
NOTA: Evite usar el botón de cancelación de ejecución (Abort Execution) como método ordinario para detener la ejecución de un VI ya finalizado, pues la acción de cancelación aborta el programa dondequiera que este se encuentre, pudiendo dejar registro, archivos o puertos abiertos. Ya sea que deje que el VI complete su flujo de datos o diseñe un método para detener el VI programáticamente. Al hacer esto el VI se encuentra en un estado conocido. Por ejemplo, coloque un botón en el panel frontal que detenga el VI cuando sea presionado.
Instituto Tecnológico de Chihuahua
37
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
2.1.6.4. Botón de pausa
Pulse el botón de pausa (Pause) para detener momentáneamente la ejecución de un VI. Cuando usted presiona el botón de Pausa, LabVIEW señala la posición donde usted detuvo la ejecución en el diagrama de bloque. Pulse el botón de Pausa nuevamente para que el VI continúe ejecutándose.
2.1.6.5. Menú de configuración de textos
Seleccione el menú Configuración de Textos (Text Settings) para cambiar el tipo de fuente (letra) del VI, incluyendo el tamaño, estilo y color.
2.1.6.6. Menú de alineación de objetos
Seleccione el menú Alineación de Objetos (Align Objects) para alinear objetos con respecto a los ejes, incluyendo eje vertical, superior, izquierdo, etc.
2.1.6.7. Menú de distribución de objetos
Seleccione el menú Distribución de Objetos (Distribute Objects) para espaciar objetos uniformemente, incluyendo espacios vacíos, compresiones, etc.
Instituto Tecnológico de Chihuahua
38
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
2.1.6.8. Menú de redimensionamiento
Seleccione el Redimensionamiento de Objetos (Resize Objects) para cambiar el ancho y alto de objetos del panel frontal. Este menú solo está disponible en el panel frontal
2.1.6.9. Menú de reordenamiento
Seleccione el menú Reordenamiento (Reorder) cuando tenga objetos superpuestos unos con otros y usted quiera definir cual está enfrente de quien y cual atrás. Seleccione uno de los objetos con la herramienta de posicionamiento y seleccione entre Move Forward (mover hacia adelante), Move Backward (mover hacia atrás), Move to Front (mover al frente) y Move to Back (mover hacia atrás).
NOTA: Los siguientes botones solo están disponibles en la barra de herramientas del diagrama de bloque.
2.1.6.10. Botón de ejecución resaltada
Pulse en el botón de ejecución resaltada (Highlight Execution) para ver el flujo de información en el diagrama de bloques. Pulse el botón nuevamente para detener este tipo de ejecución resaltada.
Instituto Tecnológico de Chihuahua
39
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
2.1.6.11. Botón de entrada al ciclo
Pulse el botón de entrada al ciclo (Step Into) para entrar un paso adentro de un ciclo, un SubVI, etc. Entrando un paso a la vez adentro de un VI le permite introducirse en la VI nodo a nodo. Cada nodo se resalta para señalar cuando está listo para ejecutarse. Al entrar un paso adentro de un nodo usted está listo para caminar paso a paso adentro del nodo.
2.1.6.12. Botón de saltar ciclo
Pulse el botón de saltar ciclo (Step Over) para posicionarse encima de un ciclo, un SubVI, etc. Al posicionarse encima del nodo, usted ejecuta el nodo sin entrar paso a paso adentro del nodo.
2.1.6.13. Botón de salida del ciclo
Pulse el botón de Salida del ciclo (Step Over) para salirse de un ciclo, SubVI, etc. Al posicionarse fuera del nodo, usted completa la ejecución de un nodo y puede moverse al siguiente nodo.
2.2 PARADIGMA DE PROGRAMACION POR FLUJO DE DATOS.
Como se ha mencionado con anterioridad, LabVIEW se basa en un nuevo paradigma: la programación por flujo de datos; este concepto es tan antiguo y tradicional en la enseñanza
Instituto Tecnológico de Chihuahua
40
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
de los principios básicos de la programación que resulta innovador al ser aplicado directamente como un lenguaje.
Generalmente, en cualquier curso inicial de programación, lo primero que se enseña es la elaboración de un diagrama de flujo para representar la lógica de nuestro programa, de ahí se sigue una secuencia de pasos hasta implementación del programa en algún lenguaje de programación. LabVIEW es un compilador gráfico en el cual se construye un diagrama con el flujo de los datos del programa que se quiere desarrollar y listo, este diagrama que representa nuestro lenguaje de programación se compila para ser ejecutado.
A continuación se describen los aspectos fundamentales sobre este paradigma de programación.
2.2.1 Creación de un Instrumento Virtual
Cuando se coloca un objeto en el panel frontal, una terminal es creada en el diagrama de bloques. Estas terminales le dan acceso a los objetos del panel frontal del código creado mediante el diagrama de bloque.
Cada terminal contiene información útil referente al objeto al cual corresponde en el panel frontal. Por ejemplo, el color y los símbolos proporcionan el tipo de dato: las variables numéricas de punto flotante son representados con terminales anaranjadas y las letras DBL, SGL o EXT (doble precisión, precisión sencilla o precisión extendida); las variables numéricas enteras tienen terminales azules y las letras I8, I16, I32, U8, U16, U32 (enteros de 8,16 y 32 bits o enteros sin signo del 8,16 y 32 bits respectivamente); las variables booleanas tienen
Instituto Tecnológico de Chihuahua
41
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
terminales verdes y son representadas por las letras TF (true/false); las variables string (cadenas de caracteres) tienen terminales de color rosa y las letras ABC.
En general, las terminales anaranjadas deben unirse (cablearse) con las terminales anaranjadas, verdes con verdes, y así sucesivamente. Pero, esta no es una regla que no se puede romper; por ejemplo LabVIEW permitirá al usuario conectar una terminal azul (valor entero) a una terminal anaranjada (valor fraccional) o viceversa. Pero en la mayoría de casos, busque mejor una igualdad en colores.
Los controles tienen una flecha en el lado derecho y tienen un borde grueso. Los indicadores tienen una flecha en el lado izquierdo y un borde fino. Reglas lógicas pueden ser aplicadas al conectar en LabVIEW: Cada cable debe tener una (pero solo una) fuente (o control), y cada cable puede tener varios destinos (o indicadores). El programa mostrado en la figura 2.14 toma datos de los controles A y B y pasa valores a una función de adición y a una función de resta. Los resultados son mostrados en los indicadores A+B y A-B respectivamente.
a)
b)
Fig. 2.14. Ejemplo de un instrumento virtual, a) panel frontal, b) diagrama de bloque
Instituto Tecnológico de Chihuahua
42
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
2.2.2 Cableado de funciones en el diagrama a bloques
Además de los terminales del panel frontal, el diagrama de bloques contiene funciones. Cada función puede tener múltiples terminales de entradas y salidas. La conexión de estas terminales es una parte muy importante de la programación en LabVIEW.
Una vez que se tenga cierta experiencia programado en LabVIEW, la conexión de cables se le hará más fácil. Primero puede que necesite ayuda. En seguida se le muestra algunas recomendaciones para comenzar:
La herramienta para conectar o de cableado es utilizada para conectarse a los nodos de las funciones. Cuando “apunte” con la herramienta de cableado, apunte con el extremo del cable que cuelga del carrete. Aquí es donde el cable será colocado. La figura 2.15 muestra el punto sensible de la herramienta de cableado.
Fig. 2.15. Punto sensible de la herramienta de cableado
Mientras se mueve la herramienta de cableado sobre las funciones, observe la viñeta amarilla que aparece. Esto le dirá el nombre de la terminal al que se está conectando. Mientras se mueva la herramienta de cableado encima de una terminal, esta va a mostrar información. Esto le ayudara a identificar donde se va a unir el cable. La figura 2.16 muestra un ejemplo de este tipo de identificación de terminales.
Instituto Tecnológico de Chihuahua
43
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
Fig. 2.16. Identificación de terminales
Para más ayuda con los terminales, haga click derecho en la función y seleccione Visible Items >>Terminals. Un dibujo de la función será colocada atrás para revelar las terminales de la conexión. Note los colores - estos corresponden a los tipos de datos utilizados por los terminales del panel frontal. La figura 2.17 muestra un ejemplo al respecto.
Fig. 2.17. Opción para mostrar terminales
LabVIEW cablea automáticamente los objetos a medida que usted los coloca en el diagrama de bloque. También puede cablear automáticamente objetos que ya están colocados en el diagrama de bloque. LabVIEW conecta la terminal que mejor combina (match) y deja las terminales que no combinan (match) sin conectar. A medida que usted mueve un objeto seleccionado cerca de otros objetos en el diagrama de bloque, LabVIEW dibuja cables temporales para mostrarle conexiones validas. Cuando usted suelta el botón del ratón para poner el objeto en el diagrama de bloque, LabVIEW conecta automáticamente los cables.
Instituto Tecnológico de Chihuahua
44
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
Fig. 2.18. Cableado de objetos en el diagrama de bloque
Cambie al cableado automático presionando el espaciador (spacebar) mientras mueve un objeto utilizando la herramienta de posicionamiento (Positioning tool). Puede ajustarlas opciones del cableado automático seleccionando Tools >> Options y seleccionando Block Diagram de el menú superior principal.
No se preocupe por el color de los cables. LabVIEW seleccionará automáticamente el cable correcto y adecuado para cada situación.
Fig. 2.19. Opción de limpieza de cables
Instituto Tecnológico de Chihuahua
45
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
Si el cableado no se mira muy bien, haga click derecho en el cable que se desea arreglar y escoja la opción de Clean Up Wire (Limpieza del Cable) para que automáticamente el cable haga su ruta de nuevo.
El cableado es muy flexible en LabVIEW. Experimente con combinaciones de clicks y/o teclas cuando este cableando. Aquí hay algunas de las características más a menudo utilizadas.
Fig. 2.20. Selección de cables
El hacer un simple, doble, y triple click en el cable selecciona el cable para moverlo o para borrarlo, tal como se muestra en la figura 2.20. El hacer un click mientras se está cableando hace un doblez en el cable. Haciendo click derecho o presionando el botón Esc mientras se está cableando cancela la operación de cableado.
2.2.3 Programación por Flujo de Datos
LabVIEW sigue un modelo de flujo de datos para correr los VIs. Un nodo del diagrama de bloque se ejecuta cuando todas sus entradas están disponibles. Cuando un nodo completa la ejecución, suministra datos a sus terminales de salida y pasa los datos de salida al siguiente
Instituto Tecnológico de Chihuahua
46
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
nodo en la trayectoria del flujo de datos. Visual Basic, C++, JAVA y otros lenguajes de programación basados en texto, siguen un modelo de control de flujo de la ejecución de un programa. En flujo de control, el orden secuencial de los elementos del programa determina el orden de ejecución de un programa.
Considere el diagrama de bloque que se muestra en la figura 2.21. Este suma dos números y luego resta 50 del resultado de la suma. En este caso, el diagrama de bloque se ejecuta de izquierda a derecha, no porque los objetos están puestos en ese orden, sino porque una de las entradas de la función de resta no es válida hasta que la función de suma o adición haya terminado su ejecución y pasado los datos a la función de resta. Recuerde que un nodo se ejecuta solamente cuando tiene datos disponibles en todas sus terminales de entrada, y suministra datos a sus terminales de salidas solamente cuando termina su ejecución.
Fig. 2.21. Ejemplo de código dependiente
En el código de la figura 2.22, considere cual segmento del código se ejecutara primero---la suma, el número aleatorio, o la función de división. No se puede saber porque las entradas a las funciones de suma y división están disponibles al mismo tiempo, y la función de número aleatorio no tiene entradas. En una situación en donde un segmento del código se debe ejecutar antes que otro, y no existe dependencia de datos entre las funciones, utilice una estructura de Secuencia para forzar el orden de la ejecución.
Instituto Tecnológico de Chihuahua
47
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
Fig. 2.22. Ejemplo de código independiente
2.3. OPCIONES DE AYUDA
Utilice la ventana de Context Help (Ayuda Contextual) y LabVIEW Help (Ayuda de LabVIEW) para ayudarle a construir o editar los VIs. Refiérase a la ayuda de LabVIEW y a los manuales para más información.
2.3.1. Ventana de Ayuda Contextual (Context Help Window)
Para desplegar la ventana de Context Help, seleccione Help>>Show Context Help o presione las teclas . Cuando mueva el cursor sobre el panel frontal y los objetos del diagrama de bloque, la ventana de Context Help despliega el icono de los subVIs, funciones, constantes, controles e indicadores, con cables adjuntos a cada una de sus terminales. Cuando mueva el cursor sobre la caja de opciones de dialogo, la ventana de Context Help despliega descripciones de esas opciones. En la ventana, las conexiones requeridas están en
Instituto Tecnológico de Chihuahua
48
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
negrilla, las conexiones recomendadas en texto normal, y las conexiones opcionales están poco claras o no aparecen. La figura 2.23 presenta un ejemplo de la ventana de Context Help.
Ayuda en línea Congelar Ayuda Ayuda del Diagrama Simple/Complejo
Referencias en Línea Fig. 2.23. Ejemplo de ventana de ayuda contextual
Haga un click en el botón de Simple/Detailed Context Help localizado en la esquina inferior izquierda de la ventana de Context Help para distinguir entre la ayuda contextual simple y detallada. El modo simple enfatiza las conexiones importantes. Las terminales opcionales son mostradas por segmentos de cables, informándole de la existencia de otras conexiones.
Haga click en el botón de Lock Context Help para congelar el contenido actual de la ventana de la Context Help. Cuando los contenidos están congelados, el mover el cursor sobre otros objetos no cambia los contenidos de la ventana. Para descongelar la ventana, haga click nuevamente en el botón. Usted también puede tener acceso a esta opción desde el menú de ayuda (Help).
Haga click en el botón de More Help (mas ayuda) para desplegar el tema correspondiente en LabVIEW Help, el cual describe el objeto en forma detallada.
Instituto Tecnológico de Chihuahua
49
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
2.3.2. Ayuda de LabVIEW
Puede acceder a LabVIEW Help ya sea haciendo click en el botón de More Help en la ventana de Context Help, seleccionando Help»VI, Function, & How-To Help, haciendo click en la oración Click here for more help en la ventana de Context Help o presionando .
Fig. 2.24. Ejemplo de ventana de ayuda de LabVIEW
Instituto Tecnológico de Chihuahua
50
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
La ayuda LabVIEW Help contiene descripciones detalladas de casi todos los menús, herramientas, VIs y funciones. También incluye instrucciones paso-a-paso para la utilización de muchas características de LabVIEW y enlaces al Tutorial de LabVIEW, versiones en PDF de todos los manuales y Notas de Aplicación de LabVIEW, además de recursos de soporte técnico en el sitio web de National Instruments (www.ni.com).
2.3.3. Atajos en LabVIEW
LabVIEW tiene muchas teclas de atajo que hacen el trabajo más fácil.
Mientras que la Herramienta de Selección Automática (Automatic Selection Tool) es muy útil para escoger la herramienta que usted desearía utilizar en LabVIEW, a veces hay casos cuando usted desea controles manuales. Utilice la tecla Tab para cambiar entre las cuatro herramientas más comunes Operate Value (valor de operación), Position/Size/Select, (Posición/Tamaño/Selección), Edit Text (editar texto), Set Color on Front Panel (establecer color en panel frontal), Connect wire on Block Diagram (conectar cable en el diagrama de bloque). Una vez que se ha terminado con la selección de herramientas, puede presionar para activar la Herramienta de Selección Automática.
En el dialogo de Tools >> Options… , hay muchas opciones configurables para el Panel Frontal, Diagrama de Bloque, Colores, Impresión y mucho mas.
Similar a las opciones de LabVIEW, se pueden configurar propiedades especificas del VI al ir a File >> VI Properties… Ahí se puede documentar el VI, cambiar la apariencia de la ventana, y personalizarlos de varias maneras.
Instituto Tecnológico de Chihuahua
51
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
2.4. TÉCNICAS PARA DEPURACIÓN DE ERRORES.
Cuando el VI contiene errores de sintaxis y por lo tanto no es posible ejecutarlo, se despliega una flecha quebrada en el botón de correr en la paleta de herramientas.
2.4.1. Lista de errores
Para hacer una lista de los errores, haga click en la flecha quebrada. Para localizar el objeto malo, haga click en el mensaje del error.
Fig. 2.24. Lista de errores
Instituto Tecnológico de Chihuahua
52
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
2.4.2. Ejecución resaltada:
Usar la herramienta de ejecución resaltada anima el diagrama y traza el flujo de datos, permitiéndole ver además los valores intermedios que circulan por cada cable. Para activar esta herramienta simplemente haga click en el bombillo incandescente (light bulb) en la barra de herramientas
Fig. 2.25. Ejecución resaltada
2.4.3. Ventanas de prueba (Probe):
Las ventanas de prueba son utilizadas para ver los valores en cualquier cable del diagrama de bloque. Para activar estas ventanas haga click en el cable que quiera visualizar con la herramienta Probe o si lo prefiere simplemente haga click derecho en el cable para seleccionar Probe.
Instituto Tecnológico de Chihuahua
53
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
Fig. 2.26. Puntos de prueba
2.4.4. Punto de Paro (Breakpoint):
Coloca pausas en diferentes lugares del diagrama. Haga click en los cables o en los objetos con la herramienta de Punto de Paro para colocar los puntos de paro. El punto de quiebre quedará resaltado con un marco color rojo.
Fig. 2.27. Punto de quiebre
Instituto Tecnológico de Chihuahua
54
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
2.5. DOCUMENTACIÓN DEL VI.
Al abrir VI’s properties (propiedades del VI) un desarrollador puede añadir documentación a su VI. La documentación colocada en el Description field (espacio para la descripción) de la ventana Documentation (documentación) del VI es mostrada en Context Help (ayuda en contexto), y se imprime con el VI.
Si un usuario tiene una aplicación que está siendo desarrollada continuamente, se puede seguir los cambios en el desarrollo con Revision History (historial de revisiones), también encontrado en VI Properties.
Cualquier control o indicador en el Panel Frontal puede ser documentado al hacer click derecho con el ratón y elegir Description and Tip… (Descripción y sugerencia…) La información de descripción aparece en el menú Context Help (ayuda en contexto) cuando un usuario pasa el cursor sobre el objeto, y la información de sugerencia es mostrada en una pequeña ventana pegada al cursor cuando el usuario pausa el movimiento del cursor sobre el objeto.
Al igual que los comentarios en un lenguaje basado en texto, el desarrollador podría querer explicar una porción de su código, o proveer direcciones en el panel de frontal. Cualquiera de estas necesidades puede ser cumplida al usar la herramienta de etiquetado (labeling tool) para crear una caja de texto libre con tantas instrucciones o explicaciones como sean necesarias.
Instituto Tecnológico de Chihuahua
55
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
2.6. SUB-INSTRUMENTOS VIRTUALES (SubVI).
Después de haber construido un VI, y creado su propio icono y panel de conexión, este puede ser utilizado en otro VI. Un VI dentro de otro VI se llama un subVI. Un subVI corresponde a una subrutina en lenguajes de programación basados en texto. La utilización de subVIs le ayuda a manejar cambios y a eliminar errores del diagrama de bloque rápidamente.
2.6.1 Conceptos Básicos
Los sub-instrumentos virtuales (subVI), son en realidad VIs que se utilizan dentro de otros VIs como funciones o subrutinas, por lo tanto tienen sus propios panel frontal y diagrama de bloque, los cuales se pueden acceder haciendo doble click sobre el icono del subVI.
Fig. 2.28. Sub-instrumento virtual
Instituto Tecnológico de Chihuahua
56
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
Así como en las terminales de control o de indicador en el diagrama de bloque pueden ser vistos como un icono o como una simple terminal, los subVIs pueden ser vistos como un icono, un nodo expandible o un nodo expandido. Las diferentes vistas dependen en la preferencia del usuario y no cambia la funcionalidad del subVI. En sus modos expandible y expendido el campo amarillo designa un VI estándar para diferenciarlo de los VI Express que presentan un campo azul. Icono
Nodo Expandible
Nodo Expandido
Fig. 2.29. Presentaciones de un sub-VI
Cada VI muestra un icono, mostrado arriba, en la esquina superior derecha de las ventanas del panel frontal y del diagrama de bloque. Un icono es una representación gráfica de un VI. Puede contener texto, imágenes, o una combinación de ambos. Si usted utiliza un VI como subVI, el icono identifica el subVI en el diagrama de bloque del VI.
El conector muestra terminales disponibles para la transferencia de datos hacia y desde el subVI. Hay varios patrones de conectores para elegir. Haga un click derecho sobre el conector y seleccione el patrón del menú de patrones. A partir de ahí usted puede asignar controles e indicadores en el panel frontal al conector terminal, como veremos más adelante.
Instituto Tecnológico de Chihuahua
57
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
Icono
Conector Fig. 2.30. Icono conector
2.6.2 Creación de subVIs
Como se mencionó con anterioridad un subVI es en realidad un VI empaquetado o encapsulado que se puede utilizar dentro de otro VI. Para convertir un VI en subVI se siguen tres sencillos pasos:
1) diseñar un icono 2) crear el conector 3) asignar terminales.
2.6.2.1. Diseño del Icono.
Para crear iconos personalizados para reemplazar los iconos predeterminados se hace click derecho en la esquina superior derecha del panel frontal o del diagrama de bloques y se selecciona Edit Icon del menú de atajo o bien haciendo un doble click en el icono en la
Instituto Tecnológico de Chihuahua
58
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
esquina superior derecha del panel frontal. También se puede corregir iconos seleccionando File >> VI Properties, seleccionando General del menú Category, y haciendo click en el botón de editar (Edit Icon). Utilice las herramientas del lado izquierdo de la casilla de dialogo del Icon Editor para crear el diseño del icono en el área de edición. El tamaño normal de la imagen del icono aparece en la casilla apropiada en la parte derecha del área de edición.
Fig. 2.31. Editor de Iconos
También se puede arrastrar un gráfico desde cualquier archivo y colocarlo
en la
esquina superior derecha del panel frontal o del diagrama de bloque. LabVIEW convierte el gráfico a un icono de 32 × 32 píxeles.
2.6.2.2. Creación del Conector
Para utilizar un VI como un subVI, usted necesita crear un conector. El conector es una serie de terminales que corresponden a los controles y a los indicadores de ese VI, similar a la
Instituto Tecnológico de Chihuahua
59
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
lista de parámetros de una función basada en un lenguaje de programación de texto. El conector define las entradas y las salidas que usted puede cablear al VI para que pueda utilizarlo como subVI.
Defina las conexiones asignando un control del panel frontal o un indicador a cada una de las terminales del conector. Para definir un conector, de un click derecho sobre el icono en la esquina superior derecha de la ventana del panel frontal y seleccione Show Connector del menú. El conector substituye el icono. Cada rectángulo en el conector representa una terminal. Utilice los rectángulos para asignar entradas y salidas.
El número de terminales que LabVIEW muestra en el conector depende del número de controles e indicadores en el panel frontal. Para el panel frontal mostrado en la figura 2.32, el cual tiene cuatro controles y un indicador, LabVIEW mostrara cuatro terminales de entradas y una terminal de salida en el conector.
Fig. 2.32. Creación de conector
Instituto Tecnológico de Chihuahua
60
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
2.6.2.3. Asignación de terminales
Después que seleccione un patrón para utilizar en su conector, debe definir las conexiones asignando un control del panel frontal o indicador a cada uno de los terminales del conector. Cuando usted hace vínculos entre controles e indicadores y el conector, coloque las entradas en la izquierda y las salidas a la derecha para evitar patrones complicados y poco claros en su VI. Para asignar una terminal a un control de panel frontal o indicador, presione una terminal del conector. Presione el control del panel frontal o indicador que usted desea asignar a la terminal. Haga click en un área abierta del panel frontal. La terminal cambia al color del tipo de datos del control para indicar que usted conectó la terminal. Usted también puede seleccionar el control o el indicador primeramente y después seleccionar la terminal.
Fig. 2.33. Asignación de terminales
Asegurase que salvó el VI después de haber hecho las asignaciones de las terminales.
Instituto Tecnológico de Chihuahua
61
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
2.6.3 Librerías de SubVIs
Hay varias maneras de organizar sus subVIs. La manera más común es organizarlos por aplicación. En este caso, son salvados en el mismo directorio o dentro de un archivo de librería de VI todos los VI’s para una aplicación en particular. Salvarlos en un archivo de librería permite que usted transporte una aplicación entera dentro de un solo archivo. Salvar dentro de una librería es simple. Después de presionar Save As… (guardar como), presione New VI Library (nueva librería de VI). Esto permitirá que usted nombre la librería, y entonces salvar su VI en él. Para agregar VI subsecuentes, simplemente haga un doble click al archivo .llb de la ventana estándar de Salvar, y dar un nombre al VI.
2.6.4 Uso de los subVIs
Después de construir un VI y crear su icono y conector, usted puede utilizarlo como un subVI. Para colocar un subVI en el diagrama de bloque, seleccione Functions>> Select VI., tal y como se muestra en la figura 2.34, luego navegue y haga un doble-click en el VI que usted desea utilizar como subVI y colóquelo en el diagrama de bloques.
También puede colocar un VI abierto en el diagrama de bloque de otro VI abierto usando la herramienta de colocación (Positioning Tool) para hacer click en el icono en la esquina superior derecha del panel frontal o diagrama de bloque del VI que usted desea utilizar como subVI y arrastrar el icono al diagrama de bloque del otro VI.
Instituto Tecnológico de Chihuahua
62
Dr. Gerardo Trujillo Schiaffino
Capítulo II
Fundamentos de LabVIEW
Seleccionar
Fig. 2.34. Acceso a los subVIs en la paleta de funciones
Instituto Tecnológico de Chihuahua
63
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
CAPÍTULO III ESTRUCTURAS DE PROGRAMACIÓN
3. ESTRUCTURAS DE PROGRAMACION.
LabVIEW, como cualquier otro lenguaje de programación, contiene estructuras de programación como ciclos While, ciclos For, estructuras Case, y estructuras de Secuencias entre otras. El uso correcto de todas estas estructuras de programación permite desarrollar un mejor control en la programación del flujo de los datos. Para tener acceso a todas las estructuras de programación se debe seleccionar en la paleta de funciones la sub-paleta Programming y luego seleccionar la sub-paleta Structures como se muestra en la Figura 3.1.
click
Fig. 3.1. Acceso a las estructuras en la paleta de funciones
Instituto Tecnológico de Chihuahua
64
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
3.1 CICLO WHILE.
El ciclo While es similar al ciclo Do o al ciclo Repeat-Until en lenguajes de programación basados en texto, un ciclo While, como el mostrado en la figura 3.2, ejecuta el código contenido dentro de este hasta que una cierta condición sea cumplida, es decir, el ciclo While ejecuta el código de manera repetida hasta que la terminal del control del condicional, recibe un valor booleano específico.
El comportamiento y la apariencia de la terminal de control condicional de iteraciones puede ser Continue if True (continúe si es verdadero), que es el valor por default, o Stop if True (deténgase si es verdadero). Cuando el control condicional de iteraciones es Continue if True, el ciclo While ejecuta repetidamente su sub-diagrama hasta que la terminal recibe un valor falso. Cuando el control condicional de iteraciones es Stop if True, el ciclo While ejecuta repetidamente su sub-diagrama hasta que la terminal recibe un valor verdadero.
La terminal del contador de iteraciones i, mostrada en la esquina inferior izquierda del ciclo, contiene el número de iteraciones completas que se han realizado. El contador de iteraciones siempre empieza en 0 durante la primera iteración. Túnel
Control del Condicional de Iteraciones Contador de Iteraciones
Fig. 3.2. Estructura de ciclo While.
Instituto Tecnológico de Chihuahua
65
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
Cuando un valor entra o sale de la estructura de ciclo, se genera automáticamente en el recuadro de la estructura una terminal llamada túnel, cuando se trata de un túnel de entrada esta terminal almacena el valor externo para que esté disponible en cada iteración del ciclo, como este almacenamiento se hace antes de entrar al ciclo, una vez adentro el programa no puede leer el valor externo.
NOTA IMPORTANTE: Nunca conecte el control del condicional del ciclo de manera externa pues el programa se quedaría ciclado
Para colocar ciclos While en el diagrama se selecciona While Loop de la sub-paleta Structures en el diagrama de bloque como se muestra en la figura 3.3.
click
Fig. 3.3. Acceso a la estructura de ciclo While en la sub-paleta de estructuras.
Instituto Tecnológico de Chihuahua
66
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
Una vez que se ha seleccionado esta estructura el cursor del ratón se convierte en un puntero especial que se utiliza para encerrar la sección del código que se desea repetir. Dando un primer click al botón del ratón se define la esquina superior-izquierda de lo que será el área del ciclo, dando un segundo click al botón del ratón se define lo que será la esquina inferior izquierda, de esta manera se coloca la frontera del ciclo While alrededor del código seleccionado. También es posible agregar nodos adicionales arrastrándolos dentro del ciclo While si es necesario.
3.2 CICLO FOR
Un ciclo For, como el mostrado en la figura 3.4, ejecuta el código contenido dentro de él una cierta cantidad de veces determinada por el valor numérico conectado en la terminal del control de iteraciones N.
La terminal del contador de iteraciones i, mostrada en la esquina inferior izquierda, contiene el número de iteraciones completas que se han realizado. Al igual que en el ciclo While el contador de iteraciones siempre empieza en 0 durante la primera iteración.
Como el ciclo ejecuta la cantidad de iteraciones conectadas a la terminal N y el contador i siempre empieza con un valor de 0, entonces el valor final del contador de iteraciones siempre será igual a N-1.
Considere para los ciclos For el mismo comportamiento de generación de túneles para la conexión de valores externos que el definido para los ciclos While.
Instituto Tecnológico de Chihuahua
67
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
Control de Iteraciones
Contador de Iteraciones
Fig. 3.4 Estructura de ciclo For.
Coloque ciclos For en su diagrama seleccionando For Loop de la sub-paleta Structures en el diagrama de bloque como se muestra en la figura 3.5.
click
Fig. 3.5. Acceso a la estructura de ciclo For en la sub-paleta de estructuras.
Una vez que se ha seleccionado esta estructura el cursor del ratón se convierte en un puntero especial que se utiliza para encerrar la sección del código que se incluir dentro del
Instituto Tecnológico de Chihuahua
68
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
ciclo. Dando un primer click al botón del ratón se define la esquina superior-izquierda de lo que será el área del ciclo, dando un segundo click al botón del ratón se define lo que será la esquina inferior izquierda. También es posible agregar nodos adicionales arrastrándolos dentro del ciclo si es necesario.
3.3. REGISTROS DE CORRIMIENTO
Los registros de corrimiento son terminales que se pueden activar en las estructuras de los ciclos While y For para almacenar temporalmente los valores generados en variables determinadas durante la iteración actual para ser utilizados en iteraciones posteriores
Para agregar un registro de corrimiento en una estructura de ciclo, haga click derecho sobre el contorno de la estructura y seleccione Add Shift Register del menú emergente como se muestra en la figura 3.6.
Fig. 3.6 Agregando un registro de corrimiento en la estructura de un ciclo
Instituto Tecnológico de Chihuahua
69
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
Por omisión (default) los registros de corrimiento permiten almacenar solo el valor la iteración anterior, cuando necesitamos aumentar esta capacidad de almacenamiento para más iteraciones, simplemente agregamos elementos de almacenamiento al mismo registro de corrimiento haciendo un click derecho en la terminal del registro y seleccionando Add Element del menú emergente, tal como se muestra en la figura 3.7. Se pueden adicionar tantos elementos de memoria como sean necesarios
Fig. 3.7. Agregando elementos de memoria a un registro de corrimiento
La operación de los registros de corrimiento es muy sencilla. Antes de iniciar las iteraciones del ciclo, los elementos de memoria son inicializados con los valores conectados por fuera del ciclo, este paso es importante debido a que si no se inicializan con un valor conocido, los elementos de memoria podrían contener “basura” que podría afectar el desempeño del código.
En la primer iteración del ciclo, i=0, los elementos de memoria transfieren se contenido hacia el interior del ciclo y se efectúa el código programado, en este paso también se asigna en la terminal correspondiente el nuevo valor que será almacenado en el registro.
Instituto Tecnológico de Chihuahua
70
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
Antes de ejecutar la siguiente iteración, i=1, el valor almacenado en la iteración anterior es transferido al primer elemento de memoria, el valor contenido en este se transfiere al segundo y así sucesivamente efectuando un corrimiento de los valores almacenados en el registro, el valor en el último elemento de memoria se elimina y un nuevo valor es almacenado en la terminal correspondiente para ser transferido en la siguiente iteración, este comportamiento se repite para el resto de las iteraciones del ciclo.
La figura 3.8 muestra de manera gráfica la operación de un registro de corrimiento con cuatro terminales de memoria.
a)
b)
c)
d)
Fig. 3.8. Operación del registro de corrimiento a) antes de ejecutar i=0, b) i=0, c) antes de ejecutar i=1,2,3…N-1, d) i=1,2,3…N-1
Los registros de corrimiento pueden almacenar cualquier tipo de variable y también se pueden activar en los ciclos While.
3.4. NODOS DE RETROALIMENTACIÓN
Los nodos de retroalimentación son una estructura que nos permite retroalimentar un valor de salida en la iteración de un ciclo para utilizarlo como entrada en la siguiente iteración, su función es similar a la de un registro de corrimiento con solo un elemento de memoria.
Instituto Tecnológico de Chihuahua
71
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
Al igual que en caso de los registros de corrimiento, es conveniente siempre inicializar los nodos de retroalimentación en la terminal respectiva.
Fig. 3.9. Nodo de retroalimentación en un ciclo For.
Coloque nodos de retroalimentación en su diagrama seleccionando Feedback Node de la sub-paleta Structures en el diagrama de bloque como se muestra en la figura 3.10.
click
Fig. 3.10. Acceso a los Nodos de Retroalimentación
Instituto Tecnológico de Chihuahua
72
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
Los nodos de retroalimentación, al igual que los registros de corrimiento, también aceptan cualquier tipo de variable para su almacenamiento.
3.5. CASE
Las estructuras Case (de caso) nos permiten ejecutar un código específico dependiendo del valor de una variable de entrada en una terminal de selector. Solo se puede ver un cuadro de caso a la vez, así que para cambiar de un cuadro de caso a otro se hace un click en las flechas correspondientes en el encabezado del cuadro. Cuando un valor exterior entra a un cuadro de caso se genera un túnel que pone el mismo valor de entrada disponible para todos los cuadros de caso. Cuando un valor debe salir de un cuadro de caso, el túnel de salida que se genera debe tener algún valor asignado para todos los casos o se mostrara en color blanco (vacío) y generará un error de sintaxis.
Dependiendo del tipo de variable de entrada las estructuras Case pueden ser: booleano, string o numérico.
a)
b)
c)
Fig. 3.11. Estructura Case a) booleano, b) string, c) numérico.
Instituto Tecnológico de Chihuahua
73
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
Coloque estructuras Case en su diagrama seleccionando Case Structure de la subpaleta Structures en el diagrama de bloque como se muestra en la figura 3.12
click
Fig. 3.12. Acceso a la estructura Case en la paleta de funciones
3.5.1. Case Booleano
Para una entrada Booleana la estructura Case se comporta de manera similar a los enunciados if-then-else (si-entonces-de otro modo) comunes en otros lenguajes de programación basados en texto. Si el valor booleano de la entrada es verdadero (true), se ejecuta el código dentro del cuadro del caso verdadero; de otra manera se ejecutara el código dentro del cuadro del caso falso (false)
Instituto Tecnológico de Chihuahua
74
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
3.5.2. Case String
Para una entrada de cadena de caracteres (string), se ejecuta solamente el código contenido en el cuadro del caso que corresponda exactamente con la cadena en la entrada de selector, si el valor no coincide con ninguno de los casos, entonces se ejecuta el caso que este marcado como caso por omisión (default).
Por omisión (default) todas las estructuras case aparecen como Case Booleano, para convertir a Case String simplemente conecte una variable tipo string en la terminal de selector y la estructura Case se convertirá automáticamente. Con la herramienta de texto cambie las cadenas “True” y “False” que aparecen por default tecleando la cadena que quiere asignar en cada caso especifico. Para agregar más cuadros de caso haga click derecho tocando el cuadro de la estructura Case y seleccione Add Case After del menú emergente. Es posible agregar tantos cuadros de caso diferentes como sea necesario
3.5.3. Case Numérico
Para una entrada de valor numérico conectada en la entrada del selector de la estructura Case se ejecuta solamente el código contenido en el cuadro del caso que corresponda exactamente con el valor numérico en la entrada de selector. Si el valor de entrada esta fuera de rango de los casos definidos, al igual que en los Case String, LabVIEW escogerá el caso designado por omisión (default).
Instituto Tecnológico de Chihuahua
75
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
3.6. ESTRUCTURAS DE SECUENCIA
En un lenguaje basado en texto, las declaraciones del programa generalmente se ejecutan en el orden en que aparecen.
Por otro lado, en un lenguaje basado en flujo de datos como LabVIEW, un nodo se ejecuta cuando los datos están disponibles en todas sus terminales de entrada por lo cual algunas veces es difícil determinar el orden exacto de ejecución de las funciones.
Cuando se necesita controlar de manera estricta el orden de la ejecución del código en el diagrama de bloques, se hace necesario utilizar una estructura de secuencia (Sequence Structure).
Las estructuras de secuencia lucen como un pedazo de rollo de película. Como se muestra en la figura 3.13 existen dos tipos diferentes para esta estructura: la estructura de secuencia apilada y la estructura de secuencia extendida.
a)
b)
Fig. 3.13. Estructura de secuencia a) apilada, b) extendida.
Instituto Tecnológico de Chihuahua
76
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
Coloque estructuras de secuencia en su diagrama seleccionando Stacked Secuence o Flat Secuence de la sub-paleta Structures en el diagrama de bloque como se muestra en la figura 3.14.
click
Fig. 3.14. Acceso a la estructura de secuencia en la paleta de funciones
3.6.1. Secuencias Apiladas
Las estructuras de secuencia apiladas solo muestran un cuadro de secuencia a la vez, de manera similar a las estructuras de caso, solo que a diferencia de estas, todos los cuadros ejecutan de manera secuencial el código contenido en ellos.
Para agregar cuadros a una secuencia se hace un click derecho sobre la estructura y se selecciona Add Frame After o Add Frame Before del menú emergente, tal como se muestra en la figura 3.15.
Instituto Tecnológico de Chihuahua
77
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
Fig. 3.15. Agregando cuadros a una secuencia.
Cuando se requiere transferir valores entre diferentes cuadros de una estructura de secuencia apilada, se debe activar las terminales de almacenamiento local haciendo un click derecho sobre la estructura y seleccionando Add Local Secuence, tal como se muestra en la figura 3.16. Este tipo de terminal almacena un valor generado en un cuadro de secuencia para que pueda ser utilizado en los cuadros siguientes.
Instituto Tecnológico de Chihuahua
78
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
Fig. 3.16. Agregando terminal de almacenamiento local a una estructura de secuencia.
3.6.2. Secuencias Extendidas
Las estructuras de secuencia extendida realizan exactamente la misma función que las estructuras de secuencia apiladas descritas anteriormente, la única diferencia es que las secuencias extendidas muestran simultáneamente todos los cuadros de secuencia de manera que se puede visualizar simultáneamente el código contenido en toda la estructura.
La transferencia de valores entre distintos cuadros de una secuencia extendida se realiza a través de túneles simples como los empleados en otras estructuras.
Instituto Tecnológico de Chihuahua
79
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
Para convertir una secuencia apilada en secuencia extendida y viceversa se hace click sobre la estructura y se selecciona Replace / Replace with Flat Secuence o Replace with Stacked Secuence según sea el caso, tal como se muestra en la figura 3.17.
Fig. 3.17. Acceso a la estructura de secuencia en la paleta de funciones
3.7. NODOS DE FÓRMULA
Algunas veces es preferible programar expresiones matemáticas con funciones basadas en texto, en lugar de hacerlo con iconos (los que pueden tomar mucho espacio en el diagrama). Los nodos de fórmula nos permiten implementar ecuaciones complicadas usando instrucciones basadas en texto.
Instituto Tecnológico de Chihuahua
80
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
Compare los ejemplos mostrados en la figura 3.18 de una misma expresión matemática evaluada en forma de diagrama y con un nodo de fórmula.
a)
b)
Fig. 3.18. Expresión matemática evaluada a) en diagrama, b) en nodo de fórmula
Coloque nodos de fórmula en su diagrama seleccionando Formula Node de la subpaleta Structures en el diagrama de bloque como se muestra en la figura 3.19.
click
Fig. 3.19. Acceso a los nodos de fórmula en la paleta de funciones
Instituto Tecnológico de Chihuahua
81
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
La cajas de este nodo pueden cambiar de tamaño para introducir formulas algebraicas directamente a los diagramas de bloque. Para agregar variables, se hace un click derecho sobre la estructura y se selecciona la opción de agregar entrada (Add Input) o agregar salida (Add Output), tal como se muestra en la figura 3.20
Fig. 3.20. Agregando terminales de entrada y de salida a un nodo de fórmula
Hay que nombrar las variables de la misma manera en que serán usadas dentro del nodo de formula (los nombres son sensibles a las mayúsculas).
Todas las declaraciones independientes entre sí deben terminar siempre con un punto y coma (;).
Al usar varias fórmulas en un solo nodo de fórmula, cada variable asignada (las que aparecen en la parte izquierda de cada fórmula) deben de tener una terminal de salida en el nodo de fórmula. Sin embargo, estas terminales de salida no necesitan estar cableadas si no se requiere su valor de salida
Instituto Tecnológico de Chihuahua
82
Dr. Gerardo Trujillo Schiaffino
Capítulo III
Estructuras de Programación
En los nodos de fórmula es posible utilizar funciones estándar como: abs, acos, acosh, asin, asinh, atan, atan2, atanh, ceil, cos, cosh, cot, csc, exp, expm1, floor, getexp, getman, int, intrz, In, Inp1, log, log2, max, min, mod, pow, rand, rem, sec, sign, sin, sinc, sinh, sqrt, tan, tanh.
También se puede utilizar estructuras de programación como If –then, for, case, entre muchas otras, utilizando la sintaxis del lenguaje C (específicamente ANSI C).
Instituto Tecnológico de Chihuahua
83
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
CAPÍTULO IV HERRAMIENTAS Y FUNCIONES DE PROGRAMACION
4.1 ARREGLOS
Al igual que en otros lenguajes de programación, en LabVIEW los arreglos agrupan elementos de datos del mismo tipo. Un arreglo consiste de elementos ordenados a través de índices y dimensiones.
Los elementos son los datos que componen el arreglo, el índice es el lugar o posición que ocupa el elemento dentro del arreglo y la dimensión es la cantidad de índices que se utilizan para indicar una posición única dentro del arreglo.
Un arreglo puede tener una o más dimensiones y hasta 2^31 – 1 elementos por dimensión, si lo permite la memoria de la computadora.
El índice es basado en cero, lo que significa que tiene un rango de 0 a n – 1, donde n es el número de elementos en el arreglo. Por ejemplo, n = 9 para los nueve planetas, así que el índice recorre de 0 a 8. La Tierra es el tercer planeta, así que tiene un índice de 2.
La figura 4.1 muestra el esquema de un arreglo unidimensional en el cual cada elemento se accesa a través de un solo índice.
Instituto Tecnológico de Chihuahua
84
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Arreglo
elemento
Índice
elemento
0
elemento
1
elemento
2
3
…
elemento
…
n
Fig. 4.1. Arreglo unidimensional
La figura 4.2 muestra el esquema de un arreglo bidimensional en el cual cada elemento se accesa a través de dos índices
Índices
0
1
2
3
…
n
0
elemento
elemento
elemento
elemento
…
elemento
1
elemento
elemento
elemento
elemento
…
elemento
2
elemento
elemento
elemento
elemento
…
elemento
3
elemento
elemento
elemento
elemento
…
elemento
. . .
. . .
. . .
. . .
. . .
m
elemento
elemento
elemento
elemento
Arreglo . . . …
elemento
Fig. 4.2. Arreglo bidimensional n X m
Se pueden construir arreglos de tipos de datos numéricos, booleanos, rutas, cadenas, formas de onda y clusters.
4.1.1. Controles e Indicadores de Arreglo
Para crear un control o indicador de un arreglo en el panel, primero se selecciona una preforma de arreglo (array) en la paleta Controls » Modern » Array, Matrix & Cluster, y se coloca en el panel frontal, como se muestra en la figura 4.3. Instituto Tecnológico de Chihuahua
85
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
click
click
Fig. 4.3. Acceso a la preforma para un arreglo en el panel frontal
Luego, como se muestra en la figura 4.4, se arrastra un control o un indicador adentro de la preforma para asignarle el tipo de dato correspondiente, por ejemplo, si se requiere un arreglo indicador numérico se debe colocar dentro de la preforma de arreglo un indicador numérico, si lo que se desea el arreglo control booleano entonces de debe colocar dentro de la preforma un control booleano.
Si se intenta arrastrar un control o indicador inválido, tal como una gráfica XY, no será posible colocarlo dentro de la preforma de arreglo.
Instituto Tecnológico de Chihuahua
86
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Fig. 4.4. Asignación del tipo de dato al arreglo
Para poder utilizar un arreglo se debe asignar el tipo de variable, de otro modo, la terminal del arreglo en el diagrama de bloques aparece negra con un paréntesis vacío.
Para agregar dimensiones a un arreglo, se hace click derecho en el indicador del índice y seleccione Add Dimension del menú emergente como se muestra en la figura 4.5.
También se puede utilizar la herramienta que posicionamiento para cambiar el tamaño del indicador del índice hasta que se obtengan las dimensiones requeridas.
Instituto Tecnológico de Chihuahua
87
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Fig. 4.5. Adicionando dimensiones a un arreglo
4.1.2. Arreglos Auto Indexados
El manejo de auto-indexamiento de arreglos es una capacidad novedosa de LabVIEW que le da una gran versatilidad en el uso de los ciclos For y While. El Auto-indexamiento es una característica propia de los túneles de entrada o salida en las estructuras de ciclos y se activa o desactiva seleccionando Enable Indexing o Disable Indexing en los menús emergentes al hacer click derecho sobe un túnel.
4.1.2.1. Auto-indexamiento de salida
Cuando se utiliza el auto-índice en túnel de salida, se genera de manera automática un arreglo de salida que recibe un nuevo elemento por cada iteración del ciclo. El túnel de salida contiene corchetes cuadrados representando un arreglo que al alambrarse al exterior del ciclo
Instituto Tecnológico de Chihuahua
88
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
transfiere el arreglo que contiene los elementos almacenados en cada una de las iteraciones del ciclo. Si el auto-índice esta desactivado, entonces el túnel no crea un arreglo para almacenar los valores de las distintas iteraciones y al finalizar el ciclo solo se transfiere al exterior el ultimo valor generado. En este caso el túnel tiene una apariencia normal y no muestra corchetes como en caso anterior.
La figura 4.6 muestra un ejemplo de un ciclo For con dos túneles de salida, en el primero (parte superior) el auto- indexamiento está habilitado por lo cual genera un arreglo de salida, mientras que en el segundo (parte inferior) el auto-indexamiento esta deshabilitado por lo cual solo sale un valor numérico simple.
Fig. 4.6. Ejemplo de auto-indexamiento en túneles de salida
El auto-indexamiento en los túneles de salida aplica por igual a los ciclos While y a los ciclos For. Sin embargo, por omisión (default) en el caso de los ciclos For el auto-indexamiento está habilitado, mientras que en los ciclos While por omisión el auto-indexamiento está deshabilitado.
Instituto Tecnológico de Chihuahua
89
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.1.2.2. Auto-indexamiento de entrada
Cuando se alambra un arreglo a un túnel de entrada de un ciclo For o un ciclo While, si el auto-indexamiento se encuentra activado, entonces en cada iteración solo pasará a través del túnel un elemento, cuyo índice coincida con el contador de iteraciones i del ciclo. Por otro lado, si el auto-indexamiento se encuentra desactivado entonces el arreglo completo pasará por el túnel en cada iteración. Un ejemplo de este comportamiento se muestra en la figura 4.7.
Fig. 4.7. Ejemplo de auto-indexamiento en túneles de entrada
Nótese que el primer túnel de entrada (parte superior) tiene el auto-índice habilitado por lo que al ciclo entran los elementos de manera individual, mientras que en segundo túnel (parte inferior) el auto-índice se encuentra deshabilitado por lo cual al interior del ciclo llega el arreglo completo. Nótese también como cambia la representación de la terminal del túnel cuando está activado el auto-indexamiento.
Otra característica particular de LabVIEW con respecto a los arreglos alambrados en túneles de entrada en ciclos For se presenta cuando existe uno o más túneles que tengan habilitado el auto-índice, el tamaño de los arreglos se puede utilizar para controlar el numero de iteraciones del ciclo, incluso la terminal N del ciclo pude quedar desconectada.
Instituto Tecnológico de Chihuahua
90
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
En el caso de existan arreglos de entrada de diferentes tamaños o incluso si estuviera alambrada la terminal N, el control de las iteraciones lo tiene el que tenga el tamaño menor. Por ejemplo, si se cablean un arreglo con 10 elementos y otro de 5 elementos a túneles de entrada de entrada de un ciclo For y se pone la terminal del contador a 15, el ciclo se ejecuta solo 5 veces.
4.1.2.3. Arreglos auto-indexados multidimensionales
Se pueden utilizar dos ciclos For, uno dentro del otro, para crear arreglos bidimensionales. El ciclo For externo crea las filas de elementos y el ciclo For interno crea las columnas de elementos. La figura 4.8 genera un arreglo bidimensional de 3 renglones y seis columnas de números aleatorios
Fig. 4.8. Creación de arreglos bidimensionales.
De
igual
manera,
anidando
más
ciclos
For,
se
pueden
crear
arreglos
multidimensionales.
Instituto Tecnológico de Chihuahua
91
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.1.3. Arreglo Constantes
También es posible crear constantes de arreglo en el diagrama a bloque, el procedimiento es muy parecido a la creación de controles o indicadores de arreglo en el panel.
Primero seleccione una preforma Array Constant en la paleta Functions» All Functions» Array en el diagrama a bloque, como se muestra en al figura 4.9.
click
click
Fig. 4.9. Acceso a la preforma para constante de arreglo.
Luego asigne el tipo de constante a la preforma de arreglo. La figura 4.10a muestra la construcción de una constante de arreglo booleano. La figura 4.10b Muestra la construcción de una constante de arreglo numérico bidimensional. Nótese que cada elemento del arreglo puede tener valor diferente entre sí.
Instituto Tecnológico de Chihuahua
92
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
a)
b)
Fig. 4.10. Construcción de una constante de arreglo a) booleano, b) numérico bidimensional.
4.1.4. Funciones para Arreglos
LabVIEW cuenta con una gran cantidad de funciones para crear, manipular o trabajar con arreglos. Estas funciones están situadas en la paleta Functions» All Functions» Array.
Las principales funciones para trabajar con arreglos incluyen:
4.1.4.1. Tamaño de Arreglo (Array Size)
Fig. 4.11. Función Array Size.
Instituto Tecnológico de Chihuahua
93
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
La función Array Size (tamaño de arreglo) devuelve el número de elementos en cada dimensión de un arreglo. Si el arreglo es de n-dimensiones, el tamaño (size) de la salida es un arreglo de n elementos, donde cada elemento es el tamaño del arreglo en esa dimensión
4.1.4.2. Inicializar Arreglo (Initialize Array)
Fig. 4.12. Función Initialize Array.
La función Initialize Array (inicializar el arreglo) crea un arreglo de n dimensiones en donde cada elemento ha sido inicializado al valor conectado en la entrada del elemento (element). Se puede cambiar el tamaño de la función para incrementar el número de dimensiones del arreglo de salida.
4.1.4.3. Construir Arreglo (Build Array)
Fig. 4.13. Función Build Array.
La función Build Array (construir de arreglo) puede realizar dos funciones distintas. Concatena múltiples arreglos o añade elementos a un arreglo de n dimensiones. Se puede
Instituto Tecnológico de Chihuahua
94
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
cambiar el tamaño de la función para incrementar el número de dimensiones del arreglo de salida. Para concatenar las entradas en un arreglo más largo de la misma dimensión, se hace click derecho en el nodo de la función y seleccione Concatenate Inputs (Concatenar Entradas) desde el menú emergente.
4.1.4.4. Subconjunto de Arreglo (Array Subset)
Fig. 4.14. Función Array Subset.
La función Array Subset (subconjunto de arreglo) devuelve parte de un arreglo comenzando en el índice indicado y con una longitud (cantidad de elementos) también indicada. Para arreglos multidimensionales se puede cambiar el tamaño de la función para incrementar el número de dimensiones.
4.1.4.5. Índice del Arreglo (Index Array)
Fig. 4.15. Función Index Array.
Instituto Tecnológico de Chihuahua
95
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
La función Index Array (índice del arreglo) devuelve el elemento de un arreglo almacenado en el índice indicado. También se puede utilizar la función Índice del Arreglo para extraer una fila o una columna de un arreglo bidimensional para así crear un sub-arreglo del original. Para hacer esto se conecta un arreglo bidimensional a la entrada de la función, la cual se auto-ajusta para mostrar dos terminales de índice disponibles. La terminal del índice superior indica la fila, y la segunda terminal indica la columna. Se puede cablear entradas a ambas terminales de índice para indicar un solo elemento, o se puede cablear solamente una terminal para extraer una fila o una columna de datos.
4.2. CLÚSTERES
Los clústeres son otra manera de empaquetar datos en LabVIEW, son equivalentes a un record en Pascal o una struct en C.
A diferencia de los arreglos en cuales todos los elementos deben de ser del mismo tipo, los componentes de los clústeres pueden ser de diferentes tipos de datos. Sin embargo, se debe respetar siempre que todos los elementos de un clúster deben ser ya sea Indicadores o controles. No se puede tener controles e Indicadores juntos en el mismo clúster.
Los clústeres se pueden considerar como un grupo de alambres individuales (datos) juntos en un cable (clúster). Uno de los principales usos de los clústeres es disminuir la cantidad de terminales de conexión en los subVIs. Un grupo de entradas y/o salidas se pueden empaquetar para utilizar solo una línea de conexión.
Instituto Tecnológico de Chihuahua
96
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.2.1. Controles e Indicadores de Clúster
Para crear un clúster se selecciona Cluster en el panel frontal desde la paleta Controls » Modern » Array, Matrix & Cluster. Tal como se muestra en la figura 4.16.
click click
Fig. 4.16. Acceso a la preforma de cluster en el panel frontal.
Esta opción genera una preforma (shell) parecida a la preforma obtenida al crear arreglos, solo que sin el control de índice.
Una vez que esta se ha seleccionado se puede cambiar el tamaño a la preforma. Al hacer click derecho adentro de la preforma se puede añadir objetos de cualquier tipo como se muestra en la figura 4.17. Inclusive se puede tener un clúster adentro de otro clúster.
Instituto Tecnológico de Chihuahua
97
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Los componentes (controles o indicadores) que son introducidos a un clúster, no generan terminal en el diagrama de bloque, estos componentes se accesan a través de la terminal del clúster.
a)
b)
Fig. 4.17. Ejemplo de un clúster en el panel frontal a) control, b) indicador.
El clúster se convierte en un indicador o control basado en el primer objeto que fue ingresado dentro del grupo.
4.2.2. Constante de Clústeres
También se puede crear una constante de clúster en el diagrama de bloque escogiendo Cluster Constant de la paleta Cluster, esto brinda una preforma (shell) de clúster vacía. Una vez ingresado se puede dar cualquier tamaño al clúster, dentro de la preforma de se puede introducir otras constantes, tal como se muestra en la figura 4.18.
Instituto Tecnológico de Chihuahua
98
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Fig. 4.18. Ejemplo de una constante de clúster en el diagrama de bloque.
No se puede colocar terminales para los objetos del panel frontal en una constante de clúster en el diagrama de bloques, ni tampoco puede colocar constantes especiales como el Tab o una cadena de caracteres vacía dentro de una preforma de clúster.
4.2.3. Orden en el Clúster
Dentro del clúster, los componentes están acomodados de acuerdo al orden en que fueron introducidos a la pre-forma. Este orden es importante debido a que para poder interconectar los clústeres, estos deben tener la misma cantidad de elementos y el mismo orden, de lo contrario LabVIEW no permitirá la conexión.
Para visualizar o modificar el orden de los elementos de un clúster se hace un click derecho tocando la estructura del clúster y se selecciona Reorder Controls in Cluster del menú emergente como se muestra en la figura 4.19.
Instituto Tecnológico de Chihuahua
99
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Fig. 4.19. Reordenar elementos en un control o indicador de clúster.
El número en fondo blanco muestra el orden actual de los elementos en el clúster y el número en fondo negro indica el nuevo orden de los elementos, esto se cambia haciendo click en el elemento que se desea modificar.
4.2.4. Funciones para Clústeres
LabVIEW cuenta con funciones para crear, manipular o trabajar con clústeres. Estas funciones están situadas en la paleta Functions» All Functions» Clusters. Las principales funciones para trabajar con clústeres incluyen:
4.2.4.1. Agrupar (Bundle)
Fig. 4.20. Función Bundle.
Instituto Tecnológico de Chihuahua
100
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
La función Bundle (agrupar) forma un cluster conteniendo los objetos dados en las entradas de elementos
4.2.4.2. Agrupar por Nombre (Bundle by Name)
Fig. 4.21. Función Bundle by Name.
Actualiza valores de objetos localizados en grupos específicos (los objetos deben tener su propia clasificación).Se debe de tener un clúster existente cableado a la terminal de en medio de la función para poder utilizar Bundle by Name (agrupar por nombre).
4.2.4.3. Desagrupar (Unbundle)
Fig. 4.22. Función Unbundle.
La función Unbundle (desagrupar) se utiliza para acceder a todos los objetos del clúster. Esta función debe tener exactamente el mismo número de terminales como se tienen elementos en el clúster. Añadiendo o Removiendo elementos en el clúster se rompen los cables en el diagrama.
Instituto Tecnológico de Chihuahua
101
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.2.4.4. Desagrupar por Nombre (Unbundle by Name)
Fig. 4.23. Función Unbundle by Name.
La Función Unbundle by Name (desagrupar por nombre) se utiliza para acceder objetos específicos (uno o más) en el clúster. Solamente los objetos en el clúster que tengan su propia marca (Label) pueden ser accesados. Cuando se desagrupe por nombre, haga click en la terminal con la herramienta de operación para escoger el elemento que quiere acceder.
También se puede obtener las funciones de Bundle (agrupar), Unbundle (desagrupar), Bundle by Name (agrupar por nombre), y Unbundle by Name (Desagrupar por Nombre) al hacer click derecho con el ratón en la terminal del clúster en el diagrama de bloques y eligiendo Cluster Tools (herramientas de cluster) del Menú. Cuando usted escoge Cluster Tools las funciones Bundle (agrupar) y Unbundle (desagrupar) automáticamente contienen el número correcto de terminales. Las funciones Bundle by Name (agrupar por nombre) y Unbundle by Name (desagrupar por nombre) aparecen con el primer elemento del clúster.
4.2.5. Clúster de Error
Los clústeres de errores son un medio poderoso que utiliza LabVIEW para indicar y manejar errores en funciones específicas. Los VI de adquisición de datos (DAQ VIs) las
Instituto Tecnológico de Chihuahua
102
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
funciones de manejo de entradas y salidas de archivo (File I/O), los VIs de manejo de redes, y muchos otros VIs utilizan este método para pasar información entre nodos acerca de errores. La figura 4.24 muestra el indicador de un clúster de error.
Fig. 4.24. Indicador de clúster de error.
El clúster para errores contiene tres elementos: status, code y source.
4.2.5.1. Estatus.
Es una variable de tipo booleano a la cual se le asigna un valor verdadero si ocurre algún error.
4.2.5.2. Código.
Es una variable de tipo valor numérico entero a la cual se le asigna un número de código correspondiente al error que ha ocurrido.
Instituto Tecnológico de Chihuahua
103
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.2.5.3. Fuente.
Es una variable de tipo cadena de caracteres que identifica el VI en donde ocurrió el error.
Los clústeres de errores son útiles para determinar cuando ocurre un error durante la ejecución de un VI. Para ello simplemente se deben encadenar las funciones conectando la salida Error Out de una a la entrada Error In de la siguiente, tal como se muestra en la figura 4.25.
Al hacer esto también se establece una secuencia de ejecución de las funciones interconectadas a través de los clústeres de error, pues el flujo de datos establece que una función deba esperar a que se ejecute primero la función cuya salida Error Out está conectada a su entrada Error In.
Fig. 4.25. Conexión de los clúster de error.
Instituto Tecnológico de Chihuahua
104
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.3. GRÁFICAS
Las gráficas son indicadores muy versátiles en LabVIEW. Pueden ser altamente adaptables y pueden ser usados para mostrar de forma concisa una gran cantidad de información. LabVIEW cuenta con una gran variedad de gráficas para casi todas las aplicaciones, pero los tres tipos de gráficas más utilizados son: Waveform Chart, Waveform Graph y XY Graph.
4.3.1. Registrador de Formas de Onda (Waveform Chart)
Las gráficas del tipo Waveform Chart (registrador de forma de onda) es un indicador numérico especial que muestra en una gráfica uno o más trazos (plots) correspondientes a variables numéricas. La gráfica Waveform Chart está localizada en la paleta Controls» Modern» Graph, como se muestra en la figura 4.26.
click click
Fig. 4.26. Ubicación de una gráfica Waveform Chart en el panel frontal.
Instituto Tecnológico de Chihuahua
105
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.3.1.1. Trazo Sencillo
Cuando se utiliza este tipo de gráfica para mostrar un solo trazo o variable, simplemente se cablea la terminal de la gráfica a la salida escalar que se desea graficar como se muestra en la figura 4.27.
Fig. 4.27. Conexión de una gráfica Waveform Chart en el diagrama de bloque para trazo simple.
Bajo estas condiciones la gráfica utiliza la configuración por default y va graficando uno a uno los valores que va enviando la variable numérica conectada en esta.
4.3.1.2. Personalización de las Gráficas
Uno de los aspectos que da mayor versatilidad a las gráficas en LabVIEW, es su capacidad de personalizarlas, de manera que la información presentada en la gráfica exprese las características que el usuario quiere resaltar en ellas.
Instituto Tecnológico de Chihuahua
106
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Por ejemplo, se pueden cambiar los valores mínimo y máximo de los ejes x y y, dando doble click al valor con la herramientas de etiquetado y escribiendo el nuevo valor. De manera similar, se puede cambiar las etiquetas asignadas por default a los ejes (Time y Amplitude).
Para personalizar la representación gráfica de cada trazo e la gráfica se puede dar un click derecho a la leyenda de la gráfica y cambiar el estilo, forma y color de cada trazo.
También es posible personalizar la gráfica seleccionando Properties del menú emergente al hacer click derecho sobre esta, como se muestra en la figura 4.28, en la ventana de configuración que aparece se puede personalizar la apariencia, el formato y precisión, los trazos, las escalas y la documentación.
Fig. 4.28. Ventana de configuración para personalizar una gráfica Waveform Chart.
Esta ventana de configuración permite acceder a todas las características personalizables de la gráfica.
Instituto Tecnológico de Chihuahua
107
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.3.1.3. Modo de actualización de datos
Las gráficas Waveform Chart de LabVIEW se pueden configurar para actualizar el área gráfica de datos en tres modos diferentes: strip chart, scope chart y sweep chart.
El modo por default es el strip chart, en el cual el área gráfica se va llenando punto a punto y al completarse esta la gráfica se va recorriendo (scroll) con un corrimiento sencillo por cada punto que se grafica. En el modo scope chart el área gráfica se va llenando punto a punto y al completarse esta la gráfica se hace un corrimiento de una pantalla completa, dando la apariencia de que se borra la gráfica y vuelve a empezar. Finalmente en el modo sweep chart aparece un cursor rojo sobre la gráfica que va barriendo de izquierda a derecha toda el área, los valores de la gráfica se actualizan al pasar el cursor.
Estos modos de actualización se configuran seleccionando Update Mode en la pestaña Appearance de la ventana de personalización.
4.3.1.4. Trazo Múltiple.
Las gráficas Waveform Chart también pueden mostrar trazos de múltiples señales, para hacer esto se envía a la terminal de la gráfica un cluster compuesto de valores escalares donde cada valor es una trazo a graficar. La figura 4.29 muestra un ejemplo de un registrador de forma de onda múltiple. De nuevo la gráfica utiliza la configuración por default y asigna colores diferentes a cada una de las variables numéricas conectadas en esta.
Instituto Tecnológico de Chihuahua
108
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Fig. 4.29. Conexión de una gráfica Waveform Chart en el diagrama de bloque para trazo múltiple.
4.3.1.5. Trazos Múltiples Apilados.
La figura 4.30 muestra un ejemplo de una gráfica Waveform Chart configurada para mostrar de manera apilada tres señales aleatorias con personalizaciones diferentes
Fig. 4.30. Ejemplo de una gráfica Waveform Chart personalizada.
Instituto Tecnológico de Chihuahua
109
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.3.1.6. Consideraciones para el uso de Waveform Chart.
El uso de las gráficas Waveform Chart resulta, como se ha visto hasta aquí, muy sencillo y amigable, sin embargo, este tipo de gráficas tiene algunas restricciones de uso.
Como primer consideración, debemos tomar en cuenta que la actualización del área gráfica en cada valor que se grafica da como resultado una muy baja velocidad de graficación, por lo cual este tipo de gráficas no es recomendable en el caso de trabajar con señales dinámicas o de altas frecuencias. Solo se recomienda su uso en aplicaciones para la graficación de señales lentas como puede ser el caso de variables industriales (temperatura, nivel, flujo, presión, etc.).
Otra consideración importante para el uso de esta gráfica es que los valores correspondientes al eje X representan el número consecutivo del valor graficado (muestra) y se encuentran uniformemente distribuidos.
4.3.2. Gráfica de Forma de Onda (Waveform Graph)
Cuando se requiere graficar señales dinámicas (que contienen altas frecuencias) el uso de los registradores de forma de onda (Waveform Chart) resulta inadecuado debido a su baja velocidad de graficación.
Instituto Tecnológico de Chihuahua
110
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Sin embargo, LabVIEW cuenta con otro tipo de gráfica más adecuada para este tipo de señales: la gráfica de forma de onda (Waveform Graph).
A diferencia de la Waveform Chart que grafica los datos uno a uno conforme son enviados a la gráfica, la Waveform Graph recibe los datos en forma de un arreglo numérico, mostrando en la gráfica en un solo paso el trazo completo de la forma de onda recolectada.
La gráfica Waveform Graph está localizada en la paleta Controls» Modern» Graph, como se muestra en la figura 4.31.
Este tipo de gráfico de forma de onda traza solamente funciones de una sola variable, como en y = f(x), con puntos distribuidos uniformemente a lo largo del eje x, tal como formas de onda adquiridas con tiempo variable.
click click
Fig. 4.31. Ubicación de una gráfica Waveform Graph en el panel frontal.
Instituto Tecnológico de Chihuahua
111
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.3.2.1. Trazo Simple
Por default las gráficas de forma de onda aceptan un solo arreglo de valores e interpreta los datos como puntos en el gráfico que incrementa el índice x por uno comenzando en x = 0. La figura 4.32 muestra el ejemplo de una gráfica de 100 números aleatorios entre 0 y 1 utilizando una Waveform Graph. Nótese que los valores del arreglo son interpretados como valores para la coordenada y (amplitud) mientras que los valores correspondientes a la coordenada x (tiempo) son asignados automáticamente con x0=0 y x=1.
Fig. 4.32. Uso de una gráfica Waveform Graph para trazo sencillo con x0=0 y x=1.
Cuando las condiciones de adquisición de la forma de onda a graficar son diferentes de los valores tomados por default, por ejemplo para una señal que inicia en x0=10 y cuyas muestras fueron tomadas cada x=5. Toda esta información se puede enviar a la gráfica en forma de un cluster compuesto de tres elementos: el primero es un valor numérico que representa el valor inicial x0, el segundo es otro valor numérico que representa el incremento
x, y el tercero es el arreglo de valores de y a graficar. La figura 4.33 muestra el ejemplo de graficación de una forma de onda bajo las condiciones antes descritas.
Instituto Tecnológico de Chihuahua
112
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Fig. 4.33. Uso de una gráfica Waveform Graph para trazo sencillo con x0=10 y x=5.
El primer valor graficado de x aparecen en x=10 y el eje X se re-escala para representar adecuadamente los incrementos de x=5 en cada valor graficado.
4.3.2.2. Trazo- Múltiple
Los gráficos de forma de onda también aceptan trazos múltiples, esto se hace a través de un arreglo bidimensional de valores, en donde cada renglón del arreglo representa una forma de onda independiente a graficar. Por default, al igual que en trazo sencillo, la gráfica interpreta los datos de cada arreglo como los valores y en la gráfica e incrementa el índice x por uno, comenzando en x = 0.
La figura 4.34 muestra el ejemplo de un a gráfica Waveform Graph utilizada para graficar simultáneamente tres formas de onda independientes con los valores por default de x0=0 y x=1 en las tres señales.
Instituto Tecnológico de Chihuahua
113
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Fig. 4.34. Uso de una gráfica Waveform Graph para trazo múltiple con x0=0 y x=1.
En el caso de las gráficas de forma de onda de trazos múltiples también es posible especificar condiciones diferentes a las asumidas por default para cada uno de los arreglos de datos. Para ello se define un cluster, igual que en trazo sencillo, para cada una de las formas de onda y luego se agrupan como un arreglo de clusters que se envía a la gráfica. La figura 4.35 muestra un ejemplo de una gráfica Waveform Graph para trazo múltiple con condiciones diferentes a x0=0 y x=1.
Fig. 4.35. Uso de una gráfica Waveform Graph para trazo múltiple con condiciones diferentes.
Instituto Tecnológico de Chihuahua
114
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.3.2.3. Personalización de las Gráficas
Las gráficas de forma de onda también se pueden personalizar de manera similar a los registradores de forma de onda seleccionando Properties del menú emergente al hacer click derecho sobre esta, como se muestra en la figura 4.36,
Fig. 4.36. Ventana de configuración para personalizar una gráfica Waveform Graph.
4.3.2.4. Consideraciones para el uso de Waveform Graph.
Debido a su capacidad de graficar arreglos previamente generados, este tipo de gráficas (Waveform Graph) resultan muy útiles para la visualización de señales dinámicas o con contenido de altas frecuencias.
Sin embargo, aunque las gráficas de forma de onda nos proporcionan un poco de flexibilidad sobre las representación de los valores graficados en el eje X, al permitirnos definir un valor inicial y un incremento, aún presentan el inconveniente de que solo se pueden
Instituto Tecnológico de Chihuahua
115
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
representar formas de onda, señales o información uniformemente distribuida en el eje X, haciendo inviable su uso en la representación gráfica de funciones que no presenten este comportamiento o bien de funciones con dependencia de dos variables f(x,y).
4.3.3. Gráfica X-Y (XY Graph)
Cuando se requiere graficar funciones que no han sido muestreadas uniformemente o bien que no tienen un comportamiento uniforme y progresivo en alguno o ambos ejes, se debe utilizar las gráficas x-y (XY Graph).
Este tipo de gráficas exhiben cualquier set de puntos, ya sea que estos sean muestreados uniformemente o no. La figura 4.37 muestra la ubicación de la gráfica x-y en la paleta de controles del panel frontal.
click click
Fig. 4.37. Ubicación de una gráfica XY Graph en el panel frontal.
Instituto Tecnológico de Chihuahua
116
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.3.3.1 Trazo Simple
Para realizar el trazo simple de una sola señal o función se deben enviar a la gráfica las coordenadas (x,y) de todos los puntos a graficar, este envío de realiza a través de un cluster que contenga dos arreglos: un arreglo con todas las coordenadas x y un arreglo con todas las coordenadas y.
Los elementos de los arreglos son tomados uno a uno para formar los puntos correspondientes (x0,y0), (x1,y1), (x2,y2), etc.
La figura 4.38 muestra un ejemplo de graficación de trazo simple utilizando una gráfica x-y en el cual se grafican los puntos: (1,1), (8,2), (5,9) y (1,3). Los arreglos X y Y proporcionados desde el panel se empaquetan en un cluster para ser enviados a la gráfica.
Fig. 4.38. Uso de una gráfica XY Graph para trazo simple.
Instituto Tecnológico de Chihuahua
117
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.3.3.2. Trazo Múltiple
Para realizar un trazo múltiple de señales o funciones en una gráfica x-y cada señal independiente se empaqueta en un cluster igual al correspondiente a un trazo simple y luego se construye un arreglo con estos clusters, entonces la gráfica x-y recibe un arreglo de clusters donde cada cluster es un trazo diferente.
La figura 4.38 muestra un ejemplo de graficación de trazo simple utilizando una gráfica x-y en el cual se grafican: plot 0=[(1,1), (8,2), (5,9) y (1,3)] y plot 1=[(2,2), (7,3), (7,8) y (0,4)].
Fig. 4.39. Uso de una gráfica XY Graph para trazo múltiple.
Instituto Tecnológico de Chihuahua
118
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.3.3.3. Personalización de las Gráficas
Las gráficas de forma de onda también se pueden personalizar de manera similar a los registradores de forma de onda seleccionando Properties del menú emergente al hacer click derecho sobre esta, como se muestra en la figura 4.40.
Fig. 4.40. Ventana de configuración para personalizar una gráfica Waveform Graph.
4.3.3.4. Consideraciones para el uso de XY Graph.
Las gráficas x-y permiten la graficación de cualquier función expresada en forma de coordenadas (x,y), lo cual las convierte en un tipo de gráfica más universal que los anteriores, Sin embargo, precisamente por requerir enviar las coordenadas de cada punto separadas en dos arreglo dentro de un cluster, su uso se torna un poco más complicado.
Instituto Tecnológico de Chihuahua
119
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.4. CADENAS DE CARACTERES (STRINGS)
Una cadena de caracteres (strings) es una secuencia de caracteres ASCII que pueden ser texto imprimible o no imprimible. Las cadenas de caracteres se usan frecuentemente para enviar comandos a instrumentos, para proveer información acerca de pruebas (tales como el nombre del operador y la fecha), o para desplegar en forma de texto resultados al usuario.
4.4.1 Controles e Indicador String
Los controles e indicadores de string se encuentran en la sub-paleta Modern/String & Path de la paleta de Controles como se muestra en la figura 4.41. click
Fig. 4.41. Ubicación del Control String y del Indicador String en el panel frontal.
Instituto Tecnológico de Chihuahua
120
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Para introducir o cambiar el contenido de texto en los controles string se utiliza la herramienta de texto (Text Tool). Las cadenas de caracteres pueden variar en su tamaño. 4.4.2. Activación del Scrollbar
Los indicadores y controles string pueden tener barras de movimiento (Scroll Bars) Estos se activan haciendo click con el botón derecho del mouse y seleccionando Visible Items» Scrollbar. Como se muestra en la figura 4.42.
Fig. 4.42. Activación del Scrollbar en los controles e indicadores string.
La barra de movimiento no se activará si el Control o el Indicador no son lo suficientemente grandes.
Instituto Tecnológico de Chihuahua
121
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.4.3. Modos de despliegue del texto
Tanto los controles como los indicadores string tiene la capacidad de desplegar el texto contenido en ellos de tres maneras diferentes: normal, códigos diagonal, password y hexadecimal.
En el modo de despliegue normal aparece solo el texto imprimible, en el modo de despliegue de códigos diagonal aparece el texto imprimible y los caracteres de control en forma se los códigos diagonal respectivos, en el modo password el texto es sustituido para su despliegue por asteriscos para proteger el contenido tecleado y en el modo de despliegue hexadecimal aparecen los valores hexadecimales de cada carácter. La figura 4.43 muestra el mismo contenido de texto desplegado en los distintos modos en un indicador string.
Fig. 4.43. Modos de despliegue de texto.
Instituto Tecnológico de Chihuahua
122
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.4.5. Funciones para Manejo de Texto
LabVIEW cuenta con muchas funciones para manejo de texto, algunas de las principales son:
4.4.5.1. Longitud de texto (String Length)
Fig. 4.43. Función String Length.
Esta función cuenta el número de caracteres que contiene una cadena, es importante hacer notar que el conteo incluye todos los carates, tanto los imprimibles como los caracteres de control.
4.4.5.2. Concatenar Strings (Concatenate Strings)
Fig. 4.44. Función Concatenate Strings.
Esta función forma una nueva cadena de caracteres en base a la concatenación consecutiva de las cadenas de caracteres de entrada
Instituto Tecnológico de Chihuahua
123
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.4.5.3. Sub-conjunto de Strings (Subset Strings)
Fig. 4.45. Función Subset Strings.
Esta función extrae un subconjunto de una cadena de caracteres iniciando en el carácter que se encuentra en la posición indicada por offset y con una longitud indicada en length.
4.4.5.4. Constantes de Strings (Subset Strings)
Además de las normales constantes string en las que se puede establecer el texto necesario, LabVIEW cuenta también con una gran cantidad de constantes string que corresponden a caracteres de control tales como: retorno de carro, fin de línea, tabulador, etc.
4.5. ARCHIVOS
Cuando se requiere guardar información en disco o recuperar información previamente guardada, LabVIEW cuenta con funciones especializadas para realizar operaciones de entrada/salida de archivo (I/O File). Estas funciones están localizadas en la paleta Programming » File I/O para manejar todos aspectos relativos a entrada/salida de archivos de distintos tipos: archivos de texto y archivos de hoja de cálculo entre otros. La figura 4.46 muestra el acceso a estas funciones.
Instituto Tecnológico de Chihuahua
124
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
click
Fig. 4.61. Ubicación del las funciones de entrada/salida para archivos.
4.5.1. Archivos de Texto.
Para el manejo de archivos de texto, LabVIEW cuenta con diversas funciones entre las que destacan Escribir en Archivo de Texto (Write to Text File) y Leer de Archivo de Texto (Read from Text File).
4.5.1.1. Escribir en Archivo de Texto (Write to Text File).
Fig. 4.62. Función Escribir en Archivo de Texto.
Instituto Tecnológico de Chihuahua
125
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Esta función escribe una cadena de caracteres o un arreglo de caracteres como líneas en un archivo. Si se alambre una trayectoria de archivo valida a la entrada file (use dialog), la función abre o crea e archivo antes de escribir en él y reemplaza cualquier contenido previo del archivo. Si se alambre una referencia de archivo (file refnum) a la entrada file (use dialog), la escritura comienza en la posición de archivo actual. Para agregar contenido a un archivo existente (append to file) se debe poner la posición de archivo al final de este usando la función Set File Position.
4.5.1.2. Leer de Archivo de Texto (Read from Text File).
Fig. 4.63. Función Leer de Archivo de Texto.
Esta función lee un determinado número de caracteres o líneas de un archivo de texto. Por default, esta función lee todos los caracteres del archivo de texto. Alambre un valor entero a la entrada count para especificar el número de caracteres individuales que desee leer empezando por el primer carácter. Haga click derecho y del menú emergente (popup menu) seleccione la opción Read Lines para leer líneas completas del archivo de texto. Al seleccionar la opción Read Lines alambre un valor a la entrada count para especificar el número de líneas individuales que desee leer en el archivo a partir de la primera línea. Introduzca un valor de -1 en la entrada count para leer todos los caracteres y las líneas del archivo de texto.
Instituto Tecnológico de Chihuahua
126
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.5.2. Archivos de Hoja de Cálculo
Cuando se requiere escribir o leer un archivo de texto que contenga información numérica tal como los valores de medición de una variable y se requiere además que dicha información sea accesible a través de algún programa de hoja electrónica de cálculo, como Excel por ejemplo, entonces se pueden utilizar las funciones de LabVIEW específicas para esto que son: Escribir en Archivo de Hoja de Cálculo (Write to Spreadsheet File) y Leer de Archivo de Hoja de Cálculo (Read from Spreadsheet File).
4.5.2.1. Escribir en Archivo de Hoja de Cálculo (Write to Spreadsheet File)
Fig. 4.64. Función Escribir en Archivo de Hoja de Cálculo.
Esta función convierte un arreglo numérico 2D o 1D del tipo entero o flotante a una cadena de texto y escribe esta cadena a un nuevo archivo o agrega la cadena a un archivo existente. El tipo de datos que se cablea a la entrada de datos 2D Data o 1D Data determina la instancia polimórfica a usar. También se puede obtener la transpuesta de la matriz de datos. El VI abre o crea el archivo antes de grabar en él y se cierra después. Puede utilizar esta VI para crear un archivo de texto legible por la mayoría de las aplicaciones de hoja de cálculo.
Instituto Tecnológico de Chihuahua
127
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.5.2.2. Leer de Archivo de Hoja de Cálculo (Read from Spreadsheet File)
Fig. 4.65. Función Leer de Archivo de Hoja de Cálculo.
Esta función lee un determinado número de líneas o filas de un archivo de texto numérico a partir de un determinado carácter (offset) y convierte los datos en un arreglo numérico 2D o 1D del tipo flotante en doble precisión. Se debe seleccionar manualmente el formato de texto que desea utilizar. También se puede, opcionalmente, hacer la transpuesta de la matriz. El VI abre el archivo antes de la lectura del mismo y se cierra después. Puede utilizar esta VI para leer un archivo de hoja de cálculo en formato de texto.
4.6. VARIABLES LOCALES
De acuerdo al paradigma de la programación por flujo de datos dos o más fuentes de datos no pueden alambrarse juntas ya que esto genera un error de sintaxis. Esto implica un problema cuando se requiere asignar en distintas partes del programa a una misma terminal datos diferentes generados en fuentes independientes.
Por ejemplo, si la lógica de nuestro programa requiere hacer una asignación a un indicador x asignando primero x=a, luego x=b y finalmente x=c, donde a, b y c son datos diferentes generados en fuentes independientes.
De igual manera evaluar la expresión x=x+1 resulta complicado si no se quiere utilizar algún tipo de ciclo con registros de corrimiento o nodos de retroalimentación.
Instituto Tecnológico de Chihuahua
128
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
La solución a estos inconvenientes la dan la generación de variables locales. Las variables locales son terminales asociadas a los controles e indicadores, a través de las cuales podemos leerlos o escribirlos sin utilizar la terminal propia del elemento en cuestión.
4.6.1. Creación de una Variable Local.
Existen dos maneras de crear una variable local. La más sencilla consiste en crearla de manera automática a través del menú emergente (popup) del control o indicador se quiere manejar a través de la variable local. Para ello se debe seleccionar en el menú de popup las opciones Create/Local Variable, como se muestra en la figura 4.67. Esto genera una terminal de variable local asociada al control o indicador. Esta terminal es del mismo tipo de variable que tenga definido el elemento que la generó y está identificada con el mismo nombre. Para un mismo elemento (control o indicador) se pueden crear tantas terminales de variable local como sean necesarias.
Fig. 4.67. Creación automática de una terminal de variable local.
Instituto Tecnológico de Chihuahua
129
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
La otra manera de crear una variable local es un poco más larga y consiste de dos pasos: primero se crea una terminal genérica de variable local y luego se le asigna el elemento al que va a estar asociada.
Para realizar el primer paso en el diagrama a bloques se selecciona Local Variable de la sub-paleta Programming/Structures, tal como se muestra en la figura 4.68.
click
Fig. 4.68. Ubicación de la terminal genérica para variable local.
Luego, para asociar esta terminal genérica con alguno de los controles o indicadores del panel se accesa el menú emergente y se selecciona el nombre del elemento de una lista de todos los elementos del panel a través de la opción Select Item como se muestra en la figura 4.69.
Instituto Tecnológico de Chihuahua
130
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Fig. 4.69. Asociación de la terminal genérica de variable local con el elemento deseado.
4.6.1. Uso de las variables locales.
El escribir en una variable local tiene el mismo resultado que pasar los datos directamente a la terminal del control o indicador asociado, con la ventaja de que se puede escribir o leer el elemento sin importar que se trate de un control o un indicador.
Por default, las terminales de variables locales están habilitadas para escribir en ellas (asignar valor). Sin embargo, si lo que se quiere es leer el valor actual del elemento asociado, entonces se debe cambiar la terminal a modo de lectura seleccionando Change to Read del menú emergente de la terminal como se muestra en la figura 4.70.
Instituto Tecnológico de Chihuahua
131
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Fig. 4.70. Cambio de la terminal de variable local a modo de lectura.
Las terminales de variable local permiten leer y/o escribir las veces que sea necesario cualquier control o indicador del VI en cualquier momento y lugar dentro del programa lo cual le da a LabVIEW una gran capacidad de programación. Sin embargo, debido al hecho de que su uso dificulta la visualización del flujo de datos en el programa, es recomendable no abusar de su uso.
4.7. VARIABLES GLOBALES
Cuando se requiere compartir datos entre programas (VIs) independientes, la opción más viable es el uso de variables globales. Las variables globales permiten leer y escribir datos que son compartidos por diferentes VIs en ejecución.
En realidad las variables globales son una especie de VI que no tiene diagrama a bloques solamente tiene un panel frontal en el cual se definen los controles e indicadores que se utilizarán para transferir datos entre los Vis. En una misma variable global se pueden definir tantos controles e indicadores como sea necesario
Instituto Tecnológico de Chihuahua
132
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.7.1. Creación de una Variable Global.
Para crear una variable global se selecciona en el diagrama a bloques Global Variable de la sub-paleta Programming/Structures, tal como se muestra en la figura 4.71. Esto genera una terminal genérica para variable global.
Para poder utilizar esta terminal en primer lugar es necesario abrir su panel para colocar en el los controles e indicadores que se utilizarán para la transferencia de datos esto se hace seleccionando Open Front Panel del menú emergente como se muestra en la figura 4.72.
click
Fig. 4.71. Ubicación de la terminal de variable global.
Instituto Tecnológico de Chihuahua
133
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Fig. 4.72. Acceso al panel frontal de la variable global.
Luego se colocan en el panel frontal de la variable global los controles e indicadores que se van a utilizar, tal y como se muestra en la figura 4.73.
Fig. 4.73. Controles en el panel frontal de la variable global.
Finalmente se asocia la terminal con uno de los elementos del panel accesando el menú emergente y seleccionando el nombre del elemento de una lista de todos los elementos del panel a través de la opción Select Item como se muestra en la figura 4.74.
Instituto Tecnológico de Chihuahua
134
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Fig. 4.74. Asociación de la terminal genérica de variable global con el elemento deseado.
4.7.2. Uso de las Variables Globales.
Al igual que en caso de las variables locales, por default las terminales de variables globales están habilitadas para escribir en ellas (asignar valor). Sin embargo, si lo que se quiere es leer el valor actual del elemento asociado, entonces se debe cambiar la terminal a modo de lectura seleccionando Change to Read del menú emergente de la terminal como se muestra en la figura 4.75.
Fig. 4.75. Cambio de la terminal de variable global a modo de lectura.
Instituto Tecnológico de Chihuahua
135
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.8. NODOS DE PROPIEDAD
Los nodos de propiedad son una herramienta que nos permite accesar a través de código a muchas de las características configurables que se encuentran en los menús emergentes de los objetos, dando a la programación en LabVIEW una excelente flexibilidad.
4.8.1. Creación de un Nodo de Propiedad
Los nodos de propiedad se crean de manera automática a través del menú emergente (popup) del control o indicador del cual se le llama. Para ello se debe seleccionar la propiedad específica que se quiere accesar en el menú de popup a través de las opciones Create/Property Node, como se muestra en la figura 4.76.
Fig. 4.76. Creación automática de una terminal de nodo de propiedad.
Instituto Tecnológico de Chihuahua
136
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Esto genera una terminal de nodo de propiedad asociada a la propiedad específica del control o indicador. Esta terminal está identificada con el mismo nombre del elemento, el nombre de la propiedad aparece en el color correspondiente al tipo de variable que corresponde a dicha propiedad. Para un mismo elemento (control o indicador) se pueden crear tantas terminales de nodo de propiedad como sean necesarias. La lista de propiedades depende del tipo específico de control o indicador.
4.8.2. Uso de los Nodos de Propiedad.
En caso de los nodos de propiedad, por default las terminales creadas están habilitadas para leer de ellas el valor actual de dicha propiedad. Sin embargo, si lo que se quiere es escribir e ellas y con ello cambiar el valor de la propiedad, entonces se debe cambiar la terminal a modo de escritura seleccionando Change to Write del menú emergente de la terminal como se muestra en la figura 4.77.
Fig. 4.77. Cambio de la terminal de nodo de propiedad a modo de escritura.
Instituto Tecnológico de Chihuahua
137
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
4.8.3. Acceso a Propiedades Múltiples.
A través de un solo nodo se puede acceder a múltiples propiedades de un mismo elemento, para ello se requiere seleccionar la opción Add Element del menú de popup del nodo, como se muestra en la figura 4.48.
Fig. 4.78. Adición de propiedades a un mismo nodo.
Por default la propiedad adicionada es la misma que la propiedad original que tenía el nodo, para cambiarla se selecciona la nueva propiedad de la opción Properties del menú emergente como se muestra en la figura 4.79
Fig. 4.79. Cambio de propiedades.
Instituto Tecnológico de Chihuahua
138
Dr. Gerardo Trujillo Schiaffino
Capítulo IV
Herramientas y Funciones de Programación
Cada una de las propiedades adicionadas al nodo se puede configurar de manera independiente en modo de lectura o de escritura.
Instituto Tecnológico de Chihuahua
139
Dr. Gerardo Trujillo Schiaffino
Capítulo V
Arquitecturas de Programación
UNIDAD V. ARQUITECTURAS DE PROGRAMACION.
5. ARQUITECTURAS DE PROGRAMACIÓN
Dependiendo de la funcionalidad requerida por la aplicación existen diversas maneras de estructurar un programa en LabVIEW. Las tres arquitecturas más comúnmente utilizadas son: VI simple, VI general y máquina de estado (state machine). .
5.1. Arquitectura de un VI Simple
Cuando se hacen pruebas de laboratorio rápidas, no se necesita una arquitectura complicada. El programa puede consistir de un solo VI que toma una medición, hace cálculos, y ya sea despliega los resultados o los guarda en el disco, pero en general no existe una estructura de control. La operación inicia cuando el usuario le da click a la flecha de inicio (run arrow), el VI se ejecuta una sola vez y luego termina.
Además de ser usada para aplicaciones de prueba, esta arquitectura también es utilizada para desarrollar componentes “funcionales” dentro de aplicaciones más grandes, es decir como subVIs dentro de una aplicación principal.
La figura 5.1 muestra un ejemplo de un programa con arquitectura de VI simple utilizado para efectuar un cálculo de conversión de grados Centígrados a grados Fahrenheit
Instituto Tecnológico de Chihuahua
140
Dr. Gerardo Trujillo Schiaffino
Capítulo V
Arquitecturas de Programación
Fig. 5.1. Arquitectura de un VI simple.
5.2. Arquitectura de un VI General
A diferencia de un VI simple, un Vi general si cuenta con una estructura de control propia. Generalmente este tipo de arquitectura se utiliza para el desarrollo de programas de aplicación final.
Para el diseño de programas con esta arquitectura se realizan tres pasos:
•
Inicio (startup)
Esta área se usa para inicializar el hardware, leer información de configuración, preguntar al usuario la localización de archivos o cualquier otro procedimiento de inicialización que sea necesario.
•
Aplicación Principal (main application)
Generalmente consiste de por lo menos un ciclo que se repite hasta que el usuario decida salir del programa, o el programa termina debido a otras razones. Aquí es donde se
Instituto Tecnológico de Chihuahua
141
Dr. Gerardo Trujillo Schiaffino
Capítulo V
Arquitecturas de Programación
realiza la mayor parte de la lógica del programa y se resuelve el problema de la aplicación de este.
•
Apagado (shutdown)
Esta sección usualmente se encarga de cerrar los archivos, escribir datos de configuración al disco, restablecer los datos de entrada/salida (I/O) a su estado predeterminado o cualquier otro procedimiento de apagado que sea necesario
La figura 5.2 muestra el ejemplo de un programa de LabVIEW con arquitectura de VI General. Nótese que los procesos de inicialización y apagado se han compactado como subVIs y la secuencia de ejecución se establece a través de la dependencia generada por la conexión de un cluster de error.
Fig. 5.2. Arquitectura de un VI general.
Para algunas aplicaciones sencillas, el ciclo de la aplicación principal puede ser bastante directo. Sin embargo, cuando se tiene interfaces de usuario complejas o eventos
Instituto Tecnológico de Chihuahua
142
Dr. Gerardo Trujillo Schiaffino
Capítulo V
Arquitecturas de Programación
múltiples (acción de usuario, accionamientos de entradas/salidas, etc.), esta sección puede volverse bastante complicada.
5.3. Arquitectura de un VI de Máquina de Estado
Usted puede hacer sus diagramas más compactos con el uso de una estructura de caso simple para manejar todos sus eventos. En este modelo usted escanea (scan) la lista de posibles eventos, o estados, y luego correlaciona (map) estos a un caso. Para el VI mostrado arriba, los estados posibles son inicio (startup), ocio (idle), evento 1, evento2 y apagado (shutdown). Estos estados se encuentran guardados en una constante enumerada. Cada estado tiene su propio caso en el lugar que usted coloque los nodos apropiados. Mientras se ejecuta un caso, el siguiente caso es determinado por el resultado actual. El siguiente caso que se ejecutara es guardado en el registro de desplazamiento (shift register). Si ocurre un error en cualquier estado, el caso de apagado (shutdown) el llamado.
La ventaja de este modelo es que su diagrama se puede reducirse significativamente (izquierda a derecha), haciendo que sea más fácil de lee y depurar. Una desventaja de la estructura de secuencia es que no puede saltarse o salirse de un caso. Este método resuelve ese problema ya que cada caso determina cual será el próximo caso que se ejecutara.
Una desventaja de esta técnica es que con se pueden perder eventos. Si dos eventos ocurren al mismo tiempo, este modelo maneja solo el primero, y el segundo se pierde. Esto puede conducir a errores que son difíciles de depurar porque solo ocurren ocasionalmente. Existen versiones más complejas de la Arquitectura del VI de la Máquina de Estado que
Instituto Tecnológico de Chihuahua
143
Dr. Gerardo Trujillo Schiaffino
Capítulo V
Arquitecturas de Programación
contiene código extra para construir un queue de eventos (estados) de manera que usted no pierda ningún evento.
Fig. 5.3. Arquitectura de una máquina de estados.
Instituto Tecnológico de Chihuahua
144
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
CAPÍTULO VI: SISTEMAS DE ADQUISICIÓN DE DATOS.
6.1. INTRODUCCIÓN A LOS SISTEMAS DE ADQUISICION DE DATOS.
Hoy en día, son muchos los ingenieros y científicos que están utilizando las computadoras personales en sus investigaciones de laboratorio, control industrial, sistemas de prueba y medición, etc. Estas y otras aplicaciones son desarrolladas a través de sistemas de adquisición de datos.
Un sistema de adquisición de datos (DAQ) basado en computadora personal está formado por los elementos mostrados en la figura 6.1.
* Computadora Personal. * Traductores y actuadores. * Acondicionamiento de Señales. * Hardware de Adquisición. * Hardware de Análisis. * Software.
La figura 6.1 muestra un esquema de la arquitectura general de un sistema de adquisición de datos.
Instituto Tecnológico de Chihuahua
145
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
Acondicionamiento de Señales
Tarjeta de Adquisición de Datos
Computadora
Transductores Software
Figura 6.1 Arquitectura de un Sistema de Adquisición de Datos.
6.2. TRANSDUCTORES Y ACTUADORES.
6.2.1. Transductores.
Los transductores son dispositivos que sensan un fenómeno físico, químico o biológico y proporcionan una señal eléctrica que contenga la información de dicho fenómeno. Por ejemplo, termopares, RTDs, termistores, y sensores IC convierten la temperatura en una señal analógica que los ADCs pueden medir. Otros ejemplos incluyen galgas extensométricas, transductores de flujo, y transductores de presión, los cuales miden fuerza, flujo y presión respectivamente. En cada caso, la señal eléctrica producida es proporcional al parámetro físico que esta monitoreando. Para mayor información sobre transductores diríjase al anexo A.
Instituto Tecnológico de Chihuahua
146
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
6.2.2. Actuadores.
Los actuadores, al contrario de los transductores, son dispositivos que transforman una señal eléctrica de control en una acción física como abrir o cerrar una válvula o encender o apagar un motor. Existen muchos tipos de actuadores, entre ellos los eléctricos, hidráulicos y neumáticos para controlar motores, fluidos y flujos de aire respectivamente. Para mayor información sobre actuadores diríjase al anexo B
6.3. ACONDICIONAMIENTO DE SEÑALES.
La señal eléctrica generada por el transductor debe ser convertida a una forma que la tarjeta de adquisición pueda aceptar. Los accesorios de acondicionamiento de señales pueden amplificar señales de bajo nivel, y también aislarlas y filtrarlas para mediciones más precisas. El acondicionamiento de señales puede también excitar y linealizar ciertos tipos de transductores.
6.3.1. Amplificación.
El más común tipo de conversión es la amplificación. Las señales de bajo nivel de los termopares por ejemplo deben ser amplificadas para aumentar la resolución y reducir el ruido. Para obtener la más alta precisión posible es necesario amplificar la señal para que la máxima variación de esta sea igual al rango máximo de entrada del ADC.
Instituto Tecnológico de Chihuahua
147
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
6.3.2. Aislamiento.
Otra aplicación común del acondicionamiento de señales es aislar la señal del transductor de la computadora con propósitos de seguridad. El sistema cuando empieza a ser monitoreado, contiene transitorios de alto voltaje que pueden dañar la computadora. Una razón adicional para necesitar aislamiento es estar seguros de que las lecturas en tarjeta DAQ no son afectadas por diferencias en potenciales de tierra o voltajes de modo común. Cuando las entradas de la tarjeta DAQ y la señal que es adquirida están referenciadas a su propia tierra, pueden existir problemas si hay diferencia de potencial entre ambas tierras. Esta diferencia ocasiona lo que se conoce
como lazo de tierra lo que puede causar una representación
inexacta de la señal adquirida, o bien, si es demasiado grande puede dañar el sistema de medición. Utilizando módulos aisladores de acondicionamiento de señales se elimina el lazo de tierra y se asegura que la señal es adquirida con exactitud.
6.3.3. Filtrado.
El propósito de un filtro es remover señales indeseadas de la señal que se trata de medir. En señales de tipo DC como la temperatura, se utiliza un filtro de ruido para atenuar las señales de alta frecuencia que pueden reducir la exactitud de la medición.
Las señales del tipo AC como las vibraciones, necesitan un tipo diferente de filtro conocido como filtro antialiasing. Al igual que el filtro de ruido, el filtro antialiasing es también un filtro pasa bajo, solo que su pendiente de corte es muy pronunciada, para remover completamente todas las frecuencias de la señal que son más grandes que el rango de entrada de la tarjeta de adquisición. Si estas frecuencias no son removidas, aparecerán erróneamente
Instituto Tecnológico de Chihuahua
148
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
como señales adicionales en el rango de frecuencias de la tarjeta. Las tarjetas de adquisición diseñadas específicamente para medición de señales del tipo AC, al igual que las tarjetas para adquisición dinámica, tienen inter-construidos los filtros antialiasing de entrada.
6.3.4. Excitación.
El acondicionador de señales también puede generar la excitación para algunos transductores. Las galgas extensométricas, los termistores y las RTDs, por ejemplo, requieren señales d excitación externa de voltaje o corriente. Los módulos de acondicionamiento de señales para estos transductores usualmente proporcionan estas señales. Las mediciones con RTD son generalmente hechas con una fuente de corriente que convierte las variaciones de resistencia en un voltaje medible. Las galgas extensométricas, las cuales son dispositivos de muy baja resistencia, normalmente se utilizan en configuración de Puente de Wheastone con una fuente de excitación de voltaje.
6.3.5. Linealización.
Otra función común de los acondicionadores de señales es la linealización. Muchos transductores, como los termopares, tienen una respuesta no lineal a los cambios en el fenómeno
medido.
Esto
hace
necesario
contar
con
módulos
linealizadores
acondicionamiento de señales para convertir estas señales no lineales en señales lineales.
Instituto Tecnológico de Chihuahua
149
Dr. Gerardo Trujillo Schiaffino
de
Capítulo VI
Sistemas de Adquisición de Datos
6.4. TARJETAS DE ADQUISICIÓN DE DATOS.
Cuando hablamos de hardware de adquisición, nos referimos a una tarjeta de adquisición de datos (DAQ), la cual comúnmente es una tarjeta insertable que se coloca dentro de la computadora para digitalizar señales analógicas de manera tal que la computadora pueda disponer de la información contenida en ellas. Dependiendo de la tarjeta en particular de que se trate puede variar el número, características y tipo de entradas/salidas que contenga, sin embargo, una tarjeta DAQ genérica cuenta con: entradas analógicas, salidas analógicas, entradas/salidas digitales y entradas/salidas temporizadas. La figura 6.2 muestra una tarjeta DAQ genérica.
Bus Computacional
Entradas Analógicas Salidas Analógicas Entradas / Saldas Digitales Entradas / Salidas Temporizadas
Fig.6. 2 Tarjeta de Adquisición de Datos.
6.4.1. Señales Analógicas.
Antes de entrar en detalle sobre las principales características que deben tomarse en cuenta en las entradas analógicas de las tarjetas de adquisición de datos, es conveniente repasar algunos conceptos importantes sobre las señales analógicas que se analizarán con ellas.
Instituto Tecnológico de Chihuahua
150
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
Las señales analógicas se pueden dividir en tres categorías básicas dependientes del tipo de información que contienen: D.C., dominio del tiempo y dominio de la frecuencia. La figura 6.3 muestra esta clasificación.
Nivel D.C.
t
Señales Analógicas
Dominio del Tiempo
Forma
t Dominio de la Frecuencia
Contenido de Frecuencias
f Fig. 6.3 Tipos de Señales Analógicas.
En las señales analógicas D.C. la información se encuentra contenida en el nivel de la misma, es decir, en este tipo de señales solo nos interesa la magnitud de esta. En las señales analógicas en el dominio del tiempo la información está contenida en la forma de la señal, es decir, en este tipo de señales nos interesa el comportamiento que tiene el nivel con respecto al tiempo. En las señales analógicas en el dominio de la frecuencia la información está contenida en la magnitud de las frecuencias presentes en la señal, es decir, lo que nos interesa en este tipo de señales es el espectro de frecuencias de la señal.
Instituto Tecnológico de Chihuahua
151
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
Las señales pueden ser de dos tipos: fuente referenciada o fuente no referenciada. También se conoce a las señales de fuente referenciada como señales aterrizadas, y a las señales de fuente no referenciada como señales flotantes.
En las fuentes de señal aterrizada se tienen señales de voltaje que están referenciadas a un sistema de tierra. En la figura 6.4 se muestra una fuente de este tipo, donde podemos apreciar que una de las terminales de salida está conectada a la tierra del sistema.
+
Vs
-
Tierra Fig.6.4 Fuente de Señal Aterrizada.
Las fuentes de señal flotante contienen una señal cuyo voltaje no está conectado a una referencia absoluta, como tierra o chasis. Un ejemplo común de este tipo de fuentes de señal son las baterías, los termopares, los transformadores, los amplificadores de aislamiento y algunos instrumentos con salidas flotantes. En la figura 6.5 se muestra una fuente de señal flotante donde se puede observar que ninguna de las terminales de salida está conectada a la terminal de tierra.
+
Vs
-
Tierra Fig. 6.5 Fuente de Señal Flotante.
Instituto Tecnológico de Chihuahua
152
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
Teniendo en cuenta estos aspectos fundamentales sobre las señales analógicas, podemos entonces dar paso al análisis de las principales características que deben considerarse en las entradas analógicas de las tarjetas de adquisición de datos.
Las especificaciones de las entradas analógicas proporcionan información tanto en las capacidades como en la exactitud de la tarjeta de adquisición de datos. Las especificaciones básicas que se proporcionan en los productos de adquisición de datos nos dicen: número de canales de entrada, modo de medición, resolución, rango de voltaje de entrada razón de muestreo, resolución y rango de entrada.
6.4.2. Líneas de Entrada Analógica.
Una de las funciones principales de una tarjeta de adquisición de datos es proporcionar líneas de entrada que le permitan a la computadora capturar señales analógicas. Los principales parámetros que se deben tener en cuenta para la selección de la tarjeta de adquisición adecuada para una aplicación dada son: número de canales de entrada y modos de medición, resolución, rango de voltaje del dispositivo, rango de voltaje de la señal, razón de muestreo, tiempo de establecimiento y ruido
Número de Canales de Entrada y Modos de Medición.
Es importante conocer el número de canales de entrada con que cuenta la tarjeta DAQ, este se deberá especificar tanto para modo diferencial como para modo desbalanceado en
Instituto Tecnológico de Chihuahua
153
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
tarjetas que tengan ambos tipos de entrada. Las entradas desbalanceadas pueden ser referenciadas o no referenciadas.
A) Sistemas de Medición Diferencial (DIF).
En un sistema de medición diferencial, no es necesario conectar ninguna de las entradas a una referencia fija, tal como tierra o chasis. Las entradas analógicas en las tarjetas de adquisición de datos cuentan normalmente con un amplificador de instrumentación que puede ser configurado como sistema de medición diferencial. La figura 3.6 muestra un sistema de medición diferencial de 8 canales utilizado en algunas tarjetas DAQ. El uso de multiplexores analógicos (AMUX) incrementa el número de canales de medición utilizando un solo amplificador de instrumentación. Para este caso, la terminal etiquetada AIGND (tierra para entradas analógicas) es la tierra del sistema de medición.
En general, es preferible un sistema de medición diferencial ya que no solo rechaza los errores inducidos por lazos de tierra, sino también hasta ciertos límites. El ruido colectado del sistema.
Se deberá usar los sistemas de medición diferencial cuando las señales de entrada cumplan con los siguientes criterios:
Señales de bajo nivel. (menores de 1 v.).
Alambrado largo o no blindado a través de ambientes ruidosos.
Instituto Tecnológico de Chihuahua
154
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
Alguna de las señales de entrada requiere un punto de referencia de tierra o retorno de señal independiente.
Amplificador de Instrumentación
AMUX CH0+ CH1+ CH2+ . . . CH7+
+ AMUX
+ Vm -
-
CH0CH1CH2. . . CH7AIGND
Fig.6.6 Sistema de Medición Diferencial de 8 Canales.
Un sistema de medición diferencial ideal solo lee la diferencia de potencial entre las terminales de entrada (+) y (-). Cualquier voltaje presente en las entradas del amplificador con respecto a la tierra del mismo amplificador es llamado voltaje de modo común. Un sistema de medición diferencial ideal rechaza (no mide) los voltajes de modo común. La figura 3.7 muestra la representación de este voltaje.
Amplificador de Instrumentación Voltaje de la Señal Voltaje de Modo Común, Potencial de Tierra, Ruido, etc.
+
+ Vs -
-
+ Vcm -
+ Vm -
Fig. 6.7 Voltaje de Modo Común.
Instituto Tecnológico de Chihuahua
155
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
B) Sistema de Medición Desbalanceada Referenciada (RSE)
Un sistema de medición desbalanceado referenciado (Referenced Single-Ended ) tiene todas sus entradas de medición referenciadas a la tierra del sistema. La figura 3.8 muestra un sistema de medición desbalanceado referenciado de 16 canales de entrada donde se puede notar que todas las señales de entrada deben estar referenciadas a la tierra del sistema denominada AIGND (Analog Input Ground). CH0+ CH1+ CH2+ . . .
Amplificador de Instrumentación +
CH15+ AMUX
+ Vm -
AIGND
Fig. 6.8 Sistema de Medición RSE de 16 Canales.
C) Sistema de Medición Desbalanceado No Referenciado (NRSE).
Las tarjetas de adquisición de datos en ocasiones ofrecen una variante de la técnica de medición RSE, conocida como sistema de medición desbalanceada no referenciada (Nonreferenced Single-Ended), donde todas las mediciones se hacen con respecto a una referencia común, es decir, todas las señales de entrada tienen una referencia a tierra. Sin embargo, esta tierra no es la misma que la tierra del sistema de medición. En la figura 3.9 se muestra un sistema de medición desbalanceado no referenciado donde la terminal AISENSE
Instituto Tecnológico de Chihuahua
156
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
es la referencia común para tomar las mediciones y la terminal AIGND es la tierra del sistema, nótese que todas las señales de entrada están referenciadas a AISENSE.
La configuración desbalanceada, tanto la referenciada como la no referenciada, nos proporciona el doble de canales de medición y es aceptable cuando la magnitud del error inducido es más pequeña que la exactitud requerida en los datos.
CH0+ CH1+ CH2+ . .
Amplificador de Instrumentación +
CH15+
AMUX + Vm -
-
AISENS AIGND
Fig. 6.9 Sistema de Medición NRSE de 16 Canales.
Los sistemas de medición desbalanceados se pueden utilizar cuando todas las señales de entrada cumplen los siguientes criterios:
Señales de alto nivel (normalmente mayores de 1 v.) Cableados cortos y apropiadamente blindados a través de ambientes libres de ruido. Todas las señales tiene una referencia común en la fuente de las mismas.
Si no se cumple alguno de estos criterios se recomienda utilizar un sistema de medición diferencial.
Instituto Tecnológico de Chihuahua
157
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
Resolución.
Una vez definidas las características de las señales y el sistema de medición adecuado para ellas debemos recordar que todavía tenemos una señal analógica, la cual debe ser convertida por un convertidor analógico-digital (ADC) en una señal digital que pueda ser entendida por la computadora. Algunas de las características que deben tomarse en cuanta para una adecuada digitalización son: la resolución del ADC, el rango de voltaje de la entrada de la tarjeta digitalizadora y el rango de voltaje de la señal que se va a digitalizar.
El número de bits utilizado para representar una señal analógica determina la resolución del ADC. Se podría comparar la resolución con la graduación de una regla. Entre más marcas se tengan es más precisa la medición. De manera similar, a mayor resolución en un convertidor ADC, será mayor el número de segmentos en que el sistema puede dividir la señal de entrada, y por lo tanto, es más pequeño el mínimo cambio de voltaje detectable.
Un ADC de 3 bits divide el rango en 23 o 8 divisiones. Un código binario o digital entre 000 y 111 representa cada división. El ADC traduce cada medición de la señal analógica a una de las divisiones digitales. La Figura 6.10 muestra una onda senoidal representada digitalmente con un convertidor ADC de 3 bits. Claramente se puede ver que la representación digital no es una buena representación de la señal analógica original debido a que se pierde mucha información en la conversión ya que el convertidor tiene unos cuantos códigos digitales para representar una infinidad de niveles analógicos Aumentando la resolución a 16 bits se aumenta el número de códigos de 8 a 65,536 (216), con lo cual el ADC podría obtener una representación digital extremadamente exacta de la señal analógica.
Instituto Tecnológico de Chihuahua
158
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
a)
b)
c)
Figura 6.10 a) Representación de una Señal Senoidal b) con resolución de 3 bits c) con resolución de 16 bits
Rango de Voltaje del Dispositivo.
El rango de entrada de voltaje del dispositivo se refiere a los voltajes máximo y mínimo que pueden ser digitalizados por el ADC. Las tarjetas DAQ multifunción ofrecen generalmente rangos seleccionables para poder configurar la tarjeta para manejar una variedad de niveles de entrada. Con esta flexibilidad se tiene la ventaja de poder obtener la mejor resolución posible para medir la señal de manera más precisa. Por ejemplo, suponiendo que el ADC de 3 bits tiene un rango de 0 a 10 volts, este rango se divide en ocho segmentos de 1.25 volts cada uno. Si para este mismo ADC se selecciona un rango de - 10 a 10 volts, al dividir estos 20 volts entre los mismos ocho segmentos cada uno queda de 2.50 volts. De esta manera el voltaje detectable más pequeño aumenta de 1.25 a 2.50 volts, por lo que tendremos una representación mucho menos exacta de la señal analógica. La figura 6.11 muestra este efecto
Instituto Tecnológico de Chihuahua
159
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
a)
b)
c)
Figura 6.11. Efecto del rango de voltaje del dispositivo en la precisión del ADC
a) Señal Aplicada, b) Rango 0 a 10 v., c) Rango -10 a 10 v.
Rango de Voltaje de la Señal.
El rango de voltaje de la señal, también denominado límite establecido, es el máximo y mínimo voltaje de la señal que se va a medir. Con límites establecidos más precisos el ADC optimiza los códigos digitales disponibles para representar la señal analógica. Por ejemplo, usando un ADC de 3 bits y seleccionando un rango de entrada de dispositivo de 0 a 10 volts para medir una señal que solo varía de 0 a 5 volts, utilizando límites establecidos de 0 a 10 volts, el ADC solo podrá utilizar cuatro de los ocho códigos digitales para representar la señal, en cambio utilizando límites establecidos de 0 a 5 volts el ADC podrá utilizar los ocho códigos disponibles. La figura 6.12 muestra este efecto
Instituto Tecnológico de Chihuahua
160
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
b)
a)
c)
Figura 6.12. Efecto del rango de voltaje de la señal en la precisión del ADC a) Señal original, b) con límite establecido de 0 a 5 v., c) con límite establecido de 0 a10 v.
La relación entre el rango de voltaje del dispositivo y el rango de voltaje de la señal está dada por la ganancia del amplificador de instrumentación utilizado en la tarjeta DAQ, normalmente las tarjetas cuentas cuentan con ganancias programables para este fin.
El rango, la resolución y la ganancia de una tarjeta DAQ determinan el más pequeño cambio de voltaje detectable. Este cambio en voltaje representa 1 LSB del valor digital, y también es llamado ancho de código. El ancho de código ideal se encuentra dividiendo el rango entre la ganancia multiplicada por dos elevado a la potencia del número de bit de resolución. Por ejemplo, para el caso de una tarjeta DAQ con un rango de voltaje de entrada de 0 a 10 volts, una ganancia de 100 y resolución de 12 bits, el ancho de código es:
10 v. / (100 * 212) = 24.414 v.
Para un dispositivo pero con rango de entrada de -10 a 10 volts el ancho de código es:
Instituto Tecnológico de Chihuahua
161
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
20 v. / (100 * 212) = 48.828 v.
Por otro lado, si utilizamos el dispositivo original pero con una ganancia de 200, el ancho de código es: 10 v. / (200 * 212) = 12.207 v.
Y finalmente, utilizando una resolución de 16 Bits.
10 v. / (100 * 216) = 1.525 v.
Entre más pequeño sea el ancho de código las mediciones efectuadas serán más exactas.
Razón de Muestreo.
La razón de muestreo determina la velocidad con que son tomadas las muestras. Una razón de muestreo más grande adquiere más puntos en un tiempo dado y puede de esta manera ofrecer una mejor representación de la señal original. Por ejemplo, una señal de audio convertida en señal eléctrica por un micrófono comúnmente tiene componentes de frecuencia hasta de 20 KHz. Para digitalizar apropiadamente esta señal, el Teorema de Muestreo de Nyquist nos dice que debemos muestrear a más del doble que la máxima componente de frecuencia que queremos detectar. Así, se necesita una tarjeta DAQ con una razón de muestreo más grande de 40 KS/s.
Instituto Tecnológico de Chihuahua
162
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
El multiplexeo es una técnica común para medir varia señales con un solo ADC. El ADC muestrea un canal, se cambia a otro canal, lo muestrea, se cambia al siguiente canal y así sucesivamente. Debido a que un solo ADC está muestreando varios canales en vez de uno solo, la razón de muestreo efectiva para cada canal es inversamente proporcional al número de canales que muestrea. Como un ejemplo, una tarjeta con razón de muestreo de 100 KS/s sobre 10 canales, muestrea efectivamente cada canal a 10 KS/s. También es válido utilizar multiplexores analógicos externos para aumentar el número de canales que la tarjeta puede medir. La razón de muestreo disminuye proporcionalmente por la adición de multiplexores externos.
Tiempo de Establecimiento.
En una tarjeta DAQ típica, una señal analógica es primero seleccionada por un multiplexor, y luego amplificada a través de un amplificador de instrumentación antes de ser convertida a señal digital por el ADC. El amplificador de instrumentación deberá estar habilitado para seguir a la salida del multiplexor mientras este conmuta entre los distintos canales, y de esta manera alcanzar la exactitud del ADC.
De no ser así, el ADC deberá convertir una señal que todavía no ha alcanzado su valor verdadero. El tiempo que requiere el amplificador de instrumentación para alcanzar una exactitud específica, es llamado tiempo de establecimiento. Un tiempo de establecimiento pobre es un problema grave, ya que la inexactitud usualmente varía con la ganancia y con la razón de muestreo. Si esto ocurre, la tarjeta DAQ no tendrá manera de enviar mensaje de error, ya que este ocurre en la etapa analógica.
Instituto Tecnológico de Chihuahua
163
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
El amplificador de instrumentación es más propenso a no alcanzar el valor de la señal cuando se muestrean muchos canales a altas ganancia y con una elevada razón de muestreo. Cuando la aplicación está muestreando múltiples canales, el multiplexor está cambiando entre diferentes canales, lo que dificulta al amplificador seguir la señal con variaciones de voltaje significativas. En efecto, no tos loa amplificadores de Instrumentación pueden alcanzar una exactitud de 12 bits en menos de 5 s. cuando amplifican con una ganancia de 100.
Ruido.
El ruido es cualquier señal no deseada que aparezca en la señal digitalizada de la tarjeta DAQ. Debido a que una computadora es un ambiente digital extremadamente ruidoso, los sistemas de adquisición de datos en tarjetas insertables
para PC’s se deben diseñar
cuidadosamente en tecnología multicapa. Simplemente colocando un ADC, un amplificador de instrumentación, y la circuitería para interface de bus en un circuito impreso de una o dos caras, el resultado es una ruidosa tarjeta DAQ. Los diseñadores utilizan blindajes metálicos en las tarjetas DAQ para ayudar a reducir el ruido. Un blindaje apropiado no se obtiene tan solo blindando la secciones analógicas sensitivas, sino a través de del diseño de circuitos multicapas con planos de tierra. 1.00E 0
1.00E 0
1.00E-1
1.00E-1
1.00E-2
1.00E-2
1.00E-3
1.00E-3
1.00E-4
1.00E-4
1.00E-5
1.00E-5
1.00E-6
1.00E-6
1.00E-7
1.00E-7
1.00E-8
1.00E-8
1.00E-9
1.00E-9
-50 -40 -30 -20 -10 0
10 20 30 40 50
a)
-50 -40 -30 -20 -10 0
10 20 30 40 50
b) Figura.6.13 Ruido
Instituto Tecnológico de Chihuahua
164
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
La Figura 6.13 muestra las gráficas de ruido D.C. para dos tarjetas DAQ diferentes, las cuales utilizan el mismo circuito ADC. De la gráfica de ruido se pueden determinar dos características: rango y distribución del ruido. La gráfica en la Figura 6.13a tiene una alta distribución de muestras en 0 y un muy pequeño número de puntos ocurriendo en otros códigos. La distribución es Gaussiana, lo cual es de esperarse para ruido aleatorio. Para esta gráfica, el nivel pico de ruido está entre 3 LSB. La gráfica en la Figura 6.13b corresponde a una tarjeta muy ruidosa, la cual tiene una distribución diferente. Esta tarjeta tiene ruido de más de 20 LSB, con muchas muestras ocurriendo en puntos diferentes a los esperados.
6.4.3. Salidas Analógicas.
Para proporcionar estímulos a los sistemas DAQ, en ocasiones se requiere contar con algunas líneas de salida analógica. Las especificaciones de los DACs que determinan la calidad de la señal de salida producida son: tiempo de establecimiento, slew rate, y resolución.
Tiempo de Establecimiento y Slew Rate.
El tiempo de establecimiento y el slew rate trabajan juntos para determinar que tan rápido el DAC puede cambiar el nivel de la señal de salida. El tiempo de establecimiento es el tiempo que tarda la salida en alcanzar la precisión especificada. El tiempo de establecimiento se especifica usualmente para un cambio de voltaje de escala completa. El slew rate es la máxima razón de cambio que el DAC puede producir en la señal de salida. Así, un DAC con un tiempo d establecimiento pequeño y un slew rate grande, puede generar señales de alta
Instituto Tecnológico de Chihuahua
165
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
frecuencia, ya que se necesita un tiempo pequeño para cambiar con precisión la salida a un nuevo nivel de voltaje.
Un ejemplo de aplicación que requiere un alto desempeño de estos parámetros es la generación de señales de audio. El DAC requiere de un pequeño tiempo de establecimiento y un gran slew rate para generar las altas frecuencias necesarias para cubrir el espectro de audio. En contraste, una aplicación en la cual no se requiere una rápida conversión digitalanalógica, es la señal de voltaje para controlar un calefactor, debido a que el calefactor no puede responder rápidamente a los cambios de voltaje.
Resolución.
La resolución de una salida es similar a la resolución de una entrada. Es el número de bits en el código digital que genera una salida analógica. Un mayor número de bits reduce la magnitud de cada incremento en el voltaje de salida, lo que hace posible generar señales más continuas. Las aplicaciones que requieren un amplio rango dinámico con pequeños cambios incrementales en el voltaje de salida, necesitan salidas analógicas de alta resolución.
6.4.4. Puertos de Entradas / Salidas Digitales.
Las interfaces de entrada salida digital son muy utilizadas en los sistemas DAQ basados en PC para controlar procesos, generar patrones de prueba, o comunicarse con equipos periféricos. Los componentes digitales de entrada/salida en las tarjetas DAQ consisten en hardware que genera o produce señales encendido/apagado. Como se muestra en la figura
Instituto Tecnológico de Chihuahua
166
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
6.14 todas las líneas digitales de una tarjeta DAQ están agrupadas en puertos. El número de líneas digitales por puerto es específico de cada dispositivo en particular, pero en la mayoría de los casos un puerto consiste en cuatro u ocho líneas. Escribiendo o leyendo un puerto se puede modificar o conocer simultáneamente el estado de todas las líneas del puerto.
Hardware Digital
Puerto de Salida
Líneas de Salida
Tarjeta DAQ Hardware Digital Puerto de Entrada
Líneas de Entrada
Figura 6.14. Puertos y Líneas Digitales.
En cada caso, los parámetros más importantes incluyen el número de líneas digitales disponibles, la razón de datos o velocidad a la cual se pueden utilizar estas líneas, y la capacidad de manejo de las mismas.
Si las líneas digitales se utilizan para controlar eventos tales como encendido y apagado de calefactores, motores o luces, usualmente no se requiere una razón de datos muy grande, ya que estos equipos no responden muy rápidamente. Del número de líneas digitales disponibles, depende el número de eventos que pueden ser monitoreados o controlados. El único inconveniente es que la cantidad de corriente requerida para encender los dispositivos, debe ser menor que la corriente proporcionada por la línea digital de la tarjeta DAQ. Sin embargo, con el acondicionador de señales adecuado, se pueden utilizar las señales TTL de baja corriente para manejar niveles más altos de voltaje y corriente para dispositivos de uso industrial. Por ejemplo, el voltaje y corriente que se necesita para operar una electro-válvula industrial es del orden de 100 v.a.c. a 2 Amp., como las salidas digitales de una tarjeta DAQ
Instituto Tecnológico de Chihuahua
167
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
proporcional solo 5 v.d.c. a unas cuantos miliamperes, es evidentemente necesario el uso de un acondicionador de señales para poder manejar la válvula.
Otra aplicación común de las líneas digitales de entrada-salida es la de transferir datos entre la computadora y otros equipos, tales como capturadores o procesadores de datos, impresoras, etc. Debido a que estos dispositivos usualmente transfieren los datos en incrementos de un byte (8 bits), las líneas digitales en las tarjetas DAQ estas agrupadas generalmente en puertos de 8 bits.
Existen dos tipos de adquisición / generación digital: no-atrapada o inmediata y atrapada o protocolizada. En una salida digital no-atrapada o inmediata, el sistema actualiza las líneas digitales inmediatamente. Una salida atrapada o protocolizada es cuando el dispositivo acepta o transfiere el dato después de recibir un pulso.
Existen a su vez dos tipos de entradas / salidas digitales protocolizadas: noalmacenadas y almacenadas. Una generación o adquisición no-almacenada se llega a cabo cuando el dispositivo digital genera o acepta un solo valor después de recibir el pulso de protocolo. Una generación / adquisición almacenada es necesaria cuando en vez de un solo valor se debe generar o aceptar un patrón digital después de recibir el pulso de protocolo.
6.4.5. Líneas de Entradas / Salidas Temporizadas.
Las tarjetas DAQ cuentan también con circuitería para temporizadores y contadores necesarios en algunas aplicaciones, por ejemplo, el conteo de eventos digitales ocurridos, temporizado de pulsos digitales y generación de ondas cuadradas y trenes de pulsos.
Instituto Tecnológico de Chihuahua
168
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
Los contadores adicionan conteo y temporizado de alta precisión al sistema de adquisición de datos. Los contadores responden a señales TTL (Transistor Transistor Logic) en las cuales un nivel bajo o “cero lógico” está representado por 0 volts y un nivel alto o “uno lógico” está representado por 5 Volts. La figura 6.15 muestra una señal TTL.
+5 V. Transición de la Señal 0 V.
Figura 6.15. Señal TTL
Aun cuando los contadores cuentan las transiciones de la señal TTL, esta capacidad de conteo se puede utilizar de muchas maneras:
*
Generar pulsos TTL para señales de reloj y disparo de otras aplicaciones.
*
Medir el ancho de pulso de una señal TTL.
*
Medir la frecuencia y periodo de una señal TTL
*
Contar las transiciones de una señal TTL o el tiempo asociado.
*
Dividir la frecuencia de señales TTL.
La figura 6.16 muestra el modelo básico de un contador.
Compuerta
Salida
Registro de Conteo Fuente
Fig. 6.16. Modelo de un Contador.
Instituto Tecnológico de Chihuahua
169
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
Un contador consiste de una terminal de entrada fuente, una terminal de entrada compuerta y una terminal de salida asociadas a un registro de conteo.
Típicamente, un contador cuenta las transiciones de la señal en la entrada fuente. Sin embargo, se puede configurar al contador para contar tanto la transición de bajo a alto o la transición de alto a bajo. Para cada transición contabilizada, el contador incrementa o decrementa su registro de conteo interno.
La compuerta es una entrada digital que habilita o deshabilita la función de un contador. Existen cuatro modos de compuerta: transición ascendente, transición descendente, nivel alto y nivel bajo. Finalmente, la salida genera la onda cuadrada o los trenes de pulsos en la línea digital de salida.
Las especificaciones más importantes para la operación de un contador son: la resolución y la frecuencia de reloj.
La resolución es el número de bits que utiliza el contador una resolución grande significa que el contador puede efectuar conteos más grandes.
La frecuencia de reloj determina que tan rápido se puede cambiar la señal de la fuente. Con una frecuencia más grande el contador se incrementa más rápidamente y puede detectar señales de alta frecuencia en la entrada y generar pulsos de alta frecuencia o señales de onda cuadrada de alta frecuencia en la salida.
Instituto Tecnológico de Chihuahua
170
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
6.5. FUNCIONES DE SOFTWARE PARA ADQUISICION DE DATOS
Para comprender mejor la estructuración del software para adquisición de datos y su interacción con el hardware correspondiente, es conveniente analizar la figura 6.17.
Aplicación Final
Programa de Adquisición de Datos
Lenguaje de Programación
LabVIEW, LabWindows/CVI Measurement Studio
Software de Configuración
Manejadores de Hardware
Measurement & Automation Explorer
NI-DAQ Tradicional NI-DAQmx
Interno PCI, PCMCIA, etc.
Hardware de Adquisición de Datos
Externo USB, RS232, etc.
Fig. 6.17. Estructura del software de adquisición de datos.
Para que un programa de adquisición de datos desarrollado en cualquier lenguaje de programación pueda interactuar con el hardware de adquisición, se requiere generalmente de una etapa de software intermedia que sirva como interfaz entre el lenguaje de alto nivel y el hardware.
En el caso de los productos de National Instruments este interface se realiza en a través de la interacción de dos programas diferentes, un software controlador para el manejo propio del hardware llamado NI-DAQ y un software de configuración y prueba llamado Measurement & Automation Explorer.
Instituto Tecnológico de Chihuahua
171
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
6.5.1. Instalación del Hardware de adquisición.
Debido a que el hardware de adquisición generalmente es PLug & Play, su instalación resulta bastante sencilla si se siguen estos sencillos pasos:
a. Primero se instala el software de programación (LabVIEW, LabWindows/CVI, etc.). b. Luego se instala el software de configuración (Measurement & Automation, etc.). c. Después se instalan los controladores de hardware (NI-DAQ tradicional, NI-DAQmx, etc.). d. Finalmente se instala el hardware (PCI, PCMCIA, USB, etc.).
El seguir esta secuencia de instalación garantiza que el Administrador de Configuración de Windows detecte y configure automáticamente el dispositivo DAQ agregado. Si se tiene que instalar un dispositivo DAQ que no es Plug & Play (dispositivo antiguo), este debe configurarse manualmente mediante la opción de Agregar Nuevo Hardware en el Panel de Control de Windows.
6.5.2. Controladores NI-DAQ
Los dispositivos de adquisición de National Instruments incluyen el programa controlador NI-DAQ, Una colección de funciones especializadas para configurar y adquirir datos. NI-DAQ tiene dos controladores diferentes, el NI-DAQ tradicional y el NI-DAQmx, cada uno de ellos con su propia interfaz de programación de aplicaciones. NI-DAQ tradicional es el controlador soportado por una gran cantidad de hardware antiguo y representa la tecnología anterior de controladores de adquisición, sin embargo aun está disponible el mercado, por otro lado NI-DAQmx es la nueva generación de controladores soportado por las
Instituto Tecnológico de Chihuahua
172
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
nuevas tecnologías de hardware de adquisición que a la larga representará la opción que prevalezca en el mercado.
Dependiendo del tipo y del modelo del hardware de adquisición este pude soportar NIDAQ tradicional, NI-DAQmx o ambos. Los controladores NI-DAQ generalmente son proporcionados en forma CD con junto con el hardware de adquisición. Una vez instalados de manera correcta
los controladores de NI-DAQ se tiene acceso a todas las funciones
especializadas de adquisición de datos en LabVIEW siguiendo la trayectoria: Function/All Functions/ NI Measurements, tal como se muestra en la figura 6.18.
click NI-DAQmx
click NI-DAQ Tradicional
Fig. 6.18. Funciones de adquisición de datos agregadas por NI-DAQ.
Instituto Tecnológico de Chihuahua
173
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
6.5.3. Software de configuración Measurement & Automation Explorer (MAX).
Measurement & Automation Explorer, también llamado MAX, es un programa que le permite a los diversos lenguajes de programación tener acceso a los recursos de hardware instalados en la computadora: dispositivos DAQ, interfaces GPIB, puertos serie y paralelo (COM1, COM2, LPT1, etc.). Si este programa no detecta algún tipo específico de hardware instalado en la computadora, entonces no será posible acceder a este desde ningún lenguaje de programación. MAX permite establecer los parámetros de configuración (direcciones, interrupciones DMA, etc.) de los dispositivos DAQ instalados y de los canales de adquisición asociados, por lo cual, después de instalar un dispositivo DAQ en la computadora, es necesario ejecutar MAX para efectuar la configuración del mismo. También permite efectuar pruebas funcionales de los recursos de adquisición (entradas analógicas, salidas analógicas, puertos digitales, timers / contadores, etc.). La figura 6.19 muestra la ventana principal de MAX.
Fig. 6.19. Ventana principal del software Measurement & Automation Explorer.
Instituto Tecnológico de Chihuahua
174
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
Para acceder a la configuración de un dispositivo DAQ seleccione en Devices and Interfaces el controlador adecuado (NI-DAQ tradicional, NI-DAQmx, etc.) y el nombre específico del hardware, tal como se muestra en la figura 6.20 para el caso de una tarjeta DAQCard 6024E denominada Dev1 en bajo el controlador NI-DAQmx.
Fig. 6.20. Acceso a un dispositivo DAQ especifico.
En la parte central de la ventana con la selección en la pestaña Atributes, aparecen los recursos asignados al dispositivo (rango de direcciones, IRQ, etc.). Para probar estos recursos haga un click en el botón Self-Test como se muestra en la figura 6.21.
click
Fig. 6.21. Auto prueba de recursos asignados al dispositivo DAQ.
Instituto Tecnológico de Chihuahua
175
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
El botón Test Panels abre los paneles de prueba correspondientes para cada tipo de entrada o salida del dispositivo DAQ. Es en estos paneles donde se configura el tipo de entrada analógica (diferencial, referenciada, etc.), los rangos de voltaje del dispositivo y todas las demás características propias a cada entrada o salida. Además, desde estos mismos paneles se puede efectuar la prueba funcional de todos los recursos de adquisición del dispositivo como se muestra en la figura 6.22.
a)
b)
c)
d)
Fig. 6.22. Panel de prueba para a) entradas analógicas, b) salidas analógicas, c) puertos digitales y d) timers / contadores.
Instituto Tecnológico de Chihuahua
176
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
6.5.4. DAQ Assistant.
La forma más sencilla de adquirir datos en LabVIEW es utilizar un SubVI Express llamado DAQ Assistant el cual se encuentra directamente en la paleta de funciones en la subpaleta de entradas: Function > Input > DAQ Assistant, como se muestra en la figura 6.23.
click
Fig. 6.23. Acceso al SubVI Express DAQ Assistant,
Instituto Tecnológico de Chihuahua
177
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
Al colocar el subVI por primera vez en el diagrama de bloque se abre una ventana inicial del DAQ Assistant, como se muestra en la figura 6.24, la cual permite seleccionar el tipo general de recurso que se desea utilizar: entradas analógicas, salidas analógicas, entradas de contadores, salidas de contadores o entradas salidas digitales.
Fig. 6.24. Ventana inicial del DAQ Assistant,
Una vez seleccionado el recurso general se pasa a una ventana de selección del tipo específico de recurso (voltaje, temperatura, corriente, resistencia, etc.), la figura 6.25 muestra el ejemplo de selección de una entrada analógica de voltaje.
Instituto Tecnológico de Chihuahua
178
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
Fig. 6.25. Ventana para selección del recurso general y específico.
Luego se asigna el canal físico que se empleará para la adquisición, como se muestra en la figura 6.26
Fig. 6.26. Ventana de asignación del canal físico.
Instituto Tecnológico de Chihuahua
179
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
Finalmente se configuran los parámetros de adquisición del canal tales como rango y tipo de entrada, escalamiento y modo de adquisición. La figura 6.27 muestra un ejemplo de configuración para un canal de entrada de voltaje analógico en modo diferencial para un rango de entradas de ± 20 volts y adquisición de 1000 muestras a una frecuencia de muestreo de1000 Hz utilizando la señal de reloj interno de la tarjeta de adquisición.
Fig. 6.27. Ventana de configuración para los parámetros de adquisición.
Una vez configurado, el subVI exprés está listo para ser alambrado en el diagrama a bloques, tal como se muestra en la figura 6.28. En caso de ser necesario es posible cambiar los parámetros de configuración haciendo doble click sobre el subVI.
Instituto Tecnológico de Chihuahua
180
Dr. Gerardo Trujillo Schiaffino
Capítulo VI
Sistemas de Adquisición de Datos
Fig. 6.28. SubVI Express DAQ Assistant listo para alambrar.
Instituto Tecnológico de Chihuahua
181
Dr. Gerardo Trujillo Schiaffino