Usar la variable compartida de LabVIEW

Información general


LabVIEW proporciona acceso a una amplia variedad de tecnologías para crear aplicaciones distribuidas. La variable compartida simplifica la programación que se necesita para esas aplicaciones. Este artículo proporciona una introducción a la variable compartida e incluye una discusión de sus características y su rendimiento.

 

La variable compartida permite compartir datos entre ciclos en un solo diagrama o entre VI a través de la red. A diferencia de muchos métodos existentes para comparar datos en LabVIEW, como UDP/TCP, colas de LabVIEW y FIFO en tiempo real, normalmente se configura la variable compartida en el momento de la edición utilizando diálogos de propiedades, y no es necesario incluir el código de configuración en la aplicación.


Puede crear dos tipos de variables compartidas: de un solo proceso y publicadas en la red. Este documento trata las variables compartidas de un solo proceso y publicadas en la red en detalle.

Contenido

Creación de variables compartidas

Debe tener un proyecto de LabVIEW abierto para crear una variable compartida. Haga clic con botón derecho en un objetivo, una biblioteca de proyectos o una carpeta dentro de una biblioteca de proyectos en el explorador de proyectos y seleccione New»Variable en el menú de acceso directo para mostrar el cuadro de diálogo Shared Variable Properties. Seleccione entre las opciones de configuración de variables compartidas y haga clic en el botón OK.

Si hace clic con el botón derecho en un objetivo o una carpeta que no está dentro de una biblioteca de proyectos y selecciona New»Variable en el menú contextual para crear una variable compartida, LabVIEW crea una nueva biblioteca de proyectos y coloca la variable compartida dentro. Consulte la sección Shared Variable Lifetime para obtener más información sobre variables y bibliotecas.

La Figura 1 muestra el cuadro de diálogo Shared Variable Properties para una variable compartida de un solo proceso. El LabVIEW Real-Time Module y el LabVIEW Datalogging and Supervisory Control (DSC) Module proporcionan características adicionales y propiedades configurables para variables compartidas. Aunque en este ejemplo están instalados tanto el LabVIEW Real-Time Module como el LabVIEW DSC Module, usted puede usar las funciones que el LabVIEW DSC Module agrega solo para las variables compartidas publicadas en la red.


Propiedades de variables compartidas de un solo proceso

Figura 1. Propiedades de variables compartidas de un solo proceso

 

Tipo de datos

Puede seleccionar entre una gran cantidad de tipos de datos estándares para una nueva variable compartida. Además de estos tipos de datos estándar, puede especificar un tipo de datos personalizado al seleccionar Custom en la lista desplegable Data Type y navegar a un control personalizado. Sin embargo, algunas características como la escala y FIFO en tiempo real no funcionarán con algunos tipos de datos personalizados.  Además, si tiene instalado el módulo LabVIEW DSC, la alarma se limita a notificaciones de estado incorrecto cuando se usan tipos de datos personalizados.

Después de configurar las propiedades de la variable compartida y hacer clic en el botón OK, la variable compartida aparece en la ventana del Project Explorer debajo de la biblioteca o el objetivo que ha seleccionado, tal como se muestra en la Figura 2.

Variable compartida en el proyecto

Figura 2. Variable compartida en el proyecto


El objetivo al que pertenece la variable compartida es el objetivo desde el cual LabVIEW implementa y aloja la variable compartida. Consulte la sección Deployment and Hosting para obtener más información sobre la implementación y el alojamiento de variables compartidas.

 

Referencias variables

Después de agregar una variable compartida a un proyecto de LabVIEW, puede arrastrar la variable compartida al diagrama de bloques de un VI para leer o escribir la variable compartida, tal como se muestra en la Figura 3. Los nodos de lectura y escritura en el diagrama se denominan nodos de variable compartida.

Leer y escribir en una variable compartida mediante un nodo de variable compartida

Figura 3. Leer y escribir en una variable compartida mediante un nodo de variable compartida

Puede establecer un nodo de variable compartida como absoluto o relativo al objetivo, según cómo desee que el nodo se conecte a la variable. Un nodo de variable compartida absoluto se conecta a la variable compartida en el objetivo en el que ha creado la variable. Un nodo de variable compartida relativo al objetivo se conecta a la variable compartida en el objetivo en el que ejecuta el VI que contiene el nodo.

Si mueve un VI que contiene un nodo de variable compartida relativo al objetivo a un nuevo objetivo, también debe mover la variable compartida al nuevo objetivo. Utilice nodos de variable compartida relativos al objetivo cuando desee mover VI y variables a otros objetivos.

Los nodos de variable compartida son absolutos de forma predeterminada. Haga clic con botón derecho en un nodo y seleccione Reference Mode»Target Relative o Reference Mode»Absolute para cambiar la forma en que el nodo de variable compartida se conecta a la variable compartida. 

Puede hacer clic con el botón derecho en una variable compartida en la ventana del Project Explorer y editar las propiedades de la variable compartida en cualquier momento. El proyecto LabVIEW propaga la nueva configuración a todas las referencias de variables compartidas en la memoria. Cuando guarda la biblioteca de variables, estos cambios también se aplican a la definición de variable almacenada en el disco.

Variables compartidas de un solo proceso


Utilice variables de un solo proceso para transferir datos entre dos ubicaciones diferentes en el mismo VI que no pueden conectarse mediante cables, como ciclos paralelos en el mismo VI o dos VI diferentes dentro de la misma instancia de aplicación. La implementación subyacente de la variable compartida de un solo proceso es similar a la de la variable global de LabVIEW. La principal ventaja de las variables compartidas de un solo proceso sobre las variables globales tradicionales es la capacidad de convertir una variable compartida de un solo proceso en una variable compartida publicada en la red a la que puede acceder cualquier nodo en una red.

Variables compartidas de un solo proceso y LabVIEW Real-Time

Para mantener el determinismo, una aplicación en tiempo real requiere el uso de un mecanismo determinista sin bloqueo para transferir datos desde secciones deterministas del código, como ciclos temporizados de mayor prioridad y VI prioritarios de tiempo crítico, a secciones no deterministas del código. Cuando instala el LabVIEW Real-Time Module, puede configurar una variable compartida para usar FIFO en tiempo real al habilitar la característica FIFO en tiempo real desde el cuadro de diálogo Shared Variable Properties. NI recomienda usar FIFOs en tiempo real para transferir datos entre un ciclo de tiempo crítico y uno de menor prioridad. Puede evitar el uso de los VI de FIFO en tiempo real de bajo nivel si habilita el FIFO en tiempo real en una variable compartida de un solo proceso.

LabVIEW crea un FIFO en tiempo real cuando el VI está reservado para la ejecución (cuando el VI de nivel superior en la aplicación comienza a ejecutarse en la mayoría de los casos), por lo que no hay consideraciones especiales para la primera ejecución del nodo de variable compartida. 

Nota: En las versiones heredadas de LabVIEW (versiones anteriores a 8.6), LabVIEW crea un FIFO en tiempo real la primera vez que un nodo de variable compartida intenta escribir o leer desde una variable compartida. Este comportamiento da como resultado un tiempo de ejecución un poco más prolongado para el primer uso de cada variable compartida en comparación con los usos posteriores. Si una aplicación requiere una sincronización extremadamente precisa, incluya las iteraciones iniciales de “calentamiento” en el ciclo de tiempo crítico para tener en cuenta esta fluctuación en los tiempos de acceso o lea la variable al menos una vez fuera del ciclo de tiempo crítico.

Variables compartidas habilitadas por FIFO en tiempo real

Figura 4. Variables compartidas habilitadas por FIFO en tiempo real


LabVIEW crea una única FIFO en tiempo real para cada variable compartida de un solo proceso, incluso si la variable compartida tiene múltiples escritores o lectores. Para garantizar la integridad de los datos, varios escritores se bloquean entre sí al igual que varios lectores. Sin embargo, un lector no bloquea a un escritor y un escritor no bloquea a un lector. NI recomienda evitar múltiples escritores o múltiples lectores de variables compartidas de un solo proceso utilizadas en ciclos de tiempo crítico.

Múltiples escritores y lectores que comparten una sola FIFO

Figura 5. Múltiples escritores y lectores que comparten una sola FIFO


Al habilitar el FIFO en tiempo real, puede seleccionar entre dos tipos ligeramente diferentes de variables habilitadas por FIFO: el búfer de múltiples elementos y el búfer de elemento único. Una distinción entre estos dos tipos de búfer es que el FIFO de un solo elemento no notifica advertencias sobre condiciones de desbordamiento o sub-desbordamiento. Una segunda distinción es el valor que LabVIEW devuelve cuando varios lectores leen un búfer vacío. Varios lectores del FIFO de un solo elemento reciben el mismo valor, y el FIFO de un solo elemento devuelve el mismo valor hasta que un escritor vuelve a escribir en esa variable. Varios lectores de una FIFO de múltiples elementos vacía obtienen cada uno el último valor que leen del búfer o el valor predeterminado para el tipo de datos de la variable si no han leído antes la variable. Este comportamiento se muestra a continuación.

Variable compartida de FIFO en tiempo real de múltiples elementos y comportamiento de última lectura

Figura 6. Variable compartida de FIFO en tiempo real de múltiples elementos y comportamiento de última lectura


Si una aplicación requiere que cada lector obtenga cada punto de datos escrito en una variable compartida FIFO de varios elementos, use una variable compartida individual para cada lector.

Variables compartidas publicadas en la red


Usando la variable compartida publicada en la red, puede escribir y leer desde variables compartidas a través de una red Ethernet. La variable publicada en la red maneja completamente la implementación de redes.

Además de hacer que sus datos estén disponibles en la red, la variable compartida publicada en la red agrega muchas características que no están disponibles con la variable compartida de un solo proceso. Para proporcionar esta funcionalidad adicional, la implementación interna de la variable compartida publicada en la red es bastante más compleja que la de la variable compartida de un solo proceso. Las siguientes secciones tratan aspectos de esta implementación y ofrecen recomendaciones para obtener el mejor rendimiento de la variable compartida publicada en la red.

NI-PSP

El protocolo NI-PSP (NI Publish and Subscribe Protocol) es un protocolo de red optimizado para ser el transporte de variables compartidas de red.  El protocolo de nivel más bajo por debajo de NI-PSP es TCP/IP y se ha ajustado minuciosamente con miras al rendimiento tanto en los sistemas de escritorio como en los objetivos RT de NI (consulte las evaluaciones comparativas siguientes).  

Teoría de funcionamiento de LogosXT

La Figura 7 ilustra la pila de software de la variable compartida de red.  Es importante entender esto porque la teoría de funcionamiento en juego aquí hace referencia específicamente al nivel de la pila llamada LogosXT.  LogosXT es la capa de la pila responsable de optimizar el rendimiento de la variable compartida.

La pila de red de la variable compartida

Figura 7. La pila de red de la variable compartida

La Figura 8 muestra los componentes principales del algoritmo de transmisión LogosXT.  En esencia, es muy simple.  Hay dos actores importantes

    1. Un búfer de transmisión de 8 kilobytes (KB)
    2. Un subproceso de temporizador de 10 milisegundos (ms)

Actores de LogosXT. El búfer se transmitirá si está lleno o después de que hayan expirado los 10 ms

Figura 8. Actores de LogosXT.  El búfer se transmitirá si está lleno o después de que hayan transcurrido 10 ms

Estos resultados se obtuvieron mediante el análisis exhaustivo de varios tamaños y tiempos de paquetes para optimizar el rendimiento de los datos.  El algoritmo es el siguiente:

    • SI el búfer de transmisión está lleno hasta su capacidad (8 KB) antes de que se active el temporizador de 10 ms, entonces los datos de ese búfer se envían inmediatamente a TCP en el mismo subproceso que inició la escritura.  En el caso de la variable compartida, el subproceso será el subproceso del motor de la variable compartida.
    • Si transcurren 10 ms sin que el búfer se llene hasta su capacidad, los datos se enviarán en el subproceso del temporizador.

Nota importante: Hay un búfer de transmisión para todas las conexiones entre dos puntos finales distintos.  Es decir, todas las variables que representan conexiones entre dos máquinas diferentes compartirán un búfer.  No confunda este búfer de transmisión con la propiedad Almacenamiento en búfer de las variables compartidas.  Este búfer de transmisión es un búfer de muy bajo nivel que conecta las variables en una conexión TCP y optimiza el rendimiento de la red.

Es importante comprender la funcionalidad de esta capa de la pila de red porque tiene efectos secundarios en el código en su diagrama de LabVIEW.  El algoritmo espera 10 ms porque siempre es más eficaz que el rendimiento envíe tanto como sea posible en una sola operación de envío.  Cada operación de red tiene una sobrecarga fija tanto en tiempo como en tamaño de paquete.  Si enviamos muchos paquetes pequeños (llamémosle N paquetes) que contengan un total de B bytes, entonces pagaremos la sobrecarga de la red N veces.  Si, en cambio, enviamos un paquete grande que contiene B bytes, solo pagamos la sobrecarga fija una vez y el rendimiento general es mucho mayor.

Este algoritmo funciona muy bien si lo que desea hacer es transmitir datos desde o hacia un objetivo con la tasa de rendimiento más alta posible.  Si, por otro lado, lo que quiere hacer es enviar paquetes pequeños con poca frecuencia, por ejemplo, enviar comandos a un objetivo para realizar alguna operación, como abrir un relé (1 byte de datos booleanos), pero desea que llegue allí lo más rápido posible, lo que necesita optimizar es la latencia.  

Si en su aplicación es más importante optimizar la latencia, usted deberá utilizar la función Flush Shared Variable Data.vi.  Este VI obliga a que los búferes de transmisión en LogosXT se vacíen a través del motor de variables compartidas y a través de la red.  Esto reducirá la latencia drásticamente.  

Nota: En LabVIEW 8.5 no existía un gancho para obligar a LogosXT a vaciar su búfer, y el Flush Shared Variable Data.vi no existía.  En cambio, estaba prácticamente garantizado que habría al menos 10 ms de latencia incorporada en el sistema mientras el programa esperaba a que se llenara el búfer de transmisión antes de sincronizar finalmente cada 10 ms y enviar los datos que tenía.  

Sin embargo, como se ha señalado anteriormente, todas las variables compartidas que conectan una máquina con otra comparten el mismo búfer de transmisión; llamar a la función Flush Shared Variable Data afectará a muchas de las variables compartidas en su sistema.  Si tiene otras variables que dependen de un rendimiento alto, llamar a Flush Shared Variable Data.vi (Figura 9) les afectará negativamente.

 

Flush Shared Variable Data.vi

Figura 9. Flush Shared Variable Data.vi

 

Implementación y alojamiento

Debe implementar las variables compartidas publicadas en la red en un motor de variables compartidas (SVE) que aloja los valores de las variables compartidas en la red. Cuando escribe en un nodo de variable compartida, LabVIEW envía el nuevo valor al SVE que ha implementado y aloja la variable. El ciclo de procesamiento SVE publica el valor para que los suscriptores obtengan el valor actualizado. La Figura 10 ilustra este proceso. Para usar la terminología cliente/servidor, el SVE es el servidor para una variable compartida y todas las referencias son los clientes, independientemente de si escriben o leen desde la variable. El cliente SVE es parte de la implementación de cada nodo de variable compartida, y en este documento los términos cliente y suscriptor son intercambiables.

Cambios del valor de variable compartida de la red y del motor de variable compartida

Figura 10. Cambios del valor de variable compartida de la red y del motor de variable compartida



Variables compartidas publicadas en la red y LabVIEW Real-Time

Puede habilitar FIFOs en tiempo real con una variable compartida publicada en la red, pero las variables compartidas publicadas en la red y habilitadas por FIFO tienen una diferencia de comportamiento importante en comparación con las variables compartidas de un solo proceso en tiempo real, habilitadas por FIFO. Recuerde que, con la variable compartida de un solo proceso, todos los escritores y lectores comparten un único FIFO en tiempo real; este no es el caso de la variable compartida publicada en la red. Cada lector de una variable compartida publicada en la red obtiene su propio FIFO en tiempo real tanto en el caso de elementos individuales como de elementos múltiples, como se muestra a continuación.

Variable publicada en la red habilitada por FIFO en tiempo real

Figura 11. Variable publicada en la red habilitada para FIFO en tiempo real



Almacenamiento en búfer en la red

Puede usar el almacenamiento en búfer con la variable compartida publicada en la red. Puede configurar el almacenamiento en búfer en el cuadro de diálogo Shared Variable Properties, como se muestra en la Figura 12.

Habilitación del almacenamiento en búfer en una variable compartida publicada en la red

Figura 12. Habilitación del almacenamiento en búfer en una variable compartida publicada en la red


Con el almacenamiento en búfer habilitado, puede especificar el tamaño del búfer en unidades del tipo de datos, en este caso, el doble.

Con el almacenamiento en búfer, puede tener en cuenta las fluctuaciones temporales entre las velocidades de lectura/escritura de una variable. Los lectores que ocasionalmente leen una variable más lentamente que el escritor pueden perderse algunas actualizaciones. Si la aplicación puede tolerar que falten puntos de datos ocasionalmente, una velocidad de lectura más lenta no afecta a la aplicación y no necesita habilitar el almacenamiento en búfer. Sin embargo, si el lector debe recibir todas las actualizaciones, habilite el almacenamiento en búfer. Puede establecer el tamaño de búfer en la página Variable del cuadro de diálogo Shared Variable Properties, para que pueda decidir cuántas actualizaciones conserva la aplicación antes de que comience a sobrescribir datos antiguos.

Cuando configura un búfer en la red en el cuadro de diálogo anterior, en realidad está configurando el tamaño de dos búferes diferentes.  El búfer del lado del servidor, representado como el búfer dentro del cuadro denominado Shared Variable Engine (SVE) en la Figura 13, se crea y configura automáticamente para tener el mismo tamaño que el búfer del lado del cliente, más sobre ese búfer en un minuto.  Es más probable que el búfer del lado del cliente sea en el que piensa lógicamente cuando configura su variable compartida para tener habilitado el almacenamiento en búfer.  El búfer del lado del cliente (representado en el lado derecho de la Figura 13) es el búfer responsable de mantener la cola de valores anteriores.  Este búfer es el que aísla las variables compartidas de las fluctuaciones en la velocidad del ciclo o el tráfico de red.

A diferencia de la variable de un solo proceso habilitada por FIFO en tiempo real, para la cual todos los escritores y lectores comparten la misma FIFO en tiempo real, cada lector de una variable compartida publicada en la red obtiene su propio búfer para que los lectores no interactúen entre sí.

Almacenamiento en búfer

Figura 13. Almacenamiento en búfer


El almacenamiento en búfer solo ayuda en situaciones en las que las velocidades de lectura/escritura tienen fluctuaciones temporales. Si la aplicación se ejecuta durante un período de tiempo indefinido, los lectores que siempre leen a un ritmo más lento que un escritor al final pierden datos independientemente del tamaño del búfer que especifique. Debido a que el almacenamiento en búfer asigna un búfer para cada suscriptor, para evitar el uso innecesario de memoria, use el almacenamiento en búfer solo cuando sea necesario.

Almacenamiento en búfer en tiempo real y en la red

Si habilita tanto el almacenamiento en búfer en la red como FIFO en tiempo real, la implementación de la variable compartida incluye tanto un búfer en la red como un FIFO en tiempo real. Recuerde que si el FIFO en tiempo real está habilitado, se crea un nuevo FIFO en tiempo real para cada escritor y lector, lo que significa que muchos escritores y lectores no se bloquearán entre sí.

Almacenamiento en búfer en la red y FIFO en tiempo real

Figura 14. Almacenamiento en búfer en la red y FIFO en tiempo real



Aunque usted puede establecer los tamaños de estos dos búferes de forma independiente, en la mayoría de los casos, NI recomienda que los mantenga con el mismo tamaño. Si habilita un FIFO en tiempo real, LabVIEW crea un nuevo FIFO en tiempo real para cada escritor y lector. De esta manera, escritores y lectores múltiples no se bloquean entre sí.

Vida útil del búfer

LabVIEW crea búferes FIFO en la red y en tiempo real en una escritura o lectura inicial, en función de la ubicación de los búferes.

  • Los búferes del lado del servidor se crean cuando un escritor escribe por primera vez en una variable compartida.
  • Los búferes del lado del cliente se crean cuando se establece una suscripción. 

Esto ocurre cuando se inicia el VI que contiene el nodo de variable compartida.  Si un escritor escribe datos en una variable compartida antes de que un lector determinado se suscriba a esa variable, los valores de datos iniciales no están disponibles para el suscriptor.

Nota: En versiones anteriores de LabVIEW 8.6, la creación de búferes ocurría cuando se ejecutaba por primera vez un nodo de lectura o escritura de la variable compartida.  

Vida útil del búfer

Figura 15. Vida útil del búfer



Desbordamiento o sub-desbordamiento del búfer

La variable compartida publicada en la red informa sobre las condiciones de desbordamiento y sub-desbordamiento del búfer en la red. El FIFO en tiempo real en todas las versiones indicará el desbordamiento/sub-desbordamiento de FIFO mediante la devolución de errores.

Nota: La versión heredada de LabVIEW no informa las condiciones de desbordamiento/sub-desbordamiento del búfer de la red. Una aplicación en LabVIEW 8.0 o 8.0.1 puede verificar los desbordamientos del búfer en la red de dos maneras. Debido a que la resolución de la marca de tiempo de la variable compartida es de 1 ms, puede comparar la marca de tiempo de una variable compartida con la marca de tiempo de lectura posterior para detectar desbordamientos del búfer cuando actualiza la variable a menos de 1 kHz. O el lector puede usar un número de secuencia incluido con los datos para reconocer los desbordamientos/sub-desbordamientos del búfer. No puede usar el segundo enfoque con variables compartidas utilizadas dentro de un ciclo de tiempo crítico si el tipo de datos es una matriz, ya que las variables compartidas habilitadas por FIFO en tiempo real no admiten el tipo de datos de control personalizado (clúster) si uno de los elementos del clúster es una matriz.

Vida útil de la variable compartida

Como se mencionó anteriormente, todas las variables compartidas son parte de una biblioteca de proyectos. El SVE registra las bibliotecas de proyectos y las variables compartidas que esas bibliotecas contienen cada vez que LabVIEW necesita una de esas variables. De forma predeterminada, el SVE implementa y publica una biblioteca de variables compartidas tan pronto como ejecuta un VI que hace referencia a cualquiera de las variables contenidas. Debido a que el SVE implementa toda la biblioteca que posee una variable compartida, el SVE publica todas las variables compartidas de la biblioteca, tanto si un VI en ejecución hace referencia a todas ellas o no. Puede implementar cualquier biblioteca de proyectos manualmente en cualquier momento al hacer clic con el botón derecho en la biblioteca en la ventana del Project Explorer.

El hecho de detener el VI o reiniciar la máquina que aloja la variable compartida no hace que la variable no esté disponible en la red. Si necesita eliminar la variable compartida de la red, debe anular explícitamente la implementación de la biblioteca de la que forma parte la variable en la ventana del explorador de proyectos. También puede seleccionar Tools»Distributed System Manager para anular la implementación de las variables compartidas o de todas las bibliotecas de proyectos de variables.

Nota: Las versiones heredadas de Labview utilizan el administrador de variables (Tools»Shared Variable»Variable Manager) en lugar del administrador del sistema distribuido para controlar la implementación de variables compartidas. 

Enlace de datos del panel frontal

Una característica adicional disponible solo para las variables compartidas publicadas en la red es el enlace de datos del panel frontal. Arrastre una variable compartida desde la ventana del Explorador de proyectos al panel frontal de un VI para crear un control vinculado a la variable compartida. Cuando habilita el enlace de datos para un control, al cambiar el valor del control se cambia también el valor de la variable compartida a la que está vinculado el control. Mientras se ejecuta el VI, si la conexión al SVE se realiza correctamente, aparece un pequeño indicador verde al lado del objeto del panel frontal en el VI, como se muestra en la Figura 16.

Enlace de un control del panel frontal a una variable compartida

Figura 16. Enlace de un control del panel frontal a una variable compartida


Puede acceder y cambiar el enlace para cualquier control o indicador en la página Data Binding del cuadro de diálogo Properties. Al usar el LabVIEW Real-Time Module o el LabVIEW DSC Module, puede seleccionar Tools»Shared Variable»Front Panel Binding Mass Configuration para mostrar el cuadro de diálogo Front Panel Binding Mass Configuration y crear una interfaz de operador que une muchos controles e indicadores a las variables compartidas.

NI no recomienda usar el enlace de datos del panel frontal para aplicaciones que se ejecutan en LabVIEW Real-Time porque el panel frontal podría no estar presente.

Acceso programático

Como se indicaba anteriormente, puede crear, configurar e implementar variables compartidas interactivamente usando el proyecto de LabVIEW, y puede leer y escribir en variables compartidas usando el nodo de variables compartidas en el diagrama de bloques o usando el enlace de datos del panel frontal. En LabVIEW 2009 y versiones posteriores, también tiene acceso programático a toda esta funcionalidad.

Utilice el servidor de VI para crear bibliotecas de proyectos y variables compartidas mediante programación en aplicaciones donde necesita crear grandes cantidades de variables compartidas. Además, el módulo LabVIEW DSC proporciona un conjunto completo de VI para crear y editar variables compartidas y bibliotecas de proyectos mediante programación, así como también para administrar el SVE. Puede crear bibliotecas de variables compartidas mediante programación solo en sistemas Windows; sin embargo, puede implementar estas nuevas bibliotecas mediante programación en sistemas Windows o LabVIEW Real-Time.

Use la API de variables compartidas programáticas en aplicaciones donde necesite cambiar dinámicamente la variable compartida que un VI lee y escribe, o donde necesite leer y escribir grandes cantidades de variables. Puede cambiar una variable compartida dinámicamente creando la URL mediante programación. 

Usar la API de variables compartidas programáticas para leer y escribir variables compartidas

Figura 17. Uso de la API de variables compartidas programáticas para leer y escribir variables compartidas



Además, con la Biblioteca de variables de red introducida en NI LabWindows/CVI 8.1 y NI Measurement Studio 8.1, puede leer y escribir en variables compartidas en ANSI C, Visual Basic .NET o Visual C#.

El motor de variables compartidas


El SVE es un marco de trabajo de software que permite que una variable compartida publicada en la red envíe valores a través de la red. En Windows, LabVIEW configura el SVE como un servicio y lo inicia al arrancar el sistema. En un destino en tiempo real, el SVE es un componente de inicio instalable que se carga cuando se arranca el sistema.

Para utilizar variables compartidas publicadas en la red, debe ejecutarse un SVE en al menos uno de los nodos del sistema distribuido. Cualquier nodo en la red puede leer o escribir en variables compartidas que publica el SVE. Como se muestra en la Tabla 1, los nodos pueden hacer referencia a una variable sin tener instalado el SVE. También puede tener varios SVE instalados en varios sistemas simultáneamente si necesita implementar variables compartidas en diferentes ubicaciones según los requisitos de la aplicación.

Recomendaciones para la ubicación de alojamiento de variables compartidas

Debe tener en cuenta una serie de factores al decidir desde qué dispositivo informático va a implementar y alojar las variables compartidas publicadas en la red que utiliza en un sistema distribuido.

¿El dispositivo informático es compatible con SVE?

La siguiente tabla resume las plataformas para las que está disponible el SVE e identifica las plataformas que pueden usar variables compartidas publicadas en la red a través de nodos de referencia o la API de DataSocket. NI requiere 32 MB de RAM y recomienda 64 MB para el SVE en todas las plataformas aplicables.

Tenga en cuenta que el alojamiento de variables compartidas todavía no es compatible con Linux ni Macintosh.

(PC con Windows)
Mac OS
Linux
PXI
Real-Time
Compact FieldPoint
CompactRIO
Compact Vision System
PC comerciales con
LabVIEW Real-Time ETS
SVE
X
X
Nodos de referencia
X
X
API de DataSocket con PSP
Tabla 1. Descripción general de la compatibilidad de variables compartidas publicadas en la red

¿La aplicación requiere la funcionalidad Datalogging and Supervisory?

Si desea usar las características del módulo LabVIEW DSC, debe alojar las variables compartidas en Windows. El módulo LabVIEW DSC agrega la siguiente funcionalidad a las variables compartidas publicadas en la red:
· Registro histórico para la base de datos NI Citadel.
· Alarmas y registro de alarmas en red.
· Escalado.
· Seguridad basada en el usuario.
· Valor inicial.
· La capacidad de crear servidores de E/S personalizados.
· Integración de la estructura de eventos de LabVIEW con la variable compartida.
· VI de LabVIEW para controlar mediante programación todos los aspectos de las variables compartidas y el motor de variables compartidas. Estos VI son especialmente útiles para gestionar grandes cantidades de variables compartidas.

¿El dispositivo informático tiene un procesador y recursos de memoria adecuados?

El SVE es un proceso adicional que requiere recursos de memoria y procesamiento. Para obtener el mejor rendimiento en un sistema distribuido, instale el SVE en máquinas con la mayor capacidad de memoria y procesamiento.

 

¿Qué sistema está siempre en línea?

Si crea una aplicación distribuida en la que algunos de los sistemas pueden desconectarse periódicamente, aloje el SVE en un sistema que siempre esté en línea.

Características adicionales del motor de variables compartidas

La Figura 18 ilustra las muchas responsabilidades del SVE. Además de administrar variables compartidas publicadas en la red, el SVE es responsable de:
· Recopilar datos recibidos de servidores de E/S.
· Proporcionar datos a través de los servidores OPC y PSP a los suscriptores.
· Proporcionar servicios de escalado, alarma y registro para cualquier variable compartida con esos servicios configurados. Estos servicios están disponibles solo con el módulo LabVIEW DSC.
· Monitorear las condiciones de alarma y responder en consecuencia.

Servidores de E/S

Los servidores de E/S son complementos de SVE con los que los programas pueden usar el SVE para publicar datos. NI FieldPoint incluye un servidor de E/S que publica datos directamente de los bancos de FieldPoint a SVE. Dado que SVE es un servidor OPC, la combinación de SVE y el servidor de E/S FieldPoint sirve como un servidor FP OPC. El instalador de FieldPoint no incluye el SVE. Este habría que instalarlo mediante otro componente de software como LabVIEW.

NI-DAQmx también incluye un servidor de E/S que puede publicar canales virtuales globales NI-DAQmx automáticamente en SVE. Este servidor de E/S reemplaza el servidor tradicional DAQ OPC y RDA. NI-DAQmx incluye el SVE y puede instalarlo cuando LabVIEW no está instalado.

Con el LabVIEW DSC Module, los usuarios pueden crear nuevos servidores de E/S.

Motor de variables compartidas (SVE)

Figura 18. Motor de variables compartidas (SVE)



OPC

El SVE es compatible con 3.0 y puede actuar como un servidor OPC en máquinas con Windows. Cualquier cliente OPC puede escribir o leer desde una variable compartida alojada en una máquina con Windows. Cuando instala el módulo LabVIEW DSC en una máquina con Windows, SVE también puede actuar como un cliente OPC. Puede enlazar variables compartidas que una máquina con Windows aloja a elementos de datos OPC con DSC y escribiendo o leyendo desde la variable al elemento de datos OPC.

Debido a que OPC es una tecnología basada en COM, una API de Windows, los objetivos en tiempo real no funcionan directamente con OPC. Como muestra la Figura 19, aún puede acceder a elementos de datos OPC desde un objetivo en tiempo real al alojar las variables compartidas en una máquina con Windows.

Enlace al elemento de datos OPC

Figura 19. Enlace al elemento de datos OPC

Rendimiento


Esta sección proporciona pautas generales para crear aplicaciones de alto rendimiento a través de la variable compartida.

Como la variable compartida de un solo proceso tiene una implementación similar a las variables globales de LabVIEW y las FIFOs en tiempo real, NI no tiene recomendaciones específicas para lograr un buen rendimiento para las variables compartidas de un solo proceso. Las siguientes secciones se concentran en la variable compartida publicada en la red.

Compartir el procesador

La variable compartida publicada en la red simplifica los diagramas de bloques de LabVIEW al ocultar muchos de los detalles de implementación de la programación de la red. Las aplicaciones constan de VI de LabVIEW, así como SVE y el código de cliente SVE. Para obtener el mejor rendimiento de la variable compartida, desarrolle la aplicación de modo que renuncie regularmente al procesador para que se ejecuten los subprocesos SVE. Una forma de lograr esto es colocar esperas en los ciclos de procesamiento y asegurarse de que la aplicación no use ciclos no temporizados. La cantidad exacta de tiempo que debe esperar depende de la aplicación, el procesador y la red. Cada aplicación requiere un determinado nivel de ajuste empírico para obtener el mejor rendimiento.

Considerar la ubicación de SVE

La sección Recomendaciones para la ubicación de alojamiento de variables compartidas ha analizado una serie de factores que debe tener en cuenta al decidir dónde instalar el SVE. La Figura 20 muestra otro factor que puede afectar en gran medida al rendimiento de la variable compartida. Este ejemplo implica un objetivo en tiempo real, pero los principios básicos también se aplican a los sistemas en tiempo no real. La Figura 20 muestra un uso ineficiente de las variables compartidas publicadas en la red: usted genera datos en un objetivo en tiempo real y necesita registrar los datos procesados localmente y supervisarlos desde una máquina remota. Debido a que los suscriptores de variables deben recibir datos de SVE, la latencia entre la escritura en el ciclo de alta prioridad y la lectura en el ciclo de prioridad normal es de gran tamaño e implica dos viajes a través de la red.

Uso ineficaz de variables publicadas en la red en tiempo real

Figura 20. Uso ineficaz de variables publicadas en la red en tiempo real


La Figura 21 muestra una arquitectura mejor para esta aplicación. La aplicación utiliza una variable compartida de un solo proceso para transferir datos entre el ciclo de alta prioridad y el ciclo de baja prioridad, reduciendo la latencia en gran medida. El ciclo de baja prioridad registra los datos y escribe la actualización en una variable compartida publicada en la red para el suscriptor en el host.

Uso eficaz de variables publicadas en la red en tiempo real

Figura 21. Uso eficaz de variables publicadas en la red en tiempo real

Evaluaciones

En esta sección se compara el rendimiento de la variable compartida con otros métodos aplicables para comparar datos en LabVIEW, como la variable global de LabVIEW, FIFO en tiempo real y TCP/IP. La tabla siguiente resume las pruebas analizadas que se presentan en las siguientes secciones.

Prueba

Descripción

Ubicación de SVE

Notas

T1

Variable compartida de un solo proceso versus variable global

N/A

Establecer velocidades máximas de lectura/escritura.

T2

Variable compartida de un solo proceso con FIFO en tiempo versus VIs de FIFO en tiempo real

N/A

Establecer velocidades máximas de lectura/escritura cuando se utilice FIFO en tiempo real.

Determinar la tasa sostenible más alta a la que puede escribir en una variable compartida o FIFO en tiempo real en un ciclo temporizado y, simultáneamente, leer los datos desde un ciclo de prioridad normal.

T3

Variable compartida publicada en la red con FIFO en tiempo real versus FIFO en tiempo real de 2 ciclos con TCP

PXI ejecutando LV RT

Establecer la velocidad máxima a la que se pueden transmitir datos de un solo punto a través de la red.

Variable compartida: el VI de lector siempre está en el host. RT-FIFO + TCP: similar a T2 con la adición de comunicación TCP/redes IP.

T4

Huella de variables compartidas publicadas en la red

Objetivo de la serie RT

Establecer el uso de memoria de variables compartidas después de la implementación.

T5

Comparación entre las variables compartidas publicadas en la red 8.2 y las variables 8.5 - transmisión

Objetivo de la serie RT

Comparación de la nueva implementación 8.5 de NI-PSP con la implementación 8.20 y versiones anteriores.

Esta evaluación mide el rendimiento de una aplicación que transmite datos de forma de onda desde un dispositivo cRIO a un host de escritorio.

T6

Comparación entre las variables compartidas publicadas en la red 8.2 y las variables 8.5 - gran cantidad de canales

Objetivo de la serie RT

Comparar la nueva implementación 8.5 de NI-PSP con la implementación 8.20 y versiones anteriores.

Esta evaluación mide el rendimiento de una aplicación de gran cantidad de canales en un dispositivo cRIO.

Tabla 2. Información general de la evaluación


Las siguientes secciones describen el código que NI ha creado para cada una de las evaluaciones, seguido de los resultados reales de las evaluaciones. La sección Metodología y configuración analiza con mayor detalle la metodología elegida para cada evaluación y la configuración detallada que se utiliza para el hardware y el software en el que se ha ejecutado la evaluación.

Variables compartidas de un solo proceso versus Variables globales de LabVIEW

La variable compartida de un solo proceso es similar a la variable global de LabVIEW. De hecho, la implementación de la variable compartida de un solo proceso es una variable global LabVIEW con la funcionalidad de sellado de tiempos añadida.

Para comparar el rendimiento de la variable compartida de un solo proceso con la variable global de LabVIEW, NI ha creado VIs de evaluación para medir la cantidad de veces que el VI puede leer y escribir en una variable global de LabVIEW o una variable compartida de un solo proceso cada segundo. La Figura 22 muestra la evaluación de lectura de la variable compartida de un solo proceso. La evaluación de escritura de la variable compartida de un solo proceso y las evaluaciones de lectura/escritura globales de LabVIEW siguen el mismo patrón.

VI de evaluación de lectura de variables compartidas de un solo proceso

Figura 22. VI de evaluación de lectura de variables compartidas de un solo proceso


La prueba combinada de lectura/escritura también incluye código para validar que cada punto escrito también se puede volver a leer en la misma iteración del ciclo sin datos dañados.

Resultados de la prueba T1

La Figura 23 muestra los resultados de la Prueba T1. Los resultados muestran que el rendimiento de lectura para una variable compartida de un solo proceso es menor que el rendimiento de lectura para una variable global de LabVIEW. El rendimiento de escritura y, por lo tanto, el rendimiento de lectura/escritura, de la variable compartida de un solo proceso es ligeramente inferior al de la variable global de LabVIEW. El rendimiento de las variables compartidas de un solo proceso se verá afectado al habilitar y deshabilitar la funcionalidad de la marca de tiempo, por lo que se recomienda desactivar la marca de tiempo si no es útil.


La sección de Metodología y configuración explica la metodología de evaluación específica y los detalles de configuración para este conjunto de pruebas.

 

Rendimiento de variable compartida de un solo proceso versus variable global


Figura 23. Rendimiento de la variable compartida de un solo proceso versus Rendimiento de la variable global



Variables compartidas de un solo proceso versus FIFO en tiempo real

NI ha evaluado el rendimiento sostenible para comparar el rendimiento de la variable compartida de un solo proceso habilitada por FIFO con los VIs de FIFO en tiempo real tradicionales. La evaluación también examina el efecto del tamaño de los datos transferidos, o la carga útil, para cada una de las dos implementaciones de FIFO en tiempo real.

Las pruebas consisten en un ciclo de tiempo crítico (TCL) que genera datos y un ciclo de prioridad normal (NPL) que consume los datos. NI ha determinado el efecto del tamaño de la carga útil mediante el análisis de una variedad de tipos de datos escalares y de matriz de doble precisión. El tipo escalar determina el rendimiento cuando la carga útil es una doble, y los tipos de matriz determinan el rendimiento para el resto de las cargas. La prueba registra el rendimiento máximo sostenible determinando la velocidad máxima sostenible a la que puede ejecutar ambos ciclos sin pérdida de datos.

La Figura 24 muestra un diagrama simplificado de la evaluación de FIFO en tiempo real que omite gran parte del código necesario requerido para crear y destruir los FIFO. Tenga en cuenta que, a partir de LabVIEW 8.20, se ha introducido una nueva función FIFO para reemplazar los subVI de FIFO que se muestran aquí. Las funciones FIFO se utilizaron para los datos graficados en este documento y funcionan mejor que sus predecesores SubVI 8.0.x.

VI de evaluación de la FIFO en tiempo real simplificada

Figura 24. VI de evaluación de la FIFO en tiempo real simplificada


Una versión equivalente de la prueba utiliza la variable compartida de un solo proceso. La Figura 25 muestra una representación simplificada de ese diagrama.

VI de evaluación de variables compartidas de un solo proceso habilitadas por FIFO simplificado

Figura 25. VI de evaluación de variables compartidas de un solo proceso habilitadas por FIFO simplificado



Resultados de la prueba T2

Las Figuras 26 y 27 muestran los resultados de la Prueba T2, comparando el rendimiento de la variable compartida de un solo proceso habilitada por FIFO con las funciones FIFO en tiempo real. Los resultados indican que usar la variable compartida de un solo proceso es un poco más lento que usar FIFO en tiempo real.

Variable compartida de un solo proceso versus rendimiento de VI FIFO en tiempo real (PXI)

Figura 26. Rendimiento de la variable compartida de un solo proceso versus Rendimiento del VI FIFO en tiempo real (PXI)

Variable compartida de un solo proceso versus rendimiento de VI FIFO en tiempo real (cRIO 9012)

Figura 27. Rendimiento de la variable compartida de un solo proceso versus Rendimiento del VI de FIFO en tiempo real (cRIO 9012)



Variables compartidas publicadas en la red versus FIFOs en tiempo real y TCP/IP

Con la flexibilidad de la variable compartida, puede publicar una variable compartida de un solo proceso rápidamente en toda la red con solo unos pocos cambios de configuración. Para aplicaciones en tiempo real en particular, realizar la misma transformación en versiones anteriores de LabVIEW requiere la introducción de una gran cantidad de código para leer los FIFO en tiempo real en el controlador de la Serie RT y luego enviar los datos a través de la red a través de uno de los muchos protocolos de red disponibles. Para comparar el rendimiento de estos dos enfoques, NI ha creado nuevamente VIs de evaluación para medir el rendimiento sostenible de cada uno sin pérdida de datos en un rango de cargas útiles.

Para el enfoque pre variable, el VI de evaluación utiliza FIFO en tiempo real y TCP/IP. Un TCL genera datos y los coloca en un FIFO en tiempo real; un NPL lee los datos del FIFO y los envía a través de la red utilizando TCP/IP. Una PC host recibe los datos y valida que no se produzca ninguna pérdida de datos.

La Figura 28 muestra un diagrama simplificado de la evaluación de FIFO en tiempo real y TCP/IP. De nuevo, este diagrama simplifica en gran medida el VI de evaluación real.

Figura 28. VI de evaluación de FIFO en tiempo real simplificado y TCP/IP


NI ha creado una versión equivalente de la prueba utilizando la variable compartida publicada en la red. La Figura 29 muestra un diagrama simplificado.

VI de evaluación de la variable compartida publicada en la red habilitada por FIFO en tiempo real simplificado

Figura 29. VI de evaluación de la variable compartida publicada en la red habilitada por FIFO en tiempo real simplificado



Resultados de la prueba T3

Esta sección contiene los resultados de la Prueba T3, que compara el rendimiento de la variable compartida publicada en la red habilitada por FIFO en tiempo real con la del código equivalente que se basa en VI de FIFO en tiempo real y primitivos de LabVIEW TCP/IP. La Figura 30 muestra los resultados cuando el objetivo de LabVIEW Real-Time es un controlador PXI de la serie RT embebido.

Variable compartida publicada en la red versus rendimiento de FIFO en tiempo real y VI de TCP (PXI)

Figura 30. Rendimiento de la variable compartida publicada en la red versus Rendimiento del VI de FIFO y TCP en tiempo real (PXI)


 Los resultados de T3 indican que el rendimiento de las variables compartidas publicadas en la red se aproxima al de TCP y que ambos son uniformes en cuanto a tamaños de carga útil moderados a grandes.  La variable compartida facilita su trabajo de programación, pero eso no viene sin coste.  Cabe señalar, sin embargo, que si se usa una implementación sencilla de TCP, es probable que las variables tengan un rendimiento inferior, particularmente con la nueva implementación 8.5 de NI-PSP.

 

Resultados de la prueba T4

Huella de memoria de la variable compartida publicada en la red

Tenga en cuenta que no se han realizado cambios significativos en la huella variable de LabVIEW 8.5.  Por lo tanto, esta evaluación no se ha vuelto a ejecutar.

Determinar la huella de memoria de la variable compartida es difícil porque la memoria utilizada por la variable compartida depende de la configuración. Las variables compartidas publicadas en la red con almacenamiento en búfer, por ejemplo, asignan memoria de forma dinámica, según lo necesite el programa. La configuración de una variable compartida para usar FIFO en tiempo real también aumenta el uso de memoria porque además de los búferes de red, LabVIEW crea búferes para el FIFO. Por lo tanto, los resultados de evaluación en este documento proporcionan solo una medición de línea base de la memoria.

La Figura 31 muestra la memoria que utiliza el SVE después de que LabVIEW implementa 500 y 1000 variables compartidas de los tipos especificados. El gráfico muestra que el tipo de variable no afecta significativamente al uso de memoria de las variables compartidas implementadas. Tenga en cuenta que estas son variables no almacenadas en búfer.

Uso de la memoria de variables compartidas publicadas en la red con diferentes tipos de datos

Figura 31. Uso de la memoria de variables compartidas publicadas en la red con diferentes tipos de datos

La Figura 32 muestra el uso de la memoria en función del número de variables compartidas implementadas. Esta prueba usa solo un tipo de variable, una matriz booleana vacía. El uso de la memoria aumenta linealmente con el recuento de variables.

Uso de la memoria de variables compartidas de diferentes tamaños

Figura 32. Uso de la memoria de variables compartidas de diferentes tamaños

 

Resultados de la Prueba T5

Comparación entre las variables compartidas publicadas en la red 8.2 y las variables 8.5 - transmisión

En LabVIEW 8.5, hemos re-implementado la capa inferior del protocolo de red utilizado para transportar los datos de variables compartidas.  Ofrece un rendimiento significativamente mejor.

En este caso, hemos alojado una sola variable de tipo Waveform of Doubles en un cRIO 9012.  Hemos generado todos los datos y, a continuación, en un ciclo cerrado, hemos transferido los datos al host que los leía desde otro nodo de variable compartida de forma de onda tan rápido como podía.

Puede ver en la Figura 30, que el rendimiento ha mejorado en LabVIEW 8.5 en más del 600% para este caso de uso.

 

Figura 33. Comparación de rendimiento de forma de onda entre LabVIEW 8.5 y LabVIEW 8.20 (y versiones anteriores)

Resultados de la Prueba T6

Comparación entre las variables compartidas publicadas en la red 8.2 y las variables 8.5 - transmisión

En esta prueba, hemos utilizado los mismos dos objetivos que en T5, pero, en lugar de transferir una sola variable, hemos cambiado el tipo de datos a uno doble y hemos variado el número de variables compartidas de 1 a 1000, midiendo el rendimiento sobre la marcha.  De nuevo, hemos alojado todas las variables en cRIO 9012, donde se ha generado el incremento de datos así como su transmisión al host en el que se leían.

La Figura 34 muestra de nuevo un aumento significativo en el rendimiento al pasar de LabVIEW 8.20 a LabVIEW 8.5.  Sin embargo, el rendimiento es significativamente inferior en el caso de muchas variables más pequeñas que en el caso de una sola variable grande como en T5.  Esto se debe a que cada variable tiene asociada una cantidad fija de sobrecarga.  Cuando se utilizan muchas variables, esta sobrecarga se multiplica por el número de variables y se vuelve bastante notable.

Figura 34. Comparación de rendimiento de gran cantidad de canales entre LabVIEW 8.5 y LabVIEW 8.20 (y versiones anteriores)


Metodología y configuración

Esta sección proporciona información detallada sobre el proceso de evaluación para todos los conjuntos de pruebas mencionados anteriormente.

Metodología y consideraciones de T1

La Prueba T1 utiliza una plantilla de evaluación simple para determinar las velocidades de lectura y escritura a través del promedio simple en un gran número de iteraciones. Cada prueba se ha ejecutado un total de 500 millones de iteraciones para tiempos de ejecución totales del orden de un minuto, cronometrados con una resolución de milisegundos.

Configuración de hardware y software de T1

Hardware del host
  • Dell Precision 450
  • Procesadores duales Intel Xeon a 2.4 GHz clase Pentium
  • 1 GB de DRAM
Software del host
  • Windows XP SP2
  • LabVIEW 8.20


Metodología y consideraciones de T2

La Prueba T2 mide el rendimiento mediante la identificación de la velocidad máxima de comunicación sostenible entre las tareas que se ejecutan con diferentes prioridades. Un ciclo temporizado que se ejecuta con una resolución de microsegundos contiene el productor de datos. El consumidor de los datos es un ciclo de prioridad normal que se ejecuta libremente y que lee desde el FIFO en tiempo real o la variable compartida de un solo proceso hasta que esté vacío, repitiendo este proceso hasta que transcurra una cierta cantidad de tiempo sin errores. El resultado de la prueba es válido solo si todas las afirmaciones siguientes son verdaderas:

  • No se producen desbordamientos del búfer.
  • Se preserva la integridad de los datos: no se producen pérdidas de datos y el consumidor recibe los datos en el orden en que se enviaron.
  • El ciclo temporizado puede mantenerse al día después de un período de calentamiento designado de 1 s.

El ciclo receptor de la variable compartida de un solo proceso realiza comprobaciones simples de integridad de datos, como garantizar que se ha recibido el número esperado de puntos de datos y que el patrón de mensajes recibidos no carece de valores intermedios.

NI ha configurado los tamaños de los búferes para FIFO en tiempo real y los búferes de FIFO de variable compartida para que tengan una capacidad de 100 elementos para todas las variaciones de prueba y los tipos de datos involucrados.
 

Configuración de hardware y software de T2

Hardware de PXI
  • Controlador NI PXI-8196 serie RT
  • Procesadores clase Pentium a 2.0 GHz
  • 256 MB de DRAM
  • Broadcom 57xx (adaptador Ethernet incorporado de 1 Gb/s)

Software de PXI
  • LabVIEW 8.20 Real-Time Module
  • Network Variable Engine 1.2.0
  • Variable Client Support 1.2.0
  • Controlador Broadcom 57xx Gigabit Ethernet 2.1 configurado en modo de sondeo
Hardware de CompactRIO
  • Controlador NI cRIO 9012
  • Procesador de 400 MHz
  • 64 MB de DRAM
Software de CompactRIO
  • LabVIEW 8.20 Real-Time Module
  • Network Variable Engine 1.2.0
  • Variable Client Support 1.2.0  

 

Metodología y consideraciones de T3

La prueba T3 mide el rendimiento directamente al registrar la cantidad de datos transmitidos a través de la red y la duración total de la prueba. Un ciclo temporizado que se ejecuta con una resolución de microsegundos contiene el productor de datos, que es responsable de escribir un patrón de datos específico en la variable compartida publicada en la red o los VI de FIFO en tiempo real.

En el caso de la variable compartida publicada en la red, se ejecuta un NPL en el sistema host y lee la variable en un ciclo While de ejecución libre. En la prueba de VI de FIFO en tiempo real, el NPL se ejecuta en el sistema en tiempo real, verificando el estado de la FIFO a una velocidad determinada, leyendo todos los datos disponibles y enviándolos a través de la red mediante TCP. Los resultados de la evaluación muestran el efecto de tener este período de sondeo establecido en 1 o 10 ms.

El resultado de la prueba es válido solo si todas las afirmaciones siguientes son verdaderas:

  • No se producen desbordamientos de búfer, ni de FIFO ni de red.
  • Se preserva la integridad de los datos: no se producen pérdidas de datos y el consumidor recibe los datos en el orden en que se enviaron.
  • El ciclo temporizado en el VI de TCL puede mantener la velocidad después de un período de calentamiento designado de 1 s.


Después de leer cada punto de datos, el NPL para la prueba de variable de red verifica que el patrón de datos sea correcto. En la prueba de FIFO en tiempo real, el TCL es responsable de la validación en función de si se produjo un desbordamiento de FIFO en tiempo real.

Para ayudar a evitar la pérdida de datos, NI ha configurado los tamaños del búfer para que no sean más pequeños que la relación entre los períodos de ciclo de NPL y TCL, con un límite inferior de 100 elementos como tamaño mínimo para los búferes de FIFO en tiempo real.


Configuración de hardware/software de T3

Hardware del host
  • Intel Core 2 Duo 1.8 GHz
  • 2 GB de DRAM
  • Intel PRO/1000 (adaptador Ethernet de 1 Gb/s)

Software del host
  • Windows Vista 64 
  • LabVIEW 8

Configuración de red
  • Red conmutada de 1 Gb/s


Hardware de PXI

  • Controlador NI PXI-8196 RT
  • Procesadores clase Pentium a 2.0 GHz
  • 256 MB de DRAM
  • Broadcom 57xx (adaptador Ethernet incorporado de 1 Gb/s)


Software de PXI

  • Módulo LabVIEW 8.5 Real-Time
  • Network Variable Engine 1.2.0
  • Variable Client Support 1.2.0
  • Controlador Broadcom 57xx Gigabit Ethernet 2.1


Metodología y consideraciones de T4

En la Prueba T4, NI ha utilizado variables compartidas publicadas en la red y sin almacenamiento en búfer con los siguientes tipos de datos: doble, simple, booleano, doble matriz, una sola matriz y matriz booleana.

Configuración de hardware y software de T4


Hardware de PXI
  • Controlador NI PXI-8196 RT
  • Procesadores clase Pentium a 2.0 GHz
  • 256 MB de DRAM
  • Broadcom 57xx (adaptador Ethernet incorporado de 1 Gb/s)

Software de PXI
  • LabVIEW Real-Time Module 8.0
  • Network Variable Engine 1.0.0
  • Variable Client Support 1.0.0
  • Controlador Broadcom 57xx Gigabit Ethernet 1.0.1.3.0

 

Metodología y consideraciones de T5 y T6

En las pruebas T5 y T6, NI ha utilizado variables compartidas publicadas en la red y sin almacenamiento en búfer de la forma de onda del tipo de datos Doble.

Configuración de hardware y software de T5 y T6

Hardware del host
  • Intel Core 2 Duo de 64 bits a 1.8 GHz
  • 2 GB de RAM
  • Gigabit Ethernet
Software del host
  • Windows Vista 64
  • LabVIEW 8.20 y LabVIEW 8.5
Hardware de CompactRIO
  • cRIO 9012
  • 64 MB RAM
Software de CompactRIO
  • LabVIEW RT 8.20 y LabVIEW RT 8.5
  • Network Variable Engine 1.2 (con LabVIEW 8.20) y 1.4 (con LabVIEW 8.5)
  • Variable Client Support 1.0 (con LabVIEW 8.20) y 1.4 (con LabVIEW 8.5)

Was this information helpful?

Yes

No