Umfassender OPC-UA-Leitfaden für die Industrie: Architektur, Sicherheit, Implementierung
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-Architektur: Die grundlegenden Konzepte
- OPC-UA-Sicherheit: Der umfassende Leitfaden
- OPC-UA in Python implementieren
- OPC-UA in Node.js implementieren
- OPC-UA auf den gängigsten Industrie-SPSen
- OPC-UA PubSub: Die Erweiterung für die Cloud
- Migration von OPC-DA zu OPC-UA
- OPC-UA mit dem Eziwan-Gateway
- FAQ – OPC-UA
- Weiterführende Informationen
- Weitere Ressourcen
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 1234ns=2;s=Station_1.Pression— Namespace 2, Kennung als Zeichenfolgens=0;i=2258— Namespace 0 (Standard), ServerStatus
Namensräume:
ns=0: Standard-OPC-UA-Namensraum (Typen, Methoden)ns=1: häufig der Namensraum des Herstellersns=2+: Anwendungsnamensräume (Ihre Daten)
Kommunikationswege
| Modus | Beschreibung | Anwendungsfall |
|---|---|---|
| Read | Einmaliges Auslesen eines Knotens | Abfrage alle N Sekunden |
| Subscription | Abonnement von Änderungen (MonitoredItem) | Ereignisse, Alarme |
| Browse | Durchsuchen des Adressraums | Konfiguration, Erkennung |
| Write | Schreiben eines Werts | Sollwerte, Befehle |
| Method Call | Methodenaufruf | Komplexe Aktionen |
| Pubsub | Veröffentlichung/Abonnement über MQTT oder UDP | Massive 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
| Modus | Vertraulichkeit | Integrität | Authentifizierung | Nutzung |
|---|---|---|---|---|
None | Keine | Keine | Keine | Tests, isoliertes Netzwerk |
Sign | Nein | Signatur | Zertifikat | Gesichertes Netzwerk |
SignAndEncrypt | AES-256 | Signatur | Zertifikat | Internet, Cloud |
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
- Blog: OPC-UA und MQTT – wie man beide auf einem industriellen Gateway kombiniert
- Blog: Sicherer Fernzugriff auf SPS und SCADA – VPN, Zero-Trust und NIS2
- Blog: Eine Siemens S7-SPS mit der Cloud verbinden – Technischer Leitfaden
- Blog: IEC 62443 – Praktischer Leitfaden für industrielle Cybersicherheit
- Blog: Modbus TCP vs. RTU – umfassender Vergleich für das industrielle IoT
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
- OPC UA zu MQTT – OPC-UA-Daten an einen MQTT-Cloud-Broker veröffentlichen
- Industrieprotokolle – Vergleich zwischen OPC UA, Modbus, MQTT und anderen Protokollen
- Industrielles IoT-Gateway – Auswahl eines OPC-UA-kompatiblen Gateways
- Modbus TCP in die Cloud – Überwachung von Modbus-TCP-Steuerungen aus der Cloud
- Cloud-SCADA — moderne SCADA-Architektur mit OPC-UA- und Cloud-Anbindung