OPC-UA-Integration
Vorstellung
OPC-UA (Unified Architecture) ist das Standardprotokoll für die industrielle Kommunikation zum sicheren Datenaustausch zwischen SPSen, SCADA-Systemen und Cloud-Systemen. Mit Eziwan können Sie über den sicheren OpenVPN-Tunnel von überall aus auf OPC-UA-Server in Ihrem OT-Netzwerk zugreifen.
Voraussetzungen
Auf der Steuerungsseite (OPC-UA-Server)
| Steuerung | OPC-UA-Server | Mindest-Firmware-Version | Systemvoraussetzungen |
|---|---|---|---|
| Siemens S7-1500 | Integriert (nativ) | FW 2.0 (2017) | Aktivierung im TIA Portal |
| Siemens S7-1200 | Nicht verfügbar | — | Stattdessen Modbus TCP verwenden |
| B&R Automation | Nativ (ArOpc) | AR 4.34 | Aktivierung in Automation Studio |
| Beckhoff TwinCAT | TF6100 (TwinCAT OPC-UA-Server) | TwinCAT 3.1.4020 | TF6100-Lizenz erforderlich |
| Phoenix Contact PLCnext | Integriert | FW 2020.0 | Aktivierung über Web Based Management |
| Schneider EcoStruxure | Nativ (M262/M580) | — | Aktivierung in SoMachine |
Eziwan
- Eziwan-Gateway mit Firmware ≥ 2.3
- Das Gateway muss sich im selben Ethernet-Netzwerk wie die OPC-UA-Steuerung befinden oder mit dieser verbunden sein können (gleiches VLAN, keine Firewall, die Port 4840 blockiert)
- Standard-OPC-UA-Port: TCP 4840
Architektur: Zugriff über einen VPN-Tunnel
Der OPC-UA-Fernzugriff über Eziwan erfolgt nach folgendem Schema:
Das Eziwan-Gateway fungiert als OPC-UA-Proxy: Es empfängt die Verbindungen von Remote-Clients über den OpenVPN-Tunnel und leitet sie an den OPC-UA-Server im lokalen OT-Netzwerk weiter. Der Remote-Client hat keinen direkten Zugriff auf das OT-Netzwerk.
Konfiguration im TIA Portal: OPC-UA-Server S7-1500 aktivieren
Schritt 1: Die Eigenschaften der CPU öffnen
- Doppelklicken Sie im TIA Portal in der Hardwareansicht auf die S7-1500-CPU.
- Wechseln Sie zur Registerkarte OPC UA.
Schritt 2: Den Server aktivieren
OPC UA
└── Server
[✓] Activate OPC UA server
Port: 4840
Max. sessions: 10
Session timeout: 10 000 ms
Security:
[✓] Keine Sicherheit (Basic256Sha256 wird auch in der Produktion empfohlen)
[✓] Basic256Sha256 - SignAndEncrypt
Access control:
[ ] Anonymen Zugriff zulassen (in der Produktionsumgebung deaktivieren)
[✓] Enable user access control
Schritt 3: Eine Server-Schnittstelle erstellen
Die Server-Schnittstelle definiert die über OPC-UA bereitgestellten Variablen:
OPC UA
└── Server interfaces
└── [New interface] → Nom: "Monitoring_Production"
└── Drag & Drop aus dem Projekt:
DB10.Temperature → wird als „Temperature“ angezeigt
DB10.Pressure → wird als „Pressure“ angezeigt
DB10.ProductCount → wird als „ProductCount“ angezeigt
DB10.Running → wird als „Running“ angezeigt
Schritt 4: Einen OPC-UA-Benutzer anlegen
OPC UA
└── Users
└── [Add user]
Username: eziwan_client
Password: MotDePasseStrong2026!
Rolle: Beobachter (nur Lesezugriff) oder Operator (Lese-/Schreibzugriff)
Schritt 5: Kompilieren und Herunterladen der Hardwarekonfiguration
Wichtig: Es muss lediglich die Hardwarekonfiguration neu kompiliert und hochgeladen werden. Das Anwenderprogramm (OB, FC, FB) bleibt unverändert.
Menü: „Build“ → „Build all“ (oder Strg+B)
Nur die Hardware-Kompilierung auf Fehler überprüfen
Menu : Online → Download to device → Hardware configuration
Verbindung über einen entfernten OPC-UA-Client
Option 1: Prosys OPC UA Browser (kostenlose grafische Benutzeroberfläche)
- Laden Sie den Prosys OPC UA Browser unter prosysopc.com herunter
- Starten Sie die Software
- Geben Sie die URL ein:
opc.tcp://[IP_TUNNEL_EZIWAN]:4840 - Klicken Sie auf „Connect“
- Wählen Sie den Sicherheitsmodus aus (None für Tests, SignAndEncrypt für den Produktivbetrieb)
- Navigieren Sie durch die Knotenstruktur, um Ihre Variablen zu finden
Option 2: Python mit asyncua
import asyncio
from asyncua import Client
from asyncua import ua
# Configuration de connexion
OPC_UA_URL = "opc.tcp://[IP_TUNNEL_EZIWAN]:4840"
USERNAME = "eziwan_client"
PASSWORD = "MotDePasseStrong2026!"
async def lire_donnees_production():
"""Verbindung und Auslesen der Produktionsdaten über Eziwan."""
async with Client(url=OPC_UA_URL) as client:
# Authentifizierung über Benutzernamen
client.set_user(USERNAME)
client.set_password(PASSWORD)
print(f"Connecté à {OPC_UA_URL}")
# Methode 1: Direkter Zugriff über die Node-ID (sofern bekannt)
node_temp = client.get_node("ns=3;s=Monitoring_Production.Temperature")
temp = await node_temp.read_value()
print(f"Température : {temp} °C")
# Methode 2: Navigation in der Baumstruktur
root = client.get_root_node()
objects = await root.get_child(["0:Objects"])
# Untergeordnete Knoten auflisten
children = await objects.get_children()
for child in children:
name = await child.read_browse_name()
print(f"Nœud trouvé : {name.Name}")
# Methode 3: Abonnement bei Wertänderung
handler = ChangementValeurHandler()
sub = await client.create_subscription(period=1000, handler=handler)
nodes_a_surveiller = [
client.get_node("ns=3;s=Monitoring_Production.Temperature"),
client.get_node("ns=3;s=Monitoring_Production.Pressure"),
client.get_node("ns=3;s=Monitoring_Production.Running"),
]
await sub.subscribe_data_change(nodes_a_surveiller)
print("Abonnement actif. Ctrl+C pour arrêter.")
try:
while True:
await asyncio.sleep(1)
except KeyboardInterrupt:
pass
finally:
await sub.delete()
class ChangementValeurHandler:
"""Gestionnaire des notifications OPC-UA."""
def datachange_notification(self, node, val, data):
print(f"[{data.monitored_item.Value.SourceTimestamp}] {node}: {val}")
asyncio.run(lire_donnees_production())
Option 3: Node-RED mit node-opcua
[
{
"id": "opc-ua-input",
"type": "OpcUa-Client",
"endpoint": "opc.tcp://[IP_TUNNEL_EZIWAN]:4840",
"action": "subscribe",
"deadbandtype": "a",
"deadbandvalue": "1",
"time": "1",
"timeUnit": "s",
"certificate": "n",
"item": [
{"name": "Temperature", "nodeId": "ns=3;s=Monitoring_Production.Temperature"},
{"name": "Pressure", "nodeId": "ns=3;s=Monitoring_Production.Pressure"}
]
}
]
OPC-UA-Sicherheit: Modi und Zertifikate
Verfügbare Sicherheitsmodi
| Modus | Authentifizierung | Verschlüsselung | Empfehlung |
|---|---|---|---|
| Keine | Keine | Keine | Nur für Tests, niemals im Produktivbetrieb |
| Sign | X.509-Zertifikat | Nein | Mittel |
| SignAndEncrypt | X.509-Zertifikat | AES-256 | Im Produktivbetrieb obligatorisch |
Unterstützte Sicherheitsrichtlinien
- Basic128Rsa15: RSA 1024 Bit (veraltet, nicht verwenden)
- Basic256: RSA 2048 Bit + SHA-1 (akzeptabel)
- Basic256Sha256: RSA 2048 Bit + SHA-256 (empfohlen)
- Aes128_Sha256_RsaOaep: AES-128 + SHA-256 (modern)
- Aes256_Sha256_RsaPss: AES-256 + SHA-256 (am sichersten)
Zertifikatsverwaltung über Eziwan
Eziwan generiert automatisch die X.509-Zertifikate für die OPC-UA-Verbindung:
- Eziwan-Portal → Integrationen → OPC-UA → Zertifikate
- Auf „Zertifikat erstellen“ klicken
- Das Zertifikat im Format
.derexportieren - In die Vertrauensliste des OPC-UA-Servers importieren (TIA Portal → OPC UA → Vertrauenswürdige Clients)
Fehlerbehebung
Problem 1: Verbindungszeitüberschreitung
Symptom: ServiceResultException: BadTimeout oder fehlgeschlagene Verbindung.
Ursachen und Lösungen:
| Ursache | Überprüfung | Lösung |
|---|---|---|
| Port 4840 gesperrt | telnet [IP_OT] 4840 vom Gateway aus | Port in der lokalen OT-Firewall öffnen |
| OPC-UA-Server nicht aktiviert | In TIA Portal → OPC UA → Server überprüfen | Aktivieren und Konfiguration erneut herunterladen |
| Falsche Gateway-IP | Ping vom Gateway zur SPS | Netzwerkkonfiguration des Gateways überprüfen |
| Timeout zu kurz | Client-Timeout erhöhen | client.session_timeout = 30000 (asyncua) |
Problem 2: Abgelehnte Zertifikate
Symptom: BadCertificateUntrusted oder BadSecurityChecksFailed
Lösungen:
- Auf dem S7-1500-Server: TIA Portal → OPC UA → Trusted Clients → Eziwan-Zertifikat hinzufügen
- Temporärer Modus: TIA Portal → OPC UA → Server → „Alle Zertifikate automatisch akzeptieren“ (nach der Konfiguration deaktivieren)
- Zertifikate neu generieren: Wenn das Zertifikat abgelaufen ist, generieren Sie es im Eziwan-Portal neu
Problem 3: Knoten nicht gefunden (BadNodeIdUnknown)
Symptom: BadNodeIdUnknown beim Lesen eines Knotens.
Ursachen:
- Der Namespace (ns=X) ist falsch
- Die Server-Schnittstelle wurde im TIA Portal nicht angelegt
- Der Name des Knotens ist falsch geschrieben
Lösung: Verwenden Sie den Prosys OPC UA Browser, um durch die tatsächliche Baumstruktur zu navigieren und die genauen NodeIDs zu kopieren.
Problem 4: Häufige Verbindungsabbrüche
Symptom: Der Client wird regelmäßig getrennt, Fehler BadConnectionClosed.
Lösungen:
- Den Wert für
keepaliveIntervalauf der Client-Seite erhöhen - Die Stabilität der Netzwerkverbindung überprüfen (OpenVPN-Keepalive konfiguriert)
- Überprüfen, ob der
max_sessionsdes S7-1500-Servers nicht erreicht ist (TIA Portal → OPC UA → Server → Max. Sessions)
Diagnosebefehle über das Gateway
Über die Eziwan-Konsole (SSH oder Weboberfläche → Terminal):
# Verbindung zum OPC-UA-Server testen
nc -zv 192.168.20.10 4840
# Den Status des OpenVPN-Tunnels überprüfen
systemctl status openvpn-client@eziwan --no-pager
# OPC-UA-Verbindungsprotokolle (nach Fehlern gefiltert)
journalctl -u eziwan-opcua-client -n 50 --no-pager | grep -i error
Häufig gestellte Fragen
OPC-UA oder Modbus: Was sollte man für die Datenübertragung wählen?
OPC-UA bietet Typisierung, Einheiten, Knotenhierarchie und Sicherheit durch Zertifikate; Modbus ist für eine schnelle Nachrüstung weiterhin einfacher. Bei einer S7-1500 oder einem neueren SCADA-System sollten Sie OPC-UA bevorzugen; bei einem älteren, heterogenen Systembestand hingegen Modbus.
Was ist ein OPC-UA-Knoten?
Die Informationseinheit des Servers: eine Variable (Messwert, Sollwert), ein Objekt oder eine Methode, die durch eine NodeId in einem Namensraum identifiziert wird. Der Eziwan-Client durchläuft die Baumstruktur und abonniert die ausgewählten Knoten.
Wie verwaltet man OPC-UA-Zertifikate?
Client und Server tauschen X.509-Zertifikate aus: Das Zertifikat des Eziwan-Clients muss serverseitig (TIA Portal, UaExpert) akzeptiert und eine Verschlüsselungsrichtlinie ausgewählt werden (empfohlen wird Basic256Sha256).
Welche Geräte werden von einem OPC-UA-Server bereitgestellt?
Aktuelle Steuerungen (Siemens S7-1500/S7-1200, Schneider M580, Beckhoff), SCADA-Systeme (WinCC, Ignition, AVEVA) sowie zahlreiche hochwertige Sensoren und Antriebe. Für den übrigen Anlagenbestand erfasst das Gateway die Daten über Modbus.
Weiterführende Ressourcen
- OPC UA in die industrielle Cloud – die Lösungsseite
- OPC UA und MQTT – umfassende Datenerfassung und schlanken Datentransport kombinieren
- Umfassender OPC-UA-Leitfaden – der Hintergrundartikel
- Siemens S7-Kompatibilität – den OPC-UA-Server im TIA Portal aktivieren
- Industrieprotokolle – die Drehscheibe für OT-Protokolle