Umfassender OPC-UA-Leitfaden für die Industrie: Architektur, Sicherheit, Implementierung

· 11 Minuten Lesezeit
11 min read
Eziwan-Team
IoT-Infrastruktur

OPC-UA (OPC Unified Architecture) hat sich zum Standardprotokoll für die Interoperabilität in der Industrie 4.0 entwickelt. Dennoch bremst seine scheinbare Komplexität noch immer viele Implementierungen aus. Dieser praktische Leitfaden erklärt OPC-UA auf leicht verständliche Weise: Architektur, Sicherheit, NodeId, Implementierung in Python/Node.js und Cloud-Integration.


Was ist OPC-UA und warum ist es wichtig?

OPC-UA (IEC 62541) ist ein plattformunabhängiges Kommunikationsprotokoll, das für den sicheren Austausch industrieller Daten entwickelt wurde. Im Gegensatz zu seinem Vorgänger OPC-DA (nur Windows, DCOM) läuft OPC-UA auf jedem Betriebssystem (Linux, Windows, eingebettete Echtzeit-Betriebssysteme) und in jedem Netzwerk (Ethernet, 4G, WLAN).

Warum OPC-UA in der Industrie 4.0 dominiert

  • Interoperabilität: Ein Siemens S7-1500 OPC-UA-Server kann von jedem konformen Client ohne proprietären Treiber ausgelesen werden
  • Informationsmodell: Die Daten haben eine Bedeutung (Einheit, Beschreibung, Historie), nicht nur einen Wert
  • Native Sicherheit: Verschlüsselung, Authentifizierung, Zertifikate – im Protokoll integriert
  • Konformitätsprofile: eine schlanke Teilmenge für kleine Embedded-Geräte
  • Pubsub & MQTT: OPC-UA-Pub/Sub-Erweiterung für Cloud-Architekturen (IEC 62541-14)

OPC-UA-Architektur: Die grundlegenden Konzepte

Client-Server

Das OPC-UA-Basismodell ist Client-Server:

  • OPC-UA-Server: wird vom Gerät bereitgestellt (SPS, HMI, Datenserver)
  • OPC-UA-Client: nutzt die Daten (SCADA, Gateway, Cloud-Anwendung)

Ein und dasselbe Gerät kann gleichzeitig als Server und als Client fungieren (z. B. ein Gateway, das mehrere SPSen bündelt und die konsolidierten Daten bereitstellt).

Adressraum und NodeId

Der Address Space ist der Informationsbaum, den ein OPC-UA-Server bereitstellt. Jeder Knoten verfügt über eine eindeutige NodeId:

NodeId-Format:

  • ns=2;i=1234 — Namespace 2, ganzzahlige Kennung 1234
  • ns=2;s=Station_1.Pression — Namespace 2, Kennung als Zeichenfolge
  • ns=0;i=2258 — Namespace 0 (Standard), ServerStatus

Namensräume:

  • ns=0: Standard-OPC-UA-Namensraum (Typen, Methoden)
  • ns=1: häufig der Namensraum des Herstellers
  • ns=2+: Anwendungsnamensräume (Ihre Daten)

Kommunikationswege

ModusBeschreibungAnwendungsfall
ReadEinmaliges Auslesen eines KnotensAbfrage alle N Sekunden
SubscriptionAbonnement von Änderungen (MonitoredItem)Ereignisse, Alarme
BrowseDurchsuchen des AdressraumsKonfiguration, Erkennung
WriteSchreiben eines WertsSollwerte, Befehle
Method CallMethodenaufrufKomplexe Aktionen
PubsubVeröffentlichung/Abonnement über MQTT oder UDPMassive Cloud-Architekturen

Abonnements sind der richtige Ansatz für die Echtzeitüberwachung: Anstatt jede Sekunde abzufragen, abonniert der Client einen Knoten und erhält nur dann eine Benachrichtigung, wenn sich der Wert über einen konfigurierbaren Schwellenwert (DeadbandValue) hinaus ändert.


OPC-UA-Sicherheit: Der umfassende Leitfaden

Sicherheit ist eine der Stärken von OPC-UA – und zugleich eine der Ursachen für Komplexität. Hier sind die wesentlichen Konzepte.

Sicherheitsmodi

ModusVertraulichkeitIntegritätAuthentifizierungNutzung
NoneKeineKeineKeineTests, isoliertes Netzwerk
SignNeinSignaturZertifikatGesichertes Netzwerk
SignAndEncryptAES-256SignaturZertifikatInternet, Cloud
vorsicht

Verwenden Sie SecurityMode: None niemals im Produktivbetrieb in einem von außen zugänglichen Netzwerk.

X.509-Zertifikate

OPC-UA verwendet X.509-Zertifikate für die gegenseitige Client-Server-Authentifizierung:

Erstellung eines selbstsignierten Zertifikats für Testzwecke:

# Avec OpenSSL
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-keyout client_key.pem -out client_cert.pem \
-subj "/CN=EziwanGateway/O=Eziwan/C=FR" \
-extensions v3_req \
-config <(cat /etc/ssl/openssl.cnf; echo "[v3_req]"; echo "subjectAltName=URI:urn:eziwan:gateway:client")

Im Produktivbetrieb: Verwenden Sie eine interne PKI oder eine anerkannte Zertifizierungsstelle. Die Zertifikate müssen beim ersten Mal manuell zwischen Client und Server ausgetauscht werden.

Benutzerauthentifizierung

Neben den Maschinenzertifikaten unterstützt OPC-UA die Benutzerauthentifizierung:

  • Anonym: keine Authentifizierung (sofern vom Server zugelassen)
  • Benutzername/Passwort: Anwendungs-Login
  • Zertifikat: X.509-Benutzerzertifikat
  • IssuedToken: JWT- oder Kerberos-Token

OPC-UA in Python implementieren

Die Bibliothek python-opcua (oder ihr Fork asyncua) ist der Standard in Python.

Installation

pip install asyncua

OPC-UA-Client in Python – Daten lesen

import asyncio
from asyncua import Client

async def main():
url = "opc.tcp://192.168.1.10:4840/freeopcua/server/"

async with Client(url=url) as client:
# Einen Knoten anhand der NodeId abrufen
node = client.get_node("ns=2;s=Station_1.Pression")
value = await node.read_value()
print(f"Pression: {value} bar")

# Mehrere Knoten im Batch-Modus lesen
nodes = [
client.get_node("ns=2;s=Station_1.Pression"),
client.get_node("ns=2;s=Station_1.Debit"),
client.get_node("ns=2;s=Station_1.Defaut"),
]
values = await client.read_values(nodes)
for node, val in zip(nodes, values):
print(f" {node}: {val}")

asyncio.run(main())

OPC-UA-Client für Python – Abonnement (Subscription)

import asyncio
from asyncua import Client
from asyncua.common.subscription import SubHandler

class DataChangeHandler(SubHandler):
def datachange_notification(self, node, val, data):
print(f"[CHANGE] {node} = {val}")

def event_notification(self, event):
print(f"[EVENT] {event}")

async def main():
url = "opc.tcp://192.168.1.10:4840"

async with Client(url=url) as client:
handler = DataChangeHandler()
subscription = await client.create_subscription(500, handler) # 500ms

nodes = [
client.get_node("ns=2;s=Station_1.Pression"),
client.get_node("ns=2;s=Station_1.Debit"),
]

monitored_items = await subscription.subscribe_data_change(nodes)
print("Subscriptions actives, attente changements...")

await asyncio.sleep(30) # 30 Sekunden anhören
await subscription.unsubscribe(monitored_items)

asyncio.run(main())

Sichere Verbindung mit Zertifikat

from asyncua.crypto.security_policies import SecurityPolicyBasic256Sha256
from asyncua.crypto.cert_man import CertificateManager

async def connect_secure():
client = Client("opc.tcp://192.168.1.10:4840")

await client.set_security(
SecurityPolicyBasic256Sha256,
certificate="./client_cert.der",
private_key="./client_key.pem",
server_certificate="./server_cert.der"
)

await client.connect()
# ... Ihre Vorgänge
await client.disconnect()

OPC-UA in Node.js implementieren

Die Bibliothek node-opcua ist die Standardbibliothek für JavaScript/TypeScript.

npm install node-opcua

Daten auslesen

const opcua = require("node-opcua");

const client = opcua.OPCUAClient.create({
endpointMustExist: false,
connectionStrategy: { maxRetry: 5, initialDelay: 2000 }
});

const endpointUrl = "opc.tcp://192.168.1.10:4840";

async function main() {
await client.connect(endpointUrl);
const session = await client.createSession();

const nodeToRead = {
nodeId: "ns=2;s=Station_1.Pression",
attributeId: opcua.AttributeIds.Value
};

const dataValue = await session.read(nodeToRead);
console.log(`Pression: ${dataValue.value.value} bar`);
console.log(`Timestamp: ${dataValue.serverTimestamp}`);

await session.close();
await client.disconnect();
}

main().catch(console.error);

OPC-UA auf den gängigsten Industrie-SPSen

Siemens S7-1500 / S7-1200

Der S7-1500 unterstützt seit Firmware 2.0 nativen OPC-UA-Server:

  • Port: 4840 (TCP)
  • Konfiguration im TIA Portal: Device Configuration → OPC UA → Server
  • Aktivieren Sie die gewünschten Knoten in der Zugriffskonfiguration
  • Authentifizierung: Zertifikate oder Benutzername/Passwort

Die S7-1200 unterstützt OPC-UA ab Firmware-Version 4.1.

Schneider Electric M580 / M340

M580: OPC-UA über das Modul BMENOC0311 (Firmware ≥ V2.0) M340: keine native OPC-UA-Unterstützung → Modbus TCP empfohlen oder OPC-UA-zu-Modbus-Gateway (z. B. Kepware KEPServerEX)

Allen-Bradley / Rockwell (EtherNet/IP)

Rockwell-Steuerungen unterstützen OPC-UA nicht nativ. Optionen:

  • KEPServerEX (Kepware): EtherNet/IP-zu-OPC-UA-Brücke
  • FactoryTalk Linx Gateway: OPC-UA-Server für das Rockwell-Ökosystem
  • Eziwan Gateway: direkte EtherNet/IP/Modbus-Verbindung, REST-API-Schnittstelle

Beckhoff TwinCAT 3

TwinCAT 3 verfügt über einen nativen OPC-UA-Server über TF6100 (OPC-UA-Modul). Konfiguration über den TwinCAT System Manager.

Wago / Phoenix Contact / Pilz

Die meisten modernen SPSen dieser Hersteller unterstützen OPC-UA. Überprüfen Sie die Firmware und aktivieren Sie den Server in der Netzwerkkonfiguration.


OPC-UA PubSub: Die Erweiterung für die Cloud

OPC-UA PubSub (IEC 62541-14) ist die Erweiterung, die OPC-UA mit Cloud-basierten IoT-Architekturen kompatibel macht:

  • Publisher: Das Gerät veröffentlicht seine Daten über eine nachrichtenorientierte Middleware
  • Subscriber: Die Cloud oder das SCADA-System abonniert den Datenstrom

Unterstützte Protokolle:

  • AMQP (Port 5672)
  • MQTT (Port 1883 oder 8883) – das im IoT am häufigsten verwendete Protokoll
  • UDP-Multicast (lokales Netzwerk)

Kodierungen:

  • JSON (lesbar, einfache Fehlersuche)
  • UADP (binär, kompakt, eingebettet)

Beispiel für eine OPC-UA-PubSub-JSON-Nachricht:

{
"MessageId": "abc123",
"PublisherId": "urn:station1:plc",
"DataSetWriterId": 1,
"MetaDataVersion": {"MajorVersion": 1, "MinorVersion": 0},
"Timestamp": "2026-08-14T10:30:00.000Z",
"Payload": {
"Station_1.Pression": {"Value": 4.2, "StatusCode": 0, "SourceTimestamp": "2026-08-14T10:29:59.950Z"},
"Station_1.Debit": {"Value": 125.3, "StatusCode": 0, "SourceTimestamp": "2026-08-14T10:29:59.950Z"}
}
}

Migration von OPC-DA zu OPC-UA

Wenn Sie Anlagen unter OPC-DA (OPC Classic, Windows DCOM) betreiben, bietet die Migration zu OPC-UA folgende Vorteile:

  • Wegfall der Abhängigkeit von Windows/DCOM
  • Kompatibilität mit Linux, Raspberry Pi und Linux-SPSen
  • Verschlüsselung (in OPC-DA nicht vorhanden)
  • Direkter Internetzugang (mit DCOM ohne komplexes VPN nicht möglich)

Migrationswerkzeug: OPC-UA-Wrapper (z. B. Kepware) erstellt einen OPC-UA-Server, der die Daten eines bestehenden OPC-DA-Servers bereitstellt und so eine schrittweise Migration ermöglicht.


OPC-UA mit dem Eziwan-Gateway

Das Eziwan Gateway verfügt über einen integrierten OPC-UA-Client, der eine Verbindung zu den OPC-UA-Servern Ihrer Geräte herstellen kann:

  • Verbindung zu Siemens S7-1500 OPC-UA (Port 4840)
  • Verbindung zu jedem OPC-UA-Server gemäß IEC 62541
  • Unterstützung der Sicherheitsmodi None, Sign, SignAndEncrypt
  • Konfiguration der NodeIDs in der Cloud-Oberfläche (automatische Suche im Adressraum)
  • Datenübertragung an die Eziwan-Cloud-Plattform über MQTT/TLS

Hauptvorteil: Sie müssen keinen OPC-UA-Client selbst programmieren. Das Gateway übernimmt diese Aufgabe und stellt eine REST-API für Ihr SCADA- oder ERP-System bereit.


FAQ – OPC-UA

Ist OPC-UA komplexer als Modbus? Ja, aber bei Anlagen mit Geräten verschiedener Hersteller und bei Industrie-4.0-Projekten ist dies gerechtfertigt. Für eine Anlage mit 2–3 Steuerungen desselben Herstellers kann Modbus TCP ausreichend sein. OPC-UA ist unverzichtbar, wenn Sie heterogene Geräte, Sicherheitsanforderungen oder den Bedarf an ERP/MES-Interoperabilität haben.

Muss Port 4840 in meiner Firewall geöffnet sein? Bei einer „Zero-Inbound-Port“-Architektur (wie bei Eziwan) initiiert das Gateway die Verbindung zum OPC-UA-Server intern. Von außen ist kein Port geöffnet. Der verschlüsselte VPN-Tunnel leitet die Daten in die Cloud weiter.

Kann OPC-UA MQTT in einer IoT-Architektur ersetzen? OPC-UA PubSub mit MQTT-Transport vereint das Beste aus beiden Welten: das semantische Informationsmodell von OPC-UA mit der Leichtigkeit und Skalierbarkeit von MQTT. Dies ist die Richtung, die die Industrie-4.0-Referenzmodelle (Industrie 4.0 Architecture Reference Model, IDS-R) einschlagen.

Welche Leistung kann man von einem eingebetteten OPC-UA-Server erwarten? Eine Siemens S7-1500 CPU 1515 kann pro Sekunde etwa 10.000 OPC-UA-Knoten im Lesemodus verarbeiten. Bei weniger leistungsstarken SPSen (M221, kleine WAGO-Modelle) sollte das OPC-UA-Polling auf 100–500 Knoten/s begrenzt werden. Bei großen Datenmengen sind Abonnements (Subscription) wesentlich effizienter als das Polling.

Gibt es kostenlose OPC-UA-Server zum Testen? Ja: ProsysOPC UA Simulation Server (kostenlos, Windows), Node-RED mit node-red-contrib-opcua (kostenlos, plattformübergreifend), python-opcua im Servermodus (Beispiel in der GitHub-Dokumentation). Damit lässt sich ein Client testen, ohne dass eine physische SPS vorhanden sein muss.


Weiterführende Informationen

Benötigen Sie Hilfe bei der Anbindung Ihrer OPC-UA-Server an die Cloud? Fordern Sie eine kostenlose Demo an – unser Team begleitet Sie vom Proof of Concept bis zur Implementierung.


Weitere Ressourcen