Hello,
I want my robot move along a helical lin given by 500 points. Each point is calculated in a loop. And i'm having trouble with SPTP motion approximation. The folowing message appears "KSS01123 aproximate positioning not possible (module PROGUSER, block 73)". Please, tell me why this is happening and how I can fix it if possible. May be it's important that he amount of received messages is less then the amount of points that need to be approximated
I use KUKA KR 6 R900 sixx with KRC 4 compact. My KSS version is 8.3.19.
My code is below:
Code
&ACCESS RVP
&REL 24
DEF progUser ( )
DECL REAL ANGLE, HEIGHT ;values fo parametrization of helix
DECL INT ITERATOR ;loop iterator
DECL REAL D_ANGLE, D_HEIGHT ; deltas fo values ANGLE and HEIGHT
DECL FRAME BASE_FRAME ; BASE FRAME OF THE MOTION
DECL POS PTP_MOTION_POS
DECL POS CIRC_AUX_PT, CIRC_END_PT
DECL POS START_POINT
;FOLD INI;%{PE}
;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)
ANGLE = 0
HEIGHT = 0
D_HEIGHT = 500.0/500.0 ;FIRST IS A HEIGHT, SECOND IS A NUMBER OF POINTS
D_ANGLE = 3.0*360.0/500.0 ; 500 IS A NUMBER OF POINTS, 3 IS A NUMBER OF HELIX PERIODS
BASE_FRAME = {X 300, Y 0, Z 800, A 0, B 180, C 0}
START_POINT = {POS: X 300, Y 0, Z 800, A 0, B 180, C 0, S 'b010', T 'b101010'}
PTP_MOTION_POS.X= 0.0
PTP_MOTION_POS.Y= 0.0
PTP_MOTION_POS.Z= 0.0
PTP_MOTION_POS.A= 0.0
PTP_MOTION_POS.B= 0.0
PTP_MOTION_POS.C= 0.0
CIRC_AUX_PT.X= -150.0
CIRC_AUX_PT.Y= 150.0
CIRC_AUX_PT.Z= 0.0
CIRC_AUX_PT.A= 0.0
CIRC_AUX_PT.B= 0.0
CIRC_AUX_PT.C= 0.0
CIRC_END_PT.X= -300.0
CIRC_END_PT.Y= 0.0
CIRC_END_PT.Z= 0.0
CIRC_END_PT.A= 0.0
CIRC_END_PT.B= 0.0
CIRC_END_PT.C= 0.0
$APO.CPTP = 100
;FOLD PTP HOME Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
$BWDSTART = FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS (#PTP_PARAMS,100 )
$H_POS=XHOME
SPTP XHOME
;ENDFOLD
SPTP START_POINT C_SPL
SCIRC BASE_FRAME:{X -150, Y 150, Z 0, A 0, B 0, C 0}, BASE_FRAME:{X -300, Y 0, Z 0, A 0, B 0, C 0}, CA 360
$ADVANCE = 3
FOR ITERATOR = 1 TO 500 STEP 1
ANGLE = ANGLE + D_ANGLE
HEIGHT = HEIGHT + D_HEIGHT
PTP_MOTION_POS.X = 150.0*(-1 + COS(ANGLE))
PTP_MOTION_POS.Y = 150.0*SIN(ANGLE)
PTP_MOTION_POS.Z = HEIGHT
SPTP BASE_FRAME:PTP_MOTION_POS C_SPL
ENDFOR
CIRC_AUX_PT.X= -150
CIRC_AUX_PT.Y= 150
CIRC_AUX_PT.Z= HEIGHT
CIRC_AUX_PT.A= 0
CIRC_AUX_PT.B= 0
CIRC_AUX_PT.C= 0
CIRC_END_PT.X= -300
CIRC_END_PT.Y= 0
CIRC_END_PT.Z= HEIGHT
CIRC_END_PT.A= 0
CIRC_END_PT.B= 0
CIRC_END_PT.C= 0
SCIRC BASE_FRAME:CIRC_AUX_PT,BASE_FRAME:CIRC_END_PT, CA 360
;FOLD PTP HOME Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
$BWDSTART = FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS (#PTP_PARAMS,100 )
$H_POS=XHOME
SPTP XHOME
;ENDFOLD
END
Display More
Thank you