Buch lesen: «LabVIEW: Entorno gráfico de programación»
LabVIEW: entorno gráfico de programación
José Rafael Lajara
José Pelegrí
LabVIEW: entorno gráfico de programación

LabVIEW. Entorno gráfico de programación
Segunda edición, 2011
© 2011 José Rafael Lajara Vizcaíno - José Pelegrí Sebastià
© 2011 MARCOMBO, S.A.
Gran Via de les Corts Catalanes, 594
08007 Barcelona
Corrección y maquetación: O3 BCN PACKAGERS
Diseño de la cubierta: NDENU DISSENY
«Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta obra sólo puede ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase a CEDRO (Centro Español de Derechos Reprográficos, www.cedro.org) si necesita fotocopiar o escanear algún fragmento de esta obra».
ISBN: 978-84-267-1868-6
D.L.:
Impreso en
Printed in Spain
Prólogo
El alcance del software LabVIEW en la sociedad y cómo contribuye en el mundo científico y tecnológico, para mejorar el mundo en el que vivimos, ha superado nuestras expectativas y esperanzas desde su creación hace 25 años.
Desde los inicios se pensó en crear una herramienta que aportase a los ingenieros y científicos lo que la hoja de datos aportó a los analistas y financieros para trabajar de forma más rápida, eficiente y más fácil. Nuestra visión de que LabVIEW es una herramienta que se use en todos los diferentes sectores para solucionar retos tan complejos a los que se enfrentan los ingenieros de todo el mundo a diario se ha convertido en realidad. LabVIEW es una ayuda para los ingenieros y físicos nucleares del CERN en Suiza que controla la máquina más grande del mundo y también se usa en el diseño de dispositivos médicos innovadores y en los sistemas de test para garantizar nuestra seguridad al viajar en aviones y coches. Dada dicha realidad, LabVIEW ha llegado a ser una herramienta adoptada por universidades, institutos y muchos programas educativos.
Además, LabVIEW juega un papel muy importante en la educación de los ingenieros más pequeños, pues cada año existen nuevas competiciones de robots de niños que pueden diseñar, programar y controlar su creación a través de LabVIEW, lo que hace que los niños se entusiasmen por seguir aprendiendo y vean más atractiva la educación y la ingeniería tan necesaria para nuestro mundo. La colaboración entre National Instruments y LEGO Education ha hecho que haya más de 500.000 niños en distintas partes del mundo aprendiendo conceptos sobre robots y que lleguen a construir el suyo propio a través de la plataforma LEGO Mindstorms.
Hoy en día LabVIEW tiene su propio «ecosistema», que cuenta con más de 100 grupos de usuarios registrados, más de 70.000 usuarios en línea, más de 300 complementos de terceras empresas y más de 400 casos de estudio. Le animamos a aprovechar esta red o comunidad de usuarios de nivel principiante hasta los más expertos en arquitecturas de LabVIEW.
Felicidades por optar por aprender y conocer una nueva forma de enfocar su aplicación o proyecto con el diseño gráfico de sistemas. Esperamos que el material técnico junto con las explicaciones y ejercicios de este libro, le sirvan de gran ayuda para poder avanzar en sus habilidades técnicas.
Por favor, visite www.ni.com/spain e ingrese el código splabviewmarcombo para acceder a los recursos técnicos adicionales tales como la versión de evaluación de LabVIEW, notas técnicas, y foros.
Cristóbal Rus Responsable del Programa Académico de España National Instruments
Carlos Ríos Director General de España National Instruments
Índice
Capítulo 1Introducción a LabVIEW. Entorno
1.1. Entorno
1.2. Menús (paletas)
1.2.1. Menú de herramientas
1.2.2. Controles
1.2.2.1. Personalización de controles
1.2.3. Funciones
1.2.4. Personalización de los menús
1.3. Creación de programas
1.4. Flujo de ejecución
1.5. VI y subVI
1.5.1. Librerías
1.5.2. Polimorfismo
1.6. Proyectos
1.7. Depuración de código
1.8. Otras herramientas
1.8.1. Snippet
1.8.2. Opciones
1.8.3. Jerarquía
1.8.4. Ventana de navegación
1.8.5. Compilación masiva
1.8.6. Búsqueda y comparación
1.8.7. Seguridad
1.8.8. Ejemplos
1.9. Ejercicios
1.10. Bibliografía
Capítulo 2Estructuras
2.1. SEQUENCE
2.2. CASE
2.3. WHILE
2.4. FOR
2.5. EVENT
2.6. TIMED LOOP y TIMED SEQUENCE
2.7. DISABLE STRUCTURE
2.8. FORMULA NODE
2.9. Scripts
2.10. Ejemplos
2.10.1. Ejemplo I: Filtro promediador
2.10.1.1. Explicación teórica
2.10.1.2. Código
2.10.1.3. Resultado
2.10.2. Ejemplo II: Generación de números primos
2.10.2.1. Explicación teórica
2.10.2.2. Código
2.10.2.3. Resultado
2.10.3. Ejemplo III: Bingo
2.10.3.1. Explicación teórica
2.10.3.2. Código
2.10.3.3. Resultado
2.11. Ejercicios
2.12. Bibliografía
Capítulo 3Tipos de datos
3.1. Tipos de terminales
3.2. Tipos de datos
3.2.1. Boolean
3.2.2. Numeric
3.2.3. Strings
3.2.3.1. Transformaciones número-texto
3.2.4. Path
3.2.5. Arrays
3.2.6. Clusters
3.2.7. Waveforms
3.2.8. Referencias
3.2.9. Variant
3.2.10. Dynamic
3.3. Manipulación de datos
3.3.1. Manipulación de bytes y bits
3.3.2. Otras transformaciones
3.3.3. Type Cast
3.4. Variables y propiedades
3.4.1. Variables locales
3.4.2. Variables globales
3.4.3. Variables compartidas
3.4.4. Nodos de propiedades y métodos
3.4.5. Referencias
3.5. Ejemplos
3.5.1. Ejemplo I: varios métodos para convertir la representación ASCII a su valor
3.5.1.1. Explicación teórica
3.5.1.2. Código
3.5.2. Ejemplo II: Carrera de fórmula 1
3.5.2.1. Explicación teórica
3.5.2.2. Código
3.5.2.3. Resultados
3.6. Ejercicios
3.7. Bibliografía
Capítulo 4Ficheros
4.1. Ficheros de texto
4.1.1. Ejemplo I: Ficheros de texto y binarios
4.1.2. Ejemplo II: Lotería
4.2. Ficheros de configuración
4.2.1. Ejemplo
4.3. Ficheros XML
4.3.1. Ejemplo I: Agenda
4.3.2. Ejemplo II: Buscador en la agenda
4.4. Ficheros de imagen
4.4.1. Ejemplo
4.5. Ficheros de sonido
4.5.1. Ejemplo I: Lectura de fichero y procesado
4.5.2. Ejemplo II: Adquisición y VIs Express
4.6. Acceso al registro de Windows
4.6.1. Ejemplo: Registro de LabVIEW
4.7. Reports
4.7.1. Ejemplo: Generación de un fichero PDF
4.8. Storage
4.8.1. Ejemplo
4.9. Datalog
4.9.1. Ejemplo
4.10. Waveform
4.11. Ejercicios
Capítulo 5Comunicación serie
5.1. Introducción
5.2. Historia
5.3. RS-232
5.3.1. Conectores
5.3.2. Puertos
5.3.3. Handshake
5.3.4. Otros estándares
5.4. Comunicaciones serie en LabVIEW
5.4.1. VISA
5.5. Ejemplos
5.5.1. Ejemplo I: Comunicación con un microcontrolador
5.5.1.1. Explicación teórica
5.5.1.2. Código del microcontrolador
5.5.1.3. Código en LabVIEW
5.5.1.4. Resultado
5.5.2. Ejemplo II: Control de un instrumento de laboratorio
5.5.2.1. Explicación teórica
5.5.2.2. Código
5.5.2.3. Resultado
5.5.3. Ejemplo III: Manejo de eventos
5.5.3.1. Explicación teórica
5.5.3.2. Código
5.6. Ejercicios
5.7. Bibliografía
Capítulo 6GPIB
6.1. Introducción
6.2. El estándar IEEE 488.1
6.2.1. Cableado
6.2.2. Handshake
6.2.3. Funcionamiento
6.3. El estándar IEEE 488.2
6.4. SCPI
6.5. GPIB en LabVIEW
6.5.1. VISA
6.5.2. Drivers
6.6. Ejemplos
6.6.1. Ejemplo I: Escáner del bus
6.6.1.1. Explicación teórica
6.6.1.2. Código
6.6.1.3. Resultado
6.6.2. Ejemplo II: Osciloscopio Tektronix TDS210
6.6.2.1. Explicación teórica
6.6.2.2. Código
6.6.2.3. Resultado
6.6.3. Ejemplo III: Uso de VI Express, Instrument I/O Assistant
6.6.3.1. Explicación teórica
6.6.3.2. Procedimiento
6.6.4. Ejemplo IV: Generador HP 33120A usando un driver
6.7. Ejercicios
6.8. Bibliografía
Capítulo 7Adquisición de datos
7.1. Introducción
7.2. Adquisición de señales analógicas
7.2.1. Configuraciones de terminales
7.2.2. Conversión a digital
7.2.3. Procesamiento
7.3. Tarjeta de adquisición de datos NI PCI-6221M
7.4. Measurement & Automation Explorer (MAX)
7.5. DAQ en LabVIEW
7.5.1. DAQ Assistant
7.6. Ejemplos
7.6.1. Ejemplo I: Crear un osciloscopio y un generador de funciones con la tarjeta PCI-6221M
7.6.1.1. Explicación teórica
7.6.1.2. Código
7.6.1.3. Resultado
7.6.2. Ejemplo II: Medida de la temperatura
7.6.2.1. Explicación teórica
7.6.2.2. Código
7.6.3. Ejemplo III: Control de un motor paso a paso
7.6.3.1. Explicación teórica
7.6.3.2. Código
7.6.3.3. Resultados
7.7. Ejercicios
7.8. Bibliografía
Capítulo 8TCP y UDP
8.1. TCP/IP
8.1.1. Nivel de red
8.1.2. Nivel de transporte
8.1.3. Nivel de aplicación
8.2. Arquitecturas habituales
8.3. TCP/IP en LabVIEW
8.4. HTTP en LabVIEW
8.5. Ejemplos
8.5.1. Ejemplo I: Servidor de Telnet
8.5.1.1. Explicación teórica de Telnet
8.5.1.2. Código
8.5.1.3. Resultados
8.5.2. Ejemplo II: Transmisión de voz
8.5.2.1. Explicación teórica
8.5.2.2. Código
8.5.2.3. Resultados
8.5.3. Ejemplo III: Obtener ficheros a través de HTTP
8.5.3.1. Explicación teórica
8.5.3.2. Código
8.5.3.3. Resultados
8.6. Ejercicios
8.7. Bibliografía
Capítulo 9VI Server y comunicaciones avanzadas
9.1. Acceso remoto
9.1.1. Paneles remotos
9.1.2. Publicación en web
9.2. Enlaces de datos
9.2.1. DataSocket
9.2.1.1. API
9.2.1.2. Método directo
9.2.2. Shared variables
9.2.3. Data Binding
9.2.4. Networks Streams
9.3. VI Server
9.4. Servicios web
9.4.1. Servicios web en LabVIEW
9.5. Ejemplos
9.5.1. Ejemplo I: Chat
9.5.1.1. Explicación teórica
9.5.1.2. Código
9.5.1.3. Resultados
9.5.2. Ejemplo II: Controlar Decorations
9.5.2.1. Explicación teórica
9.5.2.2. Código
9.5.3. Ejemplo III: Rendimiento de VI
9.5.3.1. Explicación teórica
9.5.3.2. Código
9.5.3.3. Resultados
9.5.4. Ejemplo IV: Sistema distribuido con variables compartidas
9.5.4.1. Explicación teórica
9.5.4.2. Código
9.6. Ejercicios
9.7. Bibliografía
Capítulo 10Sincronización y multihilo
10.1. Multihilo en LabVIEW
10.1.1. Sistemas de ejecución
10.1.2. Prioridades
10.1.3. VI reentrantes
10.1.4. Pipeline
10.1.5. Paralelismo
10.2. Multinúcleo
10.2.1. FOR
10.2.2. TIMED LOOP
10.3. Sincronización
10.3.1. Occurrences
10.3.2. Semáforos
10.3.3. Notificaciones
10.3.4. Colas
10.3.5. Rendezvous
10.4. Problemas típicos de la programación multihilo
10.4.1. Condición de carrera
10.4.2. Inanición
10.4.3. Inversión de prioridad
10.4.4. Interbloqueo
10.5. Eventos
10.5.1. Ejemplo I: Eventos dinámicos
10.5.2. Ejemplo II: Eventos de usuario
10.6. Ejercicios
10.7. Bibliografía
Capítulo 11Modelos de programación
11.1. Estructuras de interfaz de usuario
11.2. Temporización
11.3. Manejo de errores
11.4. Máquinas de estado
11.4.1. Máquinas de estados en LabVIEW
11.4.2. Ejemplo: Máquina expendedora
11.4.2.1. Explicación teórica
11.4.2.2. Código
11.4.2.3. Resultados
11.5. Comunicaciones
11.5.1. Maestro/esclavo
11.5.2. Productor/consumidor
11.5.3. Ejemplo: keylogger
11.5.3.1. Explicación teórica
11.5.3.2. Código
11.5.3.3. Resultado
11.6. Orientado a objetos
11.6.1. Programación orientada a objetos en LabVIEW
11.6.1.1. Ejemplo: Fichas de empleados
11.7. Scripting
11.7.1. Introducción
11.7.2. XNodes
11.7.3. Ejemplo I
11.7.3.1. Código
11.7.4. Ejemplo II: Metaprograma
11.7.4.1. Código
11.7.4.2. Resultado
11.8. Ejercicios
11.9. Bibliografía
Capítulo 12Código externo
12.1. Librerías externas
12.1.1. CIN
12.1.2. Librerías compartidas en LabVIEW
12.1.3. Ejemplo I: Creación de una DLL y su uso en LabVIEW
12.1.3.1. Explicación teórica
12.1.3.2. Código en C++
12.1.3.3. Código en LabVIEW
12.1.4. Ejemplo II: Wait (μs)
12.1.4.1. Explicación teórica
12.1.4.2. Código
12.1.4.3. Resultados
12.1.5. Ejemplo III: CIN
12.1.5.1. Explicación teórica
12.1.5.2. Código en C++
12.1.5.3. Código en LabVIEW
12.2. Comunicaciones entre aplicaciones
12.2.1. ActiveX
12.2.1.1. ActiveX en LabVIEW
12.2.1.2. Ejemplo: Creación de un control ActiveX y su uso en LabVIEW
12.2.2. .NET
12.2.2.1. .NET en LabVIEW
12.2.2.2. Ejemplo I: Creación de una librería de clases .NET y su uso en LabVIEW
12.2.2.3. Ejemplo II: Navegador Web
12.3. Creación de librerías y ejecutables con LabVIEW
12.4. Ejercicios
12.5. Bibliografía
Capítulo 13Optimización de la interfaz
13.1. Elementos del Panel Frontal
13.1.1. Otros tipos de gráficos
13.1.2. Subpaneles
13.1.3. Splitters
13.2. Localizar la interfaz
13.3. Interactuando con el usuario programadamente
13.3.1. Menús personalizados
13.3.2. Teclado
13.3.3. Drag & Drop
13.4. XControls
13.4.1. Ejemplo: Polímetro virtual
13.4.1.1. Explicación teórica
13.4.1.2. Metodología
13.4.1.3. Resultados
13.5. Consejos para diseñar una interfaz
13.5.1. Layout
13.5.2. Tipografía
13.5.3. Color
13.5.4. Imágenes
13.5.5. Otros
13.6. Ejercicios
13.7. Bibliografía
Capítulo 14Optimización del código
14.1. Diseño de la aplicación
14.2. Estilo del código
14.2.1. Organización
14.2.2. Comentar el código
14.2.3. VI
14.2.4. Cableado
14.3. Control de código
14.3.1. Ejemplo en LabVIEW
14.4. Mejorar el rendimiento
14.4.1. Herramientas
14.4.2. Manejo de memoria
14.4.2.1. Buffers
14.4.2.2. In Place Element Structure
14.4.2.3. Paso de valores por referencia
14.4.3. Técnicas para mejorar el rendimiento
14.4.3.1. Cálculos inútiles
14.4.3.2. No reinventar la rueda
14.4.3.3. Tamaño de los datos
14.4.3.4. Datos simples o complejos
14.4.3.5. Redimensionado de arrays
14.4.3.6. Cuellos de botella
14.4.3.7. Variables y propiedades
14.4.3.8. SubVI
14.5. Ejercicios
14.6. Bibliografía
Capítulo 15Otras plataformas
15.1. PDA
15.1.1. Ejemplo: Escáner de dispositivos Bluetooth
15.1.1.1. Explicación teórica
15.1.1.2. Código
15.1.1.3. Resultados
15.2. FPGA
15.2.1. Ejemplo: Luces del coche fantástico en CompactRIO
15.2.1.1. Explicación teórica
15.2.1.2. Código
15.2.1.3. Resultados
15.3. Bus PXI
15.3.1. PCI
15.3.2. PXI
15.3.3. Ejemplo I: Lectura de los registros de configuración
15.3.3.1. Explicación teórica
15.3.3.2. Código
15.3.3.3. Resultado
15.3.4. Ejemplo II: Generación y adquisición de señales
15.3.4.1. Explicación teórica
15.3.4.2. Código
15.3.4.3. Resultados
15.3.5. Ejemplo III: Medida de capacidad
15.3.5.1. Explicación teórica
15.3.5.2. Código
15.3.5.3. Resultados
15.4. Bibliografía
Capítulo 16LabWindows/CVI
16.1. Introducción
16.2. Librerías
16.3. Generación automática de código
16.4. Creación de GUI
16.5. Manejo de eventos
16.6. Ejemplo
16.6.1. Interfaz
16.6.2. Lógica
16.6.3. Resultados
16.7. Ejercicio
16.8. Bibliografía
Capítulo 17Measurement Studio
17.1. Introducción
17.2. Clases y controles
17.3. Ejemplos
17.3.1. Ejemplo I: Gráficas
17.3.2. Ejemplo II: Filtros digitales y FFT
17.3.3. Ejemplo III: Proyecto web
17.4. Ejercicio
17.5. Bibliografía
Capítulo 18Measurement Studio
18.1. Introducción
18.2. Ejemplos
18.2.1. Ejemplo I: Datos electrocardiográficos en un fichero CSV
18.2.1.1. Navigator
18.2.1.2. View
18.2.1.3. Analysis
18.2.1.4. Report
18.2.1.5. Scripts
18.3. Conectividad con LabVIEW
18.4. Bibliografía
Capítulo 19TestStand
19.1. Introducción
19.2. Ejemplo
19.2.1. Variables
19.2.2. Estructuras
19.3. Conectividad
19.4. Herramientas avanzadas
19.5. Bibliografía