hi there
i want to move external axis with external structure.
but when i running program this error shown:1437 Reposition.
i want to skip xp(1 to n) position.
hi there
i want to move external axis with external structure.
but when i running program this error shown:1437 Reposition.
i want to skip xp(1 to n) position.
dat file
external func
i guess this is a KRC2...
what KSS?
what version of Gripper & SpotTech?
can you provide more info on this "external axis with external structure"? is E1 a spot gun or something else?
where is instruction pointer exactly?
what interrupts are active? i do not see declarations...
why not post actual code instead of screenshot? ILFs contain things that are not displayed.
message 1437 "Reposition" is a pretty common sight when one changes robot position in an ISR but does not return to planed path. document with list and description of other messages is available in download section.
your last screenshot shows USERSPOT.SRC with motion inside. according to example in manual for Gripper & SpotTech version 3.2 (for early KSS8.x versions), that block of code may look something like below. I see no robot motions in there.
gripper & spottech 2.4
Krc 5.6.8
E1 is a servo.gun
i want move e1 to -30deg with this retr #cls and -50 deg retr #opn command.
i guess this is a KRC2...
what KSS?
what version of Gripper & SpotTech?
can you provide more info on this "external axis with external structure"? is E1 a spot gun or something else?
where is instruction pointer exactly?
what interrupts are active? i do not see declarations...
why not post actual code instead of screenshot? ILFs contain things that are not displayed.
my src
&ACCESS RVP
&REL 42
&PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe
&PARAM EDITMASK = *
DEF motiontest( )
;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 SPOTTECH INI
USERSPOT(#INIT)
;ENDFOLD (SPOTTECH INI)
;FOLD GRIPPERTECH INI
USER_GRP(0,DUMMY,DUMMY,GDEFAULT)
;ENDFOLD (GRIPPERTECH INI)
;FOLD USER INI
;Make your modifications here
;ENDFOLD (USER INI)
;ENDFOLD (INI)
;FOLD PTP P2 Vel=100 % PDAT2 Tool[1] Base[0];%{PE}%R 5.6.13,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P2, 3:, 5:100, 7:PDAT2
$BWDSTART=FALSE
PDAT_ACT=PPDAT2
FDAT_ACT=FP2
BAS(#PTP_PARAMS,100)
PTP XP2
;ENDFOLD
ptp {e1 0}
;FOLD WAIT Time=1 sec;%{PE}%R 5.6.13,%MKUKATPBASIS,%CWAIT,%VWAIT,%P 2:1
WAIT SEC 1
;ENDFOLD
PTP {E1 -10}
;FOLD WAIT Time=1 sec;%{PE}%R 5.6.13,%MKUKATPBASIS,%CWAIT,%VWAIT,%P 2:1
WAIT SEC 1
;ENDFOLD
;FOLD PTP P13 PDAT11 RETR CLS Gun= 1 Tool[1] Base[0];%{PE}%R 6.1.2,%MKUKATPSPOT,%CRETR,%VPTP,%P 1:PTP, 2:P13, 3:, 5:100, 7:PDAT11, 9:#CLO, 11:1, 13:#FIRST
$BWDSTART=FALSE
PDAT_ACT=PPDAT11
FDAT_ACT=FP13
BAS(#PTP_PARAMS,PPDAT11.VEL)
S_ACT.GUN=1
S_ACT.PAIR=#FIRST
S_ACT.RETR=#CLO
S_READY=FALSE
TRIGGER WHEN DISTANCE=1 DELAY=0.0 DO USERSPOT(#RETR, S_ACT) PRIO=-1
PTP XP13
WAIT FOR S_READY
;ENDFOLD
;FOLD PTP P14 PDAT12 RETR OPN Gun= 1 Tool[1] Base[0];%{PE}%R 6.1.2,%MKUKATPSPOT,%CRETR,%VPTP,%P 1:PTP, 2:P14, 3:, 5:100, 7:PDAT12, 9:#OPN, 11:1, 13:#FIRST
$BWDSTART=FALSE
PDAT_ACT=PPDAT12
FDAT_ACT=FP14
BAS(#PTP_PARAMS,PPDAT12.VEL)
S_ACT.GUN=1
S_ACT.PAIR=#FIRST
S_ACT.RETR=#OPN
S_READY=FALSE
TRIGGER WHEN DISTANCE=1 DELAY=0.0 DO USERSPOT(#RETR, S_ACT) PRIO=-1
PTP XP14
WAIT FOR S_READY
;ENDFOLD
END
Display More
dat file
&ACCESS RVP
&REL 42
&PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe
&PARAM EDITMASK = *
DEFDAT MOTIONTEST
;FOLD EXTERNAL DECLARATIONS;%{PE}%MKUKATPBASIS,%CEXT,%VCOMMON,%P
;FOLD GRIPPERTECH EXT
EXT H50 (INT :IN,INT :IN,INT :IN,GRP_TYP :IN )
;ENDFOLD (GRIPPERTECH EXT)
;FOLD SPOTTECH EXT
EXT USERSPOT (S_COMMAND :IN,SPOT_TYPE :IN )
;ENDFOLD (SPOTTECH EXT)
;FOLD BASISTECH EXT;%{PE}%MKUKATPBASIS,%CEXT,%VEXT,%P
EXT BAS (BAS_COMMAND :IN,REAL :IN )
DECL INT SUCCESS
;ENDFOLD (BASISTECH EXT)
;FOLD USER EXT;%{E}%MKUKATPUSER,%CEXT,%VEXT,%P
;Make here your modifications
;ENDFOLD (USER EXT)
;ENDFOLD (EXTERNAL DECLARATIONS)
DECL BASIS_SUGG_T LAST_BASIS={POINT1[] "P14 ",POINT2[] "P14 ",CP_PARAMS[] "CPDAT2 ",PTP_PARAMS[] "PDAT12 ",CONT[] " ",CP_VEL[] "2 ",PTP_VEL[] "100 ",SPL_NAME[] "S0 "}
DECL E6POS XP1={X 1879.94495,Y -12.7962303,Z 1945.01001,A 0.0,B 89.9997635,C 0.389989614,S 2,T 34,E1 7.0479331,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
DECL FDAT FP1={TOOL_NO 1,BASE_NO 0,IPO_FRAME #BASE,POINT2[] " ",TQ_STATE FALSE}
DECL PDAT PPDAT1={VEL 100.0,ACC 100.0,APO_DIST 100.0}
DECL E6POS XP2={X 1879.94702,Y -12.7962399,Z 1945.00696,A 0.0,B 89.9998627,C 0.389989614,S 2,T 2,E1 -12.4133301,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
DECL FDAT FP2={TOOL_NO 1,BASE_NO 0,IPO_FRAME #BASE,POINT2[] " ",TQ_STATE FALSE}
DECL PDAT PPDAT2={VEL 100.0,ACC 100.0,APO_DIST 100.0}
DECL SPOT_SUGG_T LAST_SPOT={GUN[] "1 ",RETR_CMD[] "#OPN ",CHOISE[] "#FIRST ",CLO_TM[] "0 ",PGNO1[] "1 ",PRESS1[] "0 ",PGNO2[] "1 ",PRESS2[] "0 ",SPOT_PARAMS[] "SDAT2 "}
DECL E6POS XP3={X 1879.94702,Y -12.7962399,Z 1945.00696,A 0.0,B 89.9998627,C 0.389989614,S 2,T 2,E1 -30.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
DECL FDAT FP3={TOOL_NO 1,BASE_NO 0,IPO_FRAME #BASE,POINT2[] " ",TQ_STATE FALSE}
DECL PDAT PPDAT3={VEL 100.0,ACC 100.0,APO_DIST 100.0}
DECL SPOT_TYPE SSDAT1={GUN 1,PAIR #FIRST,RETR #OPN,CLO_TM 0,PGNO1 1,PRESS1 0.0,PGNO2 0,PRESS2 0.0}
DECL E6POS XP4={X 1879.94702,Y -12.7962399,Z 1945.00696,A 0.0,B 89.9998627,C 0.389989614,S 2,T 2,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
DECL FDAT FP4={TOOL_NO 1,BASE_NO 0,IPO_FRAME #BASE,POINT2[] " ",TQ_STATE FALSE}
DECL PDAT PPDAT4={VEL 100.0,ACC 100.0,APO_DIST 100.0}
DECL E6POS XP13={X 1879.94702,Y -12.79632,Z 1945.00806,A -88.3409271,B 89.990097,C -87.9509277,S 6,T 26,E1 -25.3206406,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
DECL FDAT FP13={TOOL_NO 1,BASE_NO 0,IPO_FRAME #BASE,POINT2[] " ",TQ_STATE FALSE}
DECL PDAT PPDAT11={VEL 100.0,ACC 100.0,APO_DIST 100.0}
DECL E6POS XP14={X 1879.94702,Y -12.79632,Z 1945.00806,A -88.3409271,B 89.990097,C -87.9509277,S 6,T 26,E1 -25.3206406,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
DECL FDAT FP14={TOOL_NO 1,BASE_NO 0,IPO_FRAME #BASE,POINT2[] " ",TQ_STATE FALSE}
DECL PDAT PPDAT12={VEL 100.0,ACC 100.0,APO_DIST 100.0}
ENDDAT
Display More
userspot.src
&ACCESS RO
&REL 137
&COMMENT User Spot Routines
&PARAM KUKATPSPOT_VERSION = 1.0.0
DEF USERSPOT (CMD :IN,S :IN )
DECL S_COMMAND CMD
DECL SPOT_TYPE S
SWITCH CMD
CASE #INIT
INIT ( )
CASE #ADVSPOT
ADVSPOT (CMD,S )
CASE #PRESPOT
PRESPOT (CMD,S )
CASE #SPOT
SPOT (CMD,S )
S_READY=TRUE
CASE #RETR
RETRACT (CMD,S )
S_READY=TRUE
ENDSWITCH
END ; END OF MAIN
;*****************************
DEF ADVSPOT (CMD :IN,S :IN)
DECL S_COMMAND CMD
DECL SPOT_TYPE S
WLD_STRT=FALSE
PNUM=S.PGNO1
END ;(ADVSPOT)
;*****************************
;*****************************
DEF PRESPOT (CMD :IN,S :IN )
DECL S_COMMAND CMD
DECL SPOT_TYPE S
GUN_RET=TRUE
;FOLD WAIT Time=1 sec;%{PE}%R 5.6.13,%MKUKATPBASIS,%CWAIT,%VWAIT,%P 2:1
WAIT SEC 1
;ENDFOLD
GUN_WRK=TRUE
END ;(PRESPOT)
;*****************************
DEF SPOT (CMD :IN,S :IN )
DECL S_COMMAND CMD
DECL SPOT_TYPE S
;FOLD WAIT FOR ( IN 79 '' );%{PE}%R 5.6.13,%MKUKATPBASIS,%CEXT_WAIT_FOR,%VEXT_WAIT_FOR,%P 2:, 4:, 5:$IN, 6:79, 7:, 9:
WAIT FOR ( $IN[79] )
;ENDFOLD
WLD_STRT=TRUE
;FOLD WAIT Time=4 sec;%{PE}%R 5.6.13,%MKUKATPBASIS,%CWAIT,%VWAIT,%P 2:4
WAIT SEC 4
;ENDFOLD
PNUM=0
WLD_STRT=FALSE
GUN_WRK=FALSE
END ;(SPOT)
;*****************************
DEF RETRACT (CMD :IN,S :IN )
DECL S_COMMAND CMD
DECL SPOT_TYPE S
IF S.RETR==#OPN THEN
GUN_RET=FALSE
PTP {E1 -50}
ELSE
GUN_RET=TRUE
PTP {E1 -30}
ENDIF
END ;(RETR)
;*****************************
DEF INIT ( )
PNUM=0
WLD_STRT=FALSE
GUN_WRK=FALSE
GUN_RET=FALSE
S_READY=TRUE
END ;(INIT)
Display More
i don't want to back planned path i want to move command manualy by ptp {E1 deg}
i see no mention of support for servogun in SpotTech documentation. there is no mention of word "servo". servoguns are controlled by different tech package (ServoGun TC or ServoGun FC)
i see that last to ILFs are using TRIGGER command (form of an interrupt) to call USERSPOT() which then calls RETRACT().
TRIGGER is used to execute some code while robot is performing motion. for example it can be used to open/close pneumatic tool. but that code called by TRIGGER cannot contain another motion. that would mean two motions planned and executed at the same time - independently of each other. this is not possible. the only way one could start or stop an external axis independently (while robot is moving) is to have that axis configured as asynchronous.