Configuración de Cliente OPC UA en PLCnext Control: Guía Paso a Paso
La versión de firmware 2023.0 incluye un componente Cliente OPC UA largamente esperado. El Centro de Información PLCnext incluye una buena referencia técnica para esta característica.
Este tutorial es una guía paso a paso que muestra cómo configurar el cliente OPC UA en un dispositivo PLCnext Control para que intercambie datos con un servidor OPC UA.
Necesitará:
- Un dispositivo PLCnext Control corriendo versión de firmware 2023.0 o posterior para actuar como Cliente OPC UA. Si necesita actualizar el firmware en su dispositivo PLCnext Control, puede seguir el procedimiento mostrado en el Centro de Información.
- PLCnext Engineer versión 2023.3 o posterior.
- Un servidor OPC UA. Este artículo usa un segundo dispositivo PLCnext Control como servidor OPC UA, pero puede usar el mismo dispositivo PLCnext Control que usa para alojar el Cliente, o alternativamente cualquier servidor OPC UA de terceros corriendo (por ejemplo) en un PC Windows. Para servidores de terceros, necesitará averiguar cómo adaptar los pasos del "servidor" a continuación para su servidor.
- UaExpert de Unified Automation, que se necesita para obtener información sobre etiquetas (tags) del Servidor OPC UA que usaremos en la configuración de nuestro propio Cliente OPC UA.
Uno de los puntos clave a recordar al configurar comunicaciones OPC UA es que, por razones de seguridad, el Cliente OPC UA y el Servidor OPC UA deben confiar el uno en el otro. Por lo tanto, los certificados de seguridad deben intercambiarse entre los dispositivos Cliente y Servidor. Este procedimiento implica saltar entre el dispositivo Cliente y el dispositivo Servidor, lo que puede resultar un poco confuso. Si tiene sugerencias para simplificar el procedimiento (¡sin desactivar las comprobaciones de seguridad!), siéntase libre de agregarlas en los comentarios.
Procedimiento
Dispositivo Servidor OPC UA
-
Abra el sitio de Gestión Basada en Web (WBM) navegando a la dirección IP del PLC.
-
Seleccione el elemento Servicios del Sistema (System Services) del menú Configuración.
-
Active el servicio Servidor OPC UA (OPC UA Server), si no está habilitado ya.
-
Presione el botón Aplicar y Reiniciar (Apply and reboot) si es necesario.
-
Abra PLCnext Engineer.
-
Cree un nuevo proyecto PLCnext Engineer usando la plantilla para su dispositivo PLCnext Control.
-
Establezca la dirección IP del PLC en el proyecto PLCnext Engineer.
-
En la página de configuración Servidor OPC UA:
-
establezca el Nombre DNS / Dirección IP (DNS name / IP address) al Nombre DNS o la dirección IP del PLC, dependiendo de si el Cliente OPC UA accederá al servidor usando un nombre DNS o la dirección IP del servidor. Esta información será incluida en el certificado de seguridad del Servidor OPC UA. Muchos Clientes OPC UA rechazarán el certificado del servidor si esta información en el certificado no coincide con la URL del servidor.
-
establezca Visibilidad de variables (Visibility of variables) a Marcadas (Marked). Esto significa que todas las variables marcadas con el atributo OPC serán accesibles a través del Servidor OPC UA.
-
-
Cree variables que serán expuestas por el Servidor OPC UA. Asegúrese de que la casilla OPC esté marcada para esas variables. En el ejemplo a continuación, se han creado dos variables en el programa Main.
-
Agregue lógica para cambiar la variable de Salida cuando se reciba un nuevo valor de Entrada. En este ejemplo, el programa Main ejecuta el siguiente código:
Server_Data_Out := Server_Data_In + 1; -
Escriba e inicie el proyecto.
Nota que la versión 2025.0 y posterior de PLCnext Engineer incluye una función "examinar" (browse) que puede usarse para crear entradas de variables en el Cliente OPC UA. Si se usa esa función de exploración, no es necesario usar UaExpert para obtener información sobre variables del servidor, y los siguientes tres pasos pueden omitirse.
-
Use UaExpert para conectar al Servidor OPC UA usando el nombre de usuario y contraseña del PLC. Debería ver una advertencia de que el certificado es "No Confiable" (Untrusted), pero no debería haber otras advertencias.
-
Confíe en el certificado del servidor, ya sea permanentemente o solo para esta sesión.
-
Para cada variable del servidor, anote el nombre del Node ID y el Namespace (Espacio de nombres) para esa variable.
-
Abra el sitio WBM para el PLC Servidor nuevamente.
-
Seleccione el elemento Autenticación de Certificados (Certificate Authentication) del menú Seguridad.
-
Seleccione la pestaña Almacenes de Identidad (Identity Stores).
-
Descargue el Certificado del Almacén de Identidad OPC UA-self-signed [servidor]. El Par de Claves (Key Pair) no necesita descargarse.
Dispositivo Cliente OPC UA
-
Abra el sitio de Gestión Basada en Web (WBM) navegando a la dirección IP del PLC.
-
Seleccione el elemento Servicios del Sistema del menú Configuración.
-
Active el servicio Cliente OPC UA (OPC UA Client), si no está habilitado ya.
-
Presione el botón Aplicar y Reiniciar si es necesario.
-
Cuando el reinicio esté completo, vuelva a iniciar sesión en el sitio WBM y seleccione el elemento Autenticación de Certificados del menú Seguridad.
-
Seleccione la pestaña Almacenes de Confianza (Trust Stores).
-
Agregue el certificado OPC UA-self-signed [servidor] (descargado anteriormente) al Almacén de Confianza llamado OPC UA Client. Ahora, el Cliente OPC UA confiará en el certificado de seguridad usado por el Servidor OPC UA para verificar su identidad. Este paso necesitará repetirse cada vez que el certificado del Servidor cambie.
-
Seleccione la pestaña Almacenes de Identidad.
-
Descargue el Certificado del Almacén de Identidad OPC UA Client self-signed. El Par de Claves no necesita descargarse.
Dispositivo Servidor OPC UA
-
Abra el sitio de Gestión Basada en Web (WBM) navegando a la dirección IP del PLC.
-
Seleccione el elemento Autenticación de Certificados del menú Seguridad.
-
Seleccione la pestaña Almacenes de Confianza.
-
Agregue el certificado OPC UA Client self-signed (descargado anteriormente) al Almacén de Confianza llamado OPC UA-configurable. Ahora, el Servidor OPC UA confiará en el certificado de seguridad usado por el Cliente OPC UA para verificar su identidad. Este paso necesitará repetirse cada vez que el certificado del Cliente cambie.
Dispositivo Cliente OPC UA
-
Abra PLCnext Engineer.
-
Cree un nuevo proyecto PLCnext Engineer usando la plantilla para su dispositivo PLCnext Control. Si está usando el mismo dispositivo para tanto el Cliente OPC UA como el Servidor OPC UA, entonces se usará el mismo proyecto PLCnext Engineer.
-
Establezca la dirección IP del PLC en el proyecto PLCnext Engineer.
-
Solo requerido para PLCs corriendo versiones de firmware anteriores a 2023.6: En la página de configuración Servidor OPC UA, establezca Visibilidad de variables a Marcadas. Sí, parece extraño requerir esta configuración de Servidor OPC UA para el Cliente OPC UA. Esto se corrige en versiones de firmware 2023.6 y posteriores.
-
Cree variables que serán conectadas a variables en el Servidor OPC UA. Solo requerido para PLCs corriendo versiones de firmware anteriores a 2023.6: Asegúrese de que la casilla OPC esté marcada para esas variables (la casilla no es requerida para PLCs corriendo versión de firmware 2023.6 o posterior).
En el ejemplo a continuación, se han creado dos variables en el programa Main.
-
En la pestaña Conexiones Cliente OPC UA (OPC UA Client Connections), agregue un Servidor y dos Grupos de Variables, como se muestra a continuación.
La URL del servidor, nombre de usuario y contraseña deben cambiarse para adecuarse al Servidor OPC UA que está usando.
-
En el grupo de variables "Suscribir" (Subscribe), agregue un mapeo de variable, como se muestra a continuación.
Esto transfiere automáticamente el valor desde la variable remota (en el Servidor OPC UA) a la variable local en el proyecto PLCnext Engineer.
-
En el grupo de variables "Escribir" (Write), agregue un mapeo de variable, como se muestra a continuación.
Esto transfiere automáticamente el valor desde la variable local en el proyecto PLCnext Engineer a la variable remota (en el Servidor OPC UA).
-
Escriba e inicie el proyecto PLCnext Engineer.
-
En modo Depuración (Debug), cambie el valor de la variable
Client_Data_out. El valor será escrito a la variableServer_Data_Inen el Servidor OPC UA. Ese valor será incrementado por el Servidor y escrito a la variableServer_Data_Out. El valor de esa variable será entonces transferido a la variableClient_Data_Inen el Cliente.
¿No funciona?
Por favor revise la Guía de Solución de Problemas en el Centro de Información PLCnext (al final de la página).
Preguntas Frecuentes
P: ¿Puede el cliente conectar a un Servidor OPC UA usando autenticación Certificado/Clave?
R: No, no en este momento.
P: ¿Cómo almacena el Cliente OPC UA la contraseña del Servidor OPC UA?
R: En este momento la contraseña del Servidor OPC UA se almacena como texto plano en el archivo de configuración del cliente, pero los desarrolladores de PLCnext Runtime están trabajando en un método de almacenamiento de contraseña más seguro.
P: ¿Puedo obtener información de calidad (ej. Código de Estado, Timestamp) para datos leídos de un Servidor OPC UA?
R: No en este momento, lo siento.
Este artículo fue actualizado el 24.03.2025 para incluir información sobre la función Server Browse que ahora está disponible en PLCnext Engineer.
Apéndice: Configuración Basada en Archivos
La configuración del Cliente OPC UA en PLCnext Engineer se almacena en el controlador en formato XML. Para aplicaciones que no usan PLCnext Engineer, es posible configurar el Cliente OPC UA escribiendo la configuración XML directamente en el controlador.
La configuración preparada en este ejemplo está representada en los siguientes archivos XML:
-
Cualquier cambio requerido a la configuración por defecto del Cliente OPC UA está definido en el archivo
/opt/plcnext/projects/current/Services/OpcUA/Modules/Client/client.module.config:<?xml version="1.0" encoding="utf-8" standalone="yes"?> <OpcUAClientModuleConfigurationDocument schemaVersion="1.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.phoenixcontact.com/schema/opcuaclientmoduleconfig" xmlns="https://www.phoenixcontact.com/schema/opcuaclientmoduleconfig"> <Application> <CertificateStore> <SelfSignedIdentityStoreName>OPC UA Client self-signed</SelfSignedIdentityStoreName> <GivenIdentityStoreName>OPC UA Client</GivenIdentityStoreName> <TrustStoreName>OPC UA Client</TrustStoreName> </CertificateStore> <SessionSecurity> <ApplicationAuthentication>false</ApplicationAuthentication> <ApplicationUriCheck>true</ApplicationUriCheck> <CertificateHostnameCheck>true</CertificateHostnameCheck> <CertificateTimeCheck>true</CertificateTimeCheck> <CertificateIssuerTimeCheck>true</CertificateIssuerTimeCheck> <PasswordEncryptionCheck>true</PasswordEncryptionCheck> </SessionSecurity> <Timeouts> <SessionTimeout>1200000</SessionTimeout> <ConnectTimeout>5000</ConnectTimeout> <WatchdogTimeout>5000</WatchdogTimeout> <CallTimeout>10000</CallTimeout> </Timeouts> </Application> </OpcUAClientModuleConfigurationDocument> -
Las conexiones del Cliente OPC UA están definidas en el archivo
/opt/plcnext/projects/current/Services/OpcUA/Modules/Client/Configs/clientconnections.xml:<?xml version="1.0" encoding="utf-8"?> <eUAClientConfigurationDocument xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:uax="https://opcfoundation.org/UA/2008/02/Types.xsd" xmlns="https://phoenixcontact.com/OpcUA/PLCnext/UAClientConfig/Types.xsd"> <eUAClientConfiguration> <Name>ClientConnectionsConfiguration</Name> <NamespaceArray> <uax:String>https://phoenixcontact.com/OpcUA/PLCnext/GlobalDataSpace/</uax:String> </NamespaceArray> <ServerConnections> <eUAClientServerConnection> <EncodingMask>3</EncodingMask> <Endpoint> <uax:EndpointUrl>opc.tcp://192.168.1.10:4840</uax:EndpointUrl> <uax:SecurityMode>Sign_2</uax:SecurityMode> <uax:SecurityPolicyUri>https://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</uax:SecurityPolicyUri> </Endpoint> <UserTokenType>UserName_1</UserTokenType> <UserName>admin</UserName> <Password>xxxxxxxx</Password> </eUAClientServerConnection> </ServerConnections> <VariableGroups> <eUAClientVariableGroup> <GroupType>Write_1</GroupType> <CycleTime>100</CycleTime> <NodeMappings> <eUAClientNodeMapping> <LocalVariable> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Client_Data_Out</uax:Identifier> </LocalVariable> <RemoteVariableDescriptor> <EncodingMask>2</EncodingMask> <ServerIndex>1</ServerIndex> <NodeId> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Server_Data_In</uax:Identifier> </NodeId> </RemoteVariableDescriptor> </eUAClientNodeMapping> </NodeMappings> </eUAClientVariableGroup> <eUAClientVariableGroup> <GroupType>Subscribe_0</GroupType> <CycleTime>100</CycleTime> <NodeMappings> <eUAClientNodeMapping> <LocalVariable> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Client_Data_In</uax:Identifier> </LocalVariable> <RemoteVariableDescriptor> <EncodingMask>2</EncodingMask> <ServerIndex>1</ServerIndex> <NodeId> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Server_Data_Out</uax:Identifier> </NodeId> </RemoteVariableDescriptor> </eUAClientNodeMapping> </NodeMappings> </eUAClientVariableGroup> </VariableGroups> </eUAClientConfiguration> </eUAClientConfigurationDocument>Este archivo usa la información de Namespace y Node ID registrada anteriormente (usando UaExpert) para especificar qué variables del servidor accederá el cliente.
-
En el archivo anterior, cambie lo siguiente para adecuarse a su aplicación:
-
El elemento
uax:EndpointUrldebe incluir la dirección IP (o nombre DNS) de su servidor OPC UA. -
Los elementos
UsernameyPassworddeben contener las credenciales requeridas para el servidor OPC UA.
IMPORTANTE: En este ejemplo, las cadenas Node ID en UaExpert incluían el texto
ns=6. En el archivo XML anterior, esto se ha cambiado ans=1, porque el parámetro "namespace" (ns) es un índice en la lista de namespaces en el cliente local. En este ejemplo, el nombre Namespace que se copió de UaExpert es el primer (y único) namespace en la lista de namespaces en nuestro archivoclientconfig.xml. -
El Runtime de PLCnext debe reiniciarse después de hacer cambios en los archivos de configuración del Cliente OPC UA.
Tecnología Industrial
- Entendiendo las integrales definidas y el Teorema Fundamental del Cálculo
- Estrategias de marketing de verano que los fabricantes deben ejecutar ahora
- Principales Servicios de Acabado para Componentes Mecanizados de Precisión – Parte 1
- Maximiza el alcance de tu manufactura con YouTube: Una estrategia probada en redes sociales
- Sea la primera opción: 26 puntos esenciales de checklist para el éxito en compras B2B
- Sistemas de Gestión de Almacenes (WMS): Beneficios y Cómo Elegir el Adecuado
- Control Avanzado de Velocidad Motor DC: Voltaje, Reostático y Técnicas de Flujo
- Consecuencias de Conectar una Batería a una Fuente de Alimentación CA
- Impulse sus Ventas Navideñas: 5 Tácticas Comprobadas de Cumplimiento en Almacén para Temporada Pico
- Por Qué su Empresa Necesita un Sistema de Adquisición de Datos: 10 Razones Convincentes
- Guía Paso a Paso: Instalación del Agente Portainer en Dispositivo PLCnext Control