I'm writing a program designed to capture 7 points around an initial start point. The user will not play the program using any of these points.
First, we capture the initial point, then each movement is executed via geometric offset from this point. After each movement, a list of points (originally created via inline form) is updated to $POS_ACT. I would like to allow the user to run this program with any tool, however when I created the program I used Tool1, so all my inline form points reference tool1.
Is it possible to programmatically change the reference tool for a point captured via inline form?
See code below:
System is a KRC4 KR120 R3100-2 on KSS 8.6.12
Code
&ACCESS RVP
&REL 32
&PARAM EDITMASK = *
&PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe
&PARAM DISKPATH = KRC:\R1\PRODUCTION
DEF Calibration( )
;FOLD DECL
E6POS SphereCenter ;used as reference for relative motions during calibration
FRAME OffsetCalibrator ;offset positin for calibrator gap
FRAME OffsetAPos ;offset position for calibration orientation
FRAME OffsetANeg ;offset position for calibration orientation
FRAME OffsetBPos ;offset position for calibration orientation
FRAME OffsetBNeg ;offset position for calibration orientation
FRAME OffsetCPos ;offset position for calibration orientation
FRAME OffsetCNeg ;offset position for calibration orientation
INT rAnswer ;used for prompts
REAL currORI1
REAL currORI2
;ENDFOLD DECL
;FOLD INI;%{PE}
;FOLD BASISTECH INI
GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
INTERRUPT ON 3
BAS (#INITMOV,0 )
BAS(#BASE,0) ;activate world coords
;ENDFOLD (BASISTECH INI)
;FOLD USER INI
;capture current VEL.ORI
currORI1=$VEL.ORI1
currORI2=$VEL.ORI2
;lower ori velocity
$SPL_VEL_RESTR.ORI_VEL = #ON
$VEL.ORI1=10
$VEL.ORI2=10
;set neutral offset
OffsetCalibrator = {X -285, Y 0, Z 0, A 0, B 0, C 0}
;set offset positions/rotations around TCP
OffsetAPos = {X 0, Y 0, Z 0, A 90, B 0, C 0}
OffsetANeg = {X 0, Y 0, Z 0, A -90, B 0, C 0}
OffsetBPos = {X 0, Y 0, Z 0, A 0, B 90, C 0}
OffsetBNeg = {X 0, Y 0, Z 0, A 0, B -45, C 0}
OffsetCPos = {X 0, Y 0, Z 0, A 0, B 0, C 90}
OffsetCNeg = {X 0, Y 0, Z 0, A 0, B 0, C -90}
;ENDFOLD (USER INI)
;ENDFOLD (INI)
rAnswer=0
MsgDialog(rAnswer,"Jog robot above calibration sphere and select OK when in position.","Calibrate",,"Cancel","OK",,,,,,,)
SWITCH rAnswer
Case 6
;ok
SphereCenter = $POS_ACT
Case 7
;cancel
MsgQuit("calibration canceled by user.")
ENDSWITCH
PTP SphereCenter ;initmove
SLIN SphereCenter : OffsetCalibrator ;move to allow calibratior installation
rAnswer=0
MsgDialog(rAnswer,"Capture start position..","Calibrate",,"Cancel","OK",,,,,,,)
SWITCH rAnswer
Case 6
;ok
XP1 = $POS_ACT ;save pivot position data here
Case 7
;cancel
MsgQuit("calibration canceled by user.")
ENDSWITCH
;;;;;;;;;;;;; CALIBRATION MOVEMENTS ;;;;;;;;;;;;;;;
SLIN SphereCenter : OffsetCalibrator : OffsetAPos
XP2 = $POS_ACT
SLIN SphereCenter : OffsetCalibrator ;return to neutral orientation
SLIN SphereCenter : OffsetCalibrator : OffsetANeg
XP3 = $POS_ACT
SLIN SphereCenter : OffsetCalibrator ;go back to neutral orientation
SLIN SphereCenter : OffsetCalibrator : OffsetBPos
XP4 = $POS_ACT
SLIN SphereCenter : OffsetCalibrator ;return to neutral orientation
SLIN SphereCenter : OffsetCalibrator : OffsetBNeg
XP5 = $POS_ACT
SLIN SphereCenter : OffsetCalibrator ;return to neutral orientation
SLIN SphereCenter : OffsetCalibrator : OffsetCPos
XP6 = $POS_ACT
SLIN SphereCenter : OffsetCalibrator ;return to neutral orientation
SLIN SphereCenter : OffsetCalibrator : OffsetCNeg
XP7 = $POS_ACT
SLIN SphereCenter : OffsetCalibrator ;return to neutral orientation
;;;;;;;;;;;; END OF CALIBRATION RUN ;;;;;;;;;;;;;;;;
$SPL_VEL_RESTR.ORI_VEL = #OFF
$VEL.ORI1=currORI1
$VEL.ORI2=currORI2
HALT
HALT
;;;;;;;;;;;;;;;;;DO NOT RUN PAST HERE;;;;;;;;;;;;;;;
;The following points are used to store the calibration run
;to execute calibration:
;1) Save this file (DAT and SRC) to the PC
;2) Delete all lines before point P1. Your file should only contain 7 points
;3) Upload the DAT and SRC to software suite
;FOLD SLIN P1 Vel=0.1 m/s CPDAT1 Tool[1]:SpikeTesting Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=P1; Kuka.BlendingEnabled=False; Kuka.MoveDataName=CPDAT1; Kuka.VelocityPath=0.1; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SLIN
;ENDFOLD
SLIN XP1 WITH $VEL = SVEL_CP(0.1, , LCPDAT1), $TOOL = STOOL2(FP1), $BASE = SBASE(FP1.BASE_NO), $IPO_MODE = SIPO_MODE(FP1.IPO_FRAME), $LOAD = SLOAD(FP1.TOOL_NO), $ACC = SACC_CP(LCPDAT1), $ORI_TYPE = SORI_TYP(LCPDAT1), $APO = SAPO(LCPDAT1), $JERK = SJERK(LCPDAT1), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
;FOLD SLIN P2 Vel=0.1 m/s CPDAT2 Tool[1]:SpikeTesting Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=P2; Kuka.BlendingEnabled=False; Kuka.MoveDataName=CPDAT2; Kuka.VelocityPath=0.1; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SLIN
;ENDFOLD
SLIN XP2 WITH $VEL = SVEL_CP(0.1, , LCPDAT2), $TOOL = STOOL2(FP2), $BASE = SBASE(FP2.BASE_NO), $IPO_MODE = SIPO_MODE(FP2.IPO_FRAME), $LOAD = SLOAD(FP2.TOOL_NO), $ACC = SACC_CP(LCPDAT2), $ORI_TYPE = SORI_TYP(LCPDAT2), $APO = SAPO(LCPDAT2), $JERK = SJERK(LCPDAT2), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
;FOLD SLIN P3 Vel=0.1 m/s CPDAT3 Tool[1]:SpikeTesting Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=P3; Kuka.BlendingEnabled=False; Kuka.MoveDataName=CPDAT3; Kuka.VelocityPath=0.1; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SLIN
;ENDFOLD
SLIN XP3 WITH $VEL = SVEL_CP(0.1, , LCPDAT3), $TOOL = STOOL2(FP3), $BASE = SBASE(FP3.BASE_NO), $IPO_MODE = SIPO_MODE(FP3.IPO_FRAME), $LOAD = SLOAD(FP3.TOOL_NO), $ACC = SACC_CP(LCPDAT3), $ORI_TYPE = SORI_TYP(LCPDAT3), $APO = SAPO(LCPDAT3), $JERK = SJERK(LCPDAT3), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
;FOLD SLIN P4 Vel=0.1 m/s CPDAT4 Tool[1]:SpikeTesting Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=P4; Kuka.BlendingEnabled=False; Kuka.MoveDataName=CPDAT4; Kuka.VelocityPath=0.1; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SLIN
;ENDFOLD
SLIN XP4 WITH $VEL = SVEL_CP(0.1, , LCPDAT4), $TOOL = STOOL2(FP4), $BASE = SBASE(FP4.BASE_NO), $IPO_MODE = SIPO_MODE(FP4.IPO_FRAME), $LOAD = SLOAD(FP4.TOOL_NO), $ACC = SACC_CP(LCPDAT4), $ORI_TYPE = SORI_TYP(LCPDAT4), $APO = SAPO(LCPDAT4), $JERK = SJERK(LCPDAT4), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
;FOLD SLIN P5 Vel=0.1 m/s CPDAT5 Tool[1]:SpikeTesting Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=P5; Kuka.BlendingEnabled=False; Kuka.MoveDataName=CPDAT5; Kuka.VelocityPath=0.1; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SLIN
;ENDFOLD
SLIN XP5 WITH $VEL = SVEL_CP(0.1, , LCPDAT5), $TOOL = STOOL2(FP5), $BASE = SBASE(FP5.BASE_NO), $IPO_MODE = SIPO_MODE(FP5.IPO_FRAME), $LOAD = SLOAD(FP5.TOOL_NO), $ACC = SACC_CP(LCPDAT5), $ORI_TYPE = SORI_TYP(LCPDAT5), $APO = SAPO(LCPDAT5), $JERK = SJERK(LCPDAT5), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
;FOLD SLIN P6 Vel=0.1 m/s CPDAT6 Tool[1]:SpikeTesting Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=P6; Kuka.BlendingEnabled=False; Kuka.MoveDataName=CPDAT6; Kuka.VelocityPath=0.1; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SLIN
;ENDFOLD
SLIN XP6 WITH $VEL = SVEL_CP(0.1, , LCPDAT6), $TOOL = STOOL2(FP6), $BASE = SBASE(FP6.BASE_NO), $IPO_MODE = SIPO_MODE(FP6.IPO_FRAME), $LOAD = SLOAD(FP6.TOOL_NO), $ACC = SACC_CP(LCPDAT6), $ORI_TYPE = SORI_TYP(LCPDAT6), $APO = SAPO(LCPDAT6), $JERK = SJERK(LCPDAT6), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
;FOLD SLIN P7 Vel=0.1 m/s CPDAT7 Tool[1]:SpikeTesting Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=P7; Kuka.BlendingEnabled=False; Kuka.MoveDataName=CPDAT7; Kuka.VelocityPath=0.1; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SLIN
;ENDFOLD
SLIN XP7 WITH $VEL = SVEL_CP(0.1, , LCPDAT7), $TOOL = STOOL2(FP7), $BASE = SBASE(FP7.BASE_NO), $IPO_MODE = SIPO_MODE(FP7.IPO_FRAME), $LOAD = SLOAD(FP7.TOOL_NO), $ACC = SACC_CP(LCPDAT7), $ORI_TYPE = SORI_TYP(LCPDAT7), $APO = SAPO(LCPDAT7), $JERK = SJERK(LCPDAT7), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
END
Display More