Winkel mit gesetztem TCP im Koordinatensystem anfahren?

  • Hallo liebe Community,


    Ich habe ein Problem zum Roboter “MELFA Mitsubishi RV-3SB„ und zwar möchte ich in einem Koordinatensystem bestimmte Winkel um den TCP fahren. Das seltsame ist, dass es mit einer Achse funktioniert und auf anderen überhaupt nicht.


    Wie gesagt habe ich einen festen Punkt (TCP) in meinem Koordinatensystem um diesem möchte ich horizontal und vertikal (falls möglich auch diagonal) bestimmte Winkel abfahren.


    Bislang habe ich es so gemacht:


    10 TOOL(+550,+10.00,+72.00,+0.00,+0.00,+0.00) ‘festlegung des TCP
    20 OVRD 10 ‘ geschwindikeit limitiert
    30 PREC ON ‘ präzision ein
    40 M2 = 0 ‘ variable 2 null gesetzt
    50 MOV P1 ‘ startposition anfahren
    60 DLY 2 ‘ warten
    70 OPEN "COM3:" AS #1 ‘ tcp/ip schnittstelle init
    80 INPUT #1,M1 ‘ einlesen in variable 1
    90 SELECT M1 ‘ fälle abgleichen
    100 CASE 2
    110 IF P_CURR.A >= -90 THEN ‘ abgleich für vorzeichen
    120 M2 = M2 - 0.5
    130 PRINT #1,"Eingegeben: -0.5[°]";" ---> "
    140 PRINT #1,"Aktueller Wert:";M2;"[°]";CR$
    150 P5 = (,,,,+0.50) ‘ positionsvariable
    160 P6 = P_CURR ‘ aktuelle pos
    170 P7 = P6 / P5 ‘ paktuell – p5
    180 MOV P7
    190 ELSE
    200 M2 = M2 - 0.5
    210 PRINT #1,"Eingegeben: -0.5[°]";" ---> "
    220 PRINT #1,"Aktueller Wert:";M2;"[°]"
    230 P5 = (,,,,+0.50)
    240 P6 = P_CURR
    250 P7 = P6 * P5
    260 MOV P7
    270 ENDIF
    280 BREAK

    Dies funktioniert auch sehr gut für das abfahren auf einem Kreisbogen auf einer Achse. Allerdings möchte ich nun wie bereits erwähnt nicht nur horizontal sondern vertikal den Arm bewegen können.


    Theoretisch müsste ich dazu doch „nur“ die Positionsvariable P5 wie folgt definieren


    P5 = (0,0,0,0,0,0.5) da ja (x,y,z,a,b,c) gilt oder?


    Wenn ich dies ändere, passiert leider herzlich wenig aber warum?


    Wenn ich manuell also im teach-modus „TOOL“ die verschiedenen Achsen abfahre ist für die horizontale B und für die vertikale C zu verändern.


    Auch würde ich gern eine diagonal die Winkel abfahren dazu sollte ich doch einfach beide Werte für B und C erhöhen bzw. verringern z.B.


    P5 = (0,0,0,0,0.5,0.5)



    Vielen Dank im voraus


    Grüße


    dreadek

  • ANZEIGE
  • Hallo,


    also ich habe gewisse Schwierigkeiten damit zu verstehen, was das Programm eigentlich für Bewegungen macht.


    P_CURR * (,,,,+0.50) ist wenn ich die Kommas richtig zähle, eine Rotation um die Tool Y-Achse. (Man könnte ja vielleicht mal P5.B = 0.50 schreiben, dann sieht man wenigstens welcher Winkel da gesetzt wird, ohne das man die Kommas zählen muss.)


    Aber P_CURR / (,,,,+0.50) ist doch das gleiche wie P_CURR * INV((,,,,+0.50)) oder :denk:
    Ist das jetzt eine andere Bewegung als P_CURR * (,,,,-0.50) ? :kopfkratz:


    Und allgemein P_CURR * (,,,,0.50,0.50) bedeutet: Er nimmt die aktuelle Position als Basiskoordinatensystem, dreht es um dessen Z-Achse und dann das resultierende System um dessen Y-Achse. :denk:


    Etwas verwirrte Grüße :zwink:


    Urmel

    Einmal editiert, zuletzt von Urmel ()

  • hmm das mit P5.B=0.5 ist ne gute idee werd sie gleich mal ausprobieren.


    naja P_CURR*P5 ist ja die konvertierte bewegung in positive richtung auf der achse und P_CURR/P5 die negative... soweit ich das skript richtig verstanden habe =)


    wenn ich nun ein simples koordinaten system habe und den arm nicht nur auf der x und y achse verschieben wollte sondern z.b. y=x (diagonal) wie müsste ich es den programmieren? :-|


    hier eine kleine skizze die nur eine achse darstellt:




    danke und grüße


    ---------------------------- aktualisierung ^^


    hmm das mit P5.B = 5 klappt zwar, daraufhin steht allerdings in P5 wenn ich es ausgeben lasse:


    P5=(0,0,0,0,286,0,0,0) mit


    P6=(0,0,0,0,0,0)
    P7=P6+P5


    kann es sein, dass es ein Problem mit der winkelumrechnung sein könnte? :huh:


    gekoppelt mit der fehlermeldung "illegal position data (dstn)" könnte daran liegen, dass der wert/winkel zu groß ist für die reichweite... aber warum ist 5 nicht gleich 5 ^^


    -----------------------------------------------------------------


    sooo habs endlich hinbekommen...


    leider hat das mit der eleganteren Lösung P5.B=x nicht geklappt... da leider der wert immer falsch in die positionsvariable reingeschrieben wurde...


    aber um ehrlich zu sein weiss ich nicht, was ich nun anders gemacht habe als bei dem vorläuferprogramm.... manchmal ists dann doch besser alles neu zu machen =)


    vielen dank aber für die anregung!


    grüße


    dreadek :roll:

    Einmal editiert, zuletzt von dreadek ()

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