Thanks everyone for your help
Posts by YarKr
-
-
Thank you, Fubini
I've tried the first and the second. 1) Reduction to 100 points fixed this issue. 2) Unfortunately, this is not sufficient.
And I have a question about 3)
As I understood I need to add 500 instructions in the Spline block manualy in this case. Can I work around this and still get a smooth motion for 500 points?
-
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
Display More&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
Thank you