Este artículo puede depender excesivamente de fuentes demasiado estrechamente asociadas con el tema , lo que podría impedir que el artículo sea verificable y neutral . ( Mayo de 2015 ) |
Desarrollador (es) | Instrumentos Nacionales |
---|---|
Versión inicial | 1986 |
Lanzamiento estable | LabVIEW NXG 5.1 LabVIEW 2020 / Mayo de 2020 |
Escrito en | C, C ++ |
Sistema operativo | Multiplataforma : Windows , macOS , Linux |
Escribe | 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 |
Laboratorio Virtual Instrument Engineering Workbench ( LabVIEW ) [1] : 3 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 llama "G"; que no debe confundirse con G-código . El lenguaje de flujo de datos G fue desarrollado originalmente por Labview, [2] LabVIEW se usa comúnmente para adquisición de datos , control de instrumentos y automatización industrial en una variedad de sistemas operativos (SO), incluyendo Microsoft Windows , así como varias versiones de Unix , Linux , y macOS .
Las últimas versiones de LabVIEW son LabVIEW 2020 (lanzado en mayo de 2020) y LabVIEW NXG 5.1 (lanzado en enero de 2021). [3] NI 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 usado 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 de múltiples nodos simultáneamente, LabVIEW puede ejecutarse inherentemente en paralelo. [5] : 1-2 Multi-procesamiento y multi-threading de hardware es explotada de forma automática por el planificador incorporado, que multicines múltiples subprocesos del sistema operativo en los nodos listos para su ejecución.
LabVIEW integra la creación de interfaces de usuario (denominadas 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 VI llamadores. El panel frontal está construido con controles e indicadores. Los controles son entradas: permiten al usuario suministrar información al VI. Los indicadores son salidas: indican, o muestran, los resultados con base en las entradas dadas 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 entre sí mediante cables, por ejemplo, dos controles y un indicador se pueden conectar 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 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 de conectores. Esto implica que cada VI puede probarse fácilmente antes de integrarse como una subrutina en un programa más grande.y las funciones se denominan nodos. Los nodos se conectan entre sí mediante cables, por ejemplo, dos controles y un indicador se pueden conectar 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 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 de conectores. Esto implica que cada VI puede probarse fácilmente antes de integrarse como una subrutina en un programa más grande.y las funciones se denominan nodos. Los nodos se conectan entre sí mediante cables, por ejemplo, dos controles y un indicador se pueden conectar 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 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 de conectores. Esto implica que cada VI puede probarse fácilmente antes de integrarse como una subrutina en un programa más grande.con el panel frontal sirviendo como una 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 de conectores. Esto implica que cada VI puede probarse fácilmente antes de integrarse como una subrutina en un programa más grande.con el panel frontal sirviendo como una 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 de conectores. Esto implica que cada VI puede probarse fácilmente antes de integrarse 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 de 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 un cierto peligro de subestimar la experiencia necesaria para una programación G de alta calidad. Para algoritmos complejos o código a gran escala, es importante que un programador posea un conocimiento extenso de la sintaxis especial de LabVIEW y la topología de su administración de memoria. Los sistemas de desarrollo de LabVIEW más avanzados ofrecen la capacidad de construir aplicaciones independientes. Además, es posible crear aplicaciones distribuidas, que se comunican mediante un modelo cliente-servidor., y por lo tanto son más fáciles de implementar debido a la naturaleza inherentemente paralela de G.
Las aplicaciones en LabVIEW generalmente se diseñan usando arquitecturas 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 | Objetivo | Detalles de implementacion | 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". | Intercambie información con menos cableado | Todos los instrumentos virtuales (VI) propietarios se guardan en la memoria. |
Máquina de estado [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 estado complejas usando 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 ciclo while; El ciclo while está suspendido por la estructura de eventos y se reanuda solo cuando se capturan los eventos deseados. | Interfaz gráfica del usuario | Solo una estructura de evento en un bucle. |
Maestro-esclavo [7] | Ejecute procesos independientes simultáneamente | Varios bucles while paralelos, uno de los cuales funciona como "maestro", controlando 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 de bucles asincrónica o multiproceso | 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 de controlar. |
Máquina de estado en cola con productor-consumidor impulsado por eventos | Interfaz de usuario de gran capacidad de respuesta para aplicaciones multiproceso | Una interfaz de usuario impulsada por eventos se coloca dentro del ciclo del productor y una máquina de estado se coloca dentro del ciclo del consumidor, comunicándose usando colas entre ellos y otros VIs paralelos. | Aplicaciones complejas |
LabVIEW incluye un amplio soporte para la interfaz de dispositivos como instrumentos, cámaras y otros dispositivos. Los usuarios se conectan al hardware escribiendo comandos de bus directo (USB, GPIB, Serial) o usando controladores específicos de dispositivo de alto nivel que proporcionan nodos de función nativa 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, los conjuntos de herramientas Measurement and Automation eXplorer (MAX) y Virtual Instrument Software Architecture (VISA).
National Instruments hace que miles de controladores de dispositivos estén disponibles para su descarga en NI Instrument Driver Network (IDNet). [9]
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 Dataflow 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 ejecutable de la máquina cuando se solicita que se ejecute o al guardar. En el último caso, el ejecutable y el código fuente se fusionan en un solo archivo binario. La ejecución está controlada por el tiempo de ejecución de LabVIEWmotor, que contiene un código precompilado para realizar tareas comunes que están 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 tiempo de ejecución hace que los archivos de código fuente sean portátiles en las plataformas compatibles. Los programas de LabVIEW son más lentos que el código C compilado equivalente, aunque como en otros lenguajes, la optimización del programa a menudo permite mitigar problemas con la velocidad de ejecución. [10]
Muchas bibliotecas con una gran cantidad de funciones para la adquisición de datos, generación de señales, matemáticas, estadísticas, acondicionamiento de señales, análisis, etc., junto con numerosas para funciones como integración, filtros y otras habilidades especializadas generalmente asociadas con la captura de datos de sensores de hardware. es enorme. Además, LabVIEW incluye un componente de programación basado en texto llamado MathScript con funciones agregadas 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 . [11]
LabVIEW es un lenguaje inherentemente concurrente , por lo que es muy fácil programar múltiples tareas que se realizan en paralelo a través de múltiples subprocesos. 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 del sistema de prueba, donde es una práctica común ejecutar procesos como la secuenciación de pruebas, el registro de datos y la interfaz de hardware en paralelo.
Debido a la longevidad y popularidad del lenguaje LabVIEW, y la capacidad de los usuarios para extender sus funciones, se ha desarrollado un gran ecosistema de complementos de terceros a través de las contribuciones de la comunidad. Este ecosistema está disponible en LabVIEW Tools Network, que es un mercado para complementos de LabVIEW gratuitos y de pago.
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 .
National Instruments proporciona una edición de paquete de LabVIEW Home Bundle Edition de bajo costo. [12]
National Instruments proporciona una versión gratuita para uso no comercial llamada LabVIEW Community Edition. [13] Esta versión incluye todo en las Ediciones Profesionales de LabVIEW, no tiene marcas de agua e incluye el Módulo Web de LabVIEW NXG para uso no comercial. Estas ediciones también pueden ser utilizadas por escuelas K-12. [14]
LabVIEW es un producto patentado 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), la Organización Internacional para la Estandarización (ISO).
Dado que el lenguaje G no es textual, las herramientas de software como el control de versiones, la comparación lado a lado (o diff) 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 textual. Hay 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.[15] [16] [17]
No hay capacidad para acercar (o ampliar) un instrumento virtual (VI) 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. [18]
En 2005, comenzando con LabVIEW 8.0, las versiones principales se publican 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 después del año en 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 compilación | Fecha | Notas |
---|---|---|---|
Comienza el proyecto de 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 de Sun [ ¿cuál? ] 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 | primer lanzamiento 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 | 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 LabVIEW PDA | Mayo de 2003 | primer lanzamiento del módulo | |
Módulo LabVIEW FPGA | 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 2012 | |
LabVIEW 2012 SP1 | 12.0.1.4013 | Diciembre 2012 | |
LabVIEW 2013 | 13.0.0.4047 | Agosto 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 | Nov. De 2019 | |
LabVIEW NXG 4.0 | 4.0.0 | Noviembre de 2019 [26] | |
LabVIEW 2020 y LabVIEW NXG 5.0 Community Edition | Abril de 2020 [27] | primeros lanzamientos |
OpenG , así como LAVA Code Repository (LAVAcr), sirven como repositorios para una amplia gama de aplicaciones y bibliotecas de LabVIEW de código abierto . 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 al RubyGems de Ruby y al CPAN de Perl , aunque proporciona una interfaz gráfica de usuario similar a Synaptic Package Manager . VI Package Manager proporciona acceso a un repositorio de las bibliotecas OpenG (y otras) para LabVIEW.
Existen herramientas para convertir MathML en código G. [28]
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 .NET Framework basado en texto . National Instruments también ofrece LabWindows / CVI como alternativa para programadores ANSI C.
Cuando las aplicaciones necesitan secuenciación, los usuarios a menudo usan LabVIEW con el software de administración de pruebas TestStand, también de National Instruments.
El intérprete de Ch es un intérprete de C / C ++ que se puede incrustar en LabVIEW para la creación de scripts. [29]
FlowStone DSP de DSP Robotics también usa una forma de programación gráfica similar a LabVIEW, pero está limitada a la industria 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.
|journal=
( ayuda )