Hey guys, I need some advice I am trying to write code for a robot with a millmotor with automatic toolchanger. The code is supposed to work as followed.
First it tries to put a tool in a toolclip.
If the tool is properly unchucked it will continue the main program.
If the tool isnt unchucked properly it will try it for 3 times.
- If within these 3 times it works then it will continue to the main program.
- If It doesnt succeed to unchuck the tool then it will move to an ERROR positon and it will cancel the toolchange program
I almost have it functioning but when the code reaches the point where it has to choose one of the last 2 options it gets stuck with a instruction inadmissable error message.
I tried to let te code pick which option to go for, back to the main program or to the ERROR position with an IF $IN[1]==False THEN ;Toolholder closed without tool, Statement but it gets stuck at that statement. How can i get this to work?
Thankyou in advance
MA
SRC code
&ACCESS RVP
&REL 90
&PARAM EDITMASK = *
DEF Safety_Check( )
;FOLD INI
;FOLD BASISTECH INI
GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
INTERRUPT ON 3
BAS (#INITMOV,0 )
;ENDFOLD (BASISTECH INI)
;FOLD USER INI
;Make your modifications here
;ENDFOLD (USER INI)
;ENDFOLD (INI)
;FOLD PTP HOME Vel=30 % DEFAULT;%{PE}%R 5.5.31,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:30, 7:DEFAULT
$BWDSTART=FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS(#PTP_PARAMS,30)
$H_POS=XHOME
PTP XHOME
;ENDFOLD
;Move to position above toolbox
;FOLD PTP P1 Vel=100 % PDAT1 Tool[2]:nitta leeg Base[0];%{PE}%R 5.5.31,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P1, 3:, 5:100, 7:PDAT1
$BWDSTART=FALSE
PDAT_ACT=PPDAT1
FDAT_ACT=FP1
BAS(#PTP_PARAMS,100)
PTP XP1
;ENDFOLD
;Move to position infront of toolclip
;FOLD LIN P2 Vel=2 m/s CPDAT1 Tool[2]:nitta leeg Base[0];%{PE}%R 5.5.31,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P2, 3:, 5:2, 7:CPDAT1
$BWDSTART=FALSE
LDAT_ACT=LCPDAT1
FDAT_ACT=FP2
BAS(#CP_PARAMS,2)
LIN XP2
;ENDFOLD
;Move into toolclip
;FOLD LIN P3 Vel=2 m/s CPDAT2 Tool[2]:nitta leeg Base[0];%{PE}%R 5.5.31,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P3, 3:, 5:2, 7:CPDAT2
$BWDSTART=FALSE
LDAT_ACT=LCPDAT2
FDAT_ACT=FP3
BAS(#CP_PARAMS,2)
LIN XP3
;ENDFOLD
;Unchuck tool
$OUT[1]=TRUE
;Move 2mm Above tool
;FOLD LIN P7 Vel=2 m/s CPDAT6 Tool[2]:nitta leeg Base[0];%{PE}%R 5.5.31,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P7, 3:, 5:2, 7:CPDAT6
$BWDSTART=FALSE
LDAT_ACT=LCPDAT6
FDAT_ACT=FP7
BAS(#CP_PARAMS,2)
LIN XP7
;ENDFOLD
;Chuck tool
$OUT[1]=FALSE
;Check if tool is unchucked and turn on light
IF $IN[1]==FALSE THEN
$OUT[2]=TRUE
WAIT SEC 4
$OUT[2]=FALSE
;Move to position above toolbox
;FOLD PTP P13 Vel=100 % PDAT4 Tool[2]:nitta leeg Base[0];%{PE}%R 5.5.31,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P13, 3:, 5:100, 7:PDAT4
$BWDSTART=FALSE
PDAT_ACT=PPDAT4
FDAT_ACT=FP13
BAS(#PTP_PARAMS,100)
PTP XP13
;ENDFOLD
;Check if tool is unchucked if tool isnt unchucked start retry sequence
ELSE
IF $IN[1]==TRUE THEN
;Make counter 0
C=0
;Start retry sequence until tool is unchucked
REPEAT
;Chuck toolholder for reconnecting
$OUT[1]=TRUE
;Move back into tool
;FOLD LIN P8 Vel=2 m/s CPDAT7 Tool[2]:nitta leeg Base[0];%{PE}%R 5.5.31,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P8, 3:, 5:2, 7:CPDAT7
$BWDSTART=FALSE
LDAT_ACT=LCPDAT7
FDAT_ACT=FP8
BAS(#CP_PARAMS,2)
LIN XP8
;ENDFOLD
;Chuck tool
$OUT[1]=FALSE
;Move to position infront of toolclip
;FOLD LIN P9 Vel=2 m/s CPDAT8 Tool[2]:nitta leeg Base[0];%{PE}%R 5.5.31,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P9, 3:, 5:2, 7:CPDAT8
$BWDSTART=FALSE
LDAT_ACT=LCPDAT8
FDAT_ACT=FP9
BAS(#CP_PARAMS,2)
LIN XP9
;ENDFOLD
;Move into toolclip
;FOLD LIN P10 Vel=2 m/s CPDAT9 Tool[2]:nitta leeg Base[0];%{PE}%R 5.5.31,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P10, 3:, 5:2, 7:CPDAT9
$BWDSTART=FALSE
LDAT_ACT=LCPDAT9
FDAT_ACT=FP10
BAS(#CP_PARAMS,2)
LIN XP10
;ENDFOLD
;Unchuck tool
$OUT[1]=TRUE
;Move to position above toolclip
;FOLD LIN P11 Vel=2 m/s CPDAT10 Tool[2]:nitta leeg Base[0];%{PE}%R 5.5.31,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P11, 3:, 5:2, 7:CPDAT10
$BWDSTART=FALSE
LDAT_ACT=LCPDAT10
FDAT_ACT=FP11
BAS(#CP_PARAMS,2)
LIN XP11
;ENDFOLD
;Chuck tool
$OUT[1]=FALSE
;Repeat counter
C=C+1
;When to stop repeat sequence
UNTIL ($IN[1] == FALSE) OR (C == 3)
;Wait 1 sec
;FOLD WAIT Time=1 sec;%{PE}%R 5.5.31,%MKUKATPBASIS,%CWAIT,%VWAIT,%P 2:1
WAIT SEC 1
;ENDFOLD
;End check for tool in toolchanger
ENDIF
;When Tool is unchucked continue program
IF $IN[1]==FALSE THEN
;FOLD LIN P15 Vel=2 m/s CPDAT12 Tool[2]:nitta leeg Base[0];%{PE}%R 5.5.31,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P15, 3:, 5:2, 7:CPDAT12
$BWDSTART=FALSE
LDAT_ACT=LCPDAT12
FDAT_ACT=FP15
BAS(#CP_PARAMS,2)
LIN XP15
;ENDFOLD
;FOLD PTP P17 Vel=100 % PDAT6 Tool[2]:nitta leeg Base[0];%{PE}%R 5.5.31,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P17, 3:, 5:100, 7:PDAT6
$BWDSTART=FALSE
PDAT_ACT=PPDAT6
FDAT_ACT=FP17
BAS(#PTP_PARAMS,100)
PTP XP17
;ENDFOLD
;If tool isnt unchucked return to ERROR position
ELSE
;Move down into toolclip
;FOLD LIN P16 Vel=2 m/s CPDAT13 Tool[2]:nitta leeg Base[0];%{PE}%R 5.5.31,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P16, 3:, 5:2, 7:CPDAT13
$BWDSTART=FALSE
LDAT_ACT=LCPDAT13
FDAT_ACT=FP16
BAS(#CP_PARAMS,2)
LIN XP16
;ENDFOLD
;Move out of toolclip
;FOLD PTP P19 Vel=100 % PDAT8 Tool[2]:nitta leeg Base[0];%{PE}%R 5.5.31,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P19, 3:, 5:100, 7:PDAT8
$BWDSTART=FALSE
PDAT_ACT=PPDAT8
FDAT_ACT=FP19
BAS(#PTP_PARAMS,100)
PTP XP19
;ENDFOLD
;Move to ERROR positon
;FOLD PTP P18 Vel=100 % PDAT7 Tool[2]:nitta leeg Base[0];%{PE}%R 5.5.31,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P18, 3:, 5:100, 7:PDAT7
$BWDSTART=FALSE
PDAT_ACT=PPDAT7
FDAT_ACT=FP18
BAS(#PTP_PARAMS,100)
PTP XP18
;ENDFOLD
ENDIF
ENDIF
END
Display More