OPC VarType RealArry

  • Hallo zusammen,


    Ich versuche gerade verzweifelt bei dem KUKA OPC einzustellen, das mir ein Array mit sechs Real Werten auf einmal empfangen wird. Hat jemand eine Ahnung wie das aussehen könnte. Ich habe es, in der xml-Konfigurationsdatei so probiert:
    <Var>
    <CrossName>vPos</CrossName>
    <ItemName>vPos</ItemName>
    <VarType>RealArray>/VarType>
    <AccessType>rw</AccessType>
    </Var>


    Aber damit lässt sich noch nicht mal die OPC Diagnose Software öffnen. Jemand eine Idee?


    Gruss
    lambert

  • Schritt für Schritt zum Roboterprofi!
  • Hallo,


    RealArrays koennen nicht beschrieben werden. Bei AccesType das "rw" durch "r" ersetzen. Für Schreiben muessen die Elemente einzeln angesprochen werden.


    Zum Testen kannst Du unter Services den OPC Server anhalten (bzw. er wird so nicht laufen), die Konfigdatei entsprechend abaendern und den Server wieder neu starten.


    Danach sollte es einwandfrei funktionien.


    mfg


    MOM

  • Ja. Inzwischen habe ich es probiert. Es stimmt. Leider werden mir die Punkte sehr langsam übertragen wenn ich das einzeln mache. Und ich hoffe das liegt an einem zu großen Telegramkopf. Wenn ich alles auf einmal schicken würde, würde ich also 5 Telegramköpfe weniger übertragen müssen.
    Ich habe in der KUKA Anleitung gelesen, und ausprobiert, den VarType "Struct" zu beschreiben. Also, ich könnte diesen Typen zumindest auf "rw" setzen. Aber mir fehlt leider vollkommen, jede Idee wie ich ein Struct auf der Clientseite realisiere. Ich meine, Struct ist sehr abhängig von der verwendeten Sprache, oder?


    Gruss
    lambert

  • Hallo lambert,


    was heisst hier einzeln?


    zuerst die wichtigste Frage: Willst du lesen und schreiben, oder nur lesen?


    Alle mehrdimensionele Elemente (Struct, array, usw.) kannst du in einem Rutsch lesen! Zum Schreiben muessen diese Elemete aufgeteilt werden!
    Lesen ueber Struct oderr RealArray; Schreiben: Pro Element!


    Beispiel: $OUT[] Lesen alles; Schreiben: $OUT[1], $OUT[2] usw.


    Fuer asynchrones Lesen musst Du zusaetzlich die Updaterate fuer die Gruppe entsprechend einstellen (hier 200ms).


    Wo steht das in der KUKA Doku, dass Du Struct beschreiben kannst?


    Beim Lesen bekommst Du quasi einen String zurueck; diesen String musst Du entsprechend aufteilen; beim Schreiben ist es einfacher, da Du elementeweise schreibst und daher eine direkte Zuordnung hast:


    Beispiel lesen: myFrame = {Frame: x 1, Y 2, usw.}
    schreiben: myFrame.x = 12.0;


    Structuren gibt es in jeder Programmiersprache,; sie heissen vielleicht anders (z. B. Pascal: Record).


    Welche Programmiersprache verwendest Du? Eventuell kann ich Dir entsprechende Beispiele liefern!

  • Hallo MOM,


    Ich versuche von einem normalen PC aus 6D-Koordinaten zum Roboter zu übertragen. Anhand dieser Koordinaten soll er sich bewegen. Im moment spiele ich die Koordinaten einzeln rüber. Also ich habe für jede Koordinate einen XML-Tag mit dem VarType "Real". Das Problem ist, dass es "lange" dauert bis die Koordinaten auf der Steuerung ankommen. Ich habe nun die Annahme das es an dem Header liegt, der bei jeder Kommunikation mit geschickt wird. Könnte ich nun alle Koordinaten auf einmal schicken wäre das ja logischerweise nur ein fünftel des Headers (also, falls meine Theorie stimmt und der Header für die Trägheit verantwortlich ist).
    Das man den Stuct beschreiben kann habe ich ehr experimentel herausgefunden. Ich habe den Tag in der XML-Konfiguration auf "rw" gestellt und die Diagnosesoftware konnten den Tag noch lesen. Wenn ich das beim RealArray gemacht habe, ist die Diagnosesoftware sofort abgestürzt (übrigends schön von KUKA das sie so eine Exception nicht fangen).
    Also, ich benutze C#. Und da gibt es natürlich auch den Datentypen "struct". Allerdings gibt es den nicht in der OPC-Bibliothek die wir benutzen. Da gibt es allerdings den Typen "any" und "object". Ist nun also die Frage, ob man die Daten in C# in ein "any" typecastet und der Roboter die wieder zurück casten kann.
    Also wenn du da irgendwelche Code-Schnippsel für mich hast, bin ich dir natürlich extrem dankbar.


    Gruss
    Franz

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden