Bewegung abbrechen Kuka KR 16

  • Hallo zusammen,


    ich möchte gerne Glasscheiben aus einer Box mit einem Kuka KR 16 herausholen. Ich dachte ich fahr mit ner LIN Bewegung in die Box gegen die Scheiben, ein Sensor erkennt das Glas und die Bewegung wird gestoppt das Teil gegriffen und der Roboter fährt wieder raus.
    Dies wollte ich mit Interrupt machen. Doch leider funktioniert es nicht so wie ich wollte.


    Kann mir jemand zeigen wie ich das Programm schreiben sollte?


    Danke schön

    Einmal editiert, zuletzt von Rogajoma ()

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


    hier hab ich mal das Programm. ich kenn mich leider noch nicht so gut aus, aber vielleicht kann mir ja jemand weiterhelfen.


    Also die Suchfahrt wird ausgeführt und beim Sensoreingang wird der Interrupt auch ausgelöst, der Roboter bleibt stehen. Allerdings kann ich nicht in ein Unterprogramm weiter oder eine neue Pos anfahren.


    &ACCESS RVP
    &REL 1
    &PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe
    &PARAM EDITMASK = *
    DEF Suchfahrt( )
    ;FOLD INI
    ;FOLD BASISTECH INI
    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
    INTERRUPT ON 3
    BAS (#INITMOV,0 )
    ;ENDFOLD (BASISTECH INI)
    ;FOLD SPOTTECH INI
    USERSPOT(#INIT)
    ;ENDFOLD (SPOTTECH INI)
    ;FOLD GRIPPERTECH INI
    USER_GRP(0,DUMMY,DUMMY,GDEFAULT)
    ;ENDFOLD (GRIPPERTECH INI)
    ;FOLD USER INI
    ;Make your modifications here


    ;ENDFOLD (USER INI)
    ;ENDFOLD (INI)
    ;FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 5.5.32,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
    $BWDSTART=FALSE
    PDAT_ACT=PDEFAULT
    FDAT_ACT=FHOME
    BAS(#PTP_PARAMS,100)
    $H_POS=XHOME
    PTP XHOME
    ;ENDFOLD
    interrupt decl 1 when $in[7]== true DO heimfahren()


    interrupt on 1
    $advance=0
    ;+++ Suchfahrt +++
    ;FOLD LIN P1 Vel=2 m/s CPDAT1 Tool[1]:Schneidkopf Hegla Base[0];%{PE}%R 5.5.32,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P1, 3:, 5:2, 7:CPDAT1
    $BWDSTART=FALSE
    LDAT_ACT=LCPDAT1
    FDAT_ACT=FP1
    BAS(#CP_PARAMS,2)
    LIN XP1
    ;ENDFOLD
    ;+++++++++++++++++
    interrupt off 1
    ;FOLD PTP HOME Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
    $BWDSTART = FALSE
    PDAT_ACT=PDEFAULT
    FDAT_ACT=FHOME
    BAS (#PTP_PARAMS,100 )
    $H_POS=XHOME
    PTP XHOME
    ;ENDFOLD


    END


    def heimfahren ()



    interrupt off 1
    ;FOLD OUT 3 'Vaccum' State=TRUE ;%{PE}%R 5.5.32,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:3, 3:Vaccum, 5:TRUE, 6:
    $OUT[3]=TRUE
    ;ENDFOLD
    brake
    wait sec 0


    ansaugen ()



    end

  • hallo


    versuchs mal damit


  • Hallo Loipe,


    Danke für deine schnelle Hilfe, ich hab’s jetzt hin bekommen. Kann ich den Roboterstop noch schneller machen, ich habe als BRAKE bereits BRAKE F verwendet, gibt’s noch eine Möglichkeit?


    Falls ich die Suchfahrt genau von der letzten Interruptpos wieder starten möchte, ist dies möglich und falls ja wie?


    Hier noch mal das aktuelle Programm.


    &ACCESS RVP
    &REL 22
    &PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe
    &PARAM EDITMASK = *
    DEF Such( )





    ;FOLD INI
    ;FOLD BASISTECH INI
    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
    INTERRUPT ON 3
    BAS (#INITMOV,0 )
    ;ENDFOLD (BASISTECH INI)
    ;FOLD SPOTTECH INI
    USERSPOT(#INIT)
    ;ENDFOLD (SPOTTECH INI)
    ;FOLD GRIPPERTECH INI
    USER_GRP(0,DUMMY,DUMMY,GDEFAULT)
    ;ENDFOLD (GRIPPERTECH INI)
    ;FOLD USER INI
    ;Make your modifications here


    ;ENDFOLD (USER INI)
    ;ENDFOLD (INI)
    loop
    ;FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 5.5.32,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
    $BWDSTART=FALSE
    PDAT_ACT=PDEFAULT
    FDAT_ACT=FHOME
    BAS(#PTP_PARAMS,100)
    $H_POS=XHOME
    PTP XHOME
    ;ENDFOLD


    interrupt decl 1 when $in[10]== true DO heimfahren()


    interrupt on 1
    $advance=0
    suchfahrt()
    interrupt off 1





    ;FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 5.5.32,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
    $BWDSTART=FALSE
    PDAT_ACT=PDEFAULT
    FDAT_ACT=FHOME
    BAS(#PTP_PARAMS,100)
    $H_POS=XHOME
    PTP XHOME
    ;ENDFOLD
    endloop
    END


    def heimfahren ()



    interrupt off 1


    brake F
    wait sec 0


    ; versteckter Punkt P11


    ptp xp11
    $out[3]=false


    resume


    end


    def suchfahrt ()


    ; versteckter Punkt P10
    $out[3]=true
    lin xp10
    $out[3]=false




    end

  • Hallo du kannst dir ja die POS beim moment des interupts speichern


  • Hallo Loipe,


    Danke für deine Hilfe funktioniert alles super!!! Danke hast mir echt gut geholfen.


    Kann ich hier " interrupt decl 1 when $in[10]== true DO heimfahren() " auch einen Unterprogrammaufruf machen, das nicht im gleichen Programm liegt, ich meine zum Beispiel ein Programm aufrufen das im Programmordner liegt?


    Ich hab noch eine Frage:


    ich möchte verschiedene Geschwindigkeiten im Interrupt fahren, siehe unten in Rot. Geht aber leider nur die erste.


    Mache ich hier was falsch oder wie kann ich dies tun.


    Danke schon mal für deine Hilfe


    def heimfahren ()



    interrupt off 1
    ;FOLD OUT 3 'Vaccum' State=TRUE ;%{PE}%R 5.5.32,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:3, 3:Vaccum, 5:TRUE, 6:
    $OUT[3]=TRUE
    ;ENDFOLD
    brake
    wait sec 0


    $vel.cp=0,05
    lin xp11


    $vel.cp=2
    lin xp12

    resume


    end

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