KRC1 Bearbeitungsrichtung um 30 Grad versetzt

  • Hallo Boardmitglieder


    Folgendes Szenario.
    KRC1 - Base am Werkstück vermessen. X - Y = Ebene - Z = Tiefe
    Als Tool ist eine Spindel mit Bohrer montiert. Auch vermessen.


    Nun werden mehrere Koordinaten per OPC überreicht.
    Der Robby verfährt nun auf die Koordinaten und macht dort jeweils in Z-Richtung ein Sackloch.
    Das funktioniert bestens.


    Nun möchte ich mit einem neuen Satz Koordinaten neben den vorhandenen Bohrungen weitere Sacklöcher machen, aber um 20 Grad verschoben.
    D.h. das Werkzeug müsste B oder C um 20 Grad ändern.


    Wie komme ich da am schnellsten zum Erfog ?

    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.<br />Albert Einstein

  • Schritt für Schritt zum Roboterprofi!
  • Zur Erläuterung des Problems hier ein Teil des verwendeten Kodecs.


    Die Punkte werden alle richtig angefahren.
    Aber das Tool bewegt sich nicht in Stossrichtung sondern nach wie vor senkrecht zur Oberfläche.
    Der einzige Effekt der eintritt ist, dass Z negiert wird.


    Kann mir vielleicht jemand sagen, wo der Knopf in meiner Logik ist ?



    BASE_FLAT=BASE_SELECT:BASEW


    $BASE=BASE_FLAT ;Our primary $BASE

    TOOL_DATA[12].C = TOOL_DATA[12].C - 20
    TOOL_TYPE[12] = #BASE
    BAS (#TOOL,12 ) ;preset velocities, acceleration etc


    $IPO_MODE = #TOOL


    FOR J = Z_START TO I
    CUTPOS = CP[J]
    IF MAT_DEPTH > 0 THEN
    Z_END = MAT_DEPTH
    CUTPOS.Z = -10
    ELSE
    Z_END = CP[J].Z
    CUTPOS.Z = -10
    ENDIF

    LIN CUTPOS C_DIS

    CUTPOS.Z=CUTPOS.Z+8

    LIN CUTPOS

    $VEL.CP=0.002 ;slow down vel
    CUTPOS.Z=CUTPOS.Z+2

    LIN CUTPOS ;move to top of part

    CUTPOS.Z=CUTPOS.Z+Z_END ;stop fast drilling 2mm before being through

    LIN CUTPOS

    CUTPOS.Z=CUTPOS.Z-Z_END ;back above part
    $VEL.CP=0.01 ;accel velocity little bit

    LIN CUTPOS ;slowly out of the workpiece

    CUTPOS.Z=CUTPOS.Z-10-(Z_END*2) ;far above part
    $VEL.CP=0.8 ;reset speed

    LIN CUTPOS ;and above the part

    STOP_START () ;check for debris left
    ENDFOR


    $IPO_MODE = #BASE

    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.<br />Albert Einstein

  • Hallo,


    vermute mal, dass du die Stoßbewegungen (hin und rück) im TOOL Koordinatensystem fahren musst und nicht im BASE. Hab das damals auch schon mal gemacht, bekomme es ohne Nachschlagen jetzt aber nicht hin es hier zu beschreiben :pfeif:. Das Forum bietet zu dem Thema aber auch einiges...


    EDIT: guckstu hier
    http://www.roboterforum.de/rob…inatensystem-t5981.0.html

    Es grüßt<br /><br />der Nils

    Einmal editiert, zuletzt von ROBOter_Nils ()

  • Hi,
    ich glaube, daß dein Problem darin liegt, daß deine Position die du anfahren willst ihre Richtung immer noch senkrecht zur Oberfläche hat.
    Deshalb solltest du nicht das Tool drehen sondern die Position selbst mit einem Doppelpunktoperator drehen. Dann fährt der Roboter die gedrehten Positionen an:


    p1={X -106.182,Y -0.180,Z 574.515,A -180.0000,B -40.0000,C -90.0000}:{x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 20.0}
    oder:
    p1=p1:{x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 20.0}


    somit drehst die position p1 um 20 Grad um das Koordinatensystem der Position selbst. ( Hoffe ich zumindest )


    Sollte so gehen, hab's aber selbst in diesem Fall noch nicht ausprobiert.
    Werd's morgen selber mal testen. Oder gib mir Bescheid wenn's geklappt hat.

  • Viel Probier und studier.
    So hats für mich funktioniert.


    FOR J = Z_START TO I
    CUTPOS = CP[J]
    IF MAT_DEPTH > 0 THEN
    Z_END = MAT_DEPTH
    ELSE
    Z_END = CP[J].Z
    ENDIF

    CUTPOS.Z = 5

    LIN CUTPOS C_DIS

    CUTPOS.Z=CUTPOS.Z-3

    LIN CUTPOS

    $VEL.CP=0.002 ;slow down vel
    CUTPOS.Z=CUTPOS.Z-2

    LIN CUTPOS ;move to top of part

    CUTPOS = CUTPOS:{x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c -30.0}

    LIN CUTPOS

    $IPO_MODE = #TCP

    CUTPOS.Z=CUTPOS.Z-Z_END

    ;LIN CUTPOS

    RELPOS = $NULLFRAME
    RELPOS.Z = Z_END
    LIN_REL RELPOS


    CUTPOS.Z=CUTPOS.Z+Z_END ;reset Z coordinate to be 20 mm above part
    $VEL.CP=0.01 ;accel vel little bit

    ;LIN CUTPOS ;slowly out of the part

    RELPOS.Z = RELPOS.Z * (-1)
    LIN_REL RELPOS
    ;LIN $POS_ACT:RELPOS

    $IPO_MODE = #BASE

    CUTPOS = CUTPOS:{x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 30.0}

    LIN CUTPOS

    CUTPOS.Z=CUTPOS.Z+10+(Z_END*2) ;reset Z coordinate to be 20 mm above part
    $VEL.CP=0.8 ;reset speed

    LIN CUTPOS ;and far above the part

    STOP_START ()


    ENDFOR


    Vielen Dank für die Gedankenanstöße -manchmal hat mans wirklich nötig

    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.<br />Albert Einstein

  • Für den, den es interessiert


    Im wesentlichen kommt es nur auf Ipo_mode und lin_rel drauf an.
    Hoffe folgender Codec ist soweit verständlich.



    CUTPOS=irgendeinFRame ; (x,y,z,a,b,c) kann beliebige Werte enthalten

    LIN CUTPOS ;verfährt nach der normalen Base d.h. Tool lotrecht zur Oberfläche
    ;auch wenn z.Bsp. C=20 dann erfolgt Bewegung nach Z senkrecht !
    $IPO_MODE = #TCP ;umschalten auf Werkzeug Bezugssystem

    RELPOS = $NULLFRAME
    RELPOS.Z = Z_END
    LIN_REL RELPOS ;verfährt nun nach dem Werkzeug - wenn C = 20 dann Bewegung
    ;nach Z in diesem Winkel zur Oberfläche


    RELPOS.Z = RELPOS.Z * (-1)
    LIN_REL RELPOS ;Bewegung retour

    $IPO_MODE = #BASE ;Umschalten auf normale Base

    CUTPOS=irgendeinframe

    LIN CUTPOS ;Bewegung wieder wie am Anfang


    Danke nochmal für die Tipps
    Tschau Roland

    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.<br />Albert Einstein

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