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).
| Parte | Título | Relevancia |
|---|---|---|
| IEC 62541-1 | Conceptos y visión general | Arquitectura fundamental, modelo de servicio, concepto de modelo de información |
| IEC 62541-3 | Modelo de espacio de direcciones | Tipos NodeClass, referencias, atributos — la columna vertebral del modelo de datos |
| IEC 62541-4 | Servicios | Conjuntos de servicios Read, Write, Browse, Subscribe, Call — todas las API del servidor |
| IEC 62541-6 | Mapeos | Codificación binaria (UA Binary), codificación XML, transporte opc.tcp, HTTPS, WebSockets |
| IEC 62541-7 | Perfiles | Perfiles de servidor, cliente y transporte para pruebas de conformidad |
| IEC 62541-12 | Descubrimiento y servicios globales | Servidor de descubrimiento local (LDS), Servidor de descubrimiento global (GDS) para gestión de certificados |
| IEC 62541-100 | OPC UA para edificios | Modelo 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.
| NodeClass | Propósito | Ejemplo en BMS |
|---|---|---|
| Objeto | Contenedor que agrupa nodos relacionados; sin valor propio | Objeto AHU_01 que agrupa todas las variables de la UTA |
| Variable | Contiene un valor tipado; legible y opcionalmente escribible | SupplyAirTemp (Float, °C), FanSpeed (UInt16, RPM) |
| Método | Función invocable; argumentos de entrada y salida | ResetAlarm(), SetOperatingMode(mode: Int32) |
| Vista | Subconjunto nombrado del espacio de direcciones para navegación filtrada | EnergyMeteringView que muestra solo nodos kWh |
| Tipo de datos | Define el tipo escalar o estructurado utilizado por las variables | EnumHvacMode {Auto=0, Heating=1, Cooling=2} |
| ObjectType | Plantilla para nodos de objeto (como una definición de clase) | HVACUnitType con componentes estándar |
| VariableType | Plantilla para nodos de variable con atributos predeterminados | AnalogItemType con propiedad EngineeringUnits |
| ReferenceType | Define la semántica de una referencia entre nodos | HasComponent, 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.
| Transporte | Prefijo URI | Puerto predeterminado | Sobrecarga | Notas |
|---|---|---|---|---|
| OPC UA TCP | opc.tcp:// | 4840 | Más bajo – encuadre binario | Ideal para planta de producción; conexión TCP persistente; no amigable con cortafuegos |
| OPC UA HTTPS | opc.https:// | 443 | Medio — HTTP/1.1 + TLS | Amigable con cortafuegos; puede atravesar proxies; mayor latencia por solicitud |
| OPC UA WebSockets | opc.wss:// | 443 | Bajo — encapsulado WebSocket | Compatible 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.
| MessageSecurityMode | Protección | Caso de uso |
|---|---|---|
| Ninguno | Sin firma, sin cifrado | Solo laboratorio/desarrollo – nunca producción |
| Firmar | Integridad HMAC en mensajes; sin cifrado de carga útil | SCADA crítico para el rendimiento en LAN cerrada de confianza |
| FirmarYCifrar | HMAC + cifrado AES de todas las cargas útiles de mensajes | Está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:
| SecurityPolicyUri | Asimétrico (intercambio de claves) | Simétrico (datos) | Estado |
|---|---|---|---|
| Basic128Rsa15 | RSA-PKCS1-v1.5 / 1024 bits | AES-128-CBC | Obsoleto — no usar |
| Basic256 | RSA-OAEP / 1024 bits | AES-256-CBC | Obsoleto — no usar |
| Basic256Sha256 | RSA-OAEP / 2048 bits + SHA-256 | AES-256-CBC + SHA-256 HMAC | Actual – ampliamente compatible |
| Aes128Sha256RsaOaep | RSA-OAEP / 2048 bits + SHA-256 | AES-128-CBC + SHA-256 HMAC | Actual – menor carga de CPU |
| Aes256Sha256RsaPss | RSA-PSS / 2048 bits + SHA-256 | AES-256-CBC + SHA-256 HMAC | Recomendado – 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 token | Descripción | Recomendación |
|---|---|---|
| AnonymousIdentityToken | Sin credenciales: cualquier cliente puede crear una sesión | Deshabilitar en producción; aceptable solo para paneles públicos de solo lectura |
| UserNameIdentityToken | Nombre de usuario y contraseña; contraseña cifrada con clave pública del servidor | Aceptable para acceso de operador; usar con transporte Sign+Encrypt |
| X509IdentityToken | El cliente presenta un certificado X.509 válido; el servidor valida contra la lista de confianza | Requerido 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 EURangeFiltrado 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ón | Alcance | Tipos de objetos clave |
|---|---|---|
| IEC 62541-100 (OPC UA para edificios) | Automatización de edificios: espacios, zonas, equipos, medición de energía | BuildingType, SpaceType, HVACSystemType, EnergyMeterType |
| OPC UA para FDI (Integración de dispositivos de campo) | Dispositivos de campo: sensores, actuadores, instrumentos de proceso | DeviceType, FunctionBlockType, ParameterType |
| OPC UA para PLCopen | Elementos del programa PLC: bloques de función, alarmas, tareas | FunctionBlockType, AlarmType, TaskType |
| OPC UA para I4.0 Asset Administration Shell | Gemelo digital: metadatos de activos, submodelos, propiedades | AssetAdministrationShellType, SubmodelType |
| OPC UA para dispositivos (DI) | Información básica de dispositivos hardware | DeviceType, 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 →