Ein Hallo in die Runde,
ich versuche mich mit der Interrupt-Programmierung:
Cell Programm:
DEF CELL ( )
EXT P_01_Schweissen()
EXT P_02_Heimfahrt()
INTERRUPT DECL 81 WHEN $IN[1]== TRUE DO P_04_Heimfahrt()
INTERRUPT ON 81
WAIT sec 0.012
LOOP
P00 (#EXT_PGNO,#PGNO_GET,DMY[],0 )
SWITCH PGNO ; Select with Programnumber
CASE 1
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
P_01_Schweissen(); Call User-Program
CASE 2
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
P_02_Heimfahrt(); Call User-Program
DEFAULT
P00 (#EXT_PGNO,#PGNO_FAULT,DMY[],0 )
ENDSWITCH
ENDLOOP
INTERRUPT OFF 81
WAIT sec 0.012
P_02_Heimfahrt:
;FOLD USER INI
INTERRUPT OFF 81
WAIT sec 0.012
;ENDFOLD
;
;sehr viel Programmcode
;
INTERRUPT ON 81
WAIT sec 0.012
P_01_Schweissen:
BREAK???
RESUME???
HALT???
Betriebsart: Automatik Extern, Cell ist angewählt
Das Programm "P_01_Schweissen" soll wenn Eingang 1 durch die übergeordnete SPS gesetzt wird, abgebrochen werden.
Falls der Roboter in Bewegung ist, soll eine bahntreue Bremsung ausgeführt werden.
Das Programm "P_02_Heimfahrt" wird aufgerufen und ausgeführt.
Meine Probleme liegen jetzt in der Modifikation des Programms "P_01_Schweissen".
Auch glaube ich, das die Deklaration des Interruptes "unglücklich" platziert ist.
Muss die Abfrage ob Eingang 1 TRUE ist nicht ins die SUB.SPS?
Auch das Benutzen der Suchfunktion und das Lesen der KUKA Dokumentation brachte keinen nennenswerten Wissenszuwachs.
Vielleicht schafft Ihr es ja