TOPC UA nos proporciona mecanismos de seguridad para la autentificación de los usuarios, clientes y servidores, la comprobación de la integridad de las comunicaciones y aportar seguridad a nivel de transporte encriptando y firmando los mensajes.
OPC UA busca facilitar la
forma de operar entre los dispositivos de distintos fabricantes estableciendo una forma común de comunicación, esto lo hace especialmente útil en entornos industriales donde pueden convivir dispositivos de distintos fabricantes, permitiendo la comunicación de todos ellos con un solo cliente, o incluso entre los propios dispositivos.
COMPARATIVA
Actualmente, después de ver sus principales características, podemos afirmar que hacer una comparación entre estos dos protocolos
no es del todo justa.
MQTT es un protocolo donde la codificación de campo de datos y su contenido son específicos a cada aplicación, por lo tanto, será útil cuando la comunicación de los mensajes sea para una aplicación especifica desarrollada para esos campos de datos.
OPC UA (Unified Architecture) es una arquitectura completa donde el protocolo de comunicación es únicamente una parte. Una aplicación OPC UA permite ver todos los nodos de la red, métodos, estructuras de datos. La comunicación puede estar basada tanto un modelo de suscripción publicación como en el modelo cliente servidor donde el servidor muestra un grupo de servicios para poder acceder a los nodos de la red haciendo posible la lectura, la escritura, la llamada a métodos de los servidores, etc.
Ahora pongamos un ejemplo, como puede ser la escritura de una variable alojada en un PLC
Como vimos anteriormente, MQTT está diseñado para ser ligero y de bajo consumo. Por ello no tiene implementada la búsqueda del topic ni del broker donde se publica el mensaje, esto hace que sea necesario que el cliente lo sepa de antemano. De la misma forma tampoco tiene ningún mecanismo implementado para la escritura de la variable en la máquina.
Por lo tanto, para esta implementación vamos a necesitar un programa cliente que esté suscrito al topic en el broker, este programa debe procesar el mensaje publicado, acceder al PLC y escribir la variable.
Esto tiene varios problemas:
- Procesado del mensaje, el mensaje publicado no tiene un formato concreto, por tanto, el suscriptor tiene que saber el formato con el que va a recibir el mensaje.
- La escritura de los datos en el PLC varía dependiendo del fabricante.
Una vez solucionados estos problemas, nuestro programa cliente solo valdrá para esa máquina y ese publicador concreto.
Todos estos problemas se solucionan con OPC UA. Para la escritura de una variable en un servidor OPC UA, sería simplemente con una serie de peticiones desde el propio cliente OPC. Los pasos que seguiría el protocolo serían: Abrir un canal seguro, ver la lista de endpoints disponibles, crear la sesión, escribir el valor de la variable, cerrar la sesión y cerrar el canal.
Por contrapartida, el consumo de ancho de banda de hacer la escritura, sin contar el envío de la petición de escritura, supera los 600 Bytes cuando el envío de la variable a escribir mediante el protocolo MQTT consume unos 17 Bytes.
La conclusión a la que llegamos es que cada protocolo se debe utilizar para lo que fue diseñado. MQTT para dispositivos de bajos recursos, redes de bajo ancho de banda, de alta latencia o en aplicaciones que requieran la flexibilidad de este protocolo y OPC UA para entornos industriales, ya que busca unificar la forma de operar con distintos fabricantes de dispositivos industriales siendo una solución completa que abarca desde la comunicación de los dispositivos a su interoperabilidad, en estos entornos el aumento de consumo de ancho de banda no es tan crítico como para que no compensen todas las ventajas que nos aporta OPC UA.
La plataforma Minerva de Muutech, basada en Zabbix y Grafana trabaja con ambos protocolos, por lo que no dudéis en contactar con nosotros si necesitáis una plataforma de monitorización que combine el mundo IoT con el mundo industrial y de sistemas TI.