Ir al contenido

Conector OPC UA

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 UA
  • OpcuaWriter - Escribir datos en servidores OPC UA
  • ✅ 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
{
"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": "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"
}
]
}

La URL del endpoint del servidor OPC UA.

{
"endpoint": "opc.tcp://192.168.1.100:4840"
}

Formato: opc.tcp://[host]:[puerto][/ruta]

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)

No se requiere autenticación:

{
// No se necesita campo auth
}

Usuario y contraseña:

{
"auth": {
"mode": "Basic",
"username": "tu-usuario",
"password": "tu-contraseña"
}
}

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"
}
}
}

Configurar modo y política de seguridad:

{
"security": {
"mode": "SignAndEncrypt",
"policy": "Basic256Sha256"
}
}

Modos de Seguridad:

  • None - Sin seguridad (por defecto)
  • Sign - Solo firma de mensajes
  • SignAndEncrypt - Firmar y cifrar mensajes

Políticas de Seguridad:

  • None
  • Basic128Rsa15
  • Basic256
  • Basic256Sha256 (recomendado)

Las variables definen qué nodos OPC UA leer o escribir.

{
"key": "temperature",
"nodeId": "ns=1;s=Temperature"
}

Campos:

  • key - El nombre de la clave en la carga de Meddle
  • nodeId - El identificador del nodo OPC UA

OPC UA admite varios formatos de ID de nodo:

{
"key": "sensor1",
"nodeId": "ns=1;s=SensorName"
}

Formato: ns=[namespace];[tipo]=[identificador]

Donde:

  • ns - Índice de namespace (0-65535)
  • tipo - Tipo de ID de nodo:
    • s - String
    • i - Numérico
    • g - GUID
    • b - Opaco (Base64)
Servidor OPC UA → OpcuaReader → Carga de Meddle

Ejemplo:

Nodos OPC UA:

  • ns=1;s=Temperature = 25.5
  • ns=1;s=Pressure = 101.3

Carga de salida:

{
"temperature": 25.5,
"pressure": 101.3
}
Carga de Meddle → OpcuaWriter → Servidor OPC UA

Ejemplo:

Carga de entrada:

{
"setpoint": 30.0,
"mode": "auto"
}

Escribe en:

  • ns=1;s=Setpoint ← 30.0
  • ns=1;s=Mode ← “auto”

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"
}
]
}

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"
}
]
}

Problema: No se puede conectar al servidor OPC UA

Soluciones:

  1. Verifica que la URL del endpoint sea correcta
  2. Verifica la conectividad de red: ping [ip-servidor]
  3. Verifica que el puerto esté abierto: telnet [ip-servidor] 4840
  4. Verifica las reglas del firewall
  5. Asegúrate de que el servidor OPC UA esté funcionando

Problema: Errores de autenticación

Soluciones:

  1. Verifica que el usuario y contraseña sean correctos
  2. Verifica que el usuario tenga los permisos apropiados
  3. Para autenticación por certificado, asegúrate de que los certificados sean válidos y no hayan expirado
  4. Verifica que las rutas de los certificados sean correctas

Problema: Errores de “Nodo no encontrado”

Soluciones:

  1. Usa un cliente OPC UA (como UaExpert) para explorar el servidor
  2. Verifica que el índice de namespace sea correcto
  3. Verifica que el formato del ID de nodo coincida con el formato del servidor
  4. Asegúrate de que el nodo exista y sea accesible

No sondees más rápido de lo necesario:

  • Datos críticos: 100-500ms
  • Monitoreo normal: 1000ms
  • Valores de cambio lento: 5000ms+

Siempre usa autenticación y cifrado en producción:

{
"auth": {
"mode": "Basic",
"username": "user",
"password": "pass"
},
"security": {
"mode": "SignAndEncrypt",
"policy": "Basic256Sha256"
}
}

Mantén variables relacionadas en el mismo conector para mejor organización.

Meddle maneja automáticamente la pérdida de conexión y reconexión, pero considera:

  • Usar un conector Merge con timeout para manejar datos faltantes
  • Agregar conectores Alert para notificar sobre problemas de conexión
  • 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