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

Ergebnis 1 bis 9 von 9

Thema: Namensräume von OPC UA/C++

  1. #1
    Registriert seit
    26.03.2013
    Beiträge
    7
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo SPS-Forum,

    ich habe eine Verständnisfrage hinsichtlich der Namensräume von OPC UA bzw. geht es darum das ich z.Z. ein Praktikum mache und einen OPC UA Client entwickeln soll. Die Entwicklung geschieht in C++ und wird vom Softing Tutorial geleitet...Nun bin ich an der Stelle das ich mich wunderbar mit meinem OPC Server verbinden kann, jetzt gibt es die Möglichkeit einen Pfad im Server zu browsen anhand der translatebrowsepath Funktion...Problem ist das ich mir zigtausend kombinationen für die Syntax schon ausgedacht habe um den Pfad entlang zu gehen. Ich habe gestern in der Siemens Doku gelesen das der Ordner von dem ich runtergehen möchte den Namensraum "4" hat, hab auch schon im OPC Scout geguckt wie ich den Pfad weiter komme, aber das will einfach nicht funktionieren vielleicht kann mir einer von euch helfen?? Zur besseren verständlichkeit Poste ich mal den Auszug der translate Funktion:

    Code:
    // an array of borwse paths that shall be translated 
    std::vector<tstring> browsePaths;
    // the nodes where the paths shall start 
    std::vector<tstring> startingNodes;
    // and a result array for the call. 
    std::vector<BrowsePathResult> browsePathResult;
            
            
            browsePaths.push_back(_T("/4:TEST/PLC/DAT_RD"));
            startingNodes.push_back(_T("ns=4;s=SYM:"));
    Auf das Server Object was ja jeder OPC UA Server haben muss kann ich zugreifen, aber das will einfach nicht...

    Aller besten Dank im voraus
    Zitieren Zitieren Namensräume von OPC UA/C++  

  2. #2
    OPCnoob ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.03.2013
    Beiträge
    7
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    So,

    auf den S7: Ordner kann ich browsen auf den SYM nicht!?!?einer ne Erklärung? hier mal das Codesnippet:
    Code:
    browsePaths.push_back(_T("/2:@LOCALSERVER/2:blocks/2:db/2:db1"));     //funktioniert
    browsePaths.push_back(_T("/4:TEST/4:PLC"));                                           //funktioniert nicht
    
            
    startingNodes.push_back(_T("ns=2;s=S7:"));       //funktioniert
    startingNodes.push_back(_T("ns=4;s=SYM:"));     //funktioniert nicht
    also ich verstehs einfach nicht xD das hat mich einfach mal übelst zeit gebraucht um mal auf die Idee zu kommen vor jedem Ordner den Namespace Index zu setzen....
    und warum funktioniert das nicht für den SYM: Ordner ist der irgendwie anders??

    im Endeffekt gehts mir eig. darum den Pfad zu finden(also in seiner korrekten schreibweise) um die read() funktion endlich benutzen zu können - weil die will auch nur mit dem richtigen string arbeiten...
    Zitieren Zitieren der eine Ordner klappt der andere nicht  

  3. #3
    Registriert seit
    29.03.2004
    Beiträge
    5.731
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Hast du denn Symbole im Server angelegt oder importiert? Vielleicht sind einfach nur keine Symbole vorhanden.

    Such mal hier im Forum nach Beträgen vom Dr. OPC
    http://www.sps-forum.de/member.php/20019-Dr.-OPC

    der hat zu der Thematik einige gute Beiträge geschrieben.

    Zu den Namensräumen z.B. hier:
    http://www.sps-forum.de/showthread.p...-Opc-Ua-Server

  4. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    OPCnoob (26.03.2013)

  5. #4
    OPCnoob ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.03.2013
    Beiträge
    7
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also ich selber habe den Server nicht aufgesetzt, aber soweit ich weiß(sofern ich mich jetzt nicht irre) wurden die Symbole alle durch eine .xdb datei geladen oder anders. Auf jedenfall sind Symbole und Variablen in dem oben angegebenen Pfad drin, welche ich auch mit dem OPC Scout sehen kann(sehen im sinne von die Werte ändern sich von 0 auf 1 ) im OPC Scout hab ich auch nochmals nach dem Namespace Index geguckt und er scheint wirklich "4" zu sein,also für den SYM: Ordner , deshalb verstehe ich nicht wie ich auf den S7: knoten browsen kann und auf den SYM: Ordner nicht?? Das Toolkit was hier verwendet wird ist ja das von Softing sprich ich hab auch ne Doku....aber das wird nicht beschrieben wie ich super auf den von Siemens spezifischen objects browsen bzw. lesen kann... heheh das is schon der knaller...

    danke auf jedenfall erstmal für eine schnelle antwort die ich nciht in dem zeitrahmen angenommen habe!!!

  6. #5
    OPCnoob ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.03.2013
    Beiträge
    7
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    So,

    andere Frage: Was könnte denn der Grund dafür sein, das wenn ich versuche auf dem SYM: Ordner zu browsen, das er mir als Fehlermeldung "BadNodeIDunknown" ausgibt? Mir ist klar was die Fehlermeldung bedeutet, dennoch macht es meiner Meinung keinen Sinn das sie kommt,
    da:

    1) der korrekte namespace angegeben ist => welcher im OPCscout nachzulesen ist
    2) der string auch korrekt angegeben wurde nämlich: SYM:
    3) so und nun durch meine neue erkenntnis wie auch bei dem S7: Ordner jeden Pfad bzw. neuen Ordner mit dem Namespaceindex angegeben habe
    zur einfachheit halber wollte ich sogar nur einen Ordner runter browsen, aber das will nicht.
    Also was könnte das Problem sein??OPCScout zeigt mir ja den Ordner und dem sein Inhalt an, ich kann ja auch die Variablen sehen wie sie ihre Werte ändern...
    Kann es sein das der SYM Ordner vllt wirklich nicht im Adressraum definiert ist, aber das macht doch auch keinen sinn...

    Ok beste grüße

  7. #6
    OPCnoob ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.03.2013
    Beiträge
    7
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Kann mir denn keiner helfen???Ähnliches Problem oder was auch immer das ich hier mal voran komme...

  8. #7
    Registriert seit
    27.10.2009
    Beiträge
    317
    Danke
    0
    Erhielt 64 Danke für 54 Beiträge

    Standard

    Zunächst mal würde ich Dir folgendes Dokument empfehlen:
    Siemens Customer Support (http://support.automation.siemens.com) dort suchen nach: Beitrags-ID:42014088

    Ich vermute stark das du den "SYM:" innerhalb des NodeIDStrings weglassen musst. Wenn der drin bleibt, geht es nicht und der Server Antwortet (völlig zurecht) das diese Node nicht existiert. Das mit dem Namespace Index solltest du auch verstehen, den darf man nicht hardcoden, denn (theoretisch) darf der sich auch ändern (nicht zur Laufzeit aber wenn der Sever neu startet).

    Damit du nicht so viel rum probieren musst und raten, solltest du dir den UaExpert (Home*-*Unified Automation) runterladen. Der macht a) alles richtig und hat b) ein Fenster in dem man alle Attribute sehen kann wenn man auf einen Knoten browsed und c) in einem weiteren Fenster sehen kann welche Referenzen von diesem Knoten zum nächsten führen. Insgesamt sehr praktisch.
    Geändert von Dr. OPC (27.03.2013 um 21:08 Uhr)

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

    OPCnoob (28.03.2013)

  10. #8
    OPCnoob ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.03.2013
    Beiträge
    7
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also erstmal dickes danke!!!
    Die PDF hatte ich auch schon gefunden bzw. halb gelesen.

    Du hattest recht das man den "SYM:" string weg lassen muss, was ich daran aber nicht ganz verstehe ist das diese Angabe ja für den "S7:" Ordner geklappt hat, bloß nihct für den "SYM:" . Also das mit den hardcoden verstehe ich soweit, sofern es ein anderer Server als der von Siemens ist, da dort ja der Index fest vorgegeben ist. Sofern das ein anderer Anbieter ist verstehe ich das da ja das dann anders vergeben ist. Also du hast schon recht das man das nicht machen sollte!!

    Ähm ja UaExpert schon längst ausprobiert und bin der Meinung dass von der Funktionalität die du oben angepriesen hast, dass das auch mit dem OPCScout V10 funktioniert.

    Wenn wir gerade schon bei Probleme lösen sind, vllt hast du ja auf meine nächste Frage auch eine Antwort. Und zwar möchte ich ja auch die Variablen aus dem einen bestimmten Ordner auslesen, aber die readVariables Funktion bekommt es zur Zeit nicht einmal hin auf das Server Objects zulesen, obwohl das Lokal mit dem TestServer von Softing einwandfrei funktioniert hat. Hier mal der Auszug vom Code:

    Code:
    // find the folder containing the variables. 
         if(0 != findNodes(NodeId(0, EnumNumericNodeId_ObjectsFolder), res, browsedNodes, _T("Server"), EnumNodeClass_Object))
        {
            _tprintf(_T("Error finding \"\"nodes....\n"));
            return -1;
        }
    also eig. will ich ja genau auf diesen Pfad hier lesen:
    (_T("/4:TEST/4:PLC/4AT_RD"));

    Ich danke Vielmals

  11. #9
    OPCnoob ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.03.2013
    Beiträge
    7
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So das mit der readVariables Funktion klappt nun soweit erstmal, habs irgendwie verpeilt, das richtig mit dem Namespace Index und dem StartOrdner korrekt anzugeben. Hier wäre einmal das wie es nun erstmal richtig wäre, um die Variablen zu lesen:

    Code:
    // find the folder containing the variables. 
         if(0 != findNodes(NodeId(4, "TEST"), res, browsedNodes, _T("DAT_RD"), EnumNodeClass_Object))
        {
            _tprintf(_T("Error finding \"\"nodes....\n"));
            return -1;
        }
    so jetzt kommt die eig. Aufgabe, das man das alles nicht hardcoded sondern im Terminal eingeben kann

    Ok danke erstmal für die Tips!!

Ähnliche Themen

  1. OPC Server von Codesys
    Von Norton im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 23.08.2011, 13:18
  2. OPC Tunneller von MatrikonOPC mit Unterstützung von Alarmen und Ereignissen
    Von OPCNews im Forum Werbung und Produktneuheiten
    Antworten: 0
    Letzter Beitrag: 17.08.2011, 09:41
  3. Antworten: 2
    Letzter Beitrag: 31.08.2010, 11:31
  4. Simatic NET OPC-Server - Schreiben von OPC-Items ist zu langsam
    Von christian_a im Forum Hochsprachen - OPC
    Antworten: 3
    Letzter Beitrag: 28.02.2009, 11:13
  5. Antworten: 1
    Letzter Beitrag: 04.12.2006, 16:30

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •