Genauer Achswert wird nicht angefahren (Roboter hält an einem vielfachen der Zielposition)

  • Hallo zusammen,


    ich habe folgendes Problem und hoffe ihr könnt mir hier weiterhelfen:


    Ich habe ein Programm geschrieben, bei dem mit der A4 und A6 in große Achswerte (z.b. 1000°), also mit mehrfacher Umdrehung fahren will. Dazu habe ich in der machine.dat entsprechend die Achswerte auf endlos gestellt (siehe unten). Die Rotation per Handbetrieb funktioniert soweit wunderbar (über die Standardachsgrenzen hinaus). Wenn ich jetzt aber ein Programm abspielen lasse Fährt der Roboter aber nur zum nächstgelegenen vielfachen der Zielposition und führt die mehrfache Rotation nicht aus (siehe angehängte Fotos). Könnt ihr mir sagen was ich noch anpassen muss damit der Roboter in die gewünschten Zielpositionen fährt?


    Viele Grüße und vielen Dank!

    Marc



    Auszug aus machine.dat:

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

    CHAR $V_R1MADA[32]

    $V_R1MADA[]="V6.6.0/KUKA5.2" ;VERSIONSKENNUNG

    INT $TECH_MAX=6 ;MAX. ANZAHL FUNKTIONSGENERATOREN

    INT $NUM_AX=6 ;ACHSEN DES ROBOTERSYSTEMS

    INT $AXIS_TYPE[12] ;ACHSENKENNUNG

    $AXIS_TYPE[1]=3 ;1 = LINEAR, 2 = SPINDEL, 3 = ROTATORISCH, 4 = ENDLICH DREHEND, 5 = ENDLOS

    $AXIS_TYPE[2]=3

    $AXIS_TYPE[3]=3

    $AXIS_TYPE[4]=5

    $AXIS_TYPE[5]=3

    $AXIS_TYPE[6]=5

    $AXIS_TYPE[7]=3

    $AXIS_TYPE[8]=3

    $AXIS_TYPE[9]=3

    $AXIS_TYPE[10]=3

    $AXIS_TYPE[11]=3

    $AXIS_TYPE[12]=3

    DECL FRA $COUP_COMP[6,6] ;ACHSKOPPLUNGSFAKTOR N = ZAEHLER, D = NENNER

    $COUP_COMP[1,2]={N 0,D 1}

    $COUP_COMP[1,3]={N 0,D 1}

    ...

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


    DAT

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

    DEFDAT RobotTask1

    DECL E6AXIS XRobotMotion1={A1 0.0,A2 -90.000002,A3 90.000002,A4 0.0,A5 60.0,A6 0.0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}

    DECL FDAT FRobotMotion1={TOOL_NO 0,BASE_NO 0,IPO_FRAME #BASE,POINT2[] " "}

    DECL PDAT PPDAT1={VEL 50,ACC 100,APO_DIST 0}

    DECL E6AXIS XRobotMotion2={A1 0.0,A2 -90.000002,A3 90.000002,A4 700.0,A5 59.999942,A6 0.0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}

    DECL FDAT FRobotMotion2={TOOL_NO 0,BASE_NO 0,IPO_FRAME #BASE,POINT2[] " "}

    DECL E6AXIS XRobotMotion3={A1 0.0,A2 -90.000002,A3 90.000002,A4 699.999927,A5 59.999942,A6 1000.0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}

    DECL FDAT FRobotMotion3={TOOL_NO 0,BASE_NO 0,IPO_FRAME #BASE,POINT2[] " "}

    DECL E6AXIS XRobotMotion4={A1 0.0,A2 -90.000002,A3 90.000002,A4 -700.0,A5 59.999936,A6 -800.0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}

    DECL FDAT FRobotMotion4={TOOL_NO 0,BASE_NO 0,IPO_FRAME #BASE,POINT2[] " "}

    ENDDAT

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



    SRC

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

    DEF RobotTask1( )

    ;FOLD BASISTECH INI

    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )

    INTERRUPT ON 3

    BAS (#INITMOV,0 )

    ;ENDFOLD (BASISTECH INI)

    ;FOLD PTP RobotMotion1 Vel=50 % PDAT1 Tool[0] Base[0];%{PE}%R 4.1.5,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:RobotMotion1, 3:, 5:50, 7:PDAT1

    $BWDSTART=FALSE

    PDAT_ACT=PPDAT1

    BAS(#PTP_DAT)

    FDAT_ACT=FRobotMotion1

    BAS(#FRAMES)

    BAS(#VEL_PTP,50)

    PTP XRobotMotion1

    ;ENDFOLD

    ;FOLD PTP RobotMotion2 Vel=50 % PDAT1 Tool[0] Base[0];%{PE}%R 4.1.5,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:RobotMotion2, 3:, 5:50, 7:PDAT1

    $BWDSTART=FALSE

    PDAT_ACT=PPDAT1

    BAS(#PTP_DAT)

    FDAT_ACT=FRobotMotion2

    BAS(#FRAMES)

    BAS(#VEL_PTP,50)

    PTP XRobotMotion2

    ;ENDFOLD

    ;FOLD PTP RobotMotion3 Vel=50 % PDAT1 Tool[0] Base[0];%{PE}%R 4.1.5,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:RobotMotion3, 3:, 5:50, 7:PDAT1

    $BWDSTART=FALSE

    PDAT_ACT=PPDAT1

    BAS(#PTP_DAT)

    FDAT_ACT=FRobotMotion3

    BAS(#FRAMES)

    BAS(#VEL_PTP,50)

    PTP XRobotMotion3

    ;ENDFOLD

    ;FOLD PTP RobotMotion4 Vel=50 % PDAT1 Tool[0] Base[0];%{PE}%R 4.1.5,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:RobotMotion4, 3:, 5:50, 7:PDAT1

    $BWDSTART=FALSE

    PDAT_ACT=PPDAT1

    BAS(#PTP_DAT)

    FDAT_ACT=FRobotMotion4

    BAS(#FRAMES)

    BAS(#VEL_PTP,50)

    PTP XRobotMotion4

    ;ENDFOLD

    END

  • Schritt für Schritt zum Roboterprofi!
    • Hilfreich

    Das ist normales Systemverhalten. Endlos drehende Achsen fahren ihre Zielpunkte immer Modulo 360 Grad und kürzesten Weg an. Ausnahmen sind nur mit neueren KRC4 zu haben, was du sicher nicht hast. Also bleibt nur die Bewegung zu stückeln in Bewegungen nahe bei 180 Grad und diese dann mit Überschleifen zu verbinden.


    Fubini

  • Hallo Fubini,


    erstmal danke für deine schnelle Antwort. Ich werde ein größeres Programm aus DELMIA Robotics V5 exportieren. Ich glaube da könnte ich sogar glück haben, weil eine Rotation in zwei LIN und zwei CIRC Befehle aufgeteilt werden. Das werde ich gleich mal testen.


    Gibt es nur die Möglichkeit über 180° Schritte zu gehen? Denkst du mit einer For-Schleife kann ich das Problem dann einigermaßen smart lösen? Und wie müsste die aussehen, das der KUKA sich dann immer weiter in die selbe Richtung dreht? Einfach zwei Motion Befehle mit dem Zielwert und um 180° verschoben?


    VG Marc

  • Wenn du nur CP-Bewegungen hast kannst du auch mehr kommandieren. Die 180 Grad sind eher die Grenze bei PTP falls du immer in der gleichen Richtung eine Achse drehen willst z.B: weil du den Roboter als Bohrer missbrauchst,. Stell dir vor du stehts bei Null und kommandierst PTP {A1 180}. Soll dann die Achse links oder rechtsrum drehen? Bei Winkeln unter 180 Grad ist das eindeutig.


    Einfach am besten mal selbst mit einfachen Programmen testen und schauen was passiert.

  • Hallo fubini,


    die Programme funktionieren mit dem export aus DELMIA Robotics V5 perfekt.

    Gibt es denn eine Möglichkeit die Achswerte wieder zurückzusetzen? (Außer neu zu justieren)

    Meine Programme laufen immer in eine Richtung und ich würde ungern den Roboter am ende des Tages 10min "zurückdrehen" lassen. :D


    VG Marc


  • Diese Problematik haben viele bei Polier- wie Schleifapplikationen.

    Die, die ich kenne, machen es alle über justieren.

    Gewisse machen es einfach in regelmässigen Abständen.

    Gewisse erst, wenn "Überlauf"-Meldung kommt.

    Geht bei "normalen" KUKA's aber relativ lange, bis Du da reinläufst.

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

  • Vorsicht!

    Es kann schon schon vor dem Überlauf zu Problemen kommen.

    Der Roboter verwendet zumindest in den dat files eine konstante Anzahl Stellen für das Speichern der Achswerte (vorkomma + nachkomma = konstant) . D. h. wenn die Achse zigtausend mal in eine Richtung gedreht wurde nimmt die Anzahl der Vorkommastellen zu, die Anzahl der Nachkommastellen ab, so stellen sich dann zunehmend Rundungsfehler ein.

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