Guía Práctica para Conectar LabVIEW al Internet Industrial de las Cosas

Visión General

Mediante este documento técnico, podrá aprender sobre los tres protocolos de comunicación más importantes para conectarse a plataformas de desarrollo basadas en la nube para aplicaciones del Internet de las Cosas (Internet of Things, IoT). También puede encontrar información sobre algunas de las plataformas de desarrollo en la nube de IoT más conocidas, como Amazon Web Services, IBM Bluemix, PTC ThingWorx y Microsoft Azure. Además, conozca cómo conectar un sistema integrado de NI, como CompactRIO, a estas plataformas en la nube a través del entorno de desarrollo gráfico abierto LabVIEW.

Contenido

El IoT Cambiará al Mundo

En la próxima década, con la implementación de nuevas aplicaciones habilitadas para Internet, la economía mundial cambiará considerablemente. Es posible que algunas de estas aplicaciones provoquen grandes cambios, sean innovadoras y tengan, también, un gran impacto económico. Esto afectará a muchas industrias y sectores, tal como ya se ha visto en los sectores de consumo, como hoteles (Airbnb) y taxis (Uber).

Esta tendencia también se puede observar en la industria; por ejemplo, la iniciativa Industria 4.0 de Alemania. Tanto en Industria 4.0 como en Internet Industrial de las Cosas (Industrial Internet of Things, IIoT), el enfoque se centra en la integración de las tecnologías existentes y en un mejor uso de ellas. En este sentido, la industria, las máquinas, los productos y las personas están todos conectados digitalmente. Los fabricantes están produciendo en masa productos individuales, hechos a medida. Software inteligente en la nube conecta los sistemas de TI de las empresas con el mundo operativo, las máquinas, los dispositivos y los sensores para controlar y optimizar el flujo de producción.

Figura 1. Arquitectura común de IIoT: los nodos distribuidos inteligentes conectan sensores, interruptores y dispositivos a los sistemas de TI

Debido a la disminución del costo de la conectividad, los sensores y los dispositivos de procesamiento, la adopción del IIoT ha crecido enormemente. Los datos de sensores se pueden capturar y pre-procesar cerca de las máquinas mediante un dispositivo distribuido inteligente, como un CompactRIO o un sistema de pruebas automatizadas PXI. El dispositivo distribuido puede enviar los datos en tiempo real al mundo virtual (plataforma en la nube de TI) donde se pueden almacenar, supervisar, analizar o utilizar para disparar una acción.

El valor del IIoT no radica en la conectividad de los dispositivos, sino en lo que una compañía puede obtener del flujo de datos que proporcionan los dispositivos inteligentes. Las plataformas de computación en la nube y sus servicios ayudan a proporcionar esta información.

Al implementar una solución de IoT, se deben tener en cuenta muchos desafíos significativos. Entre ellos, la estandarización, interoperabilidad, gestión de Big Analog Data™, seguridad y privacidad. Es importante estar atentos a estos desafíos y prestar especial atención a la seguridad. La seguridad es un componente crítico para cualquier aplicación de IoT. Los dispositivos del IIoT deben sustentar una política de seguridad sólida y se deben actualizar periódicamente con los últimos parches de seguridad. Para obtener más información sobre las prácticas recomendadas de seguridad en CompactRIO y recibir las últimas noticias sobre seguridad de NI, visite ni.com/support/security. Todas las plataformas de computación en la nube envían y reciben datos en forma segura, utilizan sólidos métodos de autenticación y autorización, y usan cifrado. La mayoría también tiene funcionalidad para auditoría.

Computación en la Nube

El término "computación en la nube" describe a la forma flexible de suministrar recursos de hardware, software o datos a través de la red a pedido de un usuario. Esto es lo opuesto a ejecutar una aplicación de software en una computadora local.

Figura 2. Descripción general de los elementos de computación en la nube (fuente de la imagen: Sam Johnston https://commons.wikimedia.org/wiki/File:Cloud_computing.svg)

 

En la tabla a continuación se muestran tres niveles de servicio de computación en la nube que se encuentran frecuentemente.

SaaS

Software como servicio

Proporciona un servicio completo para el negocio. El proveedor de servicios ejecuta y administra toda la plataforma. Ejemplos: Gmail, Salesforce.com

PaaS

Software como servicio

Proporciona una plataforma. Usted debe crear e implementar su propia aplicación en la nube, aprovechando el tiempo de ejecución y los servicios que proporciona el proveedor. Ejemplos: IBM Bluemix, Microsoft Azure, AWS IoT

IaaS

Infraestructura como servicio

Proporciona los componentes fundamentales, como el hardware de servidor y las capacidades de almacenamiento y de red. Es posible que deba instalar el SO y las aplicaciones. Ejemplos: Amazon EC2 (una máquina virtual que Amazon le proporciona), IBM SoftLayer

 

Las nubes se pueden implementar como públicas (todos los servicios se ejecutan en un entorno seguro alojado en la nube, donde los servidores pueden ser compartidos con otros) o privadas (disponibles únicamente para la organización del usuario y pueden existir en las instalaciones locales o fuera de ellas). Además, las nubes se pueden implementar como híbridas (algunos servicios se encuentran en las instalaciones locales y otros están en la nube).

 

Protocolos de aplicaciones de IoT

Los protocolos de comunicación son los responsables de la conectividad de la red al servidor. Los protocolos como Wi-Fi, Ethernet, telefonía celular y LoRaWAN son todos protocolos de comunicación que proporcionan este nivel de conectividad. Los protocolos de las aplicaciones se encuentran por encima de estos para comunicar los mensajes específicos de las aplicaciones.

Distintos estándares gestionan la comunicación entre los dispositivos y la nube. A medida que los requisitos de las aplicaciones difieren, se han desarrollado protocolos específicos para IoT y, en consecuencia, la confusión es comprensible. Es posible incluso que los protocolos tengan implementaciones múltiples y que las plataformas de IoT tengan sus propias soluciones patentadas de IoT. Para proporcionar una solución universal, es necesario que los dispositivos, las aplicaciones y las plataformas sean interoperables. Los sistemas integrados de NI proporcionan una solución excelente al ser abiertos y flexibles. Esto se logra a través del SO en tiempo real basado en Linux de NI, el soporte para los entornos de programación de LabVIEW y Eclipse C, así como de varios paquetes de Linux disponibles mediante el ecosistema activo.

En un nivel superior, existen tres principales usos para los protocolos de aplicaciones: comunicación de dispositivo a dispositivo (device to device, D2D o M2M), de dispositivo a servidor (device to server, D2S) y de servidor a servidor (server to server, S2S). Los protocolos de aplicaciones de IoT tienen diferentes niveles de comportamiento en tiempo real y otras características. En la tabla a continuación se proporciona una descripción general.

Protocolos de aplicaciones comunes para la conectividad de IoT

 

HTTP/HTTPS

WebSocket

DDS

MQTT

AMQP

Descripción

Transmite datos por Internet desde aplicaciones, sitios web y otras prestaciones

Transmite datos por Internet desde aplicaciones, sitios web y otras prestaciones

El bus de comunicaciones conecta las máquinas inteligentes

Protocolo ligero para reunir datos y publicarlos en servidores y suscriptores

Sistema de cola para transferir mensajes de forma confiable entre las aplicaciones y los procesos (servidores)

Ejemplo de uso habitual

Web

Web

D2D

D2S

S2S, (D2S)

Comportamiento en tiempo real

No

No

Sí, rango us-ms

No, rango ms-s

No, rango de segundos

Mensajes

Solicitud/respuesta

Solicitud/respuesta

Bus de datos

Publicación/suscripción

Publicación/suscripción

Transporte

TCP

TCP

TCP, UDP, memoria compartida y otros

TCP

TCP

Seguridad

Sí: HTTPS (SSL o TLS)

Sí: wss:// SSL/TLS

Posible: SSL o TLS

Sí: TLS o SASL (autenticación simple y capa de seguridad)

Soporte para LabVIEW

Sí, nativo

Sí, a través de VI Package Manager (MediaMongrels)

Sí, a través de VI Package Manager (RTI)

Sí, implementaciones en VI Package Manager, Red de Herramientas de LabVIEW y GitHub

Implementaciones en VI Package Manager (LabbitMQ) y GitHub

Calidad de Servicio (QoS)

No

No

Sí, más de 20 niveles

Sí, 3 niveles

 

En la próxima sección se describen con más detalle los protocolos más comunes: MQTT, AMQP y DDS.

 

MQTT

El protocolo MQTT (Message Queueing Telemetry Transport, MQTT) es un protocolo de conectividad de IoT. El protocolo MQTT se usa en aplicaciones con miles de sensores, incluyendo el monitoreo de consumo de energía y de oleoductos. El protocolo MQTT es eficiente en términos de ancho de banda, batería y recursos. MQTT utiliza un modelo de publicación y suscripción. Los dispositivos de IoT publican datos en un agente MQTT mediante TCP como un tópico. Un cliente autorizado se puede suscribir a cualquier tópico y recibir el valor del agente al llegar desde el dispositivo que publica. El dispositivo publicador no necesita saber sobre ninguno de los suscriptores, lo que facilita la administración del dispositivo. El agente puede admitir múltiples conexiones simultáneas desde varios dispositivos. Un tópico es una cadena sencilla que puede tener niveles jerárquicos y también admite comodines. Un ejemplo de un tópico es GothamCityPlant/Building1/Pump7/Power. Los datos del mensaje se transmiten en formato JSON y pueden ser específicos para el servicio de IoT de las plataformas en la nube.

 

Figura 3. Los dispositivos distribuidos envían mensajes de MQTT por Internet a un agente central que distribuye los mensajes a los suscriptores autorizados

El protocolo MQTT admite tres niveles de calidad de servicio (quality-of-service, QoS):

  • QoS 0: una vez, como máximo
  • QoS 1: una vez, como mínimo
  • QoS 2: exactamente una vez

 

El protocolo MQTT se puede implementar mediante llamadas de HTTP estándares en LabVIEW. Existen versiones de dicha implementación de miembros del programa Alliance Partner, así como de la comunidad en el LabVIEW Tools Network y en GitHub. Una versión de código abierto que implementa TLS/SSL está disponible aquí en GitHub.

Para depurar las comunicaciones MQTT, un cliente MQTT se puede instalar en una computadora local. Un cliente MQTT popular y gratuito es MQTTfx, disponible en mqttfx.org/.

En Internet se ofrecen distintos agentes MQTT para evaluar la comunicación. Uno de los más conocidos es mosquitto. Para evaluar la comunicación, usted puede publicar tópicos en test.mosquitto.org. El agente de mosquitto es de código abierto y también se puede usar localmente para el entorno de pruebas o para el uso en producción de la comunicación MQTT.

AMQP

El protocolo AMQP (Advanced Message Queuing Protocol) es un protocolo de mensaje abierto que permite enviar mensajes de transacciones entre servidores, de los dispositivos a los servidores y viceversa. Las ventajas del protocolo AMQP son la comunicación confiable (los datos se reciben de forma confiable exactamente una vez en el extremo receptor) y la interoperabilidad. El protocolo AMQP utiliza un agente para recibir datos desde un cliente. Luego, el cliente (o publicador) publica el mensaje al agente, donde es procesado y dirigido a una cola. Desde la cola, el mensaje se envía a cualquier cliente que se haya suscrito a estos datos. El protocolo AMQP se centra en hacer un seguimiento de todos los mensajes y en asegurarse de que cada uno sea enviado como estaba previsto, incluso si un dispositivo está temporalmente desconectado. Los dispositivos que generan muchos datos pueden transmitirlos a los servidores AMQP; los receptores luego consumen estos datos para realizar tareas de supervisión y análisis. Un ejemplo de aplicación del protocolo AMQP es el análisis del comportamiento para conducir automóviles en el centro de datos. Algunas plataformas de desarrollo en la nube admiten la conectividad de dispositivos con AMQP o AMQP mediante WebSocket. Los agentes AMQP de código abierto conocidos que puede encontrar son RabbitMQ, ActiveMQ y Kafka.

LabbitMQ es una biblioteca de AMQP para LabVIEW que se puede instalar desde VI Package Manager. Una implementación del cliente AMQP de código abierto en LabVIEW se encuentra disponible en GitHub.

 

DDS

El principal uso de DDS (Data Distribution Service) es la distribución directa de los datos a otros dispositivos, si bien también puede distribuir datos a los sistemas empresariales y a los dispositivos móviles. Las aplicaciones se encuentran en parques eólicos, pruebas automotrices, administración de activos, defensa y ciencia. Los dispositivos frecuentemente necesitan los datos de otros dispositivos en tiempo real, en el rango de milisegundos. Todo esto debe suceder de forma confiable y generalmente con grandes flujos de datos. DDS ofrece un control detallado de la calidad del servicio, con confiabilidad que se puede configurar, redundancia y filtrado, y selecciona con exactitud qué datos van en cada lugar. Para esto, DDS usa un bus de comunicación de dispositivo a dispositivo, que puede enviar los datos a miles de dispositivos.

El soporte de LabVIEW para DDS se puede instalar mediante VI Package Manager. RTI proporciona un excelente tutorial para el uso del DDS con LabVIEW.

 

Plataformas de desarrollo en la nube

Aviso: National Instruments no respalda ninguna plataforma en la nube. El propósito es dar una breve introducción a las principales plataformas. Debería realizar un análisis profundo antes de decidir qué plataforma es la mejor para su aplicación.

Amazon AWS IoT

Amazon Web Services (AWS) ofrece infraestructura de TI, como computación en la nube, almacenamiento de datos y entrega de contenido, entre otras. AWS IoT es una plataforma de nube administrada que permite que los dispositivos se conecten e interactúen con otros servicios y aplicaciones en la nube de AWS a través de un motor de reglas. AWS IoT también proporciona un gateway de dispositivos y sombras de dispositivos. El gateway es el servicio que gestiona la conectividad del dispositivo con AWS IoT y admite los protocolos MQTT, WebSocket y HTTP. Las sombras de dispositivos pueden crear un dispositivo virtual que retiene el último estado del dispositivo, incluso cuando está desconectado. Las aplicaciones en AWS pueden publicar en el dispositivo virtual y, cuando el dispositivo se vuelve a conectar, se sincroniza el estado. AWS proporciona kits de desarrollo de software (software development kit, SDK) de IoT de código abierto para conectar los dispositivos de hardware con AWS IoT.

AWS usa un motor de reglas de IoT que aplica una sintaxis similar a SQL para seleccionar los datos recibidos desde un dispositivo y ejecutar acciones. El motor de reglas permite crear aplicaciones de IoT que pueden reunir, analizar, procesar y actuar en función de los datos recibidos desde el dispositivo. El motor de reglas puede dirigir el mensaje a las terminales de AWS, como AWS Lambda (un servicio de computación para ejecutar el código cargado), Amazon Kinesis (para procesar grandes flujos de datos en tiempo real), Amazon S3 (servicio simple de almacenamiento), Amazon Machine Learning, Amazon DynamoDB y muchas más.

NI proporciona un toolkit gratuito a través del LabVIEW Tools Network para conectar sus aplicaciones de LabVIEW a los servicios de AWS S3, SNS, SQS e IoT directamente para permitir el almacenamiento en la nube, las notificaciones tipo push y otras operaciones.

 

IBM Watson IoT para Bluemix

La plataforma de desarrollo en la nube de IBM, Bluemix, es una PaaS. Con Bluemix, puede acceder al software de IBM para servicios, como análisis de grandes volúmenes de datos, almacenamiento, bases de datos, seguridad, IoT, aplicaciones cognitivas y muchos más.

Watson IoT para Bluemix permite que una aplicación se comunique con los dispositivos conectados y consuma datos recibidos desde esos dispositivos y los gateways de dispositivo. El protocolo MQTT se utiliza para la comunicación con los dispositivos y el gateway. Los dispositivos se pueden conectar de forma segura con Watson IoT mediante el uso de MQTT por TLS.

El dispositivo debe estar registrado con IBM Bluemix para poder establecer una conexión MQTT con el agente MQTT de Watson IoT. Las reglas y lógica para administrar los datos se pueden definir en cualquiera de los lenguajes admitidos por IBM Bluemix, como node.js (Node-RED), Java, Python y otros.

El LabVIEW Tools Network contiene un ejemplo para conectar CompactRIO y una descripción detallada para IBM Watson IoT para Bluemix.

 

PTC ThingWorx

ThingWorx es una plataforma de desarrollo de aplicaciones de IoT basada en un modelo que proporciona un diseño de aplicación completo, tiempo de ejecución y entorno. ThingWorx proporciona componentes para conectividad, análisis, colaboración y visualización, incluida la realidad aumentada. Principales características de desarrollo de la plataforma:

  • Composer: un entorno para modelado de aplicaciones para modelar las «cosas», la lógica, la visualización, el almacenamiento de datos y la seguridad.
  • Generador de Mashups (aplicaciones web híbridas): con ThingWorx, una página web es un mashup, y la visualización de las páginas web se puede generar con la herramienta de generación de mashups.
  • SQUEAL: una función de búsqueda que permite realizar búsquedas en todos los datos de un modelo.
  • Motor de ejecución y almacenamiento: una plataforma basada en eventos para ejecución y almacenamiento con el propósito de almacenar, relacionar y exponer grandes volúmenes de datos para darles valor y que sean fácil de utilizar.

ThingWorx admite la conectividad de dispositivos de muchas maneras: conexiones de red directas, MQTT y AMQP, nubes para dispositivos de terceros y conectividad OPC-UA mediante el software PTC Kepware.

NI lanzó durante NIWeek el programa IoT Education beta que incluye conectividad desde el dispositivo embebido para estudiantes myRIO con la plataforma ThingWorx.

Microsoft Azure IoT Suite

Azure IoT Suite permite recoger datos de los dispositivos y proporciona un conjunto de servicios, como análisis de datos, almacenamiento de datos, visualización de datos históricos y en tiempo real, e integración con los sistemas de administración. El concentrador Azure IoT recibe los datos desde los dispositivos de IoT. Los datos de los dispositivos se pueden almacenar o transmitir para más procesamiento, análisis y administración. Los dispositivos se pueden comunicar con el concentrador de IoT mediante los protocolos HTTP, MQTT o AMQP. Microsoft ofrece un conjunto de SDK de dispositivos Azure IoT a través de GitHub.

Existen otras plataformas en la nube disponibles, como Google Cloud Platform, GE Predix y muchas otras. Para obtener más información, visite las páginas específicas sobre el producto del proveedor.

 


Apéndice A: Descripción general de las cuatro principales plataformas en la nube de IoT

 

AWS IoT

IBM Watson IoT para Bluemix

PTC ThingWorx

Microsoft Azure IoT

Evaluación gratis

Prueba gratis de 1 año

Prueba de 30 días, luego versión Lite gratis

Prueba de 30 días

Prueba gratis del concentrador de IoT por tiempo ilimitado

Precios

En función del uso, sin tarifas mínimas

Paga por dispositivo, intercambio de datos, datos almacenados

Suscripción, posterior pago en función del uso

En función del uso (cantidad de mensajes del concentrador de IoT)

Opciones de desarrollo

Nube pública

Pública o privada

Privada o híbrida

Pública, privada o híbrida

Materiales para comenzar (tutoriales, documentos técnicos y videos)

Opciones de acceso a la plataforma

GUI, CLI

GUI, CLI

GUI

GUI, CLI

Soporte para MQTT

MQTT mediante WebSocket

No especificado

AMQP

En su lugar, usar SQS o servicio de un tercero

A través de un tercero

AMQP mediante WebSocket

A través de un tercero

No especificado

Formato de datos

JSON

JSON

JSON

JSON

Almacenamiento

S3 (archivos), DynamoDB (base de datos NoSQL), Redshift (base de datos) y otros

Cloudant (base de datos NoSQL), Mongodb y otros

Tablas de datos, cadenas y cadenas de valor

Almacenamiento SQL, DocumentDB (NoSQL), almacenamiento de blob y almacenamiento en tablas

Conectividad de LabVIEW

Sí, kit de herramientas para la nube de LabVIEW para AWS; MQTT

Sí, MQTT

Sí, MQTT/AMQP

Sí, MQTT/AMQP

SDK de dispositivo disponibles

Motor de reglas

Sí, el motor de reglas actúa en función de los datos y los dirige hacia otros servicios

Sí, es decir, la aplicación node.js

Sí, Expression Widget

Sí, Azure Stream Analytics

Visualización de datos

QuickSight o desarrollo personalizado

Sí, información en tiempo real de Watson IoT

Sí, ThingWorx SQUEAL, widgets, Vuforia y mashup

Mediante aplicaciones web Azure, Power BI y notificaciones

Análisis de flujos de datos en tiempo real de la plataforma

Amazon Kinesis

Información en tiempo real de IoT, análisis de flujos de datos de IBM

Análisis de flujos de datos

Aprendizaje automático de la plataforma

Aprendizaje automático de la plataforma

Análisis predictivo de IBM

Análisis predictivo

Azure ML

Seguridad

TLS/SSL

TLS

TLS

TLS/SSL

En la tabla se muestran las capacidades listas para usar. Con frecuencia, se pueden añadir funciones mediante la instalación de servicios adicionales.

 


Apéndice B: Fuentes

AWS         https://aws.amazon.com

IBM           http://www.ibm.com

Intel          http://www.intel.com

PTC           http://www.ptc.com/internet-of-things/technology-platform-thingworx

NI              http://www.ni.com/nl-nl/innovations/industrial-internet-of-things.html

Electronic Design—Understanding the protocols behind the internet of things (Electronic Design: entender los protocolos detrás de Internet de las cosas) http://www.electronicdesign.com/iot/understanding-protocols-behind-internet-things

Internet of Things (IoT) Development Platforms—A case of IBM Bluemix, P Kumar, Univ. of Koblenz-Landau (Plataformas de desarrollo de Internet de las cosas: un caso de IBM Bluemix, P Kumar, Universidad de Koblenz-Landau https://kola.opus.hbz-nrw.de/frontdoor/index/index/docId/1373

IoT Standards and Protocols (Estándares y protocolos de IoT) https://www.postscapes.com/internet-of-things-protocols/

Industrial Internet of Things Platform Comparison (Comparación de las plataformas de Internet industrial de las cosas) https://www.mandsconsulting.com/industrial-iot-platform-comparison

 

Libros:

Internet of Things, W. Vermeend, J.W. Timmer, 2016, ISBN 97890821993-4-5

Enterprise IoT, Naveen Balani, 2016, ISBN 9781535505642

 

 

 

 

 

 

 

 

 

 

 

La marca registrada Linux® se utiliza en conformidad con una sublicencia de LMI, el licenciatario exclusivo de Linus Torvalds, propietario de la marca en todo el mundo. Un miembro del programa Alliance Partner de National Instruments es una entidad de negocio independiente de National Instruments y no lo representa, ni tiene sociedad o relación conjunta con National Instruments.