Liebe Community,
Vor 5 Jahren habe ich ein KRC2 Roboter Version (V5.3.17) mit Palettierungsaufgabe programmiert und es war so weit so klar. Der Roboter hat Greiferwechselsystem 'ein Greifer für den Blister und ein Greifer für WTs.
Beschreibung:
-Roboter nimmt einen Blister vom Band und liegt ihn auf einem Servicetisch.
-Roboter wechselt den Greifer vom Blister-Greifer auf WTs-Greifer und dann fährt wieder zum Blister auf dem Servicetisch.
-Roboter nimmt jedes Mal einen Teil vom Blister und liegt ihn auf einen WS-Träger.
Das Programm wurde so gebaut, dass von der Blister nur erster Teil eingelernt werden soll (Teachpos_151) und die Rester wird mit Offset gerechnet.
Der Punkt (Teachpos_151) wird mit einem vordefinierten Base und Tool gespeichert und den Offset wird genau so gerechnet.
;===========================================================
; Ablageposition Teachen
;===========================================================
;FOLD LIN P1 Vel= 0.2 m/s CPDAT1 Tool[9]:Gehaeusegreifer 151 Base[4]:Gehaeuseablage 651;%{PE}%R 5.2.36,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P1, 3:, 5:0.2, 7:CPDAT1
$BWDSTART = FALSE
LDAT_ACT=LCPDAT1
FDAT_ACT=FP1
BAS(#CP_PARAMS,0.2)
LIN XP1
;ENDFOLD
HALT
;===========================================================
; Position speichern
;===========================================================
$BASE = BASE_DATA[4]
$TOOL = TOOL_DATA[9]
Teachpos_651 = $POS_ACT
Alles anzeigen
und dann wird dieser Punkt in Berechnung verwendet:
Berechnen_151 ( )
;FOLD PTP Vorpos_151 CONT Vel= 100 % PDAT2 Tool[9]:Gehaeusegreifer 151 Base[4]:Gehaeuseablage 151;%{PE}%R 5.2.36,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:Vorpos_151, 3:C_PTP, 5:100, 7:PDAT2
$BWDSTART = FALSE
PDAT_ACT=PPDAT2
FDAT_ACT=FVorpos_151
BAS(#PTP_PARAMS,100)
PTP XVorpos_151 C_PTP
;ENDFOLD
;FOLD LIN Holenpos_151 Vel= 2 m/s CPDAT1 Tool[9]:Gehaeusegreifer 151 Base[4]:Gehaeuseablage 151;%{PE}%R 5.2.36,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:Holenpos_151, 3:, 5:2, 7:CPDAT1
$BWDSTART = FALSE
LDAT_ACT=LCPDAT1
FDAT_ACT=FHolenpos_151
BAS(#CP_PARAMS,2)
LIN XHolenpos_151
;ENDFOLD
INTERRUPT OFF 22
;FOLD SET Geh151 State= Zu GDAT8;%{PE}%R 6.0.10,%MKUKATPGRP,%CGRP,%VGRP,%P 2:6, 4:2, 5:#NO, 6:GDAT8, 8:0, 10:0
H50(GRP,6,2,GGDAT8)
;ENDFOLD
INTERRUPT ON 23
CONTINUE
Zaehlen_151 ( )
;FOLD LIN Vorpos_151 CONT Vel= 0.1 m/s CPDAT2 Tool[9]:Gehaeusegreifer 151 Base[4]:Gehaeuseablage 151;%{PE}%R 5.2.36,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:Vorpos_151, 3:C_DIS, 5:0.1, 7:CPDAT2
$BWDSTART = FALSE
LDAT_ACT=LCPDAT2
FDAT_ACT=FVorpos_151
BAS(#CP_PARAMS,0.1)
LIN XVorpos_151 C_DIS
;ENDFOLD
DEF Berechnen_151 ( )
;Holenposition berechnen
XHolenpos_151 = Teachpos_151
CONTINUE
IF (GEH151_Zaehler_Y == 2.0) OR (GEH151_Zaehler_Y == 4.0) THEN
XHolenpos_151.X = XHolenpos_151.X + Versatz_X
ENDIF
XHolenpos_151.X = XHolenpos_151.X + (GEH151_Zaehler_X - 1) * Raster_X
XHolenpos_151.Y = XHolenpos_151.Y + (GEH151_Zaehler_Y - 1) * Raster_Y
;Vorposition berechnen
XVorpos_151 = XHolenpos_151
XVorpos_151.Z = XVorpos_151.Z + 120
END
Alles anzeigen
Jetzt kommen wir zum heißen Teil...
Um die Taktzei zu erhöhen, muss der vorhandenen Greifer mit Doppelgreifer umgetauscht werden. Das heißt: vom Blister muss der Roboter nicht mehr ein Teil entnehmen sondern mit zwei Greifer (Y-Form) zwischen beiden Greifer 45° Tiele vom Blister entnehmen können.
Beschreibung:
Roboter nimmt ersten Teil fährt hoch, dreht den Greifer 45° und danach nimmt den zweiten Teil, und Erst dann darf zum WS-Träger fahren.
Die Frage ist jetzt, wie kann ich die beide neue TCPs von beiden Greifer so heiraten, dass die berechnung mit einer Teachposition trotzdem passen kann. Da ich jetzt eine Teachposiotion mit einem Base und einem Tool eingelernt habe und so wird die Berechnungen für den zweiten Tool nicht mehr passen .
Oder soll ich unbedingt eine zweite Teachpos programmieren und mein Programm mit zahlreichende IF-Anweisungen befüllen ?