Este artículo puede basarse excesivamente en fuentes demasiado relacionadas con el tema , lo que podría impedir que el artículo sea verificable y neutral . ( Mayo de 2015 ) |
Desarrollador(es) | Instrumentos nacionales |
---|---|
Lanzamiento inicial | 1986 ( 1986 ) |
Versión estable | LabVIEW NXG 5.1 LabVIEW 2024 Q3 / Julio 2024 ( 2024-07 ) |
Escrito en | C , C++ , C# |
Sistema operativo | Multiplataforma : Windows , macOS , Linux |
Tipo | Adquisición de datos , control de instrumentos , automatización de pruebas , análisis y procesamiento de señales , control industrial , diseño de sistemas integrados |
Licencia | Propiedad |
Sitio web | www.ni.com/labview |
Laboratory Virtual Instrument Engineering Workbench ( LabVIEW ) [1] : 3 es una plataforma de diseño y desarrollo de sistemas gráficos producida y distribuida por National Instruments , basada en un entorno de programación que utiliza un lenguaje de programación visual . Se utiliza ampliamente para adquisición de datos , control de instrumentos y automatización industrial . Proporciona herramientas para diseñar e implementar sistemas complejos de prueba y medición.
El lenguaje de programación visual (también conocido como gráfico) se llama "G" (no debe confundirse con G-code ). Es un lenguaje de flujo de datos desarrollado originalmente por National Instruments. [2] LabVIEW es compatible con 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 2024 Q3 (lanzada en julio de 2024) y LabVIEW NXG 5.1 (lanzada en enero de 2021). [3] National Instruments lanzó las ediciones gratuitas para uso no comercial de LabVIEW y LabVIEW NXG Community el 28 de abril de 2020. [4]
El paradigma de programación utilizado en el lenguaje LabVIEW "G" se basa en la disponibilidad de datos. Si hay suficientes datos disponibles para una 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 coloca nodos y los conecta dibujando cables . Un nodo puede ser un control , un indicador , una estructura , una función o, recursivamente, otro diagrama de bloques . Un ejemplo de un diagrama de bloques simple de cuatro nodos es dos controles y un indicador conectados a la función de suma, lo que hace que el indicador muestre la suma de los dos controles. Los cables que conectan los nodos propagan datos como variables, y cualquier nodo puede ejecutarse tan pronto como todas sus variables de entrada (datos) estén disponibles. Dado que este podría ser el caso de varios nodos simultáneamente, LabVIEW puede ejecutarse conceptualmente en paralelo. [5] : 1–2 El hardware de multiprocesamiento y multihilo se explota automáticamente por el programador integrado, que multiplexa múltiples hilos del sistema operativo sobre los nodos listos para la ejecución.
LabVIEW integra la creación de interfaces de usuario (denominadas paneles frontales) en el ciclo de desarrollo del programa. Los programas de LabVIEW son colecciones de uno o más instrumentos virtuales (VI). Cada VI tiene tres componentes, un panel frontal , un panel posterior y un panel de conectores , todos compuestos de nodos y cables representados gráficamente para el usuario. El panel frontal se construye utilizando controles e indicadores. Los controles son entradas, permiten que un usuario proporcione información al VI. Los indicadores son salidas, indican o muestran los resultados en función de las entradas proporcionadas al VI. El panel posterior consta de un diagrama de bloques que contiene el código fuente gráfico. Todos los objetos colocados en el panel frontal aparecerán en el diagrama de bloques del panel posterior como terminales. El diagrama de bloques también contiene estructuras y funciones, elegidas de una paleta de Funciones, que realizan operaciones en los controles y suministran datos a los indicadores. El panel de conectores tiene terminales cuyos cables van hacia o vienen de nodos en los paneles frontal y posterior, y se utiliza para representar el VI dentro del panel posterior de los VI ascendentes (que llaman) y los VI descendentes (llamados) a los que podría estar conectado.
Hay dos formas de ejecutar un VI. Se puede ejecutar por sí solo como un programa, con el panel frontal como interfaz de usuario. Alternativamente, se puede tratar como un nodo que se coloca en el diagrama de bloques de otro VI y se conecta a sus nodos a través del panel conector. En ese caso, se ejecuta como una subrutina dentro de un programa más grande, y el panel frontal controla las entradas y salidas del nodo VI. De este modo, cada VI se puede probar fácilmente como un programa independiente antes de incorporarlo como una subrutina en un programa más grande.
El enfoque gráfico "G" permite a los no programadores crear programas fácilmente arrastrando y soltando representaciones virtuales de equipos de laboratorio con los que ya están familiarizados. El entorno de programación de LabVIEW incluye ejemplos y documentación para guiar y simplificar la creación de pequeñas aplicaciones. Como ocurre con todas las guías de programación introductorias, la facilidad de construcción de programas "G" funcionales puede hacer que el programador subestime 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 simple que aprovecha la naturaleza inherentemente paralela de "G".
Las aplicaciones en LabVIEW se diseñan generalmente utilizando arquitecturas conocidas [ cita requerida ] 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 | Objetivo | Detalles de implementación | Casos de uso | Limitaciones |
---|---|---|---|---|
Variable global funcional | Intercambiar información sin utilizar variables globales | Se utiliza un registro de desplazamiento de un bucle while para almacenar los datos y el bucle while ejecuta solo una iteración en un instrumento virtual (VI) "no reentrante". | Intercambio de información con menos cableado | Todos los instrumentos virtuales (VI) propios se guardan en la memoria. |
Máquina de estados [6] | Ejecución controlada que depende de eventos pasados | La estructura del caso dentro de un bucle while pasa una variable enumerada a un registro de desplazamiento, que representa el siguiente estado; se pueden diseñar máquinas de estados complejas utilizando el módulo Statechart | Interfaces de usuario, lógica compleja, protocolos de comunicación | Todos los estados posibles deben conocerse de antemano. |
Interfaz de usuario basada en eventos | Procesamiento sin pérdidas de las acciones del usuario | Los eventos de la GUI son capturados por una cola de estructura de eventos, dentro de un bucle while; el bucle while es suspendido por la estructura de eventos y se reanuda solo cuando se capturan los eventos deseados. | Interfaz gráfica de usuario | Sólo una estructura de evento en un bucle. |
Amo-esclavo [7] | Ejecutar procesos independientes simultáneamente | Varios bucles while paralelos, uno de los cuales funciona como "maestro" y controla los bucles "esclavos". | Una interfaz gráfica de usuario sencilla para la adquisición y visualización de datos | Se requiere atención y prevención de las condiciones de carrera . |
Productor-consumidor [8] | Ejecución asincrónica o multiproceso de bucles | Un bucle maestro controla la ejecución de dos bucles esclavos, que se comunican mediante notificadores, colas y semáforos; los bucles independientes de los datos se ejecutan automáticamente en subprocesos separados. | Muestreo y visualización de datos | El orden de ejecución no es obvio para controlar. |
Máquina de estados en cola con productor-consumidor controlado por eventos | Interfaz de usuario de gran capacidad de respuesta para aplicaciones multiproceso | Se coloca una interfaz de usuario controlada por eventos dentro del bucle del productor y una máquina de estados dentro del bucle del consumidor, comunicándose mediante colas entre ellos y otros VI paralelos. | Aplicaciones complejas |
Esta sección contiene contenido promocional . ( Julio 2022 ) |
LabVIEW incluye un amplio soporte para la interconexión con instrumentos, cámaras y otros dispositivos. Los usuarios interactúan con el hardware escribiendo comandos de bus directos (USB, GPIB, Serial) o utilizando controladores de alto nivel específicos del dispositivo que proporcionan nodos de función "G" nativos para controlar el dispositivo. National Instruments pone a disposición miles de controladores de dispositivos para su descarga en su red de controladores de instrumentos (IDNet). [9]
LabVIEW tiene soporte integrado para otros productos de National Instruments, como las plataformas de hardware CompactDAQ y CompactRIO y los conjuntos de herramientas Measurement and Automation eXplorer (MAX) y Virtual Instrument Software Architecture (VISA).
LabVIEW incluye un compilador que traduce el código "G" en código nativo para las plataformas de CPU compatibles. El código gráfico se convierte en una representación intermedia de flujo de datos y, a continuación, un compilador basado en LLVM lo traduce en fragmentos de código de máquina ejecutable. Estos fragmentos de código son llamados por el motor de ejecución "G" , lo que permite una ejecución nativa rápida y de alto rendimiento del código gráfico. La sintaxis de LabVIEW se aplica estrictamente durante el proceso de edición y, cuando se ejecuta o guarda el código "G", se invoca automáticamente el compilador. El código "G" se guarda en un único archivo binario que contiene tanto el código fuente como el ejecutable. La ejecución está controlada por el motor de ejecución, que contiene código precompilado para realizar tareas comunes definidas en el lenguaje "G". El motor de ejecución administra el flujo de ejecución y proporciona una interfaz coherente para los sistemas operativos, sistemas gráficos y componentes de hardware compatibles. El uso de un entorno de ejecución portátil hace que los archivos de código fuente sean portátiles en todas las plataformas compatibles. Los programas de LabVIEW son más lentos que el código C compilado equivalente, aunque a menudo es posible mitigar los problemas de velocidad con optimizaciones del programa. [10]
LabVIEW incluye una gran cantidad de bibliotecas que contienen funciones para adquisición de datos, generación de señales, matemáticas, estadísticas, acondicionamiento de señales, análisis, integración, filtrado y otras capacidades especializadas como la captura de datos de sensores de hardware. Además, incluye MathScript , un componente de programación basado en texto con funciones integradas para procesamiento de señales, análisis y matemáticas. MathScript se puede integrar con programación gráfica mediante nodos de script y utiliza una sintaxis que generalmente es compatible con MATLAB . [11]
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, dibujando dos o más bucles While paralelos y conectándolos a dos nodos separados. Esto proporciona 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 interconexión de hardware en paralelo.
Debido a la longevidad y popularidad de la plataforma 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 directa e instalación en LabVIEW mediante el VI Package Manager (VIPM), [12] el administrador de paquetes oficial para complementos de LabVIEW. National Instruments también alberga un mercado para complementos de LabVIEW gratuitos y pagos, llamado NI Tools Network .
Existe una edición de bajo costo de LabVIEW para estudiantes, destinada 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 .
National Instruments ofrece una edición de paquete doméstico de LabVIEW de bajo costo. [13]
National Instruments ofrece una versión gratuita para uso no comercial llamada LabVIEW Community Edition. [14] Esta versión incluye todo lo que contienen 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 primarias y secundarias. [15]
LabVIEW es un producto exclusivo de National Instruments. A diferencia de los lenguajes de programación comunes, como C o Fortran , LabVIEW no está administrado ni estandarizado por ningún comité de estándares externo.
Dado que el lenguaje "G" no es textual, las herramientas de software comunes, como el control de versiones, la comparación en paralelo (o diff) y el seguimiento de cambios en el código de versión, no se pueden aplicar de la misma manera que en los lenguajes de programación textual. Sin embargo, existen algunas herramientas de control de código fuente (control de versiones) que sí permiten la comparación y fusión de código, como Subversion, CVS y Perforce. [16] [17] [18]
En 2005, a partir de LabVIEW 8.0, se lanzan versiones principales alrededor de la primera semana de agosto, para coincidir con la conferencia anual de National Instruments NI Week, y son seguidas por un lanzamiento de corrección de errores en febrero del año siguiente.
En 2009, National Instruments comenzó a nombrar las versiones según el año en el que se lanzaron. 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 y construido sobre Windows Presentation Foundation (WPF).
Nombre y versión | Número de compilación | Fecha | Notas |
---|---|---|---|
Comienza el 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 [ ¿cuál? ] y Windows | |
LabVIEW 3.0 | Julio de 1993 | Multiplataforma | |
LabVIEW 3.0.1 | 1994 | Primera versión para Windows NT | |
LabVIEW 3.1 | 1994 | ||
LabVIEW 3.1.1 | 1995 | Primera versión con capacidad de "creador de aplicaciones" | |
LabVIEW 4.0 | Abril de 1996 | ||
LabVIEW 4.1 | 1997 | ||
LabVIEW 5.0 | Febrero de 1998 | ||
LabVIEW RT | Mayo de 1999 | En tiempo real | |
LabVIEW 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 de LabVIEW | Mayo de 2003 | Primer lanzamiento del módulo | |
Módulo FPGA de LabVIEW | Junio de 2003 | primer lanzamiento | |
LabVIEW 7.1 | 7.1.0.4000 | 2004 | |
Módulo LabVIEW Embedded | Mayo de 2005 | primer lanzamiento | |
LabVIEW 8.0 | 8.0.0.4005 | Septiembre de 2005 | |
LabVIEW 8.20 | Agosto de 2006 | Programación nativa orientada a objetos | |
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 bits y 64 bits |
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 para 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 | 1 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 [19] | |
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 de 2016 | |
LabVIEW 2016 | 16.0.0 | Agosto de 2016 | |
LabVIEW 2017 | 17.0f1 | Mayo de 2017 | |
LabVIEW NXG 1.0 | 1.0.0 | Mayo de 2017 | |
LabVIEW 2017 SP1 | 17.0.1f1 | Enero de 2018 [20] | |
LabVIEW NXG 2.0 | 2.0.0 | Enero de 2018 [21] | |
LabVIEW 2018 | 18.0 | Mayo de 2018 | |
LabVIEW NXG 2.1 | 2.1.0 | Mayo de 2018 [22] | |
LabVIEW 2018 SP1 | 18.0.1 | Septiembre de 2018 [23] | |
LabVIEW NXG 3.0 | 3.0.0 | Noviembre de 2018 [24] | |
LabVIEW 2019 | 19.0 | Mayo de 2019 | |
LabVIEW NXG 3.1 | 3.1.0 | Mayo de 2019 [25] | |
LabVIEW 2019 SP1 | 19.0.1 | Noviembre de 2019 | |
LabVIEW NXG 4.0 | 4.0.0 | Noviembre de 2019 [26] | |
Edición comunitaria de LabVIEW 2020 y LabVIEW NXG 5.0 | Abril de 2020 [27] | primeros lanzamientos | |
LabVIEW 2021 | 21.0 | Agosto de 2021 | |
LabVIEW 2022, tercer trimestre | 22.3 | Julio de 2022 | |
LabVIEW 2023 T1 | 23.1 | Enero de 2023 | |
LabVIEW 2023 T3 | 23.3 | Julio de 2023 | |
LabVIEW 2024 T1 | 24.1 | Enero de 2024 | |
LabVIEW 2024, tercer trimestre | 24.3 | Julio de 2024 |
OpenG y LAVA Code Repository (LAVAcr) sirven como repositorios para una amplia gama de aplicaciones y bibliotecas de código abierto de LabVIEW . SourceForge incluye a LabVIEW como uno de los lenguajes posibles 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. Su propósito es muy similar al de RubyGems de Ruby y al de CPAN de Perl , aunque proporciona una interfaz gráfica de usuario similar a la de Synaptic Package Manager . VI Package Manager proporciona acceso a un repositorio de bibliotecas OpenG (y otras) para LabVIEW.
Existen herramientas para convertir MathML en código "G". [28]
National Instruments también ofrece Measurement Studio , un producto 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 los programadores ANSI C.
Cuando las aplicaciones necesitan secuenciación, los usuarios a menudo utilizan LabVIEW con el software de gestión de pruebas TestStand de National Instruments .
El intérprete Ch es un intérprete de C / C++ que se puede integrar en LabVIEW para crear scripts. [29]
FlowStone DSP de DSP Robotics también utiliza una forma de programación gráfica similar a LabVIEW pero está limitada a la industria de la robótica.
LabVIEW tiene un nodo directo con modeFRONTIER , un entorno de diseño y optimización multidisciplinario y multiobjetivo, escrito para permitir el acoplamiento con 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 controlados virtualmente por las tecnologías de optimización disponibles en modeFRONTIER.
{{cite journal}}
: CS1 maint: varios nombres: lista de autores ( enlace ){{cite journal}}
: CS1 maint: varios nombres: lista de autores ( enlace ){{cite journal}}
: CS1 maint: varios nombres: lista de autores ( enlace ){{cite journal}}
: CS1 maint: varios nombres: lista de autores ( enlace ){{cite journal}}
: CS1 maint: varios nombres: lista de autores ( enlace )