Tutorial

OPC UA cu Python

Cel mai rapid mod de a înțelege OPC UA este să vorbiți cu un server din cod. Acest tutorial folosește asyncua (biblioteca gratuită, open-source opcua-asyncio) pentru a vă conecta, a parcurge, a citi, a scrie și a vă abona: cele patru lucruri pe care le veți face în 90% din cazuri.

Cerințe prealabile:Python 3.8+ și orice server OPC UA către care să vă îndreptați (un simulator, serverul demo open62541 sau PLC-ul dumneavoastră). Nu aveți încă un server? Vedețiinstrumente gratuite & servere de test.

1. Instalați

pip install asyncua

2. Conectați-vă și citiți o valoare

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. Navigați spațiul de adrese

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. Scrieți o valoare

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)))
Scrierile sunt adesea blocate de permisiunile serverului. Dacă eșuează, confirmați că nodul poate fi scris și că utilizatorul dumneavoastră este autorizat: vedețidepanare.

5. Abonați-vă la schimbările de date

Abonamentele vă transmit actualizările în loc să interogați: modul corect de a urmări o valoare.

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

Conectarea în siguranță

Pentru Sign & Encrypt, încărcați certificatul și cheia înainte de conectare:

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

Serverul trebuie să aibă încredere în certificatul dumneavoastră (mutați-l din rejected în trusted). Detalii: securitate & certificate OPC UA.

Citirea nodurilor în Python este pasul unu. Transformarea acelui flux în acțiuni ierarhizate și cuantificate ca și cost în hală este ceea ce face Jemba.

Vedeți Jemba →

Întrebări frecvente

Ce bibliotecă Python OPC UA ar trebui să folosesc?
asyncua(opcua-asyncio) este biblioteca asincronă întreținută activ și alegerea obișnuită. Cea mai veche, sincronă,python-opcuaeste depreciat în favoarea lui.
Pot construi un server OPC UA în Python?
Da: asyncua include o implementare completă de server, utilă pentru simulatoare și teste.
Ce este un NodeId?
Adresa unică a unui nod, de ex.ns=2;i=2(indice de namespace 2, identificator întreg 2) sauns=3;s=Temperature(identificator de tip șir).

Ultima actualizare 4 septembrie 2026 · Resursă educațională. Numele de biblioteci sunt mărci comerciale ale deținătorilor lor.

Urmează: OPC UA & PLC-uri (Siemens TIA Portal) →

Descărcare gratuită
Listă de verificare OPC UA pentru depanare și integrare
Lista de verificare testată în teren pe care o folosesc inginerii pentru a diagnostica rapid problemele de certificate, porturi și spații de nume, plus un șablon de client Python (asyncua).
Obțineți lista de verificare gratuită →
Gratuit, fără curs, fără autentificare