Conector OPC UA
Descripción General
Sección titulada «Descripción General»El conector OPC UA (Open Platform Communications Unified Architecture) permite la comunicación con servidores OPC UA, el protocolo estándar de la industria para automatización industrial e intercambio de datos.
Tipos de Conector:
OpcuaReader- Leer datos de servidores OPC UAOpcuaWriter- Escribir datos en servidores OPC UA
Características
Sección titulada «Características»- ✅ Protocolo estándar de la industria para automatización industrial
- ✅ Múltiples métodos de autenticación (Anónimo, Básico, Certificado)
- ✅ Modos de seguridad (None, Sign, SignAndEncrypt)
- ✅ Tasas de sondeo configurables
- ✅ Soporte para estructuras de nodos complejas
- ✅ Operaciones de lectura y escritura
Configuración Básica
Sección titulada «Configuración Básica»Lector OPC UA
Sección titulada «Lector OPC UA»{ "type": "OpcuaReader", "config": { "endpoint": "opc.tcp://localhost:4840", "pollingRate": 1000 }, "variables": [ { "key": "temperature", "nodeId": "ns=1;s=Temperature" }, { "key": "pressure", "nodeId": "ns=1;s=Pressure" } ]}{ "type": "OpcuaReader", "config": { "endpoint": "opc.tcp://localhost:4840", "pollingRate": 1000, "auth": { "mode": "Basic", "username": "opcuser", "password": "opcpassword" } }, "variables": [ { "key": "temperature", "nodeId": "ns=1;s=Temperature" } ]}{ "type": "OpcuaReader", "config": { "endpoint": "opc.tcp://localhost:4840", "pollingRate": 1000, "auth": { "authCertificateFile": { "mode": "DirectPath", "fileName": "certificate.pem", "path": "/path/to/certificate.pem" }, "authKeyFile": { "mode": "DirectPath", "fileName": "key.pem", "path": "/path/to/key.pem" } }, "security": { "mode": "SignAndEncrypt", "policy": "Basic256Sha256" } }, "variables": [ { "key": "temperature", "nodeId": "ns=1;s=Temperature" } ]}Escritor OPC UA
Sección titulada «Escritor OPC UA»{ "type": "OpcuaWriter", "config": { "endpoint": "opc.tcp://localhost:4840", "auth": { "mode": "Basic", "username": "opcuser", "password": "opcpassword" } }, "variables": [ { "key": "setpoint", "nodeId": "ns=1;s=Setpoint" }, { "key": "control_mode", "nodeId": "ns=1;s=ControlMode" } ]}Parámetros de Configuración
Sección titulada «Parámetros de Configuración»Endpoint
Sección titulada «Endpoint»La URL del endpoint del servidor OPC UA.
{ "endpoint": "opc.tcp://192.168.1.100:4840"}Formato: opc.tcp://[host]:[puerto][/ruta]
Tasa de Sondeo
Sección titulada «Tasa de Sondeo»Para lectores, el intervalo en milisegundos entre lecturas de datos.
{ "pollingRate": 1000 // Leer cada 1 segundo}Valores recomendados:
- Rápido: 100-500ms
- Normal: 1000ms (1 segundo)
- Lento: 5000ms (5 segundos)
Autenticación
Sección titulada «Autenticación»Anónimo (Por Defecto)
Sección titulada «Anónimo (Por Defecto)»No se requiere autenticación:
{ // No se necesita campo auth}Autenticación Básica
Sección titulada «Autenticación Básica»Usuario y contraseña:
{ "auth": { "mode": "Basic", "username": "tu-usuario", "password": "tu-contraseña" }}Autenticación por Certificado
Sección titulada «Autenticación por Certificado»Certificados X.509:
{ "auth": { "authCertificateFile": { "mode": "DirectPath", "fileName": "client-cert.pem", "path": "/path/to/client-cert.pem" }, "authKeyFile": { "mode": "DirectPath", "fileName": "client-key.pem", "path": "/path/to/client-key.pem" } }}Seguridad
Sección titulada «Seguridad»Configurar modo y política de seguridad:
{ "security": { "mode": "SignAndEncrypt", "policy": "Basic256Sha256" }}Modos de Seguridad:
None- Sin seguridad (por defecto)Sign- Solo firma de mensajesSignAndEncrypt- Firmar y cifrar mensajes
Políticas de Seguridad:
NoneBasic128Rsa15Basic256Basic256Sha256(recomendado)
Variables
Sección titulada «Variables»Las variables definen qué nodos OPC UA leer o escribir.
Estructura de Variable
Sección titulada «Estructura de Variable»{ "key": "temperature", "nodeId": "ns=1;s=Temperature"}Campos:
key- El nombre de la clave en la carga de MeddlenodeId- El identificador del nodo OPC UA
Formatos de ID de Nodo
Sección titulada «Formatos de ID de Nodo»OPC UA admite varios formatos de ID de nodo:
{ "key": "sensor1", "nodeId": "ns=1;s=SensorName"}{ "key": "sensor2", "nodeId": "ns=1;i=1001"}{ "key": "sensor3", "nodeId": "ns=1;g=12345678-1234-1234-1234-123456789012"}{ "key": "sensor4", "nodeId": "ns=1;b=AQIDBAUGBwg="}Formato: ns=[namespace];[tipo]=[identificador]
Donde:
ns- Índice de namespace (0-65535)tipo- Tipo de ID de nodo:s- Stringi- Numéricog- GUIDb- Opaco (Base64)
Flujo de Datos
Sección titulada «Flujo de Datos»Flujo de Datos del Lector
Sección titulada «Flujo de Datos del Lector»Servidor OPC UA → OpcuaReader → Carga de MeddleEjemplo:
Nodos OPC UA:
ns=1;s=Temperature= 25.5ns=1;s=Pressure= 101.3
Carga de salida:
{ "temperature": 25.5, "pressure": 101.3}Flujo de Datos del Escritor
Sección titulada «Flujo de Datos del Escritor»Carga de Meddle → OpcuaWriter → Servidor OPC UAEjemplo:
Carga de entrada:
{ "setpoint": 30.0, "mode": "auto"}Escribe en:
ns=1;s=Setpoint← 30.0ns=1;s=Mode← “auto”
Casos de Uso Comunes
Sección titulada «Casos de Uso Comunes»1. Monitoreo de Temperatura
Sección titulada «1. Monitoreo de Temperatura»Leer sensores de temperatura de un PLC:
{ "type": "OpcuaReader", "config": { "endpoint": "opc.tcp://plc.local:4840", "pollingRate": 1000 }, "variables": [ { "key": "zone1_temp", "nodeId": "ns=2;s=Zone1.Temperature" }, { "key": "zone2_temp", "nodeId": "ns=2;s=Zone2.Temperature" }, { "key": "ambient_temp", "nodeId": "ns=2;s=Ambient.Temperature" } ]}2. Control de Proceso
Sección titulada «2. Control de Proceso»Escribir puntos de ajuste para controlar un proceso:
{ "type": "OpcuaWriter", "config": { "endpoint": "opc.tcp://plc.local:4840", "auth": { "mode": "Basic", "username": "operator", "password": "secure123" } }, "variables": [ { "key": "temperature_setpoint", "nodeId": "ns=2;s=Control.TempSetpoint" }, { "key": "pressure_setpoint", "nodeId": "ns=2;s=Control.PressureSetpoint" } ]}Solución de Problemas
Sección titulada «Solución de Problemas»Problemas de Conexión
Sección titulada «Problemas de Conexión»Problema: No se puede conectar al servidor OPC UA
Soluciones:
- Verifica que la URL del endpoint sea correcta
- Verifica la conectividad de red:
ping [ip-servidor] - Verifica que el puerto esté abierto:
telnet [ip-servidor] 4840 - Verifica las reglas del firewall
- Asegúrate de que el servidor OPC UA esté funcionando
Fallos de Autenticación
Sección titulada «Fallos de Autenticación»Problema: Errores de autenticación
Soluciones:
- Verifica que el usuario y contraseña sean correctos
- Verifica que el usuario tenga los permisos apropiados
- Para autenticación por certificado, asegúrate de que los certificados sean válidos y no hayan expirado
- Verifica que las rutas de los certificados sean correctas
Nodo No Encontrado
Sección titulada «Nodo No Encontrado»Problema: Errores de “Nodo no encontrado”
Soluciones:
- Usa un cliente OPC UA (como UaExpert) para explorar el servidor
- Verifica que el índice de namespace sea correcto
- Verifica que el formato del ID de nodo coincida con el formato del servidor
- Asegúrate de que el nodo exista y sea accesible
Mejores Prácticas
Sección titulada «Mejores Prácticas»1. Usa Tasas de Sondeo Apropiadas
Sección titulada «1. Usa Tasas de Sondeo Apropiadas»No sondees más rápido de lo necesario:
- Datos críticos: 100-500ms
- Monitoreo normal: 1000ms
- Valores de cambio lento: 5000ms+
2. Asegura Tus Conexiones
Sección titulada «2. Asegura Tus Conexiones»Siempre usa autenticación y cifrado en producción:
{ "auth": { "mode": "Basic", "username": "user", "password": "pass" }, "security": { "mode": "SignAndEncrypt", "policy": "Basic256Sha256" }}3. Agrupa Variables Relacionadas
Sección titulada «3. Agrupa Variables Relacionadas»Mantén variables relacionadas en el mismo conector para mejor organización.
4. Maneja la Pérdida de Conexión
Sección titulada «4. Maneja la Pérdida de Conexión»Meddle maneja automáticamente la pérdida de conexión y reconexión, pero considera:
- Usar un conector
Mergecon timeout para manejar datos faltantes - Agregar conectores
Alertpara notificar sobre problemas de conexión
Conectores Relacionados
Sección titulada «Conectores Relacionados»- Modbus - Protocolo industrial alternativo
- Siemens S7 - Comunicación directa con PLC Siemens
- Filter - Filtrar datos OPC UA
- Trigger - Lógica condicional en datos OPC UA
Recursos Adicionales
Sección titulada «Recursos Adicionales»- OPC Foundation
- Especificación OPC UA
- UaExpert - Cliente OPC UA gratuito para pruebas