Tutorial

OPC UA mit Python

Der schnellste Weg, OPC UA zu begreifen, ist, im Code mit einem Server zu sprechen. Dieses Tutorial nutzt asyncua (die freie, quelloffene Bibliothek opcua-asynciolibrary) zum Verbinden, Browsen, Lesen, Schreiben und Abonnieren, die vier Dinge, die Sie in 90 % der Fälle tun werden.

Voraussetzungen:Python 3.8+ und irgendein OPC-UA-Server als Ziel (ein Simulator, der open62541-Demoserver oder Ihre SPS). Noch kein Server? Siehekostenlose Tools & Testserver.

1. Installieren

pip install asyncua

2. Verbinden und einen Wert lesen

import asyncio
from asyncua import Client

URL = "opc.tcp://localhost:4840/freeopcua/server/"

async def main():
    async with Client(url=URL) as client:
        # Read a node by its NodeId (namespace index + identifier)
        node = client.get_node("ns=2;i=2")
        value = await node.read_value()
        print("Value:", value)

asyncio.run(main())

3. Den Adressraum browsen

async with Client(url=URL) as client:
    objects = client.nodes.objects
    for child in await objects.get_children():
        name = await child.read_browse_name()
        print(name)

4. Einen Wert schreiben

from asyncua import ua

async with Client(url=URL) as client:
    node = client.get_node("ns=2;i=3")
    await node.write_value(ua.DataValue(ua.Variant(42.0, ua.VariantType.Double)))
Schreibzugriffe werden oft durch Serverberechtigungen blockiert. Scheitert es, prüfen Sie, ob der Knoten schreibbar und Ihr Benutzer berechtigt ist, sieheFehlersuche.

5. Datenänderungen abonnieren

Subscriptions schieben Ihnen Aktualisierungen zu, statt zu pollen, der richtige Weg, einen Wert zu beobachten.

class Handler:
    def datachange_notification(self, node, val, data):
        print("Change:", node, val)

async with Client(url=URL) as client:
    handler = Handler()
    sub = await client.create_subscription(500, handler)  # 500 ms
    node = client.get_node("ns=2;i=2")
    await sub.subscribe_data_change(node)
    await asyncio.sleep(30)   # keep running to receive changes

Sicher verbinden

Für Sign & Encrypt laden Sie Zertifikat und Schlüssel vor dem Verbinden:

await client.set_security_string(
    "Basic256Sha256,SignAndEncrypt,client-cert.der,client-key.pem")

Der Server muss Ihrem Zertifikat vertrauen (verschieben Sie es von rejected nach trusted). Details: OPC UA Security & Zertifikate.

Knoten in Python zu lesen ist Schritt eins. Aus diesem Strom priorisierte, mit Kosten bewertete Maßnahmen in der Fertigung zu machen, ist das, was Jemba tut.

Jemba ansehen →

FAQ

Welche Python-OPC-UA-Bibliothek soll ich nehmen?
asyncua(opcua-asyncio) ist die aktiv gepflegte, asynchrone Bibliothek und die übliche Wahl. Die ältere synchronepython-opcuagilt ihm zugunsten als veraltet.
Kann ich einen OPC-UA-Server in Python bauen?
Ja, asyncua enthält eine vollständige Server-Implementierung, praktisch für Simulatoren und Tests.
Was ist eine NodeId?
Die eindeutige Adresse eines Knotens, z. B.ns=2;i=2(Namespace-Index 2, Integer-Identifier 2) oderns=3;s=Temperature(String-Identifier).

Zuletzt aktualisiert am 4. September 2026 · Lehrressource. Bibliotheksnamen sind Marken ihrer Inhaber.

Weiter: OPC UA & SPS (Siemens TIA Portal) →

Kostenloser Download
OPC-UA-Checkliste für Fehlersuche & Integration
Die im Feld erprobte Checkliste, mit der Ingenieure Probleme mit Zertifikaten, Ports und Namespaces schnell diagnostizieren, plus eine Client-Vorlage in Python (asyncua).
Die kostenlose Checkliste holen →
Kostenlos, kein Kurs, kein Login