KRC 1-Programmierung

  • Wer kann mir folgendes Programm erklären? Was versteht man unter der Interrupt-Funktion und unter break?


    &ACCESS RVP
    DEF SCHOK ( )
    EXT BAS (BAS_COMMAND :IN,REAL :IN )
    ;************************
    DECL MSG_T EMPTY_MSG ;****
    INT ANSWER ;**************
    ;************************


    BAS (#INITMOV,0 )
    ;Achsgeschwindigkeit
    FOR I=1 TO 6 STEP 1
    $VEL_AXIS[I]=100
    ENDFOR
    ;Achsbeschleunigung
    FOR I=1 TO 6 STEP 1
    $ACC_AXIS[I]=100
    ENDFOR
    $VEL.CP=0.15
    $ACC.CP=0.5
    $APO.CDIS=1
    $APO.CORI=0
    $APO.CVEL=50
    $APO.CDIS=1
    PL_NR=1
    PTP XHOME
    $BASE=BASE_DATA[8]



    $TOOL=TOOL_DATA[10]
    TAFEL=0
    LOOP ;Endlosschleife
    WAIT FOR $IN[202]==TRUE
    TAFEL=TAFEL+1



    IF TAFEL>7 THEN
    EMPTY_MSG={MSG_T: VALID FALSE,RELEASE FALSE,TYP #NOTIFY,MODUL[] " ",KEY[] " ",PARAM_TYP #VALUE,PARAM[] " ",DLG_FORMAT[] " ",ANSWER 0}
    $MSG_T=EMPTY_MSG
    $MSG_T.MODUL[]=" "
    $MSG_T.KEY[]="Leider keine leckere Schokolade mehr da!"


    $MSG_T.PARAM_TYP=#VALUE


    $MSG_T.VALID=TRUE


    WHILE $MSG_T.VALID
    WAIT SEC 0.05
    ENDWHILE
    WAIT SEC 0.2


    WAIT SEC 2


    EXIT


    ENDIF






    PALL_INIT ( )
    ;PALL_TEACH ( )
    BERECHNEN ( )
    PALETTIEREN ( )
    WAIT FOR $IN[203]==TRUE
    NEU_ABLEGEN ( )
    ABLEGEN ( )
    ENDLOOP
    PTP XHOME


    END


    ;***** PALETTIEREN *****
    DEF PALETTIEREN ( )
    ;Aufnehmen
    PTP PAL_POS_2 C_PTP
    LIN PAL_POS_1
    ;Greifer setzen
    GREIFER_ZU ( )
    ;Hochfahren
    PTP PAL_POS_2 C_PTP






    END
    DEF ABLEGEN ( )
    PTP ABLEG_POS
    GREIFER_AUF ( )
    END



    DEF BERECHNEN ( )


    SWITCH TAFEL
    CASE 1
    NV={X 0,Y 0,Z 0,A 0,B 0,C 0}
    CASE 2
    NV={X 0,Y 0,Z -13,A 0,B 0,C 0}
    CASE 3
    NV={X 0,Y 0,Z -26,A 0,B 0,C 0}
    CASE 4
    NV={X 0,Y 0,Z -39,A 0,B 0,C 0}
    CASE 5
    NV={X 0,Y 0,Z -52,A 0,B 0,C 0}
    CASE 6
    NV={X 0,Y 0,Z -65,A 0,B 0,C 0}
    CASE 7
    NV={X 0,Y 0,Z -78,A 0,B 0,C 0}
    ENDSWITCH
    $BASE=BASE_DATA[8]:NV
    END


    ;***** bearbeiten *****
    DEF NEU_ABLEGEN ( )


    SWITCH TAFEL
    CASE 1
    NV={X 0,Y 0,Z 13,A 0,B 0,C 0}
    CASE 2
    NV={X 0,Y 0,Z 26,A 0,B 0,C 0}
    CASE 3
    NV={X 0,Y 0,Z 39,A 0,B 0,C 0}
    CASE 4
    NV={X 0,Y 0,Z 52,A 0,B 0,C 0}
    CASE 5
    NV={X 0,Y 0,Z 65,A 0,B 0,C 0}
    CASE 6
    NV={X 0,Y 0,Z 78,A 0,B 0,C 0}
    CASE 7
    NV={X 0,Y 0,Z 91,A 0,B 0,C 0}
    ENDSWITCH
    $BASE=BASE_DATA[8]:NV
    END





    ;***** PALETTIEREN INITIALISIEREN *****
    DEF PALL_INIT ( )
    $OUT[4]=FALSE
    PAL_POS_1=UR_PAL
    PAL_POS_2=UR_PAL
    PAL_POS_2.Z=PAL_POS_1.Z+120
    $TOOL=TOOL_DATA[10]
    $BASE=BASE_DATA[8]
    END


    ;***** PALETTIEREN TEACHEN *****
    DEF PALL_TEACH ( )
    $BASE=BASE_DATA[8]


    $TOOL=TOOL_DATA[10]
    LIN UR_PAL
    HALT
    LIN ABLEG_POS
    HALT
    END
    ;***** Greifer auf *****
    DEF GREIFER_AUF ( )
    $OUT[4]=FALSE
    WAIT SEC 1.0
    END
    ;***** Greifer zu *****
    DEF GREIFER_ZU ( )
    $OUT[4]=TRUE
    WAIT SEC 1.0
    END
    ;++++++++++++++++++++++++++++++++++++++++++++++++++

  • Schritt für Schritt zum Roboterprofi!

  • Wer kann mir folgendes Programm erklären? Was versteht man unter der Interrupt-Funktion und unter break?


    Das hast du zwar nicht in deinem Programmauszug, aber du kannst einen INTERRUPT deklarieren und dann in diesem Programm eine Bewegung unterbrechen, wenn z.B. eine Lichtschranke meldet, das das Bauteil erreichbar ist!


    Beispiel:
    BEARBEITUNGSPROGRAMM ( )
    INTERRUPT DECL 100 WHEN $IN[1] DO LICHTSCHRANKE_TEST ( )


    LIN START_SUCHPOSITION
    POSITION_SUCHEN ( )
    INTERRUPT OFF 100
    $ADVANCE=3
    LIN_REL {Z +100.0}
    END ;BEARBEITUNGSPROGRAMM


    DEF POSITION SUCHEN ( )


    $ADVANCE=0
    INTERRUPT ON 100
    LIN SUCHPOS


    END



    DEF LICHTSCHRANKE_TEST ( )


    INTERRUPT OFF 100
    BRAKE
    RESUME


    END



    Damit kann man sehr gut ein Bauteil suchen wenn eine Bewegungsrichtung als Bezugspunkt auf alle verschiedenen Bauteile passt z.B. verschieden hohe Bauteile immer auf der selben Stelle ablegen! ;)


    Ich hoffe es hilft schon mal weiter! :)


  • Wer kann mir folgendes Programm erklären? Was versteht man unter der Interrupt-Funktion und unter break?


    Interrupts werden ausgelöst, wenn ein bestimmtes Ereignis stattfindet.


    DEF HAUPTPROGRAMM ()


    INTERRUPT DECL 21 WHEN $IN[1] DO INTR_SUCHE() ;when $IN[1] True ist, wird ins UP INTR_SUCHE gesprungen
    INTERRUPT OFF
    INTERRUPT ON 3 ;Stopmess wieder an


    PTP HOME usw.
    Mach irgend'nen anderen Blödsinn


    SUCHWAS()


    LIN GREIFPOS


    und mach wieder irgendwas...


    END


    DEF SUCHWAS()
    $TOOL=HAMMER
    $BASE=AMBOSS
    $VEL.CP=0.5 usw...
    usw...
    LIN STARTSUCHE


    WAIT FOR NOT $IN[1] ;Interrupt erst einschalten, wenn Bedingung nicht erfüllt!
    INTERRUPT ON 21
    LIN_REL {x 200}
    END


    DEF INTR_SUCHE()
    INTERRUPT OFF 21 ;damit nicht mehrmals ausgelöst wird


    BREAK ;Aktuelle Bewegung abbrechen


    GREIFPOS=$POS_INT ;Greifposition auf Koordinaten setzen an denen der Interrupt ausgelöst wurde
    RESUME ;Zurückspringen in das Programm, in dem der Interrupt deklariert wurde!


    END

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Hallo,


    mit Programmbeispielen bist Du ja jetzt reichlich versorgt.
    Durch einen Interrupt (ein Erreignis - zum Beispiel ein Sensor schaltet) wird eine sogenannte Interruptroutine ausgeloesst (ein paralleles Programm).
    Durch Braek wird innerhalb dieser Interruptroutine die aktuelle Roboterbewegung angehalten.
    (und mit Resume springt der Programmlaufzeiger in die Ebene zurueck, in welcher der Interrupt declariert wurde).


    Ich hoffe, das hilft Dir weiter.
    Gruss Stefan

  • Hallo,
    vielen Dank an alle, eure Antworten haben mir weitergeholfen.

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