Main - SRC Robot B

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 10

&ACCESS RVP

DEF MAIN ( )
;FOLD INI;%{PE}%V2.2.2,%MKUKATPBASIS,%CINIT,%VCOMMON,%P
;FOLD BAS INI;%{PE}%V2.2.2,%MKUKATPBASIS,%CINIT,%VINIT,%P
INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
INTERRUPT ON 3
BAS (#INITMOV,0 )
;ENDFOLD
;FOLD A20 INI;%{E}%V2.2.2,%MKUKATPA20,%CINIT,%VINIT,%P
IF ARC20==TRUE THEN
A20 (ARC_INI )
INTERRUPT DECL 6 WHEN $CYCFLAG[3]==FALSE DO A20 (TECH_STOP2 )
ENDIF
;ENDFOLD
;FOLD A10 INI;%{E}%V2.2.2,%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
;FOLD GRIPPER INI;%{E}%V2.2.2,%MKUKATPGRIPPER,%CINIT,%VINIT,%P
USER_GRP (0,DUMMY,DUMMY,GDEFAULT )
;ENDFOLD
;FOLD SPOT INI;%{E}%V.2.2,%MKUKATPSPOT,%CINIT,%VINIT,%P
USERSPOT (#INIT )
;ENDFOLD
;FOLD TOUCHSENSE INI;%{E}%V2.2.2,%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
;FOLD USER INI;%{P}%V2.2.2,%MKUKATPUSER,%CINIT,%VINIT,%P
;Make your modifications here
INTERRUPT DECL 15 WHEN FLUSH_LINE3==TRUE DO RESET_LINE (3 )
INTERRUPT DECL 16 WHEN FLUSH_LINE4==TRUE DO RESET_LINE (4 )
INTERRUPT ON 15
INTERRUPT ON 16
;ENDFOLD
;ENDFOLD
PTP

$POS_ACT

$TOOL=TOOL_DATA[2]
START_UP ( )

PTP
LOOP

XHOME

;FOLD PTP WAIT_POS CONT Vel= 100 % PDAT6;%{PE}%R 2.4.602,%MKUKATPBASIS,%CMOVE,


%VPTP,%P 1:PTP, 2:WAIT_POS, 3:C_PTP, 5:100, 7:PDAT6
PDAT_ACT=PPDAT6
BAS (#PTP_DAT )
FDAT_ACT=FWAIT_POS
BAS (#FRAMES )
BAS (#VEL_PTP,100 )
PTP XWAIT_POS C_PTP
;ENDFOLD
;LINE3 1500ML SQ
;================
IF (LINE3_CARTON==TRUE) AND (LINE3_PALLET==TRUE) AND (GRIPER_CLOSED==FALSE) AND
(SLIDER_CLOSED==FALSE) THEN
;====SELECT PRODUCT=3 (1500ML) OR PRODUCT=5 (1250ML)========
PRODUCT=3
;PRODUCT=5
;===========================================================
;PICK FROM LINE3 SQ
;FOLD PTP LINE3_PICK_BEFORE2 CONT Vel= 100 % PDAT1;%{PE}%R
2.4.602,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:LINE3_PICK_BEFORE2, 3:C_PTP,
5:100, 7:PDAT1
PDAT_ACT=PPDAT1
BAS (#PTP_DAT )
FDAT_ACT=FLINE3_PICK_BEFORE2
BAS (#FRAMES )
BAS (#VEL_PTP,100 )
PTP XLINE3_PICK_BEFORE2 C_PTP
;ENDFOLD
;FOLD LIN LINE3_PICKPOS CONT Vel= 1.5 m/s CPDAT1;%{PE}%R 2.4.602,%MKUKATPBASIS,
%CMOVE,%VLIN,%P 1:LIN, 2:LINE3_PICKPOS, 3:C_DIS, 5:1.5, 7:CPDAT1
LDAT_ACT=LCPDAT1
BAS (#CP_DAT )
FDAT_ACT=FLINE3_PICKPOS
BAS (#FRAMES )
BAS (#VEL_CP,1.5 )
LIN XLINE3_PICKPOS C_DIS
;ENDFOLD
TRIGGER WHEN PATH=-10 DELAY=0 DO SLIDER=TRUE
TRIGGER WHEN PATH=-5 DELAY=500 DO GRIPER=TRUE
LIN_REL {Y -20}
WAIT FOR (GRIPER_CLOSED==TRUE) AND (SLIDER_CLOSED==TRUE)
WAIT SEC 0.6
;FOLD LIN LINE3_PICK_BEFORE Vel= 2 m/s CPDAT4;%{PE}%R 2.4.602,%MKUKATPBASIS,
%CMOVE,%VLIN,%P 1:LIN, 2:LINE3_PICK_BEFORE, 3:, 5:2, 7:CPDAT4
LDAT_ACT=LCPDAT4
BAS (#CP_DAT )
FDAT_ACT=FLINE3_PICK_BEFORE
BAS (#FRAMES )
BAS (#VEL_CP,2 )
LIN XLINE3_PICK_BEFORE
;ENDFOLD
;============================================================
IF PRODUCT==3 THEN

;PALLETIZING LINE3 SQ
NAVIGATE ( )
$BASE=BASE_DATA[3]
ROB_SPEED (#FAST )
PTP MID[PATTERN[3]] C_PTP
PTP BEFORE[PATTERN[3]] C_PTP
ROB_SPEED (#MED )
;FOLD SYN OUT 6 'GRIPER' State= FALSE PATH = -250 mm Delay= 0 ms;%{PE}%R
2.4.602,%MKUKATPBASIS,%COUT,%VSYNOUT,%P 2:6, 5:FALSE, 7:2, 9:-250, 12:0
TRIGGER WHEN PATH=-250 DELAY=0 DO $OUT[6]=FALSE
;ENDFOLD
LIN DESTI_P[PATTERN[3]] C_VEL
WAIT SEC 0.3
;FOLD OUT 5 'SLIDER' State= FALSE CONT;%{PE}%R 2.4.602,%MKUKATPBASIS,%COUT,
%VOUTX,%P 2:5, 5:FALSE, 6:CONTINUE
CONTINUE
$OUT[5]=FALSE
;ENDFOLD
WAIT FOR (GRIPER_CLOSED==FALSE) AND (SLIDER_CLOSED==FALSE)
ROB_SPEED (#FAST )
LIN_REL {Z 400}
PTP MID[PATTERN[3]] C_PTP
PATTERN[3]=PATTERN[3]+1
ENDIF
;============================================================
;PALLETIZING LINE3 1250ML
IF PRODUCT==5 THEN
NAVIGATE ( )
$BASE=BASE_DATA[3]
ROB_SPEED (#FAST )
PTP MID[PATTERN[5]] C_PTP
PTP BEFORE[PATTERN[5]] C_PTP
ROB_SPEED (#MED )
;FOLD SYN OUT 6 'GRIPER' State= FALSE PATH = -250 mm Delay= 0 ms;%{PE}%R
2.4.602,%MKUKATPBASIS,%COUT,%VSYNOUT,%P 2:6, 5:FALSE, 7:2, 9:-250, 12:0
TRIGGER WHEN PATH=-250 DELAY=0 DO $OUT[6]=FALSE
;ENDFOLD
LIN DESTI_P[PATTERN[5]] C_VEL
WAIT SEC 0.3
;FOLD OUT 5 'SLIDER' State= FALSE CONT;%{PE}%R 2.4.602,%MKUKATPBASIS,%COUT,
%VOUTX,%P 2:5, 5:FALSE, 6:CONTINUE
CONTINUE
$OUT[5]=FALSE
;ENDFOLD
WAIT FOR (GRIPER_CLOSED==FALSE) AND (SLIDER_CLOSED==FALSE)
ROB_SPEED (#FAST )
LIN_REL {Z 450}
PTP MID[PATTERN[5]] C_PTP
PATTERN[5]=PATTERN[5]+1
ENDIF
;============================================================
COUNTING ( )
ENDIF
;===========================================================

;LINE4 1500ML RD
;=================
IF (LINE4_CARTON==TRUE) AND (LINE4_PALLET==TRUE) AND (GRIPER_CLOSED==FALSE) AND
(SLIDER_CLOSED==FALSE) THEN
PRODUCT=4
;PICK FROM LINE4 RD
;FOLD PTP LINE4_PICK_BEFORE2 CONT Vel= 100 % PDAT1;%{PE}%R
2.4.602,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:LINE4_PICK_BEFORE2, 3:C_PTP,
5:100, 7:PDAT1
PDAT_ACT=PPDAT1
BAS (#PTP_DAT )
FDAT_ACT=FLINE4_PICK_BEFORE2
BAS (#FRAMES )
BAS (#VEL_PTP,100 )
PTP XLINE4_PICK_BEFORE2 C_PTP
;ENDFOLD
;FOLD LIN LINE4_PICKPOS Vel= 1.5 m/s CPDAT1;%{PE}%R 2.4.602,%MKUKATPBASIS,
%CMOVE,%VLIN,%P 1:LIN, 2:LINE4_PICKPOS, 3:, 5:1.5, 7:CPDAT1
LDAT_ACT=LCPDAT1
BAS (#CP_DAT )
FDAT_ACT=FLINE4_PICKPOS
BAS (#FRAMES )
BAS (#VEL_CP,1.5 )
LIN XLINE4_PICKPOS
;ENDFOLD
TRIGGER WHEN PATH=-15 DELAY=0 DO SLIDER=TRUE
TRIGGER WHEN PATH=-7.5 DELAY=500 DO GRIPER=TRUE
LIN_REL {Y -30}
WAIT FOR (GRIPER_CLOSED==TRUE) AND (SLIDER_CLOSED==TRUE)
WAIT SEC 0.6
;FOLD LIN LINE4_PICK_BEFORE Vel= 2 m/s CPDAT5;%{PE}%R 2.4.602,%MKUKATPBASIS,
%CMOVE,%VLIN,%P 1:LIN, 2:LINE4_PICK_BEFORE, 3:, 5:2, 7:CPDAT5
LDAT_ACT=LCPDAT5
BAS (#CP_DAT )
FDAT_ACT=FLINE4_PICK_BEFORE
BAS (#FRAMES )
BAS (#VEL_CP,2 )
LIN XLINE4_PICK_BEFORE
;ENDFOLD
;PALLETIZING LINE4 RD
NAVIGATE ( )
$BASE=BASE_DATA[4]
ROB_SPEED (#FAST )
PTP MID[PATTERN[4]] C_PTP
PTP BEFORE[PATTERN[4]] C_PTP
ROB_SPEED (#MED )
;FOLD SYN OUT 6 'GRIPER' State= FALSE PATH = -250 mm Delay= 0 ms;%{PE}%R
2.4.602,%MKUKATPBASIS,%COUT,%VSYNOUT,%P 2:6, 5:FALSE, 7:2, 9:-250, 12:0
TRIGGER WHEN PATH=-250 DELAY=0 DO $OUT[6]=FALSE
;ENDFOLD
LIN DESTI_P[PATTERN[4]] C_VEL
WAIT SEC 0.45
;FOLD OUT 5 'SLIDER' State= FALSE CONT;%{PE}%R 2.4.602,%MKUKATPBASIS,%COUT,
%VOUTX,%P 2:5, 5:FALSE, 6:CONTINUE
CONTINUE

$OUT[5]=FALSE
;ENDFOLD
WAIT FOR (GRIPER_CLOSED==FALSE) AND (SLIDER_CLOSED==FALSE)
ROB_SPEED (#FAST )
IF LAYER[4]==4 THEN
LIN_REL {Z 430}
ELSE
LIN_REL {Z 400}
ENDIF
PTP MID[PATTERN[4]] C_PTP
PATTERN[4]=PATTERN[4]+1
COUNTING ( )
ENDIF
WAIT SEC 0
ENDLOOP
END
DEF

NAVIGATE ( )

;LINE 3 1500ML SQ
;==================
$TOOL=TOOL_DATA[2]
$BASE=BASE_DATA[3]
IF PRODUCT==3 THEN
SWITCH LAYER[3]
CASE 1,3,5
DESTI_P[1]=LINE3_ODD1
DESTI_P[2]=DESTI_P[1]
DESTI_P[2].X=DESTI_P[2].X+260
DESTI_P[3]=DESTI_P[2]
DESTI_P[3].X=DESTI_P[3].X+260
DESTI_P[4]=DESTI_P[3]
DESTI_P[4].X=DESTI_P[4].X+260
CASE 2,4
DESTI_P[1]=LINE3_EVEN1
DESTI_P[2]=DESTI_P[1]
DESTI_P[2].Y=DESTI_P[2].Y+260
DESTI_P[3]=DESTI_P[2]
DESTI_P[3].Y=DESTI_P[3].Y+260
DESTI_P[4]=DESTI_P[3]
DESTI_P[4].Y=DESTI_P[4].Y+260
ENDSWITCH
IF LAYER[3]==1 THEN
LAYER_HEIGHT=320
ENDIF
IF LAYER[3]==2 THEN
LAYER_HEIGHT=316.9
ENDIF
IF LAYER[3]==3 THEN
LAYER_HEIGHT=320.2
ENDIF
IF LAYER[3]==4 THEN
LAYER_HEIGHT=317.5

ENDIF
IF LAYER[3]==5 THEN
LAYER_HEIGHT=322
ENDIF
FOR II=1 TO 4
DESTI_P[II].Z=LINE3_ODD1.Z+(LAYER_HEIGHT*(LAYER[3]-1))
ENDFOR
FOR JJ=1 TO 4
BEFORE[JJ].X=DESTI_P[JJ].X+150
BEFORE[JJ].Y=DESTI_P[JJ].Y+100
BEFORE[JJ].Z=DESTI_P[JJ].Z+125
BEFORE[JJ].A=DESTI_P[JJ].A
BEFORE[JJ].B=DESTI_P[JJ].B
BEFORE[JJ].C=DESTI_P[JJ].C
ENDFOR
FOR KK=1 TO 4
MID[KK]=BEFORE[KK]
MID[KK].X=BEFORE[KK].X-10
MID[KK].Z=BEFORE[KK].Z+250
MID[KK].A=BEFORE[KK].A
MID[KK].B=BEFORE[KK].B
MID[KK].C=BEFORE[KK].C
ENDFOR
ENDIF
;============================================================
IF PRODUCT==5 THEN
SWITCH LAYER[3]
CASE 1,3,5
DESTI_P[1]=LINE3_ODD1
DESTI_P[2]=DESTI_P[1]
DESTI_P[2].X=DESTI_P[2].X+260
DESTI_P[3]=DESTI_P[2]
DESTI_P[3].X=DESTI_P[3].X+260
DESTI_P[4]=DESTI_P[3]
DESTI_P[4].X=DESTI_P[4].X+260
CASE 2,4,6
DESTI_P[1]=LINE3_EVEN1
DESTI_P[2]=DESTI_P[1]
DESTI_P[2].Y=DESTI_P[2].Y+260
DESTI_P[3]=DESTI_P[2]
DESTI_P[3].Y=DESTI_P[3].Y+260
DESTI_P[4]=DESTI_P[3]
DESTI_P[4].Y=DESTI_P[4].Y+260
ENDSWITCH
IF LAYER[3]==1 THEN
LAYER_HEIGHT=280
ENDIF
IF LAYER[3]==2 THEN
LAYER_HEIGHT=280

ENDIF
IF LAYER[3]==3 THEN
LAYER_HEIGHT=280
ENDIF
IF LAYER[3]==4 THEN
LAYER_HEIGHT=280
ENDIF
IF LAYER[3]==5 THEN
LAYER_HEIGHT=280
ENDIF
IF LAYER[3]==6 THEN
LAYER_HEIGHT=280
ENDIF
FOR II=1 TO 4
DESTI_P[II].Z=LINE3_ODD1.Z+(LAYER_HEIGHT*(LAYER[3]-1))
ENDFOR
FOR JJ=1 TO 4
BEFORE[JJ].X=DESTI_P[JJ].X+150
BEFORE[JJ].Y=DESTI_P[JJ].Y+100
BEFORE[JJ].Z=DESTI_P[JJ].Z+120
BEFORE[JJ].A=DESTI_P[JJ].A
BEFORE[JJ].B=DESTI_P[JJ].B
BEFORE[JJ].C=DESTI_P[JJ].C
ENDFOR
FOR KK=1 TO 4
MID[KK]=BEFORE[KK]
MID[KK].X=BEFORE[KK].X-10
MID[KK].Z=BEFORE[KK].Z+230
MID[KK].A=BEFORE[KK].A
MID[KK].B=BEFORE[KK].B
MID[KK].C=BEFORE[KK].C
ENDFOR
ENDIF
;============================================================
;LINE 4 1500ML RD
;=================
$TOOL=TOOL_DATA[2]
$BASE=BASE_DATA[4]
IF PRODUCT==4 THEN
SWITCH LAYER[4]
CASE 1,3,5
DESTI_P[1]=LINE4_ODD1
DESTI_P[2]=DESTI_P[1]
DESTI_P[2].X=DESTI_P[2].X+275
DESTI_P[3]=DESTI_P[2]
DESTI_P[3].X=DESTI_P[3].X+275
DESTI_P[4]=DESTI_P[3]
DESTI_P[4].X=DESTI_P[4].X+275
CASE 2,4

DESTI_P[1]=LINE4_EVEN1
DESTI_P[2]=DESTI_P[1]
DESTI_P[2].Y=DESTI_P[2].Y-275
DESTI_P[3]=DESTI_P[2]
DESTI_P[3].Y=DESTI_P[3].Y-275
DESTI_P[4]=DESTI_P[3]
DESTI_P[4].Y=DESTI_P[4].Y-275
ENDSWITCH
IF LAYER[4]==1 THEN
LAYER_HEIGHT=320
ENDIF
IF LAYER[4]==2 THEN
LAYER_HEIGHT=311
ENDIF
IF LAYER[4]==3 THEN
LAYER_HEIGHT=320
ENDIF
IF LAYER[4]==4 THEN
LAYER_HEIGHT=320
ENDIF
IF LAYER[4]==5 THEN
LAYER_HEIGHT=323
ENDIF
FOR LL=1 TO 4
DESTI_P[LL].Z=LINE4_ODD1.Z+(LAYER_HEIGHT*(LAYER[4]-1))
ENDFOR
FOR MM=1 TO 4
BEFORE[MM].X=DESTI_P[MM].X+80
BEFORE[MM].Y=DESTI_P[MM].Y-60
BEFORE[MM].Z=DESTI_P[MM].Z+125
BEFORE[MM].A=DESTI_P[MM].A
BEFORE[MM].B=DESTI_P[MM].B
BEFORE[MM].C=DESTI_P[MM].C
ENDFOR
FOR NN=1 TO 4
MID[NN]=BEFORE[NN]
MID[NN].Z=BEFORE[NN].Z+290
MID[NN].A=BEFORE[NN].A
MID[NN].B=BEFORE[NN].B
MID[NN].C=BEFORE[NN].C
ENDFOR
ENDIF
END
DEF

START_UP ( )

;LINE3 AND LINE4 RESET


GRIPER=FALSE
SLIDER=FALSE
WAIT FOR (SLIDER_CLOSED==FALSE) AND (GRIPER_CLOSED==FALSE)
WAIT SEC 0.5
PATTERN[5]=1

PATTERN[3]=1
LAYER[3]=1
PATTERN[4]=1
LAYER[4]=1
PULSE (DISCHARGE_LINE3,TRUE,3.0 )
PULSE (DISCHARGE_LINE4,TRUE,3.0 )
WAIT SEC 3
END
DEF

COUNTING ( )

IF PATTERN[3]==5 THEN
LAYER[3]=LAYER[3]+1
PATTERN[3]=1
IF LAYER[3]==6 THEN
RESET_LINE (3 )
ENDIF
ENDIF
IF PATTERN[4]==5 THEN
LAYER[4]=LAYER[4]+1
PATTERN[4]=1
ENDIF
IF LAYER[4]==6 THEN
RESET_LINE (4 )
ENDIF
IF PATTERN[5]==5 THEN
LAYER[3]=LAYER[3]+1
PATTERN[5]=1
IF LAYER[3]==7 THEN
RESET_LINE (3 )
ENDIF
ENDIF
END
DEF RESET_LINE (A :IN )
INT A
SWITCH A
CASE 3
INTERRUPT OFF 15
PULSE (DISCHARGE_LINE3,TRUE,3.0 )
WAIT FOR LINE3_PALLET==FALSE
PATTERN[3]=1
PATTERN[5]=1
LAYER[3]=1
INTERRUPT ON 15
CASE 4
INTERRUPT OFF 16
PULSE (DISCHARGE_LINE4,TRUE,3.0 )
WAIT FOR LINE4_PALLET==FALSE
PATTERN[4]=1
LAYER[4]=1

INTERRUPT ON 16
ENDSWITCH
END
DEF ROB_SPEED (B :IN )
DECL DRV_SPD B
SWITCH B
CASE #FAST
BAS (#ACC_PTP,100 )
BAS (#VEL_PTP,100 )
$APO.CPTP=100
BAS (#ACC_CP,100 )
BAS (#VEL_CP,2.0 )
$APO.CDIS=100
CASE #MED
BAS (#ACC_PTP,60 )
BAS (#VEL_PTP,60 )
$APO.CPTP=60
BAS (#ACC_CP,60 )
BAS (#VEL_CP,1.2 )
$APO.CDIS=60
CASE #SLOW
BAS (#ACC_PTP,20 )
BAS (#VEL_PTP,20 )
$APO.CPTP=20
BAS (#ACC_CP,20 )
BAS (#VEL_CP,0.5 )
$APO.CDIS=20
ENDSWITCH
END

You might also like