OPC UA · IEC 62541 · Modelo de información · Seguridad · Sesiones · 10 min de lectura

Arquitectura OPC UA: Modelo de información, seguridad, sesiones y transporte

OPC UA (IEC 62541) es un estándar de 13 partes que define una arquitectura orientada a servicios, independiente de la plataforma, para la comunicación en automatización industrial y de edificios. A diferencia de su predecesor OPC Classic (que solo funcionaba con Windows COM/DCOM), OPC UA se ejecuta en cualquier sistema operativo, incorpora un modelo de seguridad completo y proporciona un modelo de información unificado que hace que cada servidor sea autodescriptivo, eliminando la necesidad de diccionarios de datos externos al integrar plataformas BMS, SCADA e IoT.

Estructura del estándar IEC 62541

IEC 62541 consta de 13 partes numeradas. Las partes 1–7 definen la arquitectura central; las partes 8–14 cubren mapeos, seguridad y perfiles. Para los integradores de automatización de edificios, las partes más relevantes son 1 (Conceptos), 3 (Modelo de espacio de direcciones), 4 (Servicios), 6 (Mapeos — codificación y transporte), 7 (Perfiles) y la especificación complementaria IEC 62541-100 (OPC UA para Edificios).

ParteTítuloRelevancia
IEC 62541-1Conceptos y visión generalArquitectura fundamental, modelo de servicio, concepto de modelo de información
IEC 62541-3Modelo de espacio de direccionesTipos NodeClass, referencias, atributos — la columna vertebral del modelo de datos
IEC 62541-4ServiciosConjuntos de servicios Read, Write, Browse, Subscribe, Call — todas las API del servidor
IEC 62541-6MapeosCodificación binaria (UA Binary), codificación XML, transporte opc.tcp, HTTPS, WebSockets
IEC 62541-7PerfilesPerfiles de servidor, cliente y transporte para pruebas de conformidad
IEC 62541-12Descubrimiento y servicios globalesServidor de descubrimiento local (LDS), Servidor de descubrimiento global (GDS) para gestión de certificados
IEC 62541-100OPC UA para edificiosModelo de información mapeado IFC para espacios, zonas, HVAC, medición de energía

Modelo de información: tipos NodeClass y referencias

Cada dato en un servidor OPC UA se representa como un nodo en el espacio de direcciones. Los nodos tienen un atributo NodeClass que define su función. Los nodos están vinculados entre sí mediante referencias tipadas – por ejemplo, HasComponent, HasProperty, Organizes, HasSubtype. Esto crea un grafo dirigido que los clientes pueden explorar para descubrir el contenido del servidor sin conocimiento previo de la estructura de datos.

NodeClassPropósitoEjemplo en BMS
ObjetoContenedor que agrupa nodos relacionados; sin valor propioObjeto AHU_01 que agrupa todas las variables de la UTA
VariableContiene un valor tipado; legible y opcionalmente escribibleSupplyAirTemp (Float, °C), FanSpeed (UInt16, RPM)
MétodoFunción invocable; argumentos de entrada y salidaResetAlarm(), SetOperatingMode(mode: Int32)
VistaSubconjunto nombrado del espacio de direcciones para navegación filtradaEnergyMeteringView que muestra solo nodos kWh
Tipo de datosDefine el tipo escalar o estructurado utilizado por las variablesEnumHvacMode {Auto=0, Heating=1, Cooling=2}
ObjectTypePlantilla para nodos de objeto (como una definición de clase)HVACUnitType con componentes estándar
VariableTypePlantilla para nodos de variable con atributos predeterminadosAnalogItemType con propiedad EngineeringUnits
ReferenceTypeDefine la semántica de una referencia entre nodosHasComponent, HasProperty, Organizes

Espacio de direcciones: espacios de nombres y árbol navegable

El espacio de direcciones está estructurado como un árbol navegable. Cada nodo se identifica mediante un NodeId que consiste en un índice de espacio de nombres y un identificador (numérico, cadena o GUID). El espacio de nombres 0 (ns=0) es siempre el espacio de nombres estándar de OPC UA que contiene tipos integrados y nodos estándar. Los espacios de nombres 1+ son asignados por el servidor para contenido específico del proveedor o la aplicación. Los clientes descubren la tabla de espacios de nombres mediante la llamada al servicio GetNamespaceArray.

Espacio de direcciones OPC UA — ejemplo BMS

Objects (ns=0;i=85)  ← OPC UA standard root
├── Server (ns=0;i=2253)  ← always present, server diagnostics
└── Building_01 (ns=1;s=Building_01)  ← application namespace
    ├── Floor_02 (ns=1;s=Building_01/Floor_02)
    │   ├── AHU_01 (ns=1;s=AHU_01)  [Object]
    │   │   ├── SupplyAirTemperature (ns=1;s=AHU_01.SAT)  [Variable, Float]
    │   │   │   ├── EngineeringUnits  [Property: "°C"]
    │   │   │   ├── EURange  [Property: Low=0, High=60]
    │   │   │   └── StatusCode  [Property: Good/Bad/Uncertain]
    │   │   ├── FanSpeed (ns=1;s=AHU_01.FanRPM)  [Variable, UInt16]
    │   │   ├── DamperPosition (ns=1;s=AHU_01.Damper)  [Variable, Byte, 0–100%]
    │   │   └── ResetAlarm (ns=1;s=AHU_01.ResetAlarm)  [Method]
    │   └── VAV_Zone_2A (ns=1;s=VAV_2A)  [Object]
    │       ├── RoomTemperature (ns=1;s=VAV_2A.RoomTemp)  [Variable, Float]
    │       └── Setpoint (ns=1;s=VAV_2A.SP)  [Variable, Float, writable]
    └── Meters (ns=1;s=Meters)
        └── Main_kWh (ns=1;s=Meter.kWh)  [Variable, Double]

Los clientes navegan desde la raíz Objects usando el servicio Browse, siguiendo referencias jerárquicas (HasComponent, Organizes, HasProperty) para descubrir nodos. El servicio TranslateBrowsePathsToNodeIds permite a los clientes saltar directamente a una ruta conocida sin recorrer todo el árbol — útil para el sondeo sensible al rendimiento de variables conocidas.

Opciones de transporte

OPC UA define tres enlaces de transporte. La elección afecta la latencia, el cruce de cortafuegos y la sobrecarga del protocolo. OPC UA Binary sobre TCP es el predeterminado para la integración BMS a nivel de planta; HTTPS y WebSockets se utilizan para interfaces en la nube o accesibles desde el navegador.

TransportePrefijo URIPuerto predeterminadoSobrecargaNotas
OPC UA TCPopc.tcp://4840Más bajo – encuadre binarioIdeal para planta de producción; conexión TCP persistente; no amigable con cortafuegos
OPC UA HTTPSopc.https://443Medio — HTTP/1.1 + TLSAmigable con cortafuegos; puede atravesar proxies; mayor latencia por solicitud
OPC UA WebSocketsopc.wss://443Bajo — encapsulado WebSocketCompatible con navegador; persistente; utilizado para Web SCADA y puertas de enlace en la nube

Recomendación para el nivel de planta: Utilice siempre opc.tcp:// dentro de una LAN del edificio o VLAN OT. La conexión TCP persistente elimina la sobrecarga del handshake TLS por solicitud y ofrece la latencia de notificación de suscripción más baja. Reserve HTTPS para integraciones entre sitios o en la nube donde no se pueda abrir el puerto de firewall 4840.

Modos de seguridad y políticas de seguridad

La seguridad de OPC UA se negocia a nivel de Secure Channel antes de intercambiar cualquier mensaje de aplicación. El servidor anuncia sus EndpointDescriptions compatibles (combinaciones de MessageSecurityMode y SecurityPolicyUri). El cliente selecciona uno al abrir una conexión. Nunca use None en un entorno de producción: transmite todos los datos en texto plano sin protección de integridad.

MessageSecurityModeProtecciónCaso de uso
NingunoSin firma, sin cifradoSolo laboratorio/desarrollo – nunca producción
FirmarIntegridad HMAC en mensajes; sin cifrado de carga útilSCADA crítico para el rendimiento en LAN cerrada de confianza
FirmarYCifrarHMAC + cifrado AES de todas las cargas útiles de mensajesEstándar para todas las integraciones BMS y nube

SecurityPolicyUri selecciona los algoritmos criptográficos. Las políticas recomendadas actuales (según IEC 62541-7:2022) son:

SecurityPolicyUriAsimétrico (intercambio de claves)Simétrico (datos)Estado
Basic128Rsa15RSA-PKCS1-v1.5 / 1024 bitsAES-128-CBCObsoleto — no usar
Basic256RSA-OAEP / 1024 bitsAES-256-CBCObsoleto — no usar
Basic256Sha256RSA-OAEP / 2048 bits + SHA-256AES-256-CBC + SHA-256 HMACActual – ampliamente compatible
Aes128Sha256RsaOaepRSA-OAEP / 2048 bits + SHA-256AES-128-CBC + SHA-256 HMACActual – menor carga de CPU
Aes256Sha256RsaPssRSA-PSS / 2048 bits + SHA-256AES-256-CBC + SHA-256 HMACRecomendado – el más fuerte, usar donde sea compatible

Aviso de desaprobación: Basic128Rsa15 y Basic256 usan claves RSA de 1024 bits y SHA-1, ambos considerados criptográficamente débiles. IEC 62541-7:2022 los marca como obsoletos. Kepware KEPServerEX 6.x y Siemens DESIGO CC soportan Basic256Sha256 y Aes256Sha256RsaPss. Deshabilite las políticas obsoletas en la configuración del servidor de producción para evitar ataques de degradación.

Métodos de autenticación

La autenticación se realiza en la capa de sesión (por encima del canal seguro). OPC UA define tres tipos de token de identidad ActivateSession. La autenticación basada en certificados es la más segura y es requerida por estándares de seguridad industrial como IEC 62443-3-3 Security Level 2.

Tipo de tokenDescripciónRecomendación
AnonymousIdentityTokenSin credenciales: cualquier cliente puede crear una sesiónDeshabilitar en producción; aceptable solo para paneles públicos de solo lectura
UserNameIdentityTokenNombre de usuario y contraseña; contraseña cifrada con clave pública del servidorAceptable para acceso de operador; usar con transporte Sign+Encrypt
X509IdentityTokenEl cliente presenta un certificado X.509 válido; el servidor valida contra la lista de confianzaRequerido para integración máquina a máquina y cumplimiento IEC 62443 SL-2

Sesiones y suscripciones

Una sesión se establece sobre el canal seguro después de la autenticación. Las sesiones tienen un RequestedSessionTimeout (típicamente 60–3600 segundos); si el cliente no envía un keep-alive antes del tiempo de espera, el servidor elimina la sesión y todas sus suscripciones. Los clientes deben manejar la reconexión con restablecimiento o transferencia de sesión.

Las suscripciones son el mecanismo principal para la monitorización eficiente de datos. En lugar de sondear variables repetidamente (lo que genera tráfico innecesario), los clientes crean una suscripción con un PublishingInterval y agregan MonitoredItems. El servidor muestrea cada MonitoredItem en el SamplingInterval y pone en cola los cambios de valor; cuando se dispara el PublishingInterval, todas las notificaciones en cola se envían en un solo mensaje PublishResponse.

Parámetros de suscripción — campos clave

CreateSubscription request:
  RequestedPublishingInterval: 1000  // ms — how often server sends Publish
  RequestedMaxKeepAliveCount: 10     // Publish cycles before keep-alive sent
  RequestedLifetimeCount: 30         // LifetimeCount × PublishingInterval = session timeout
  MaxNotificationsPerPublish: 1000   // cap notifications per PublishResponse
  PublishingEnabled: true

MonitoredItem parameters:
  SamplingInterval: 500              // ms — server samples item at this rate
                                     // must be ≥ server MinSupportedSampleRate
  QueueSize: 10                      // buffer for overrun; 1 = last value only
  DiscardOldest: true                // discard oldest on queue overflow
  DeadbandType: None / Absolute / Percent
  DeadbandValue: 0.5                 // Absolute: only report if change > 0.5 units
                                     // Percent: only report if change > 0.5% of EURange

Filtrado de banda muerta para sensores HVAC: Establecer una banda muerta absoluta de 0,2–0,5°C en las variables de temperatura evita que el servidor inunde la suscripción con actualizaciones triviales debidas al ruido. Para medidores de energía, es típico un porcentaje de banda muerta del 1% en contadores kWh. El filtrado de banda muerta ocurre en el lado del servidor, reduciendo tanto la carga de la CPU como el tráfico de red.

Especificaciones complementarias de OPC UA

Las especificaciones complementarias extienden el estándar base OPC UA con modelos de información específicos del dominio. Definen ObjectTypes, VariableTypes y URI de espacio de nombres estándar para que dispositivos de diferentes fabricantes expongan datos en una estructura coherente e interoperable. Los ingenieros de automatización de edificios deben conocer las siguientes especificaciones complementarias:

EspecificaciónAlcanceTipos de objetos clave
IEC 62541-100 (OPC UA para edificios)Automatización de edificios: espacios, zonas, equipos, medición de energíaBuildingType, SpaceType, HVACSystemType, EnergyMeterType
OPC UA para FDI (Integración de dispositivos de campo)Dispositivos de campo: sensores, actuadores, instrumentos de procesoDeviceType, FunctionBlockType, ParameterType
OPC UA para PLCopenElementos del programa PLC: bloques de función, alarmas, tareasFunctionBlockType, AlarmType, TaskType
OPC UA para I4.0 Asset Administration ShellGemelo digital: metadatos de activos, submodelos, propiedadesAssetAdministrationShellType, SubmodelType
OPC UA para dispositivos (DI)Información básica de dispositivos hardwareDeviceType, ComponentType, SoftwareType

¿Necesita configuración de servidor OPC UA para su proyecto BMS?

Configuramos y aseguramos servidores OPC UA en Siemens DESIGO CC, Beckhoff TwinCAT y Kepware KEPServerEX – incluyendo gestión de certificados, endurecimiento de políticas de seguridad y ajuste de suscripciones para despliegues de sensores de alta densidad.

Solicitar presupuesto →
Cargando...
Volver arriba