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
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
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
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
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
84
4.1 Arreglos 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.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 4.2 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 102
4.2.5.1. Estatus 103
4.2.5.2. Código 103
4.2.5.3. Fuente 104
4.3 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
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 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 4.4 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 125
4.5 Archivos 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 127
4.6 Variables locales 128 4.6.1. Creación de una variable local 129 4.6.2. Uso de las variables locales 131
4.7 Variables globales 132
4.7.1. Creación de una variable global 133 4.7.2. Uso de las variables globales 135
4.8 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.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
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
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
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.
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.
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.
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.
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.
Instrumentación
Analógica
Instrumentación
Programable
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.
a ) 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. Adquisición (Hardware) Análisis (Hardware) Presentacion (Hardware)
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. Instrumento Virtual Computadora Hardware para Instrumentación Software para Instrumentación
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.
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.
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.
Adquisición (Hardware) 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.). Adquisición (Software) Análisis (Software) Presentación (Software)
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
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
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,
Conectividad limitada.
Sistema orientado a la aplicación, conectividad
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.
(ciclo de vida 5 - 10 años)
Rápido avance tecnológico.
(ciclo de vida 1-2 años)
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.
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.
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
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 Icono-Conector.
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.
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.
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.
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.
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.
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
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.
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.).
Barra de herramientas del panel frontal
Leyenda del gráfico Control Booleano Gráfico de Forma de onda Icono Leyenda de la gráfica Leyenda de la escala
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.
Fig. 2.5. Ejemplo de un diagrama a bloques sencillo
Cableado de datos Terminal gráfica SubVI Estructura de ciclo While Barra de herramientas del diagrama a
bloques Función de dividir
Constante
numérica Función Retardo tiempo
Terminal de control booleano
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.
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.
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.
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
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.
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.
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
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
1) click
3) Arrastre 4) click 2) click
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.
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.
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
1) click
3) Arrastre 4) click
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.
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.
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.
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)
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.
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.
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.
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
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
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)
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.
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.
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.
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
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.
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 <Ctrl-H>. 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
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.
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.
Ayuda en línea Congelar Ayuda Ayuda del Diagrama Simple/Complejo
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 <Ctrl-?>.
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 <Shift-Tab> 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.
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.
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.
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.
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
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.
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.
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.