Construir un sistema en tiempo real con hardware y software de NI

Información general

El hardware y el software en tiempo real de NI trabajan juntos a la perfección para ejecutar aplicaciones de manera confiable y determinística con una sincronización precisa. Este documento explica los diferentes componentes que usted necesita para crear un sistema de NI en tiempo real, identifica las opciones de hardware y software disponibles y describe cómo elegir las mejores opciones para su proyecto.

Para construir un sistema de NI en tiempo real, debe elegir tanto su software de desarrollo como su plataforma de hardware. En las siguientes secciones se proporciona información detallada sobre las opciones para cada uno. Antes de leer este documento, es útil tener un conocimiento básico de los sistemas en tiempo real y cómo pueden beneficiar sus proyectos. Revise esta información leyendo ¿Necesito un sistema en tiempo real?

Al construir un sistema en tiempo real, debe seleccionar un SO con capacidad en tiempo real. Las herramientas de desarrollo en tiempo real de NI vienen con todo el software necesario del sistema operativo en tiempo real (RTOS) , lo que significa que usted no necesita elegir este componente por separado. Dependiendo de la plataforma de hardware, NI usa el SO NI Linux Real-Time o SOs Phar Lap ETS. 

Elegir un entorno de desarrollo

Para desarrollar programas en tiempo real, usted puede utilizar la programación gráfica de LabVIEW, el entorno LabWindows™/CVI ANSI C (para Phar Lap) o un entorno de desarrollo C/C++ compatible con Linux de su elección (para NI Linux Real-Time).

Opción de desarrollo: Programación gráfica de LabVIEW Real-Time

Figura 1. Programación gráfica utilizando LabVIEW.

Para programar gráficamente el hardware en tiempo real soportado por NI, debe usar LabVIEW junto con el LabVIEW Real-Time Module. LabVIEW Real-Time le brinda la capacidad de crear aplicaciones confiables en tiempo real, descargarlas al hardware y depurarlas y ejecutarlas utilizando una sola herramienta.

En sus aplicaciones en tiempo real, usted puede usar la mayoría de los algoritmos matemáticos y de procesamiento de señales incluidos en LabVIEW, como varias funciones de control proporcional integral derivativo (PID). Además, puede ejecutar scripts matemáticos textuales en su sistema en tiempo real con el nodo MATLAB o integrar modelos que usted crea en el software The MathWorks, Inc. Simulink® u otros entornos de modelado utilizando el LabVIEW Model Interface Toolkit opcional.

LabVIEW Real-Time: Desarrollar, descargar y ejecutar aplicaciones

Al desarrollar aplicaciones en tiempo real en LabVIEW, usted utiliza LabVIEW Project Explorer para organizar sus programas (VIs) y asignar el hardware en el que se ejecutarán. Desarrollará su código en una PC principal de Windows de uso general y luego lo implementará en su hardware en tiempo real a través de una conexión Ethernet o USB.

 

Figura 2. Administre programas de LabVIEW (VIs) y asígnelos a objetivos en tiempo real usando el LabVIEW Project Explorer.

Desarrollar programas en tiempo real en LabVIEW es casi idéntico a desarrollar aplicaciones estándares de LabVIEW para su PC. En la paleta Real-Time VIs se incluyen varias funciones adicionales específicas para los sistemas en tiempo real, que incluyen:

  • Funciones de vigilancia para reiniciar automáticamente algunos objetivos de hardware si se detiene la ejecución del programa
  • Funciones para comunicar datos de manera determinística entre partes de un programa en tiempo real
  • Utilidades para configurar el equilibrio de la carga en sistemas con múltiples núcleos de CPU
  • Funciones de temporización para controlar con precisión la ejecución de ciclos en sus programas en tiempo real

Para probar su código de LabVIEW Real-Time en su hardware, simplemente haga clic en la flecha de ejecución y su aplicación se implementará en su hardware en tiempo real y comenzará a ejecutarse. Puede usar herramientas de depuración de NI estándares, como ejecución de resaltado, ejecución de un solo paso y puntos de interrupción desde su PC de desarrollo, aunque su programa en tiempo real se esté ejecutando en el objetivo en tiempo real.

Cuando haya finalizado su programa en tiempo real, puede construir un ejecutable en LabVIEW y descargarlo como una aplicación de inicio a su hardware en tiempo real. Después de reiniciar su hardware en tiempo real, su programa se ejecutará automáticamente de manera confiable y autónoma.

LabVIEW Real-Time: Asignar prioridades a secciones de código paralelo y procesamiento multinúcleo

El modelo de programación de flujo de datos de LabVIEW lo libera de la arquitectura secuencial de los lenguajes de programación basados en texto. Debido a que el orden de ejecución lo determina el flujo de datos entre los nodos, usted puede crear aplicaciones fácilmente que ejecuten múltiples operaciones en paralelo. Además, LabVIEW facilita asignar prioridades de subprocesos con la estructura de ciclo temporizado. Como se muestra a continuación, cada ciclo tiene una fuente de temporización configurable, un período, una prioridad, etc.

Figura 3. Especifique la prioridad y la asignación del procesador de diferentes secciones de código utilizando la estructura LabVIEW Timed Loop. 

LabVIEW Real-Time soporta el procesamiento multinúcleo y asigna automáticamente secciones paralelas de su código a subprocesos individuales del sistema operativo, lo que elimina la necesidad de crearlos y administrarlos manualmente. De forma predeterminada, estos subprocesos también se equilibran automáticamente entre las CPUs disponibles en su hardware en tiempo real.

Para aumentar aún más el rendimiento y la fiabilidad de un sistema en tiempo real, usted puede optar por asignar manualmente ciclos temporizados a núcleos del procesador específicos, si así lo desea. Por ejemplo, puede dedicar un núcleo de un procesador para ejecutar un ciclo de tiempo crítico y aislarlo de las tareas menos importantes que se ejecutan en diferentes núcleos.

Opción de solución de problemas: Depurar con el Real-Time Trace Viewer

Para la depuración multinúcleo avanzada, usted puede usar el Real-Time Trace Viewer para verificar el rendimiento de sus programas en tiempo real de LabVIEW o LabWindows/CVI sin detener o pausar la ejecución del código. Con modificaciones mínimas en su código en tiempo real, usted puede registrar el rendimiento de la aplicación en un archivo y enviarlo a una PC principal para su visualización y análisis. El visor de la herramienta de seguimiento muestra gráficamente la ejecución de código de hilos múltiples mientras resalta intercambios de subprocesos, exclusiones mutuas y asignaciones de memoria. Puede utilizar el Real-Time Trace Viewer para optimizar el rendimiento de la aplicación, identificando las características de ejecución no deseadas y condiciones de carrera difíciles de encontrar.

Opciones de desarrollo para C y C++

Si su organización se estandariza en C o C++, puede usar el entorno de desarrollo LabWindows/CVI u otros entornos de desarrollo. Tenga en cuenta que LabWindows/CVI Real-Time solo soporta los controladores PXI en tiempo real, mientras que los objetivos que usan NI Linux Real-time, como los controladores CompactRIO, son de código abierto, por lo que usted puede usar las herramientas de desarrollo de su elección. Para obtener más información sobre usar las C/C++ Development Tools para Linux-Real Time, visite Comenzar a trabajar con herramientas de desarrollo C/C++ para NI Linux Real-Time.

Seleccionar una plataforma de hardware de NI y módulos de E/S

Todas las plataformas de hardware de NI en tiempo real se basan en una arquitectura común, lo que significa que los programas que usted escribe con LabVIEW Real-Time funcionarán en diferentes hardware de NI con modificaciones menores o sin modificaciones. Específicamente, cada plataforma de hardware cuenta con componentes de cómputo listos para usar que incluyen un procesador, RAM, almacenamiento no volátil y una interfaz de bus de E/S. Algunas plataformas de hardware cuentan con un FPGA programable por el usuario que usted puede programar usando el LabVIEW FPGA Module.

PXI (extensiones PCI para instrumentación)

La plataforma PXI estándar en la industria consta de un chasis robusto con líneas integradas de temporización y disparo, un controlador integrado y módulos de E/S insertables. Los puertos seriales, USB, Gigabit Ethernet y GPIB también están integrados en el controlador. El hardware PXI en tiempo real se puede programar usando LabVIEW Real-Time o LabWindows/CVI Real-Time.

Si usted tiene un controlador PXI existente que ejecuta Windows que le gustaría cambiar a un controlador en tiempo real, puede comprar una licencia de implementación en tiempo real de LabVIEW para convertir su controlador, o incluso configurar un sistema de doble arranque.

Puede ensamblar su propio sistema PXI en tiempo real, incluyendo el controlador, el chasis, los módulos de E/S y el software utilizando el configurador PXI en línea.


Figura 4. El hardware PXI proporciona una opción robusta y de alto rendimiento para sus proyectos en tiempo real.

El hardware NI PXI a menudo se utiliza para sistemas de alto rendimiento en tiempo real, como pruebas de hardware-in-the-loop de unidades de control electrónico y análisis de vibración para aplicaciones de monitoreo condición de máquinas. Al utilizar un sistema PXI en tiempo real, sus aplicaciones tienen acceso a funciones avanzadas de hardware de sincronización y temporización que simplifican el disparo preciso de E/S y la sincronización de múltiples módulos.

CompactRIO

CompactRIO combina un procesador en tiempo real, un FPGA y módulos de E/S de la serie C y viene en formatos en paquete y a nivel de tarjeta. Además, los puertos seriales, USB y Ethernet están integrados en el controlador.

Puede ensamblar su propio sistema CompactRIO, incluyendo el controlador, los módulos de E/S y el software utilizando el configurador CompactRIOen línea.

 

Figura 5. Los controladores CompactRIO en paquete brindan una opción flexible, robusta y portátil para aplicaciones en tiempo real.

Puede programar el procesador en controladores CompactRIO usando LabVIEW Real-Time o su herramienta de desarrollo C/C++ de su elección. También puede desarrollar código FPGA usando LabVIEW FPGA. Para acceder a los datos de E/S en el procesador, usted puede usar la API de NI-DAQmx, la mejor API de programación de NI para medidas, o NI Scan Engine. Como alternativa, puede acceder a los datos directamente desde el FPGA con LabVIEW FPGA. 

 

Figura 6. La arquitectura heterogénea de CompactRIO cuenta con un procesador en tiempo real, FPGA reconfigurable y E/S.

El hardware CompactRIO a menudo se utiliza para aplicaciones industriales que incluyen monitoreo de condición, pruebas de hardware-in-the-loop, pruebas de sistemas físicos y control de máquinas.

Los controladores CompactRIO a nivel de tarjeta, como los controladores CompactRIO Single-Board (sbRIO), tienen la misma arquitectura que los controladores CompactRIO en paquete, pero vienen sin un embalaje robusto y tienen un tamaño más pequeño.

Figura 7. Los controladores a nivel de tarjeta CompactRIO cuentan con la misma arquitectura que los controladores CompactRIO en paquete, pero en un tamaño más pequeño.

Las aplicaciones de alto volumen que requieren flexibilidad, fiabilidad y alto rendimiento pueden beneficiarse de los controladores CompactRIO Single-Board o los módulos System On.