Una introducción a OPC UA
Introducción
En anteriores posts hemos tocado temas relacionados con la Industria 4.0 en los que hemos definido diferentes conceptos, incluso en un post específico habíamos definido qué era el Asset Administration Shell. Comentar que ya se está hablando desde hace tiempo de la Industria 5.0, que se está definiendo poniendo especial atención en una eficiente colaboración entre máquinas y humanos.
En este post, vamos a tratar el tema del OPC UA y ver una pequeña introducción. OPC UA (Open Platform Communications Unified Architecture) es un estándar de comunicación que se utiliza para intercambiar información y datos entre diferentes dispositivos y sistemas en entornos de automatización y control industrial.
Este estándar es altamente flexible y permite la comunicación entre dispositivos y sistemas de diferentes fabricantes, independientemente de la plataforma de hardware o software que utilicen. Además, encaja perfectamente en entornos industriales donde la seguridad y la interoperabilidad son fundamentales, ofreciendo una arquitectura segura y escalable, con capacidades avanzadas de autenticación y encriptación.
Podemos mencionar algunos ejemplos de aplicaciones, como la supervisión y control de procesos, la recopilación de datos en tiempo real, el monitoreo de equipos y activos o la gestión de la cadena de suministro.
Historia del OPC
Pero, ¿cómo y, sobre todo, porqué se desarrolló OPC UA? OPC Foundation la desarrolló y la especificación inicial se introdujo en 2008, existiendo después varias versiones y revisiones del estándar para mejorar su funcionalidad y adaptarse a las cambiantes necesidades de la industria.
El objetivo era abordar las limitaciones y desafíos del OPC original, que hoy llamamos habitualmente OPC Classic, y que buscaba ser más seguro, escalable, interoperable y adecuado para las necesidades actuales y futuras de la industria.
Por lo tanto, esto nos lleva a más años hacia atrás a través de la siguiente pregunta: ¿por qué se desarrolló OPC? Se originó en la década de los 90 del siglo pasado y fue necesario debido a la, cada vez más, necesidad de automatización y de un software que la pudiera gestionar.
En ese momento, en temas relacionados con la visualización de variables o del estado de la planta se utilizaban mayormente plataformas basados en Windows. Por lo tanto, si se quería comunicar con los diferentes PLCs (Programmable Logic Controller) se necesitaba un driver específico para cada uno de ellos, con todas las posibles diferencias en los protocolos o conexiones entre ellos.
Por lo tanto, el desarrollo de OPC (OLE for Process Control) se originó debido a la necesidad de establecer una forma estándar de comunicación entre dispositivos y sistemas en la industria de automatización y control. Mencionamos algunas razones para su desarrollo:
- Automatización Industrial: Con el crecimiento de la automatización industrial, había una creciente demanda de una forma eficiente y estandarizada de intercambiar datos en tiempo real entre dispositivos, sensores, controladores y sistemas de supervisión.
- Heterogeneidad de Sistemas y Protocolos: Antes de OPC Classic, había una falta de estándares para la comunicación entre dispositivos y sistemas en la automatización industrial. Los sistemas utilizaban diferentes protocolos y enfoques de comunicación, lo que dificultaba la interoperabilidad entre dispositivos de diferentes fabricantes.
- Necesidad de Integración: Los datos no eran fácilmente accesibles por lo que su envío a diferentes aplicaciones no era sencillo y las empresas buscaban integrar sistemas de control y adquisición de datos en una sola plataforma. Por lo tanto, se necesitaba una comunicación eficiente entre diferentes sistemas y equipos, independientemente de su origen. OPC proporcionó una interfaz estandarizada que permitía a los sistemas interactuar y compartir datos de manera más fluida.
- Aprovechamiento de tecnologías existentes en Windows: En el momento en que se desarrolló OPC Classic, las tecnologías como COM (Component Object Model) y DCOM (Distributed Component Object Model) eran prominentes en el desarrollo de software de Windows, así que OPC Classic aprovechó estas tecnologías para habilitar la comunicación entre dispositivos y sistemas.
Lo que se propuso fue el desarrollo de una capa que haría de puente entre el propio HMI (Human Machine Interface) y los drivers de cada PLC. De este modo, los diferentes programas existentes para generar un HMI no tendrían que conocer todos los drivers necesarios.
Esta capa sería por lo tanto el llamado “Servidor OPC”, mientras que los diferentes elementos que se conectaran (como podría ser un SCADA) pasarían a ser los “Clientes OPC”. Para realizar la comunicación entre el servidor y los diferentes clientes se usaron las tecnologías COM (Component Object Model) y DCOM (Distributed Component Object Model) comentadas, las cuales ya existían en Windows.
Estas tecnologías fueron desarrolladas por Microsoft y se utilizaron para facilitar la creación de software modular, reutilizable y distribuido en entornos de sistemas operativos Windows. Estas tecnologías proporcionaron un marco para el desarrollo de componentes de software independientes que podrían interactuar entre sí de manera eficiente y coherente. Vamos a definirlas:
Component Object Model (COM): COM es un modelo de programación de software que permite a los desarrolladores crear componentes de software independientes y reutilizables. Un componente COM es un objeto de software autónomo que encapsula una funcionalidad específica. Estos componentes pueden ser llamados por otras aplicaciones o componentes para realizar diferentes tareas. Se basa en interfaces y define cómo los componentes se comunican entre sí a través de llamadas a funciones.
Las principales características de COM incluyen la encapsulación de datos y funcionalidad, la reutilización de componentes, la interoperabilidad entre lenguajes de programación y la facilidad de mantenimiento y actualización del software.
Hay que decir que COM es un modelo para la comunicación dentro del mismo PC, lo que nos lleva al DCOM.
Distributed Component Object Model (DCOM): DCOM es una extensión de COM que permite la comunicación entre componentes a través de una red, lo que facilita la creación de aplicaciones distribuidas y cliente-servidor, soportando la comunicación remota entre componentes en diferentes computadoras.
Esto es especialmente útil en entornos de red empresarial donde las aplicaciones necesitan acceder a recursos en diferentes sistemas. DCOM utiliza tecnologías de protocolo de red para lograr la comunicación entre componentes distribuidos.
Ambas tecnologías, COM y DCOM, jugaron un papel importante en el desarrollo de aplicaciones Windows, permitiendo a los desarrolladores crear sistemas más flexibles, modulares y distribuidos.

Con estas bases, se desarrollaron varias interfaces:
- OPC DA (OPC Data Access). Permite a los Clientes la lectura o escritura de variables en tiempo real.
- OPC HA (OPC Historical Access). Permite el acceso al histórico de valores.
- OPC Alarmas y Eventos. Permite la recepción de alarmas o notificaciones.
Desventajas del OPC Classic
Podríamos resumir en dos las principales desventajas: dependencia total de trabajar bajo Windows e imposibilidad de enviar los datos a través de Internet. Además de una seguridad en las comunicaciones excesivamente baja.
Estos problemas no lo eran en realidad hasta entrados los 2000, ya que no había ninguna necesidad de usar otro tipo de plataformas o la comunicación mediante http. Pero empezó a gestarse la Industria 4.0, el uso generalizado de internet, móviles, sensores inteligentes, generación de muchos datos…. Y la difuminación de los límites entre lo que llamamos IT y OT, los cuales hasta ese momento estaban bastante separados. De ahí la necesidad del desarrollo de un nuevo estándar.
Características principales de OPC UA
- Modelo de datos mucho más complejo. OPC Classic solo podía enviar datos simples, como por ejemplo el valor de un sensor. Con OPC UA, si se quiere, se pueden enviar muchos más datos: unidades usadas, modelo del sensor, parámetros de configuración… Por lo tanto, tenemos la posibilidad de conocer y enviar una especie de descripción digital del dispositivo que estamos utilizando, siendo el germen de lo que conocemos como AAS o Asset Administration Shell.
- Arquitectura orientada a servicios. Para poder acceder a datos desde un cliente, lo que hace el servidor OPC UA es utilizar servicios poniendo a disposición de los clientes una serie de métodos o funciones para leer o escribir datos o configurar y buscar servidores. Esto permite una mejor usabilidad y mantenimiento, además de facilidad en el desarrollo. Podemos definir un servicio como una llamada a un método o función de un lenguaje de programación.
- Multiplataforma: Da la posibilidad de conectar diferentes plataformas y entornos: sistemas embebidos, PLCs, PCs, Linux, Windows, Smartphones… y se puede conectar mediante internet utilizando el protocolo HTTPS.
- Integración con el mundo IT. Debido a, como ya comentamos, la barrera entre IT y OT es cada vez más borrosa y es necesario una comunicación más sencilla y rápida, la típica pirámide de automatización se ha quedado obsoleta, pues el envío de datos a elementos como el MES o el ERP era complicado. Con OPC UA se pueden enviar esos datos de forma más sencilla, así como que incluso cierto software pueda implementarse en la nube, si no es necesario tener un control de proceso en tiempo real.
Diferencias entre OPC UA y OPC Classic
Ahora que sabemos el porqué de la creación de OPC UA y sus características principales, podemos intuir las principales diferencias entre OPC UA y OPC Classic. Aquí hay algunas diferencias clave entre ambos:
- Arquitectura independiente de la plataforma:
- OPC Classic: al utilizar tecnologías de Microsoft COM/DCOM está fuertemente li-gado al sistema operativo Windows. Esto limita su interoperabilidad y escalabilidad en entornos heterogéneos como los correspondientes a la Industria 4.0.
- OPC UA: fue diseñado desde cero para ser independiente de la plataforma y del sis-tema operativo. Puede ejecutarse en sistemas Windows, Linux, macOS y otros como Android.
- Seguridad:
- OPC Classic: la seguridad en OPC Classic es limitada y depende en gran medida de la seguridad del sistema operativo subyacente, es decir, de Windows.
- OPC UA: ofrece una seguridad mejorada con características como encriptación, autenticación, autorización y mecanismos de certificados digitales, lo que lo hace más adecuado para entornos donde la seguridad es una preocupación clave.
- Comunicación:
- OPC Classic: utiliza protocolos de comunicación como DCOM, lo que puede presentar desafíos en redes más grandes y complejas. Para poder comunicar datos por Internet, no nos sirve.
- OPC UA: utiliza protocolos más modernos y eficientes, como HTTP o TCP/IP, lo que permite la comunicación a través de Internet.
- Modelo de Datos y Información:
- OPC Classic: tiene un modelo de datos simple y poco flexible.
- OPC UA: modelo de datos más robusto y extensible, lo que permite representar información de manera más rica y detallada.
- Interoperabilidad y Estándar:
- OPC Classic: La interoperabilidad entre sistemas y proveedores podría ser un desafío debido a la dependencia de DCOM y otras tecnologías específicas.
- OPC UA: Fue diseñado para abordar problemas de interoperabilidad y se esfuerza por ser un estándar verdaderamente abierto y ampliamente adoptado en la industria.
- Compatibilidad Futura:
- OPC Classic: Es una tecnología más antigua que eventualmente podría quedar obsoleta.
- OPC UA: Las especificaciones de OPC UA se han hecho lo más abstractas posibles, de modo que no estén relacionadas con ninguna tecnología en particular, con el objetivo de que se pueda utilizar con cualquiera existente o con nuevas tecnologías que se creen en el futuro.
Pilares de la interoperabilidad
Si necesitáramos definir los pilares más importantes en los que se basa OPC UA para alcanzar la interoperabilidad podemos listar los dos siguientes:
Infraestructura de comunicación y sus protocolos o mecanismos de transporte
Este pilar define como se intercambia la información. Podemos definir el transporte en este entorno como un mecanismo que envía un mensaje OPC UA entre un cliente y un servidor. Una vez que el mensaje es codificado y es seguro, está listo para poder enviarse. Hay dos transportes definidos para OPC UA: OPC UA TCP y SOAP/HTTP.
En este sentido, otro tema relacionado es la serialización, que transforma los datos en bytes para poder ser enviados. Dos tipos son soportados: binaria (indicado en entornos en los que es requerido un alto rendimiento y velocidad, como puede ser los existentes en automatización) y XML (para comunicaciones por internet o aplicaciones empresariales).
Además, también se ha definido el modelo de comunicación por publicación-subscripción que permite el envío de información en tiempo real. Este modelo se basa en notificaciones que se envían (normalmente a través de un broker) a los dispositivos que están suscritos cuando hay modificaciones en los datos de la máquina o la fábrica.
El modelado de datos
Este pilar define qué información se intercambia y como está estructurada. Es decir, como se representa la información. Se trata de una pieza básica para que los sistemas sean interoperables y poder comunicar información a través de diferentes dispositivos ya que especifica un modelado de datos que define las reglas que un servidor de OPC UA debe seguir para exponer los datos a los clientes conectados. Además, define la jerarquía dentro del entorno de automatización que se está desarrollando.
OPC UA aporta una arquitectura de información que mapea el contenido de un objeto complejo y sus procesos de modo que pueda modelar su equivalente digital, es decir, el gemelo digital. Describe como poder transformar cada dispositivo físico en su equivalente en OPC UA, utilizando un objeto como pieza fundamental para representar los datos y el comportamiento del sistema subyacente al que pertenece el objeto que está representando. Los objetos están interconectados mediante referencias y muestran dicha información desde el servidor a los clientes.
El concepto que maneja OPC UA es similar al paradigma de programación orientada a objetos (POO) que utiliza objetos que podemos definir como estructuras compuestas por atributos y métodos, que se relacionan entre sí para desarrollar software.
Conclusión
En esta breve introducción solo hemos podido rascar un poco de lo que ofrece OPC UA. Como puntos principales podríamos resaltar lo siguiente:
- Modelo de datos complejo orientado a objetos, flexible y extensible.
- Mayor seguridad en las comunicaciones basándose en: autenticación, autorización, disponibilidad del servidor, encriptación, confidencialidad e integridad.
- Arquitectura orientada a servicios que permite al cliente obtener la información del servidor.
- Diferentes protocolos de comunicación: TCP, HTTPS, MQTT…
- Independiente de la plataforma, permitiendo comunicar diferentes sistemas operativos y dispositivos.
- Dos modelos de comunicación:
- Modelo Cliente-servidor.
- Modelo de publicación-suscripción.