Hi all out there.
So I having a bit of issues with these rapid stopping motions, which is caused because it is not possible for the advance run pointer to approximate where the next motion is. I was reading through the forum regarding approximation, but I really did not find the thread that could help me further, so therefore this new one.
And sorry for the inline form below. I dont know if this is something that is useful or rather bad to see. Anyway, my question for avoid this jerky movements is of couse to use CONT. However even at the default 500mm of approximation, I get warning on the teach-pendant, like: "Sequence of statement that cannot be approximated". The SPTP motion to position OutboundGreenApp is with the CONT from the inline form, which is also stated at the end of the code with C_Spl.
; Move to home position for stack 1.
;FOLD SPTP stack1home Vel=100 % PDAT13 Tool[3]:ForkCenterOfBox Base[4]:EUpalletNEW ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=stack1home; Kuka.BlendingEnabled=False; Kuka.MoveDataPtpName=PDAT13; Kuka.VelocityPtp=100; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SPTP
;ENDFOLD
SPTP Xstack1home WITH $VEL_AXIS[1] = SVEL_JOINT(100.0), $TOOL = STOOL2(Fstack1home), $BASE = SBASE(Fstack1home.BASE_NO), $IPO_MODE = SIPO_MODE(Fstack1home.IPO_FRAME), $LOAD = SLOAD(Fstack1home.TOOL_NO), $ACC_AXIS[1] = SACC_JOINT(PPDAT13), $APO = SAPO_PTP(PPDAT13), $GEAR_JERK[1] = SGEAR_JERK(PPDAT13), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
; Using the cycle flag to check the analog input. The value is without stack equal to 10.0, but the program sees it as 1.0.
; Therefore the values is between 0.0 and 1.0. If the value is equal to 1.0, there is no stacks.
$CYCFLAG[1]= ($ANIN[1] < 1.0)
;// Interrupt instruction -- Using the WITH BRAKE in in oreder to stop the break function right away.
; Removed the WITH BRAKE in the DECL below
INTERRUPT DECL 21 WHEN $CYCFLAG[1] DO ISR_StackIsFound()
;From home position, go to appoach position, as if the stack was green.
;FOLD SPTP OutboundGreenApp CONT Vel=100 % PDAT1 Tool[3]:ForkCenterOfBox Base[4]:EUpalletNEW ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=OutboundGreenApp; Kuka.BlendingEnabled=True; Kuka.MoveDataPtpName=PDAT1; Kuka.VelocityPtp=100; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SPTP
;ENDFOLD
SPTP XOutboundGreenApp WITH $VEL_AXIS[1] = SVEL_JOINT(100.0), $TOOL = STOOL2(FOutboundGreenApp), $BASE = SBASE(FOutboundGreenApp.BASE_NO), $IPO_MODE = SIPO_MODE(FOutboundGreenApp.IPO_FRAME), $LOAD = SLOAD(FOutboundGreenApp.TOOL_NO), $ACC_AXIS[1] = SACC_JOINT(PPDAT1), $APO = SAPO_PTP(PPDAT1), $GEAR_JERK[1] = SGEAR_JERK(PPDAT1), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0) C_Spl
;ENDFOLD
; Now from the approach position, the robot will continue to move in its tools X positive direction.
SeachForStackAtOutbound()
Display More
So basically I already get the error before reaching to the function "SearchForStackAtOutbound".
DEF SeachForStackAtOutbound ( )
$OUT[15] = TRUE
INTERRUPT ON 21
$OUT[16] = TRUE
;FOLD SPTP test Vel=100 % PDAT1 Tool[3]:ForkCenterOfBox Base[4]:EUpalletNEW ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=test; Kuka.BlendingEnabled=False; Kuka.MoveDataPtpName=PDAT1; Kuka.VelocityPtp=100; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SPTP
;ENDFOLD
;SPTP Xtest WITH $VEL_AXIS[1] = SVEL_JOINT(100.0), $TOOL = STOOL2(Ftest), $BASE = SBASE(Ftest.BASE_NO), $IPO_MODE = SIPO_MODE(Ftest.IPO_FRAME), $LOAD = SLOAD(Ftest.TOOL_NO), $ACC_AXIS[1] = SACC_JOINT(PPDAT1), $APO = SAPO_PTP(PPDAT1), $GEAR_JERK[1] = SGEAR_JERK(PPDAT1), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
;FOLD SLIN OutboundMaxReachPos Vel=2 m/s CPDAT3 Tool[3]:ForkCenterOfBox Base[4]:EUpalletNEW ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=OutboundMaxReachPos; Kuka.BlendingEnabled=False; Kuka.MoveDataName=CPDAT3; Kuka.VelocityPath=2; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SLIN
;ENDFOLD
SLIN XOutboundMaxReachPos WITH $VEL = SVEL_CP(2.0, , LCPDAT3), $TOOL = STOOL2(FOutboundMaxReachPos), $BASE = SBASE(FOutboundMaxReachPos.BASE_NO), $IPO_MODE = SIPO_MODE(FOutboundMaxReachPos.IPO_FRAME), $LOAD = SLOAD(FOutboundMaxReachPos.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
WAIT FOR TRUE
END
Display More
Is it because I need to set the Advance run pointer or reset to 0, by $ADVANCE = 0 or anything else?
Or is it because that I am calling a subfuction, SeachForStackAtOutbound() ?
Should I use different that e.g C_Spl, I.e. like C_DIS?
Or is it something else, that I have missed?
My information of the system is:
- Robot: KUKA KR50 R2100
- Controller: KR C5 dualcabinet
- KSS 8.7.2 HF3
- HMI version: 8.7 B394
- Kernel system version: KS V8.7.53394
- WorkVisual V6.0.18_Build0748asd