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

· 11 Minuten Lesezeit
11 min read
Équipe Eziwan
Infrastructure IoT

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​