LabVIEW
Laboratory Virtual Instrument Engineering Workbench (LabVIEW) es una plataforma de diseño de sistemas y un entorno de desarrollo para un lenguaje de programación visual de National Instruments.
El lenguaje gráfico se denomina "G"; no confundir con código G. El lenguaje de flujo de datos G fue desarrollado originalmente por LabVIEW. LabVIEW se usa comúnmente para adquisición de datos, control de instrumentos y automatización industrial en una variedad de sistemas operativos (SO), incluidos macOS y otras versiones de Unix y Linux, así como Microsoft Windows.
Las últimas versiones de LabVIEW son LabVIEW 2023 Q1 (lanzada en abril de 2023) y LabVIEW NXG 5.1 (lanzada en enero de 2021). NI lanzó las ediciones gratuitas para uso no comercial de LabVIEW y LabVIEW NXG Community el 28 de abril de 2020.
Programación de flujo de datos
El paradigma de programación utilizado en LabVIEW, a veces llamado G, se basa en la disponibilidad de datos. Si hay suficientes datos disponibles para un subVI o función, ese subVI o función se ejecutará. El flujo de ejecución está determinado por la estructura de un diagrama de bloques gráfico (el código fuente de LabVIEW) en el que el programador conecta diferentes nodos de función dibujando cables. Estos cables propagan variables y cualquier nodo puede ejecutarse tan pronto como todos sus datos de entrada estén disponibles. Dado que este podría ser el caso para múltiples nodos simultáneamente, LabVIEW puede ejecutarse inherentemente en paralelo. El programador integrado explota automáticamente el hardware de multiprocesamiento y subprocesos múltiples, que multiplexa múltiples subprocesos del sistema operativo en los nodos listos para su ejecución.
Programación gráfica

LabVIEW integra la creación de interfaces de usuario (denominados paneles frontales) en el ciclo de desarrollo. Los programas-subrutinas de LabVIEW se denominan instrumentos virtuales (VI). Cada VI tiene tres componentes: un diagrama de bloques, un panel frontal y un panel de conectores. El último se utiliza para representar el VI en los diagramas de bloques de otros, llamándolo VI. El panel frontal está construido mediante controles e indicadores. Los controles son entradas: permiten a un usuario suministrar información al VI. Los indicadores son productos: indican o muestran los resultados basados en los insumos proporcionados al VI. El panel posterior, que es un diagrama de bloques, contiene el código fuente gráfico. Todos los objetos colocados en el panel frontal aparecerán en el panel posterior como terminales. El panel posterior también contiene estructuras y funciones que realizan operaciones en los controles y suministran datos a los indicadores. Las estructuras y funciones se encuentran en la paleta Funciones y se pueden colocar en el panel posterior. En conjunto, los controles, indicadores, estructuras y funciones se denominan nodos. Los nodos se conectan mediante cables, por ejemplo, se pueden conectar dos controles y un indicador a la función de suma para que el indicador muestre la suma de los dos controles. Por lo tanto, un instrumento virtual se puede ejecutar como un programa, con el panel frontal sirviendo como interfaz de usuario, o, cuando se coloca como un nodo en el diagrama de bloques, el panel frontal define las entradas y salidas para el nodo a través del panel conector. Esto implica que cada VI se puede probar fácilmente antes de integrarlo como una subrutina en un programa más grande.
El enfoque gráfico también permite a los no programadores crear programas arrastrando y soltando representaciones virtuales de equipos de laboratorio con los que ya están familiarizados. El entorno de programación LabVIEW, con los ejemplos y la documentación incluidos, simplifica la creación de pequeñas aplicaciones. Esto es un beneficio por un lado, pero también existe el peligro de subestimar la experiencia necesaria para una programación G de alta calidad. Para algoritmos complejos o código a gran escala, un programador debe poseer un amplio conocimiento de la sintaxis especial de LabVIEW y la topología de su gestión de memoria. Los sistemas de desarrollo de LabVIEW más avanzados ofrecen la capacidad de crear aplicaciones independientes. Además, es posible crear aplicaciones distribuidas, que se comunican mediante un modelo cliente-servidor y, por tanto, son más fáciles de implementar debido a la naturaleza inherentemente paralela de G.
Patrones de diseño ampliamente aceptados
Las aplicaciones en LabVIEW generalmente se diseñan utilizando arquitecturas bien conocidas, conocidas como patrones de diseño. Los patrones de diseño más comunes para aplicaciones gráficas de LabVIEW se enumeran en la siguiente tabla.
Patrón de diseño | Propósito | Detalles de la aplicación | Casos de uso | Limitaciones |
---|---|---|---|---|
Variable global funcional | Intercambio de información sin utilizar variables globales | Un registro de cambio de un bucle de tiempo se utiliza para almacenar los datos y el bucle funciona sólo una iteración en un instrumento virtual "no-reentrante" (VI) | Intercambio de información con menos cableado | Todos los instrumentos virtuales (VI) se guardan en memoria. |
Máquina estatal | Ejecución controlada que depende de eventos pasados | Estructura de caso dentro de un lazo pasa una variable enumerada a un registro de cambios, representando el siguiente estado; máquinas estatales complejas se pueden diseñar utilizando el módulo Statechart | • Interfaz de usuario • Lógica compleja • Protocolos de comunicación | Todos los estados posibles deben ser conocidos por adelantado. |
Interfaz de usuario impulsada por el evento | Procesamiento sin pérdidas de acciones de usuario | Los eventos GUI son capturados por una cola de estructura de eventos, dentro de un lazo de tiempo; el lazo mientras se suspende por la estructura del evento y sólo se reanudará cuando los eventos deseados son capturados | Interfaz gráfica de usuario | Sólo una estructura de evento en un bucle. |
Master-slave | Ejecutar procesos independientes simultáneamente | Varios paralelos mientras bucles, uno de los cuales funciona como el "maestro", controlando los bucles "esclavo" | Una interfaz gráfica simple para la adquisición y visualización de datos | Se requiere atención y prevención de las condiciones de raza. |
Productor-consumidor | Asynchronous of multithreaded execution of loops | Un bucle maestro controla la ejecución de dos bucles de esclavos, que comunican usando notificadores, colas y semaforas; los bucles independientes de datos se ejecutan automáticamente en hilos separados | Muestra y visualización de datos | La orden de ejecución no es obvia para controlar. |
Máquina estatal consumer-productor impulsado por eventos | Interfaz de usuario altamente receptiva para aplicaciones multiteleadas | Una interfaz de usuario impulsada por eventos se coloca dentro del bucle de productor y una máquina estatal se coloca dentro del bucle de consumidor, comunicando usando colas entre ellos y otros VIs paralelos | Aplicaciones complejas |
Beneficios
Interfaz con dispositivos
LabVIEW incluye un amplio soporte para la interfaz con dispositivos como instrumentos, cámaras y otros dispositivos. Los usuarios interactúan con el hardware escribiendo comandos de bus directos (USB, GPIB, Serial) o usando controladores de alto nivel específicos del dispositivo que proporcionan nodos de función nativos de LabVIEW para controlar el dispositivo.
LabVIEW incluye soporte integrado para plataformas de hardware de NI como CompactDAQ y CompactRIO, con una gran cantidad de bloques específicos de dispositivos para dicho hardware, el Measurement and Automation eXplorer (MAX) y Arquitectura de software de instrumentos virtuales (VISA).
National Instruments pone a disposición miles de controladores de dispositivos para descargar en NI Instrument Driver Network (IDNet).
Compilación de código
LabVIEW incluye un compilador que produce código nativo para la plataforma CPU. El código gráfico se convierte en representación intermedia de flujo de datos y luego un compilador basado en LLVM lo traduce en fragmentos de código de máquina ejecutable. El motor en tiempo de ejecución llama a estos fragmentos, lo que permite un mejor rendimiento. La sintaxis de LabVIEW se aplica estrictamente durante el proceso de edición y se compila en el código de máquina ejecutable cuando se solicita su ejecución o al guardar. En el último caso, el ejecutable y el código fuente se fusionan en un único archivo binario. La ejecución está controlada por el motor de tiempo de ejecución de LabVIEW, que contiene código precompilado para realizar tareas comunes definidas por el lenguaje G. El motor de tiempo de ejecución gobierna el flujo de ejecución y proporciona una interfaz consistente para varios sistemas operativos, sistemas gráficos y componentes de hardware. El uso del entorno de ejecución hace que los archivos de código fuente sean portátiles entre plataformas compatibles. Los programas de LabVIEW son más lentos que el código C compilado equivalente, aunque, al igual que en otros lenguajes, la optimización del programa a menudo permite mitigar los problemas con la velocidad de ejecución.
Grandes bibliotecas
Muchas bibliotecas con una gran cantidad de funciones para adquisición de datos, generación de señales, matemáticas, estadísticas, acondicionamiento de señales, análisis, etc., junto con numerosas funciones como integración, filtros y otras capacidades especializadas generalmente asociadas con la captura de datos. de los sensores de hardware es enorme. Además, LabVIEW incluye un componente de programación basado en texto llamado MathScript con funciones adicionales para procesamiento de señales, análisis y matemáticas. MathScript se puede integrar con programación gráfica utilizando nodos de script y utiliza una sintaxis que es generalmente compatible con MATLAB.
Programación paralela
LabVIEW es un lenguaje inherentemente concurrente, por lo que es muy fácil programar múltiples tareas que se realizan en paralelo mediante subprocesos múltiples. Por ejemplo, esto se hace fácilmente dibujando dos o más bucles while paralelos y conectándolos a dos nodos separados. Este es un gran beneficio para la automatización de sistemas de prueba, donde es una práctica común ejecutar procesos como secuenciación de pruebas, registro de datos e interfaz de hardware en paralelo.
Ecosistema
Debido a la longevidad y popularidad del lenguaje LabVIEW y la capacidad de los usuarios de ampliar sus funciones, se ha desarrollado un gran ecosistema de complementos de terceros a través de contribuciones de la comunidad. La mayoría de estos complementos están disponibles para descarga e instalación directa en LabVIEW utilizando VI Package Manager (VIPM), el administrador de paquetes oficial para complementos de LabVIEW. National Instruments también alberga un mercado para complementos de LabVIEW gratuitos y de pago llamado NI Tools Network.
Comunidad de usuarios
Existe una edición para estudiantes de LabVIEW de bajo costo dirigida a instituciones educativas con fines de aprendizaje. También existe una comunidad activa de usuarios de LabVIEW que se comunican a través de varias listas de correo electrónico (grupos de correo electrónico) y foros de Internet.
Edición del paquete para el hogar
National Instruments ofrece una edición LabVIEW Home Bundle de bajo costo.
Edición comunitaria
National Instruments proporciona una versión gratuita para uso no comercial llamada LabVIEW Community Edition. Esta versión incluye todo lo que hay en las Ediciones Profesionales de LabVIEW, no tiene marcas de agua e incluye el Módulo Web LabVIEW NXG para uso no comercial. Estas ediciones también pueden ser utilizadas por escuelas K-12.
Crítica
LabVIEW es un producto propietario de National Instruments. A diferencia de los lenguajes de programación comunes como C o Fortran, LabVIEW no es administrado ni especificado por ningún comité de estándares de terceros, como el Instituto Nacional Estadounidense de Estándares (ANSI), el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) y la Organización Internacional de Estandarización (ISO).
No textual
Dado que el lenguaje G no es textual, las herramientas de software como el control de versiones, la comparación lado a lado (o diferenciación) y el seguimiento de cambios de código de versión no se pueden aplicar de la misma manera que para los lenguajes de programación textuales. Existen algunas herramientas adicionales para comparar y fusionar código con herramientas de control de código fuente (control de versiones), como Subversion, CVS y Perforce.
Sin función de zoom
No existe la posibilidad de acercar (o ampliar) un instrumento virtual (VI), lo que será difícil de ver en un monitor grande de alta resolución. Sin embargo, la capacidad de hacer zoom se ha agregado a LabVIEW NXG. El 23 de mayo de 2023, durante el discurso de apertura de la mañana en la conferencia NI Connect en Austin, Texas, se anunció que se espera capacidad de zoom en la versión de verano de 2023 de LabVIEW. Desde que se agregó la función deshacer en LabVIEW 5.0 (mayo de 1998), el zoom ha sido la función más solicitada.
Historial de versiones
En 2005, comenzando con LabVIEW 8.0, las versiones principales se lanzan alrededor de la primera semana de agosto, para coincidir con la conferencia anual NI Week de National Instruments, y seguidas por un lanzamiento de corrección de errores en febrero siguiente.
En 2009, National Instruments comenzó a nombrar los lanzamientos según el año en el que fueron lanzados. Una corrección de errores se denomina Service Pack; por ejemplo, el service pack 1 de 2009 se lanzó en febrero de 2010.
En 2017, National Instruments trasladó la conferencia anual a mayo y lanzó LabVIEW 2017 junto con un LabVIEW NXG 1.0 completamente rediseñado construido sobre Windows Presentation Foundation (WPF).
Nombre y versión | Número de construcción | Fecha | Notas |
---|---|---|---|
Comienzo del proyecto LabVIEW | Abril de 1983 | ||
LabVIEW 1.0 | Octubre de 1986 | para Macintosh | |
LabVIEW 2.0 | Enero de 1990 | ||
LabVIEW 2.5 | Agosto de 1992 | primer lanzamiento para Sun y Windows | |
LabVIEW 3.0 | Julio de 1993 | Multiplataforma | |
LabVIEW 3.0.1 | 1994 | primer lanzamiento para Windows NT | |
LabVIEW 3.1 | 1994 | ||
LabVIEW 3.1.1 | 1995 | primera liberación con capacidad de "constructor de aplicaciones" | |
LabVIEW 4.0 | Abril de 1996 | ||
LabVIEW 4.1 | 1997 | ||
LabVIEW 5.0 | Febrero de 1998 | ||
LabVIEW RT | Mayo de 1999 | Hora real | |
6.0 (6i) | 6.0.0.4005 | 26 de julio de 2000 | |
LabVIEW 6.1 | 6.1.0.4004 | 12 de abril de 2001 | |
LabVIEW 7.0 (Express) | 7.0.0.4000 | Abril de 2003 | |
Módulo PDA | Mayo de 2003 | primer lanzamiento del módulo | |
Módulo FPGA | Junio de 2003 | primera liberación | |
LabVIEW 7.1 | 7.1.0.4000 | 2004 | |
LabVIEW Módulo integrado | Mayo de 2005 | primera liberación | |
LabVIEW 8.0 | 8.0.0.4005 | Septiembre de 2005 | |
LabVIEW 8.20 | Agosto de 2006 | programación orientada hacia objetos nativos | |
LabVIEW 8.2.1 | 8.2.1.4002 | 21 de febrero de 2007 | |
LabVIEW 8.5 | 8.5.0.4002 | 2007 | |
LabVIEW 8.6 | 8.6.0.4001 | 24 de julio de 2008 | |
LabVIEW 8.6.1 | 8.6.0.4001 | 10 de diciembre de 2008 | |
LabVIEW 2009 | 9.0.0.4022 | 4 de agosto de 2009 | 32-bit y 64-bit |
LabVIEW 2009 SP1 | 9.0.1.4011 | 8 de enero de 2010 | |
LabVIEW 2010 | 10.0.0.4032 | 4 de agosto de 2010 | |
LabVIEW 2010 f2 | 10.0.0.4033 | 16 de septiembre de 2010 | |
LabVIEW 2010 SP1 | 10.0.1.4004 | 17 de mayo de 2011 | |
LabVIEW for LEGO MINDSTORMS | Agosto de 2011 | 2010 SP1 con algunos módulos | |
LabVIEW 2011 | 11.0.0.4029 | 22 de junio de 2011 | |
LabVIEW 2011 SP1 | 11.0.1.4015 | 1o de marzo de 2012 | |
LabVIEW 2012 | 12.0.0.4029 | Agosto de 2012 | |
LabVIEW 2012 SP1 | 12.0.1.4013 | Diciembre de 2012 | |
LabVIEW 2013 | 13.0.0.4047 | Agosto de 2013 | |
LabVIEW 2013 SP1 | 13.0.1.4017 | Marzo de 2014 | |
LabVIEW 2014 | 14.0 | Agosto de 2014 | |
LabVIEW 2014 SP1 | 14.0.1.4008 | Marzo de 2015 | |
LabVIEW 2015 | 15.0f2 | Agosto de 2015 | |
LabVIEW 2015 SP1 | 15.0.1f1 | Marzo 2016 | |
LabVIEW 2016 | 16.0.0 | Agosto 2016 | |
LabVIEW 2017 | 17.0f1 | Mayo de 2017 | |
NXG 1.0 | 1.0.0 | Mayo de 2017 | |
LabVIEW 2017 SP1 | 17.0.1f1 | Jan 2018 | |
NXG 2.0 | 2.0.0 | Jan 2018 | |
LabVIEW 2018 | 18.0 | Mayo 2018 | |
NXG 2.1 | 2.1.0 | Mayo 2018 | |
LabVIEW 2018 SP1 | 18.0.1 | Sep 2018 | |
NXG 3.0 | 3.0.0 | Nov 2018 | |
LabVIEW 2019 | 19.0 | Mayo 2019 | |
NXG 3.1 | 3.1.0 | Mayo 2019 | |
LabVIEW 2019 SP1 | 19.0.1 | Nov 2019 | |
LabVIEW NXG 4.0 | 4.0.0 | Nov 2019 | |
LabVIEW 2020 y LabVIEW NXG 5.0 Community Edition | Abril 2020 | primeras versiones | |
LabVIEW 2021 | 21.0 | Agosto 2021 | |
LabVIEW 2022 Q3 | 22.3 | Julio 2022 | |
2023 Q1 | 23.1 | Enero 2023 | |
LabVIEW 2023 Q3 | 23.3 | Julio 2023 |
Repositorios y bibliotecas
OpenG, así como LAVA Code Repository (LAVAcr), sirven como repositorios para una amplia gama de aplicaciones y bibliotecas de código abierto de LabVIEW. SourceForge tiene a LabVIEW listado como uno de los posibles lenguajes en los que se puede escribir código.
VI Package Manager se ha convertido en el administrador de paquetes estándar para las bibliotecas de LabVIEW. Tiene un propósito muy similar a RubyGems de Ruby y CPAN de Perl, aunque proporciona una interfaz gráfica de usuario similar al Administrador de paquetes Synaptic. VI Package Manager proporciona acceso a un repositorio de bibliotecas OpenG (y otras) para LabVIEW.
Existen herramientas para convertir MathML en código G.
Software relacionado
National Instruments también ofrece un producto llamado Measurement Studio, que ofrece muchas de las capacidades de prueba, medición y control de LabVIEW, como un conjunto de clases para usar con Microsoft Visual Studio. Esto permite a los desarrolladores aprovechar algunas de las fortalezas de LabVIEW dentro del marco.NET basado en texto. National Instruments también ofrece LabWindows/CVI como una alternativa para programadores ANSI C.
Cuando las aplicaciones necesitan secuenciación, los usuarios suelen utilizar LabVIEW con el software de gestión de pruebas TestStand, también de National Instruments.
El intérprete Ch es un intérprete C/C++ que puede integrarse en LabVIEW para secuencias de comandos.
Robótica DSP' FlowStone DSP también utiliza una forma de programación gráfica similar a LabVIEW, pero está limitada a la industria de la robótica respectivamente.
LabVIEW tiene un nodo directo con modeFRONTIER, un entorno de diseño y optimización multidisciplinario y multiobjetivo, escrito para permitir el acoplamiento a casi cualquier herramienta de ingeniería asistida por computadora. Ambos pueden ser parte de la misma descripción del flujo de trabajo del proceso y pueden ser impulsados virtualmente por las tecnologías de optimización disponibles en modeFRONTIER.
Contenido relacionado
Von Neumann architecture
ENIAC
Logical arithmetic unit
Commodore Amiga 4000
Motherboard