Tutorial

OPC UA met Python

De snelste manier om OPC UA te snappen is met een server praten in code. Deze tutorial gebruikt asyncua (de gratis, opensource opcua-asyncio-bibliotheek) om te verbinden, browsen, lezen, schrijven en abonneren: de vier dingen die u 90% van de tijd doet.

Vereisten:Python 3.8+, en een OPC UA-server om naar te wijzen (een simulator, de open62541-demoserver of uw PLC). Nog geen server? Ziegratis tools & testservers.

1. Installeren

pip install asyncua

2. Verbinden en een waarde lezen

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. Browse de adresruimte

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. Een waarde schrijven

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)))
Writes worden vaak geblokkeerd door serverrechten. Faalt het, bevestig dan dat de node schrijfbaar is en uw gebruiker geautoriseerd: zietroubleshooting.

5. Abonneren op datawijzigingen

Subscriptions pushen updates naar u in plaats van te pollen: de juiste manier om een waarde te volgen.

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

Veilig verbinden

Voor Sign & Encrypt laadt u uw certificaat en sleutel vóór het verbinden:

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

De server moet uw certificaat vertrouwen (verplaats het van rejected naar trusted). Details: OPC UA-security & certificaten.

Nodes lezen in Python is stap één. Die stroom omzetten in gerangschikte, doorgerekende acties op de werkvloer is wat Jemba doet.

Bekijk Jemba →

FAQ

Welke Python OPC UA-library moet ik gebruiken?
asyncua(opcua-asyncio) is de actief onderhouden, asynchrone bibliotheek en de gebruikelijke keuze. De oudere synchronepython-opcuais ten gunste daarvan afgeschaft.
Kan ik een OPC UA-server in Python bouwen?
Ja, asyncua bevat een volledige serverimplementatie, handig voor simulators en tests.
Wat is een NodeId?
Het unieke adres van een node, bijv.ns=2;i=2(namespace-index 2, integer-identifier 2) ofns=3;s=Temperature(string-identifier).

Laatst bijgewerkt 4 september 2026 · Educatieve bron. Bibliotheeknamen zijn handelsmerken van hun eigenaren.

Volgende: OPC UA & PLC's (Siemens TIA Portal) →

Gratis download
OPC UA-checklist voor troubleshooting & integratie
De in de praktijk beproefde checklist waarmee engineers snel problemen met certificaten, poorten en namespaces diagnosticeren, plus een Python-clienttemplate (asyncua).
Download de gratis checklist →
Gratis, geen cursus, geen login