hallo, ich bins wieder, hab jetzt beim letzten "projekt abschnitt" einen fehler, softwareendschalter A1 erreicht
wie im anderem thread erwähnt, wurde der Ablauf von KuKa programmierer vorprogrammiert
nun soll der Roboter die Bauteile in die Presse einfahren, hier sollte ich den Pressen mittelpunkt teachen und ein offset vergeben damit er vor der Presse stehen bleibt
d.h Mittelpunkt ist XYZ und vor_Presse.x ist =x+offset
hatte schon geguckt wo diese Softwareendschalter stehen und mit den Daten verglichen die der Roboter mit offset anfahren kann, sollte eig. klappen, geht aber nicht
hatte auch verschiedene offsets probiert von 1000 bis -1000
bei über 500 und unter -700 kommt die Meldung, ich muss aber ca. -1200 haben damit er auch wirklich vor der Presse ist, bei manueller Achsensteuerung kann ich den Punkt anfahren
außerdem denke ich dass was mit Koordinaten nicht stimmt, der hat zwar nur das ein offset hinterlassen, aber damit der Roboter wirklich vor der Presse steht muss ich auch den Y Wert substrahieren
also beide X und Y muss ich verändert damit er an gewünschte stelle stehen bleibt
DEF Presse( )
;FOLD INI;%{PE}%V3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P
;FOLD BAS INI;%{E}%V3.2.0,%MKUKATPBASIS,%CINIT,%VINIT,%P
GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
INTERRUPT ON 3
BAS (#INITMOV,0 )
;ENDFOLD (BAS INI)
;FOLD A20 INI;%{E}%V3.2.0,%MKUKATPA20,%CINIT,%VINIT,%P
IF ARC20==TRUE THEN
A20 (ARC_INI)
INTERRUPT DECL 6 WHEN $CYCFLAG[3]==FALSE DO A20(TECH_STOP2)
ENDIF
;ENDFOLD (A20 INI)
;FOLD A10 INI;%{E}%V3.2.0,%MKUKATPARC,%CINIT,%VINIT,%P
IF A10_OPTION==#ACTIVE THEN
INTERRUPT DECL 4 WHEN $CYCFLAG[2]==FALSE DO A10 (#APPL_ERROR)
INTERRUPT DECL 7 WHEN A_ARC_SWI==#ACTIVE DO A10 (#ARC_SEAM)
INTERRUPT DECL 5 WHEN A_FLY_ARC==TRUE DO A10 (#HPU_ARC)
INTERRUPT ON 5
A10_INI ( )
ENDIF
;ENDFOLD (A10 INI)
;FOLD GRIPPER INI;%{E}%V3.2.0,%MKUKATPGRIPPER,%CINIT,%VINIT,%P
USER_GRP(0,DUMMY,DUMMY,GDEFAULT)
;ENDFOLD (GRIPPER INI)
;FOLD SPOT INI;%{E}%V3.2.0,%MKUKATPSPOT,%CINIT,%VINIT,%P
USERSPOT(#INIT)
;ENDFOLD (SPOT INI)
;FOLD TOUCHSENSE INI;%{E}%V3.2.0,%MKUKATPTS,%CINIT,%VINIT,%P
IF H70_OPTION THEN
INTERRUPT DECL 15 WHEN $MEAS_PULSE[TOUCH_I[TOUCH_ACTIVE].IN_NR] DO H70 (6,CD0 )
INTERRUPT DECL 16 WHEN $ZERO_MOVE DO H70 (7,CD0 )
INTERRUPT DECL 17 WHEN $TECHPAR_C[FG_TOUCH,8]>0.5 DO H70 (8,CD0)
H70 (1,CD0 )
ENDIF
;ENDFOLD (TOUCHSENSE INI)
;FOLD USER INI;%{E}%V3.2.0,%MKUKATPUSER,%CINIT,%VINIT,%P
;Make your modifications here
;ENDFOLD (USER INI)
;ENDFOLD (INI)
If doRobInService == false then
;FOLD Stations INI
xablage = xteach
x_3 = offset_x_3 / 100.0
y_3 = offset_y_3 / 100.0
z_3 = offset_z_3 / 100.0
xablage.x = xablage.x + x_3
xablage.y = xablage.y + y_3
xablage.z = xablage.z + z_3
xvorpos = xablage
xvorpos.z = xvorpos.z + vorposz
xvorpresse = xvorpos
xvorpresse.x = xvorpresse.x + vorpospressex
;ENDFOLD
;FOLD PTP HOME Vel= 100 % DEFAULT;%{PE}%V3.2.0,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
$BWDSTART = FALSE
$H_POS=XHOME
PDAT_ACT=PDEFAULT
BAS (#PTP_DAT )
FDAT_ACT=FHOME
BAS (#FRAMES )
BAS (#VEL_PTP,100 )
PTP XHOME
;ENDFOLD
;FOLD TeachPosition
IF False then
; ======== Hier Satzanwahl um den Punkt zu Teachen ========
;FOLD PTP teach Vel= 100 % PDAT1 Tool[1]:Sauger Base[1]:Presse;%{PE}%R 4.1.16,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:teach, 3:, 5:100, 7:PDAT1
$BWDSTART = FALSE
PDAT_ACT=PPDAT1
BAS(#PTP_DAT)
FDAT_ACT=Fteach
BAS(#FRAMES)
BAS(#VEL_PTP,100)
PTP Xteach
;ENDFOLD
halt
Endif
;ENDFOLD
; =====Einfahren in die Presse
;FOLD PTP VorPresse Vel= 50 % PDAT2 Tool[1]:Sauger Base[1]:Presse;%{PE}%R 4.1.16,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:VorPresse, 3:, 5:50, 7:PDAT2
$BWDSTART = FALSE
PDAT_ACT=PPDAT2
BAS(#PTP_DAT)
FDAT_ACT=FVorPresse
BAS(#FRAMES)
BAS(#VEL_PTP,50)
PTP XVorPresse
;ENDFOLD
doRob_in_Presse = true
wait for diFreigabePresse and diPresseOT
;FOLD LIN VorPos Vel= 1 m/s CPDAT1 Tool[1]:Sauger Base[1]:Presse;%{PE}%R 4.1.16,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:VorPos, 3:, 5:1, 7:CPDAT1
$BWDSTART = FALSE
LDAT_ACT=LCPDAT1
BAS(#CP_DAT)
FDAT_ACT=FVorPos
BAS(#FRAMES)
BAS(#VEL_CP,1)
LIN XVorPos
;ENDFOLD
;FOLD LIN Ablage Vel= 0.2 m/s CPDAT2 Tool[1]:Sauger Base[1]:Presse;%{PE}%R 4.1.16,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:Ablage, 3:, 5:0.2, 7:CPDAT2
$BWDSTART = FALSE
LDAT_ACT=LCPDAT2
BAS(#CP_DAT)
FDAT_ACT=FAblage
BAS(#FRAMES)
BAS(#VEL_CP,0.2)
LIN XAblage
;ENDFOLD
;=============================
; =====Handschake Sauger ist aus
doVaccumOFF = true
wait for diVaccumOFF
doVaccumOFF = false
;==============================
;======Aus der Presse raus fahren
;FOLD LIN VorPos Vel= 2 m/s CPDAT3 Tool[1] Base[1];%{PE}%R 4.1.16,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:VorPos, 3:, 5:2, 7:CPDAT3
$BWDSTART = FALSE
LDAT_ACT=LCPDAT3
BAS(#CP_DAT)
FDAT_ACT=FVorPos
BAS(#FRAMES)
BAS(#VEL_CP,2)
LIN XVorPos
;ENDFOLD
;FOLD LIN VorPresse Vel= 2 m/s CPDAT4 Tool[1] Base[1];%{PE}%R 4.1.16,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:VorPresse, 3:, 5:2, 7:CPDAT4
$BWDSTART = FALSE
LDAT_ACT=LCPDAT4
BAS(#CP_DAT)
FDAT_ACT=FVorPresse
BAS(#FRAMES)
BAS(#VEL_CP,2)
LIN XVorPresse
;ENDFOLD
doRob_in_Presse = false
;==============================
;FOLD PTP HOME Vel= 100 % DEFAULT;%{PE}%V3.2.0,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
$BWDSTART = FALSE
$H_POS=XHOME
PDAT_ACT=PDEFAULT
BAS (#PTP_DAT )
FDAT_ACT=FHOME
BAS (#FRAMES )
BAS (#VEL_PTP,100 )
PTP XHOME
;ENDFOLD
Endif
END
Alles anzeigen
und hier config
REAL $SOFTN_END[12] ;SOFTWARE-ENDSCHALTER NEGATIV ACHSE[I] (I=1:A1,I=7:E1) [MM,GRAD]
$SOFTN_END[1]=-185.0
$SOFTN_END[2]=-130.0
$SOFTN_END[3]=-120.0
$SOFTN_END[4]=-350.0
$SOFTN_END[5]=-119.0
$SOFTN_END[6]=-350.0
$SOFTN_END[7]=0.0
$SOFTN_END[8]=0.0
$SOFTN_END[9]=0.0
$SOFTN_END[10]=0.0
$SOFTN_END[11]=0.0
$SOFTN_END[12]=0.0
REAL $SOFTP_END[12] ;SOFTWARE-ENDSCHALTER POSITIV ACHSE[I] (I=1:A1,I=7:E1) [MM,GRAD]
$SOFTP_END[1]=185.0
$SOFTP_END[2]=3.0
$SOFTP_END[3]=158.0
$SOFTP_END[4]=350.0
$SOFTP_END[5]=119.0
$SOFTP_END[6]=350.0
$SOFTP_END[7]=0.0
$SOFTP_END[8]=0.0
$SOFTP_END[9]=0.0
$SOFTP_END[10]=0.0
$SOFTP_END[11]=0.0
$SOFTP_END[12]=0.0
Alles anzeigen