OPC UA Architektur: Informationsmodell, Sicherheit, Sessions und Transport
OPC UA (IEC 62541) ist ein 13-teiliger Standard, der eine plattformunabhängige, serviceorientierte Architektur für die industrielle und gebäudetechnische Automatisierungskommunikation definiert. Im Gegensatz zu seinem Vorgänger OPC Classic (der nur Windows COM/DCOM unterstützte) läuft OPC UA auf jedem Betriebssystem, enthält ein vollständiges Sicherheitsmodell und bietet ein einheitliches Informationsmodell, das jeden Server selbstbeschreibend macht – wodurch die Notwendigkeit externer Datenwörterbücher bei der Integration von BMS, SCADA und IoT-Plattformen entfällt.
IEC 62541 Standardstruktur
IEC 62541 besteht aus 13 nummerierten Teilen. Die Teile 1–7 definieren die Kernarchitektur; die Teile 8–14 decken Mappings, Sicherheit und Profile ab. Für Gebäudeautomationsintegratoren sind die relevantesten Teile 1 (Konzepte), 3 (Address Space Model), 4 (Dienste), 6 (Mappings – Kodierung und Transport), 7 (Profile) sowie die Begleitspezifikation IEC 62541-100 (OPC UA für Gebäude).
| Teil | Titel | Relevanz |
|---|---|---|
| IEC 62541-1 | Konzepte und Übersicht | Grundlegende Architektur, Dienstmodell, Informationsmodellkonzept |
| IEC 62541-3 | Adressraum-Modell | NodeClass-Typen, Referenzen, Attribute – das Datenmodell-Rückgrat |
| IEC 62541-4 | Dienste | Read, Write, Browse, Subscribe, Call-Dienstesets – alle Server-APIs |
| IEC 62541-6 | Mappings | Binäre Kodierung (UA Binary), XML-Kodierung, opc.tcp-Transport, HTTPS, WebSockets |
| IEC 62541-7 | Profile | Server-, Client- und Transportprofile für Konformitätstests |
| IEC 62541-12 | Discovery und globale Dienste | Lokaler Discovery-Server (LDS), Globaler Discovery-Server (GDS) für Zertifikatsverwaltung |
| IEC 62541-100 | OPC UA für Gebäude | IFC-abgebildetes Informationsmodell für Räume, Zonen, HLK, Energiemessung |
Informationsmodell: NodeClass-Typen und Referenzen
Jedes Datenelement in einem OPC UA-Server wird als Knoten im Adressraum dargestellt. Knoten haben ein NodeClass-Attribut, das ihre Rolle definiert. Knoten sind durch typisierte Referenzen miteinander verbunden – z. B. HasComponent, HasProperty, Organizes, HasSubtype. Dadurch entsteht ein gerichteter Graph, den Clients durchsuchen können, um Serverinhalte zu entdecken, ohne die Datenstruktur vorher zu kennen.
| NodeClass | Zweck | Beispiel im BMS |
|---|---|---|
| Objekt | Container, der zusammengehörige Knoten gruppiert; selbst kein Wert | AHU_01-Objekt, das alle AHU-Variablen gruppiert |
| Variable | Enthält einen typisierten Wert; lesbar und optional beschreibbar | SupplyAirTemp (Float, °C), FanSpeed (UInt16, RPM) |
| Methode | Aufrufbare Funktion; Eingabe- und Ausgabeargumente | ResetAlarm(), SetOperatingMode(mode: Int32) |
| Ansicht | Benannte Teilmenge des Adressraums für gefiltertes Browsen | EnergyMeteringView zeigt nur kWh-Knoten an |
| Datentyp | Definiert skalaren oder strukturierten Typ, der von Variablen verwendet wird | EnumHvacMode {Auto=0, Heating=1, Cooling=2} |
| ObjectType | Vorlage für Objektknoten (wie eine Klassendefinition) | HVACUnitType mit Standardkomponenten |
| VariableType | Vorlage für Variable-Knoten mit Standardattributen | AnalogItemType mit EngineeringUnits-Eigenschaft |
| ReferenceType | Definiert die Semantik einer Referenz zwischen Knoten | HasComponent, HasProperty, Organizes |
Adressraum: Namespaces und durchsuchbarer Baum
Der Adressraum ist als durchsuchbarer Baum strukturiert. Jeder Knoten wird durch eine NodeId identifiziert, die aus einem Namespace-Index und einem Identifier (numerisch, String oder GUID) besteht. Namespace 0 (ns=0) ist immer der OPC UA-Standard-Namespace, der integrierte Typen und Standardknoten enthält. Namespace 1+ werden vom Server für hersteller- oder anwendungsspezifische Inhalte vergeben. Clients entdecken die Namespace-Tabelle über den GetNamespaceArray-Dienstaufruf.
OPC UA-Adressraum – BMS-Beispiel
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]Clients navigieren vom Objects-Stammverzeichnis aus mit dem Browse-Dienst, indem sie hierarchischen Referenzen (HasComponent, Organizes, HasProperty) folgen, um Knoten zu entdecken. Der TranslateBrowsePathsToNodeIds-Dienst ermöglicht es Clients, direkt zu einem bekannten Pfad zu springen, ohne den gesamten Baum zu durchlaufen – nützlich für leistungssensitives Pollen bekannter Variablen.
Transportoptionen
OPC UA definiert drei Transportbindungen. Die Wahl beeinflusst Latenz, Firewall-Durchlässigkeit und Protokoll-Overhead. OPC UA Binary über TCP ist der Standard für die BMS-Integration auf Feldebene; HTTPS und WebSockets werden für Cloud- oder browserzugängliche Schnittstellen verwendet.
| Transport | URI-Präfix | Standard-Port | Overhead | Anmerkungen |
|---|---|---|---|---|
| OPC UA TCP | opc.tcp:// | 4840 | Niedrigster – binäres Framing | Am besten für die Fabrikhalle; persistente TCP-Verbindung; nicht firewallfreundlich |
| OPC UA HTTPS | opc.https:// | 443 | Mittel — HTTP/1.1 + TLS | Firewallfreundlich; kann Proxys durchqueren; höhere Latenz pro Anfrage |
| OPC UA WebSockets | opc.wss:// | 443 | Niedrig — WebSocket-Framing | Browser-kompatibel; persistent; für Web-SCADA und Cloud-Gateways verwendet |
Empfehlung für die Fertigungsebene: Verwenden Sie immer opc.tcp:// innerhalb eines Gebäude-LANs oder OT-VLANs. Die persistente TCP-Verbindung eliminiert den TLS-Handshake-Overhead pro Anfrage und bietet die niedrigste Abonnement-Benachrichtigungslatenz. Reservieren Sie HTTPS für standortübergreifende oder Cloud-Integrationen, bei denen Firewall-Port 4840 nicht geöffnet werden kann.
Sicherheitsmodi und Sicherheitsrichtlinien
Die OPC UA-Sicherheit wird auf der Ebene des Secure Channel ausgehandelt, bevor Anwendungsnachrichten ausgetauscht werden. Der Server gibt seine unterstützten EndpointDescriptions (Kombinationen von MessageSecurityMode und SecurityPolicyUri) bekannt. Der Client wählt eine aus, wenn er eine Verbindung öffnet. Verwenden Sie None niemals in einer Produktionsumgebung – es überträgt alle Daten im Klartext ohne Integritätsschutz.
| MessageSecurityMode | Schutz | Anwendungsfall |
|---|---|---|
| Keine | Keine Signierung, keine Verschlüsselung | Nur Labor / Entwicklung – niemals Produktion |
| Signieren | HMAC-Integrität für Nachrichten; keine Payload-Verschlüsselung | Leistungskritisches SCADA im vertrauenswürdigen geschlossenen LAN |
| SignierenUndVerschlüsseln | HMAC + AES-Verschlüsselung aller Nachrichten-Payloads | Standard für alle BMS- und Cloud-Integrationen |
Die SecurityPolicyUri wählt die kryptografischen Algorithmen aus. Aktuelle empfohlene Richtlinien (Stand IEC 62541-7:2022) sind:
| SecurityPolicyUri | Asymmetrisch (Schlüsselaustausch) | Symmetrisch (Daten) | Status |
|---|---|---|---|
| Basic128Rsa15 | RSA-PKCS1-v1.5 / 1024-Bit | AES-128-CBC | Veraltet — nicht verwenden |
| Basic256 | RSA-OAEP / 1024-Bit | AES-256-CBC | Veraltet — nicht verwenden |
| Basic256Sha256 | RSA-OAEP / 2048-Bit + SHA-256 | AES-256-CBC + SHA-256 HMAC | Aktuell – weitgehend unterstützt |
| Aes128Sha256RsaOaep | RSA-OAEP / 2048-Bit + SHA-256 | AES-128-CBC + SHA-256 HMAC | Aktuell – geringere CPU-Last |
| Aes256Sha256RsaPss | RSA-PSS / 2048-Bit + SHA-256 | AES-256-CBC + SHA-256 HMAC | Empfohlen – stärkste, verwenden wo unterstützt |
Hinweis zur Abkündigung: Basic128Rsa15 und Basic256 verwenden 1024-Bit-RSA-Schlüssel und SHA-1, die beide als kryptografisch schwach gelten. IEC 62541-7:2022 kennzeichnet sie als veraltet. Kepware KEPServerEX 6.x und Siemens DESIGO CC unterstützen Basic256Sha256 und Aes256Sha256RsaPss. Deaktivieren Sie veraltete Richtlinien in der Produktionsserverkonfiguration, um Downgrade-Angriffe zu verhindern.
Authentifizierungsmethoden
Die Authentifizierung erfolgt auf der Sitzungsebene (oberhalb des sicheren Kanals). OPC UA definiert drei ActivateSession-Identitätstoken-Typen. Die zertifikatsbasierte Authentifizierung ist die sicherste und wird für industrielle Sicherheitsstandards wie IEC 62443-3-3 Security Level 2 gefordert.
| Token-Typ | Beschreibung | Empfehlung |
|---|---|---|
| AnonymousIdentityToken | Keine Anmeldeinformationen – jeder Client kann eine Sitzung erstellen | In Produktion deaktivieren; nur für schreibgeschützte öffentliche Dashboards akzeptabel |
| UserNameIdentityToken | Benutzername und Passwort; Passwort mit öffentlichem Serverschlüssel verschlüsselt | Akzeptabel für Bedienerzugriff; mit Sign+Encrypt-Transport verwenden |
| X509IdentityToken | Client legt gültiges X.509-Zertifikat vor; Server validiert gegen Vertrauensliste | Erforderlich für Maschine-zu-Maschine-Integration und IEC 62443 SL-2-Konformität |
Sitzungen und Abonnements
Eine Session wird nach der Authentifizierung auf dem Secure Channel aufgebaut. Sessions haben eine RequestedSessionTimeout (typischerweise 60–3600 Sekunden); sendet der Client vor Ablauf kein Keep-Alive, löscht der Server die Session und alle zugehörigen Abonnements. Clients sollten die Wiederverbindung mit Session-Wiederherstellung oder -Übertragung handhaben.
Abonnements sind der primäre Mechanismus für effizientes Datenmonitoring. Anstatt Variablen wiederholt abzufragen (was unnötigen Traffic erzeugt), erstellen Clients ein Abonnement mit einem PublishingInterval und fügen MonitoredItems hinzu. Der Server tastet jedes MonitoredItem im SamplingInterval ab und stellt Wertänderungen in eine Warteschlange; wenn das PublishingInterval auslöst, werden alle anstehenden Benachrichtigungen in einer einzigen PublishResponse-Nachricht gesendet.
Abonnement-Parameter – Schlüsselfelder
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 EURangeTotbandfilterung für HLK-Sensoren: Das Setzen eines absoluten Totbands von 0,2–0,5 °C bei Temperaturvariablen verhindert, dass der Server das Abonnement mit trivialen, rauschbedingten Updates überflutet. Bei Energiezählern ist ein prozentuales Totband von 1 % bei kWh-Zählern üblich. Die Totbandfilterung erfolgt serverseitig und reduziert sowohl CPU-Last als auch Netzwerkverkehr.
OPC UA Companion Specifications
Companion Specifications erweitern den OPC-UA-Basisstandard um domänenspezifische Informationsmodelle. Sie definieren standardisierte ObjectTypes, VariableTypes und Namespace-URIs, sodass Geräte verschiedener Hersteller Daten in einer konsistenten, interoperablen Struktur bereitstellen. Gebäudeautomationsingenieure sollten die folgenden Companion Specifications kennen:
| Spezifikation | Geltungsbereich | Wichtige Objekttypen |
|---|---|---|
| IEC 62541-100 (OPC UA für Gebäude) | Gebäudeautomation: Räume, Zonen, Anlagen, Energiemessung | BuildingType, SpaceType, HVACSystemType, EnergyMeterType |
| OPC UA für FDI (Feldgeräteintegration) | Feldgeräte: Sensoren, Aktoren, Prozessinstrumente | DeviceType, FunctionBlockType, ParameterType |
| OPC UA für PLCopen | PLC-Programmelemente: Funktionsbausteine, Alarme, Tasks | FunctionBlockType, AlarmType, TaskType |
| OPC UA für I4.0 Asset Administration Shell | Digitaler Zwilling: Asset-Metadaten, Submodelle, Eigenschaften | AssetAdministrationShellType, SubmodelType |
| OPC UA für Geräte (DI) | Basisinformationen zu Hardwaregeräten | DeviceType, ComponentType, SoftwareType |
Benötigen Sie eine OPC UA-Serverkonfiguration für Ihr BMS-Projekt?
Wir konfigurieren und sichern OPC UA-Server auf Siemens DESIGO CC, Beckhoff TwinCAT und Kepware KEPServerEX – einschließlich Zertifikatsverwaltung, Härtung der Sicherheitsrichtlinien und Abonnementoptimierung für hochdichte Sensorinstallationen.
Angebot anfordern →