Pulsa ESC para cerrar · Ctrl+K para abrir

CODESYS SoftPLC como servidor OPC UA y Siemens S7-1500 como cliente

OPC UA, la ventaja de su uso, para comunicación entre distintos fabricantes.

Arquitectura con CODESYS Control Win como servidor OPC UA y Siemens S7-1500 como cliente

Objetivo y entorno

El objetivo de este artículo es comunicar dos fabricantes distintos usando un estándar común: CODESYS actuará como servidor OPC UA y un PLC Siemens S7-1500 actuará como cliente OPC UA.

La idea es: preparar un SoftPLC en Windows, cargarle un programa básico con variables que cambian, publicar esas variables por OPC UA y leerlas desde el PLC de Siemens usando Cliente OPC UA.

Entorno usado en la prueba:

  • CODESYS Development System 64 3.5.22.20 como IDE de desarrollo.
  • CODESYS Control Win V3 / Control Win SL como SoftPLC en Windows.
  • PC servidor CODESYS: IP de prueba 192.168.1.133.
  • Cliente Siemens: S7-1500 en TIA Portal, descargado sobre PLCSIM Advanced.
  • Puerto OPC UA: 4840, con endpoint opc.tcp://192.168.1.133:4840.
  • UA Expert: cliente OPC UA usado para validar que el servidor CODESYS está publicando correctamente.
Arquitectura de comunicación OPC UA entre CODESYS SoftPLC y Siemens S7-1500

La documentación oficial de CODESYS Development System indica que el instalador incluye el entorno de desarrollo y una versión demo del SoftPLC CODESYS Control Win SL. CODESYS también documenta que, con el add-on de comunicación instalado, el runtime puede exponer un servidor OPC UA para que un cliente lea la interfaz de variables del controlador.

Instalación de CODESYS y Control Win

El primer paso es instalar el IDE desde la página oficial de CODESYS Development System V3.

Dentro del instalador o del gestor de paquetes buscamos CODESYS Control Win. Este componente es el runtime SoftPLC para Windows. Es decir, convierte el PC en el controlador donde descargaremos el proyecto de prueba.

Instalador de CODESYS mostrando CODESYS Control Win 64

Una vez instalado, arrancamos el runtime. CODESYS Control Win queda corriendo en Windows y listo para recibir la descarga del proyecto desde el IDE.

CODESYS Control Win ejecutándose como SoftPLC en Windows

Un detalle importante: el SoftPLC usará la red del PC donde está ejecutándose. En esta prueba el PC tiene la IP 192.168.1.133, por lo que ese será el endpoint que después buscarán UA Expert y el cliente Siemens.

Programa básico en CODESYS

Creamos variables globales y las vamos cambiando de forma cíclica.

Variables globales de CODESYS que se publicarán por OPC UA
Structured Text
VAR_GLOBAL
    Bool_Test : BOOL := FALSE;
    Int_Test  : DINT := 0;
    Real_Test : REAL := 0.0;
END_VAR

En el programa principal podemos usar un temporizador de un segundo y un flanco para cambiar los valores de forma ordenada:

Structured Text
VAR
    T_Pulse : TON;
    R_Pulse : R_TRIG;
END_VAR

T_Pulse(IN := NOT T_Pulse.Q, PT := T#1s);
R_Pulse(CLK := T_Pulse.Q);

IF R_Pulse.Q THEN
    GVL_Test.Bool_Test := NOT GVL_Test.Bool_Test;
    GVL_Test.Int_Test  := GVL_Test.Int_Test + 1;
    GVL_Test.Real_Test := GVL_Test.Real_Test + 0.5;

    IF GVL_Test.Int_Test >= 100 THEN
        GVL_Test.Int_Test  := 0;
        GVL_Test.Real_Test := 0.0;
    END_IF;
END_IF;

Publicar variables por OPC UA

Para que el cliente OPC UA vea las variables, no basta con tenerlas en el programa. Hay que exponerlas desde la configuración de símbolos. En CODESYS abrimos la configuración, seleccionamos las variables que queremos servir y generamos la configuración.

En este caso se publican Bool_Test, Int_Test y Real_Test. La selección debe descargarse al runtime junto con la aplicación, porque el servidor OPC UA se alimenta de esa interfaz publicada.

Configuración de símbolos en CODESYS para exponer variables por OPC UA

Si en tu versión estás usando la configuración explícita de OPC UA desde el árbol del proyecto, revisa también el objeto de servidor OPC UA o Communication Manager. En esta prueba se usa OPC UA sin seguridad para simplificar el laboratorio y comprobar la comunicación entre fabricantes de forma directa.

Si queremos trabajar sin usuario y contraseña para pruebas, accedemos a las políticas de seguridad del runtime.

Políticas de seguridad del runtime CODESYS Control Win

Activamos el acceso anónimo para que UA Expert y el cliente Siemens puedan conectarse en modo de prueba.

Permitir acceso anónimo al runtime CODESYS para pruebas OPC UA

Descarga al SoftPLC

Con el runtime arrancado y la configuración preparada, descargamos la aplicación al SoftPLC. Si la comunicación entre el IDE y el runtime está bien, CODESYS detectará el dispositivo local o el runtime de la IP correspondiente.

Descarga del proyecto CODESYS al SoftPLC Control Win

Después de la descarga, el programa debe quedar en ejecución. A partir de ese momento el servidor OPC UA ya puede exponer las variables seleccionadas.

Validación con UA Expert

Antes de ir a Siemens conviene comprobar el servidor con UA Expert. Esto nos evita mezclar dos problemas: uno de servidor CODESYS y otro de cliente Siemens.

El endpoint usado en la prueba es:

opc.tcp://192.168.1.133:4840

Si UA Expert puede navegar las variables y ver valores vivos, el servidor está listo.

UA Expert leyendo variables del servidor OPC UA de CODESYS

PLC Siemens como cliente OPC UA

La parte Siemens sigue el mismo enfoque que ya se explicó en el artículo Cliente OPC UA Siemens S7-1500: lectura y escritura en TIA Portal, pero cambiando el servidor: aquí el servidor no es otro Siemens, sino el SoftPLC CODESYS.

Siemens documenta la funcionalidad en la ayuda de STEP 7 para usar una CPU S7-1500 como cliente OPC UA, y en su página general de OPC UA en Siemens.

Resumen de pasos en TIA Portal:

  1. Activar la funcionalidad de OPC UA Client en la CPU compatible.
  2. Seleccionar la licencia OPC UA que corresponda a la CPU.
  3. Crear una Client interface.
  4. Configurar el endpoint opc.tcp://192.168.1.133:4840.
  5. Entrar online contra el servidor CODESYS y crear una Read list.
  6. Compilar con Rebuild all para que TIA Portal genere el DB de interfaz.
  7. Ejecutar la lectura desde el programa con los bloques compactos, por ejemplo OPC_UA_ReadList_C.
Lista de lectura OPC UA en TIA Portal con variables del servidor CODESYS

Si además necesitas escribir desde Siemens hacia CODESYS, el planteamiento es el mismo: preparar una Write list, dar permisos de escritura a las variables publicadas y llamar al bloque de escritura correspondiente. Para esta prueba nos centramos en lectura, porque es el camino mínimo para validar la interoperabilidad.

Prueba final online

Con el cliente descargado en el PLC Siemens, nos ponemos online y observamos el DB generado por la interfaz de cliente. Los valores que vienen del SoftPLC CODESYS aparecen ya dentro del proyecto Siemens.

Valores de CODESYS recuperados online en el DB del cliente OPC UA Siemens

En la captura se ve el resultado de la lectura:

  • Bool_Test: llega como booleano y cambia entre TRUE y FALSE.
  • Int_Test: llega como DINT y se actualiza con el contador de CODESYS.
  • Real_Test: llega como REAL y conserva el valor decimal.

Con esto queda validado el circuito completo: CODESYS ejecuta el programa, CODESYS publica por OPC UA, Siemens conecta como cliente y TIA Portal muestra los datos recuperados.

Artículos relacionados

La conclusión es sencilla: OPC UA permite que un SoftPLC CODESYS y un PLC Siemens se entiendan sin depender de un driver propietario entre ambos. Para laboratorio podemos dejarlo abierto y rápido; para planta real, el mismo flujo debe cerrarse con autenticación, certificados y cifrado.



¿Te ha servido este articulo?

Compartir en LinkedIn