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.
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)))
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?
Ce este un NodeId?
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.