SPS: Position in Weltkoordinaten

  • Hallo alle!


    Während ein Programm läuft und den Roboter mit verschiedenen $tool-Variablen durch verschiedene $base-Systeme verfährt, benötige ich in der SPS immer Position und Orientierung in $tool=$nullframe und $base=$nullframe, also direkt vom Handflansch. Ich habe den Verdacht, das ein Ändern von $tool und $base in der SPS die Variablen auch für andere Programme ändert. Was gibt es da für ne Möglichkeit???


    Danke schon mal,


    Kai

    If you and DEAD people can read Hex, how many people can read Hex?

  • Schritt für Schritt zum Roboterprofi!
  • Inverse berechnet doch die Koordinaten mit dem aktuellen Tool und Base, oder?

    IF ROBOTER_STEHT AND SPS_VORHANDEN THEN<br />&nbsp; WHILE NOT ROBOTER_LAEUFT<br />&nbsp; &nbsp; &nbsp; $LOOP_MSG[]=&quot;SPS IST SCHULD!&quot;<br />&nbsp; ENDWHILE<br />&nbsp; $LOOP_MSG[]=&quot;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;<br />ENDIF<br /><br />Geld ohne Arbeit! Keine Arbeit ohne Geld!

  • Hallo,


    Wenn dann wuerde ich die transformation Forward verwenden.
    Der haken ist aber, dass fuer die Trafo $tool und $base verwendet werden.
    Somit kann man gleich $pos_act verwenden - dass macht in diesem Fall aber gar keinen Sinn.


    Gruss Stefan

  • Ich finde in meinen Unterlagen gar nichts über forward und invers.
    :nocheck:
    Hat da jemand was drüber, das er mir zur Verfügung stellen könnte :?:
    Ich hätte ja eigentlich erwartet, das es sowas wie $POS_NULLFRAME oder so gibt, hab aber da ebenfalls nichts finden können. Es würde mir schon reichen, wenn ich die Orientierung erhalten könnte...

    If you and DEAD people can read Hex, how many people can read Hex?

  • Hi, :zwink:


    so gehts:


    DEF forward_inverse( )
    DECL E6AXIS POS1
    DECL E6POS POS2
    DECL INT rat
    DECL INT ret


    PTP HOME
    ret=0
    rat=0
    PTP P1
    POS1=$AXIS_ACT
    POS2=FORWARD(POS1, ret)
    halt
    ret=0
    POS2=$POS_ACT
    halt
    POS1=INVERSE(POS2,POS1,ret)
    Halt
    PTP HOME


    END

  • Hallo Kai,


    Invers und Forward werden Dir kaum weiterhelfen.
    Ersten sind die Funktionen nicht dokumentiert (ich habe sie aber schon mal ausprobiert und da haben sie funktioniert - ich wuerde mir trotzdem dreimal ueberlegen, ob ich sie in einer Produktionsanlage verwende).
    Zweitens hast Du keinen Einfluss, welches Tool verwendet wird - fuer deinen Zweck also sinnlos.
    Einfache Loessung:
    basetransformation: Punktimnullframe=$BASE:Punktimbase
    Mit dem Tool faellt mir auf die Schnelle nur eine Vectoradition ein - aber vielleicht fällt mir noch was besseres ein.


    Probiert hab ich´s natuerlich nicht!!


    Gruss Stefan

  • Hallo Kai,


    hier die vollstaendige Loessung fuer dein Problem:
    Punkt_inBase0=$base : Punkt_inAktBase
    Punkt_inBase0mitTool0=Punkt_inBase0 : $tool


    Die Sache ist getestet und funktioniert (Base war ortogonal zum Weltgoordinatensystem).


    Gruss Stefan

  • Um das $base beizubehalten aber das $tool los zu werden hab ich es mit
    Punkt = $pos_act : $tool
    versucht, aber erfolglos. Punkt enthält dann was völlig anderes als soll.
    Hab ich da was falsch verstanden?

    If you and DEAD people can read Hex, how many people can read Hex?

  • Ach ja: Ne Vektoraddition ist nicht ganz so simpel, der Vektor muss ja noch gedreht werden. Ich hab unter LabView nen kleines Programm geschrieben, das das bewerkstelligt, das nützt aber unter KRL nix. Da benutze ich Rotationsmatritzen, die man in KRL nur sehr umständlich programmieren kann. Naja, wenns nix nützt muss ich halt...

    If you and DEAD people can read Hex, how many people can read Hex?

  • Hallo kai_n


    eine Vektormatrix wird im dem Program "KUE_WEG" im Verzeichnis "C:\KRC\UTIL\KUEWEG" aus den Rotartionswinkels erstellt und umgekehrt.


    :zwink:


    mfg
    notime

    Kontrolle ist eine Illusion, denn niemand weiss was als nächstes passiert.

  • Hey, in dem Verzeichnis war ich glaub ich noch nie!
    Bei dem System gibts ja wohl immer was neues zu entdecken!
    Schau ich mir morgen an, danke!

    If you and DEAD people can read Hex, how many people can read Hex?

  • In dem Fall waren für mich die Winkel das Wichtige, der Winkel des Handflansch ist
    alpha=$pos_act.a + $tool.a
    betha=$pos_act.b + $tool.b
    gamma=$pos_act.c + $tool.c


    Ich hab dann mal sowas versucht, um an die Koordinaten zu kommen (tat aber auch nicht)
    myTool=$tool
    mytool.a=gamma*(-1)
    mytool.b=betha*(-1)
    mytool.c=alpha*(-1)
    Hand=$pos_act:myTool


    Das sollte halt das Tool in der Umgekeherten Richtung drehen, also mit umgekeherten Vorzeichen und invertierter Reihenfolge. Ist für mich zwar nicht mehr wichtig, aber langsam bin ich zu neugierig um auf zu geben.
    Hat jemand noch ne Idee????

    If you and DEAD people can read Hex, how many people can read Hex?

  • Schau noch mal in dem Ordner KUEWEG rein. Dort gibt es eine Funktion INV_FRAME(F). Diese invertiert Dir ein Frame (z.B. Tool).
    z.B.
    FRAME_Tool = $TOOL
    INV_FRAME (FRAME_Tool)
    POS_Flansch = $POS_ACT : FRAME_Tool


    Danach hast Du die Position vom Flansch. Um diese in $BASE = $NULLFRAME zu bekommen, musst Du nur


    POS_Flansch = $BASE:POS_Flansch


    berechnen.

  • Guter Tipp, schau ich mir morgen an.
    Ich hatte das mal probiert, indem ich auch die xyz Komponenten mit -1 multipliziert hab, damit der Vektor in die Gegenrichtung zeigt, aber ganz so simpel scheint es nicht zu sein...

    If you and DEAD people can read Hex, how many people can read Hex?

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