Objetivo y entorno
En este artículo vamos a configurar un PLC Siemens S7-1500 como cliente OPC UA. El cliente leerá variables de otro S7-1500 que ya actúa como servidor OPC UA y también escribirá una variable de prueba.
La prueba está hecha con TIA Portal y PLCSIM Advanced. Para mantener el ejemplo directo, la comunicación se deja en No security. Si necesitas trabajar con certificados, antes conviene revisar el artículo de seguridad OPC UA con Siemens S7-1500 y UA Expert.
Entorno usado:
- PLC servidor OPC UA: 192.168.1.191.
- PLC cliente OPC UA: 192.168.1.192.
- PLC: CPU 1515-2 PN.
- Simulación: PLCSIM Advanced.
PLC servidor OPC UA
El servidor OPC UA debe estar funcionando antes de configurar el cliente. En este caso partimos del mismo enfoque explicado en Servidor OPC UA Siemens S7-1500: TIA Portal V20 y PLCSIM: un DB con variables simuladas, una FC que cambia valores y una interfaz OPC UA que publica esas variables.
Para generar variables de prueba rápido, se puede preparar el DB y la FC desde una fuente externa. Siemens explica este flujo en la documentación de importación de external source files en TIA Portal. Así también podemos aprovechar herramientas de IA como Codex para generar bloques de prueba y ahorrar tiempo cuando solo necesitamos datos que cambien para validar la comunicación.
Después publicamos las variables en la interfaz del servidor OPC UA. Estas serán las variables que el PLC cliente podrá descubrir, leer y escribir.
PLC cliente OPC UA
Creamos otro CPU 1515-2 PN para usarlo como cliente. En PLCSIM Advanced le asignamos la IP preparada para este PLC cliente, en este ejemplo 192.168.1.192.
Activamos el OPC Cliente desde la configuración del PLC. Este paso habilita la funcionalidad cliente dentro de la CPU.
Igual que ocurre con el servidor, necesitamos la licencia OPC UA correspondiente. Para una CPU 1515 se usa la licencia Medium.
Interfaz y variables
Creamos una interfaz de cliente OPC UA. En ella indicamos la IP del PLC servidor, 192.168.1.191. El puerto OPC UA se mantiene por defecto.
En la pestaña de seguridad lo dejamos en No security para la prueba. En una instalación real aquí se tratan las políticas de seguridad y certificados.
Ahora nos conectamos online al servidor OPC UA para seleccionar las variables. Cambiamos el origen a Online y pulsamos Online Access.
En la ventana de conexión introducimos la IP del servidor OPC UA y buscamos el servidor. Cuando aparezca, seleccionamos la conexión sin seguridad para este ejemplo.
Si la conexión está bien, veremos el espacio de direcciones publicado por el PLC servidor. Desplegamos la interfaz del servidor y elegimos las variables que queremos usar.
Para leer variables creamos una lista de lectura. Si tenemos un DB completo, podemos añadirlo junto y después comprobar consistencia.
También podemos crear una lista de escritura. En este caso usamos una variable de prueba Cmd y volvemos a comprobar consistencia.
Al hacer Rebuild all, TIA Portal genera el DB de la interfaz con las variables de las listas. Es importante compilar completo para que esos DB queden bien generados.
Bloques compactos
Con la interfaz preparada falta ejecutar las llamadas OPC UA desde el programa. Siemens proporciona varios bloques. Para este ejemplo usamos los bloques compactos, que simplifican la conexión y la lectura.
Insertamos OPC_UA_ReadList_C y lo configuramos con el asistente. Primero seleccionamos la interfaz de cliente creada.
En Data access seleccionamos la lista de lectura. Con eso TIA Portal rellena automáticamente el resto de campos necesarios para acceder a la lista.
Para escribir el valor de Cmd, instanciamos el bloque de escritura siguiendo los mismos pasos que con la lectura: seleccionamos la interfaz de cliente OPC UA y parametrizamos Data access con la lista de escritura que hemos configurado antes.
Quedan dos señales clave:
- REQ: petición de lectura. Cada flanco positivo actualiza los datos.
- MaintainSession: mantenimiento de la sesión OPC UA.
Para una prueba basta con usar una marca o una señal de reloj. En una aplicación real hay que decidir la frecuencia de refresco según la carga y la necesidad del proceso.
Prueba final
Probamos la lectura online. Con un flanco positivo en REQ_OPC_UA, los valores del servidor se actualizan en el DB de la interfaz del cliente.
Para la escritura, ponemos un valor en Cmd desde el PLC cliente y lo comprobamos en el PLC servidor con otra petición.
La clave es mantener la consistencia entre las variables publicadas por el servidor y las listas configuradas en el cliente. Si cambias el DB del servidor, recompila bien, revisa las listas y vuelve a generar los DB de la interfaz antes de probar.
Artículos relacionados