OPC y OPC UA: diferencias y uso con PLC Siemens

OPC y OPC UA: diferencias y uso con PLC Siemens

OPC UA es un estándar de comunicación que permite intercambiar datos entre PLC, HMI, SCADA y aplicaciones de otros fabricantes. Frente a OPC clásico, incorpora independencia de plataforma, un modelo de información y mecanismos de seguridad configurables. Para conectar un equipo, hay que comprobar qué funciones admite su implementación.

OPC clásico y OPC UA: diferencias prácticas

AspectoOPC clásicoOPC UA
PlataformaBasado en COM/DCOM de WindowsIndependiente del sistema operativo
DatosEspecificaciones separadas para datos, alarmas e históricosServicios y modelo de información integrados
ConexiónLa configuración DCOM condiciona el acceso remotoEndpoints y políticas de seguridad anunciados por el servidor
Equipos existentesPuede seguir siendo necesario para sistemas heredadosLa conexión con OPC clásico requiere un adaptador o pasarela

Fuente: descripción de OPC UA de OPC Foundation. No confundas «admite OPC UA» con «todas sus funciones están habilitadas»: revisa CPU, firmware, licencia y software cliente.

Si ya conoces la diferencia y quieres configurarlo, ve directamente al tutorial del servidor OPC UA en TIA Portal. A continuación puedes leer cómo se llegó a este estándar.

¿Qué había antes de los OPC?

Antes de que existiera OPC no existía ningún tipo de estándar de comunicación entre los diferentes PLC (u otras fuentes de datos) y las aplicaciones que recogían los datos (montandos en un PC por ejemplo). Esto hacía que las compañías hicieran cada una la guerra por su cuenta y las herramientas fueran desarrolladas de forma propietaria por cada una de ellas, haciendo muy complicada la relación entre los diferentes tipos de equipos (hardware) con las diferentes herramientas ofimáticas (software). Ni que decir que la potencia de comunicación estaba muy limitada y combinar diferentes fabricantes, casi imposible.

Llega el OPC

El grupo de trabajo precursor de OPC comenzó en 1995 y la OPC Foundation se constituyó en 1996. La fundación mantiene las especificaciones y coordina su evolución. Su cronología oficial distingue ambos hitos.

Pero ¿ qué es OPC?

OPC es un estándar de comunicaciones cuya misión es poner en contacto los equipos industriales y las aplicaciones HMI y Scada. Esto permite, por ser un estándar común, que la integración entre el software y el hardware se haga de una manera más sencilla. Según la propia fundación su misión es la siguiente:
La misión de la Fundación OPC es gestionar una organización global en la que los usuarios, proveedores y consorcios colaboren para crear estándares de transferencia de datos para la interoperabilidad multiplataforma,  segura y confiable en la automatización industrial. Para apoyar esta misión, la Fundación OPC:
  • Crea y mantiene especificaciones.
  • Asegura el cumplimiento de las especificaciones OPC a través de pruebas de certificación.
  • Colabora con organizaciones de estándares líderes en la industria
Fuente: https://opcfoundation.org/about/opc-foundation/mission-statement/
Pero claro, el tema de la multi plataforma, no siempre estuvo ahí. En un principio, OPC no era OPC, sino más bien OLE. Se trataba de un desarrollo de Microsoft para permitir la incrustación de documentos y objetos, derivado del intercambio de datos dinámicos (DDE). Con el tiempo, Microsoft OLE deriva en OLE for Process Control... u OPC. Posteriormente este acrónimo se transforma en Open Platform Communication Y así, va avanzando poco a poco hasta lo que conocemos hoy en día. Puedes chequear toda su evolución en la web de OPC Foundation si tienes más curiosidad: https://opcfoundation.org/about/opc-foundation/history/

¿Cómo funciona la arquitectura OPC?

En el modelo cliente/servidor, el servidor expone datos y servicios y el cliente los utiliza según sus permisos. Además de lecturas y escrituras, OPC UA admite suscripciones para recibir notificaciones de cambios. Es el cliente quien pide la información al servidor,  a qué velocidad, y este a su vez, lo obtiene del PLC, en nuestro caso.

OPC Clásico

El OPC clásico (OPC DA) depende de Microsoft. Concretamente del componente DCOM (https://es.wikipedia.org/wiki/Modelo_de_Objetos_de_Componentes_Distribuidos) Hay varios sabores de OPC, si bien el más habitual es OPC DA cuyas características son:
  • Intercambio de datos entre cliente y servidor en tiempo real en forma de valor, calidad y tiempo (VQT)
  • Permite navegar y acceder a la información del servidor
  • La velocidad de recolección de datos puede ir hasta los 10ms.
  • Permite lectura y escritura
Si el servidor OPC DA y la aplicación está ubicado en la misma máquina (mismo PC), realmente es sencillo de operar con él. El tema se complica si el servidor OPC DA está en un equipo, y el cliente en otro debido:
  • Solo soporta Microsoft windows
  • La configuración de acceso remoto debe considerar DCOM y la red utilizada.
  • Es necesario configurar los permisos y puertos del firewall.
  • La autenticación se realiza a través de los servicios de componentes de Windows
Vamos, lo dicho. Siempre que se pueda, que el servidor OPC DA y la aplicación HMI o Scada, ahorra muchos dolores de cabeza. A lo largo del tiempo se han ido realizando diferentes variantes de OPC para solventar parcialmente las dificultades presentadas, hasta llegar al OPC-UA, que resuelve para la industria las complicaciones del OPC DA

¿Qué es OPC UA?

Las siglas UA ya nos dice bastante sobre él ya que significa  Arquitectura Unificada (Unified Architecture) y tiene unas características bien definidas:
  • No depende del sistema operativo. Puedes encontrarlo en Windows, Linux, Mac..
  • No depende por tanto del DCOM de Windows haciendo que sea más amigable con los Firewall.
  • Incluye todas las características clásicas, en una sola interfaz.
La conectividad entre el cliente y el servidor es a través de un puerto TCP dedicado. Además, se puede securizar de una forma sencilla mediante cifrado y certificados. Tienes una pequeña descripción por la propia OPC Foundation en Youtube:

OPC UA en Siemens

Los equipos 1500 de siemens, así como los HMI Comfort disponen de este tipo de protocolo para realizar comunicaciones de forma segura. Tienes información suministrada por Siemens siguiendo este enlace. La idea es poder comunicar los PLC o los HMI con dispositivos fuera de la red que montas con los PLC de una forma segura y razonablemente sencilla.

Cómo plantear una primera conexión con un PLC Siemens

Un ejercicio útil consiste en leer desde un cliente una variable de prueba del PLC. Antes de escribir sobre una variable del proceso, comprueba la lectura, su tipo y el estado de calidad. La configuración concreta depende del equipo y de su firmware: utiliza el ejemplo de configuración en TIA Portal y contrástalo con la documentación de tu CPU.

  1. Identifica la referencia completa del PLC y su firmware. Comprueba que incorpora el servidor y qué licencia necesita.
  2. Define las variables que quieres exponer y los permisos que necesita el cliente.
  3. Configura el endpoint y una política de seguridad compatible en ambos extremos.
  4. Establece la confianza entre los certificados y configura la autenticación de usuario cuando proceda.
  5. Comprueba la lectura y el estado de calidad; después, verifica una suscripción para observar cambios.

Qué revisar cuando el cliente no conecta

Separa el diagnóstico en tres partes: acceso al endpoint, confianza de certificados y permisos. Que el equipo responda a ping no confirma que el servicio OPC UA esté accesible. Que la sesión se abra tampoco implica permiso de escritura sobre todos los nodos.

OPC UA ofrece autenticación, integridad y confidencialidad, pero hay que seleccionar y configurar sus mecanismos según la instalación. Fuente: modelo de seguridad de OPC Foundation.

Para continuar, tienes el servidor OPC UA en TIA Portal y un enfoque con Node-RED. Si buscas otra forma de intercambiar datos con un S7, revisa el ejemplo de Python y Snap7; utiliza otro mecanismo de comunicación y no sustituye automáticamente a OPC UA.

Qué anotar en tu primera prueba

Al seguir el tutorial, prepara una variable que puedas cambiar sin actuar sobre la máquina. Anota el endpoint utilizado, el tipo de dato, el valor leído y su estado de calidad; después cambia el valor y observa si llega la notificación. Así distingues «la sesión conecta» de «estoy recibiendo el dato esperado». No empieces por escribir órdenes sobre salidas del proceso.

Si antes necesitas afianzar cómo organizar las variables del PLC y diagnosticar la conexión, consulta cómo se estructura un proyecto en TIA Portal. El curso completo de TIA Portal para S7-1200 desarrolla hardware, bloques, diagnóstico y comunicaciones S7, PROFINET y TCP/UDP; el tutorial de OPC UA enlazado arriba es la práctica específica de este artículo.

¿Ya has practicado?

¿Qué PLC y cliente estás utilizando? Cuéntalo en los comentarios: la referencia, el firmware y el mensaje de error ayudan mucho más que decir solamente «no conecta».

Comentarios (29)
Alfredo
Os admiro por saber tanto de las comunicaciones PLC y demás equipos yo un simple currante de relé y contacto y que siempre le gustó el interior de los trastos. Me paso a los PLC y se me cae el cuerpo viendo que no he llegado a tiempo, machacando y machacando pro el tiempo no perdona en fin tengo tiempo equipos, me gusta programarlos, cosas sencillas pero no puedo ir a más. Me encanta vuestro trabajo por favor continuar, que por todas partes hay gente capaces de entenderla.
Ainhoa
Buenos días, Nosotros con los alumnos hasta ahora hemos trabajado con OPC clásico. Lo hacemos en proyectos en los que tienen que comunicar CX-Supervisor o Autosim con S7-1200, s7-1500 o s7-300. También lo hemos utilizado para poder comunicar un robot fanuc viejuno con s7-1500. Con el servidor OPC hemos comunicado con el robot y el plc y a través del cliente (en este caso cx-supervisor) pasamos la información de uno a otro. Ahora toca OPC-UA! Lo probaremos con s7-1500 y también con los plc B&R que tenemos en la sif-400 de SMC. Un saludo
Arkaitz
Buenas noches Ainhoa, soy un profesor de formación profesional, en nuestra escuela tenemos robot Fanuc y no he conseguido conectar a un servidor OPC, en nuestro caso al Kepware y viendo que vosotros lo habéis conectado y comunicado con un S7-1500 no sé si nos podrías facilitar información de como lo habéis realizado. Muchas gracias y un saludo.
Nick Esquivel
hola compañero, pudiste comunicar cx supervisor con plc siemens?
Iñigo Gútiez
Tenemos una máquina del 2005 que lo tiene hecho, pero no es con lo que suelo trabajar. Y logicamente no con OPC-UA.
Ainhoa
Hola Arkaitz, No había leído tu mensaje. Si todavía no lo habéis hecho, me dices y te digo cómo lo hicimos. Un saludo,
Nick Esquivel
no lo he hecho todavía, te agradecería tu ayuda, lo que necesito es hacer una simulación con el cx supervisor y conectarlo con el tia portal y plcsim, gracias
Victor AMADO ESPINAL
Excelente. Gracias por tu informacion y mantenernos al dia con los ultimos avances e integracion Industria 4.0 .Aqi desde Perú -Lima. Saludos Victor Amado Espinal
Iñigo Gútiez
Muchas gracias!
Geovani
Estaría de maravilla que metieras cursos de safety y motion desde parametrizacion hasta programación
Iñigo Gútiez
De momento no tengo pensado ningún curso sobre ello.
ing jose martin saavedra crisanto
me interesa favor informar gracias chaval.saludos desde castilla piura peru
Antonio
Buen trabajo y buena recopilación para tener una visión general del OPC. Estoy trabajando con OPC-DA, pero en breve pasaré a trabajar con OPC-UA. Ya os ire contando
Mario
Gracias por brindarnos información acerca de los adelantos que se realizan con el tema de la comunicación OPC. Me gustaría aclarar una duda, de que forma podemos comunicar OPC UA con una aplicación de Visual Studio u otro desarrollador. Me gusta mucho el trabajo que usted realiza creo que es muy importante para todos los que tratamos con los plc de siemens saludos desde Cuba
Iñigo Gútiez
Echa un vistazo a esta página de Siemens, tendrás por dónde empezar. https://support.industry.siemens.com/cs/document/42014088/programaci%C3%B3n-de-un-cliente-opc-ua-net-con-c-para-el-servidor-simatic-net-opc-ua?dti=0&lc=es-WW
Álvaro Pérez
Hola Iñigo: Me sumo a los comentarios, que siempre son positivos, de todos tus seguidores. A mi, me aporta mucho la información, que desinteresadamente nos regalas. Mucho ánimo a seguir con esta labor.
Iñigo Gútiez
Gracias Álvaro
David
Hola me gustaría hacerte una pregunta, no encuentro mucho al respecto, ¿un servidor UA podría comunicarse con un Opc DA, o ambos sistemas son incompatibles?. Gracias de antemano un saludo.
Iñigo Gútiez
Hasta donde yo sé, son incompatibles. Para empezar, porque OPC DA solo es compatible con Windows y OPC UA es multiplataforma, y no se basa en el DCOM de Windows.
raskolnikov
Muchas gracias por la explicación, en estos momentos quiero implementar el traspaso de datos de fabrica al depto. de IT por intermedio de OPC UA server en plcs S7-1500 y TP 1200 comfort, en cada ciclo de produccion de la misma. Primero voy a hacer un proyecto sencillo con el 1500 y luego si sale voy a escalarlo. Saludos desde Argentina
Iñigo Gútiez
Suerte con ello.
nila
Hola Como podría conectar un PLC S7-1200 servidor opc ua con Labview 2017 ?
Iñigo Gútiez
Lo siento, con Labview no trabajo.
Domian
Estimado Iñigo, estoy haciendo un trabajo donde tengo una red de PLC S7-1200 de Siemens y dos de ellos hacían de pasarela para una red Modbus RTU de termostatos de siemens también a través del módulo 1241 que es RS-485. Estos PLC se da;aron con un trueno y estoy tratando de utilizar un conversor USB-RS485 para conectar las redes de termostatos directamente a la PC y leerlos y escribirlos desde el Kepware OPC. Eso me funciona bien, el rollo está en la conexión entre el kepware y el Tia portal v13 que es extremadamente lenta, ya probe la red fisicamente y no tiene problema, donde todo se enlentece es a la hora de ller y escribir las variables OPC desde tia portal, sobre todo la escritura. Tienes alguna experiencia al respecto. Gracias de antemano
Iñigo Gútiez
Pues no sé donde puede estar el problema. Depende de muchas cosas. Desde que haya algo mal en la red física, demasiados items, red congestionada... imposible de saber desde aquí. Tendrás que seguir investigando.
Alberto vilades
Muy interesante te. Alguien me podría hacer un módulo, supongo q en .NET para q se comunicara con PLC SIEMENS 1500 a traves de OPC UA? Únicamente leer/escribir un dato. [email protected]
Iñigo Gútiez
Y por qué a través de opc ua? No te vale con opc normal o con ViSnap7 o Snap7 normal?
Alberto
Me piden OPC UA, busco algún programador que me pueda ayudar. Lo ideal sería una DLL para utilizar desde VB6, sino un programa aparte y comunicarme con él a través de ficheros, por ejemplo le dejo un fichero llamado "R-tal.v2p" si significa que lea (r de read) la variable "tal" y me lo devuelva en un fichero "r-tal-respuesta.p2v" donde el valor de esa variale es "respuesta", y otro para escribir "w-tal-valor.v2p" donde le digo que ponga en la variable "tal" el valor "valor". Algo así.
Iñigo Gútiez
Pues no sé, tal vez publicándolo en Linkedin te puede presupuestar alguien el trabajo. Por aquí, en un post viejo, va a ser difícil.