Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Results 1 to 9 of 9

Thread: OPC UA Node ID

  1. #1
    Join Date
    30.08.2018
    Posts
    10
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,

    ich bin gerade dabei über ein Python Skript auf den OPC UA Server einer CPU 1511 zu zugreifen. Die Verbindung zum Server funktioniert einwandfrei und ich kann auch diverse Daten / Information abrufen aber sobald ich über mein Python Skript auf eine Datenbaustein Variable zugreifen will bekomme ich folgende Fehlermeldung :

    "BadNodeIdUnknown: The node id refers to a node that does not exist in the server address space.(BadNodeIdUnknown)"

    Wenn ich über OPC UA Expert auf die Variable zugreife, sehe ich die aktualisierte Variable mit der dementsprechenden Node ID (siehe Bild)

    OPC.JPG


    Sobald ich über mein Python Skript zugreifen will, erkennt das Skript die Node ID nicht.

    Code:
    import time
    from opcua import Client
    
    url = "opc.tcp://192.168.100.164:4840"
    client = Client(url)
    
    client.connect()
    print("Client Connected")
    while True:
         
        Temp = client.get_node("ns=3;s=:Daten.real_01")
        Temperature = Temp.get_value()
        print(Temperature)
        
        time.sleep(1)
    Wäre sehr dankbar wenn mir jemand einen Tipp geben könnte wo sich hier der Fehlerteufel eingeschlichen hat...

    PS: Gibt es hier im Forum Gleichgesinnte welche sich auch mit dem Thema OPC UA und Python bzw. OPC UA und Cloud Synchronisation beschäftigen....?

    ROB
    Reply With Quote Reply With Quote OPC UA Node ID  

  2. #2
    Join Date
    27.10.2009
    Posts
    333
    Danke
    0
    Erhielt 66 Danke für 56 Beiträge

    Default

    Hallo ROB,

    Die Gänsefüßchen (siehe Bild vom UaExpert) gehören dazu. Deshalb ist deine NodeID falsch und der (Siemens)-UA-Server lehnt sie mit "BadUnknown" ab.

  3. #3
    TheBird is offline Neuer Benutzer
    Themenstarter
    Join Date
    30.08.2018
    Posts
    10
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Default

    Hallo Dr. OPC,

    danke für deine Antwort, sobald ich die Gänsefüßchen hinzufüge ("ns=3;s="Daten"."real_01"") bekomme ich von Python einen Syntax Fehler angezeigt.

  4. #4
    Join Date
    18.09.2004
    Location
    Münsterland/NRW
    Posts
    5,012
    Danke
    782
    Erhielt 1,214 Danke für 1,013 Beiträge

    Default

    Probiere mal
    Code:
    ('ns=3;s="Daten"."real_01"')
    Also die äusseren "durch ' ersetzen

  5. Folgender Benutzer sagt Danke zu marlob für den nützlichen Beitrag:

    TheBird (11.04.2019)

  6. #5
    TheBird is offline Neuer Benutzer
    Themenstarter
    Join Date
    30.08.2018
    Posts
    10
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Default

    Hallo Marlob,

    danke für den Tipp, das war die Lösung....funktioniert jetzt einwandfrei

    Sag mal, gibt es eigentlich eine Art "Suchfunktion" wenn ich nur die Adresse vom OPC UA Server habe, welche Daten der Server zur Verfügung stellt....? wenn ja wie kann man diese Anwenden..?

  7. #6
    Join Date
    27.10.2009
    Posts
    333
    Danke
    0
    Erhielt 66 Danke für 56 Beiträge

    Default

    Für diese Frage müsstest du eigentlich einen neuen Thread starten, aber in kurz:
    1) ja gibt es, die erste Funktion heisst FindServers bzw. FindServersOnNetwork, und wird immer zum Port 4840 gerufen
    2) Voraussetzung ist, dass dort ein LDS (Local Discovery Server) läuft, bei dem sich alle anderen Server registriert haben (oder dort läuft der einzige Server den es gibt, z.B. S7-1500).
    3) wenn Du dann die "Kontaktdaten" von deinem Servergefunden hast (EndpointURL)
    4) verbindest du dich und kannst diesen "Browsen" (mit dem BrowseService kannst du allen Referenzen folgen, wenn du den hierarchischen Referenzen folgst, kannst du durch den Addressraum "navigieren").
    5) die NodeIDs, die dich interessieren, kannst du dann "beobachten" oder "schreiben", (oder "lesen"). Aber Beobachten ist immer dem Lesen vorzuziehen, da es für den Server weniger anstrengend ist).
    6) zum "Beobachten", musst du CreateSubscription aufrufen und mit CreateMonitoredItems die items hinzufügen, die du lesen willst.

    Das oben gezeigte Beispiel (eine einzelne Variable in einer WhileSchleife zyklisch Lesen mit einem Sleep) ist mit Abstand das Schlechteste (für den Server) was man tun kann. Ich bin nicht sicher ob die Entwickler der Phyton-Bibliothek, alle schönen OPC UA Funktionen bereits anbieten. Diese "Vereinfachung" des Read jedenfalls ist nicht optimal.

    Es gibt noch eine weitere Phyton-Bibliothek auf GIT (die heisst: UAF) und diese ist ein Wrapper für die kommerzielle C++Bibliothek von Unified Automation. Das kostet dann zwar Geld, aber man kann auch alle OPC UA Features sinnvoll nutzen von Phyton aus.
    Last edited by Dr. OPC; 11.04.2019 at 09:18.

  8. Folgender Benutzer sagt Danke zu Dr. OPC für den nützlichen Beitrag:

    Blockmove (14.04.2019)

  9. #7
    TheBird is offline Neuer Benutzer
    Themenstarter
    Join Date
    30.08.2018
    Posts
    10
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Default

    Guten morgen,

    vielen Dank für die Erklärung und die Tipps.... da ich mich in Materie OPC UA und Python erst einarbeiten muss sind solche Hinweise sehr hilfreich.

  10. #8
    Join Date
    19.04.2021
    Posts
    1
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default

    Hallo,
    ich habe das gleiche Problem wie TheBird nur programmiere ich in c#. Durch das ersetzen der äußeren " durch ' kam der Fehler "zu viele Zeichen im Zeichenliteral" . Wie kann ich diesen Fehler umgehen?

    schonmal vielen Dank im voraus!

  11. #9
    Join Date
    24.04.2019
    Posts
    85
    Danke
    5
    Erhielt 16 Danke für 14 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich sehe jetzt deinen Code nicht, aber in C# gibtst du mit 'x' einen Char an und mit "x" einen String. Ich würde stattdessen escapen. Das geht mittels \

Similar Threads

  1. TP400Comfort OPC UA Server - Node-Red OPC-UA Client
    By fingercross in forum Hochsprachen - OPC
    Replies: 1
    Last Post: 11.10.2019, 12:52
  2. Node Red im Einsatz?
    By blimaa in forum PC- und Netzwerktechnik
    Replies: 5
    Last Post: 09.09.2019, 11:14
  3. Node Red OPC UA
    By Hendrik in forum CODESYS und IEC61131
    Replies: 4
    Last Post: 18.07.2018, 13:00
  4. Sonstiges REAL Variable mit Node-RED
    By Bachelor_OS2017 in forum Simatic
    Replies: 2
    Last Post: 06.04.2017, 15:15
  5. TC3.1 OPC-UA Methoden Node
    By kiwi84 in forum CODESYS und IEC61131
    Replies: 6
    Last Post: 13.10.2016, 15:15

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •