# Robot ignoring the rotary speed specification

• Here is a fragment of the program:

...

!At this point, PR[1,6]=0 ;

!Tool is hanging downwards.

L PR[1] 1000mm/sec CNT25 ;

PR[1,6]=90 ;

L PR[1] 5deg/sec CNT25 ;

...

The idea is to move to clear for rotation, then without stopping switch to rotation.

However, the rotation is done much faster than 5°/sec (times faster).

I understand, that the problem is most probably caused by using the same PR, but still do not undestand why.

Any ideas?

5-axis robot, R-30iB Plus,.

• First thing I see wrong is that you are using a L movement to move "lineary" to a position that I assume you are storing on "Joint position" coordinates.

This, as far as I know will not work correctly and robot will go to the first position without respecting a linear path... I had issues with this on one robot that was not working correctly when going lineary to a point until I discovered it was saved as "joint coordinates" instead of castesian ones.

Second thing is that you are also using another L movement after switching the axis 6 to 90 degrees.

It should be a J movement if you want the robot to respect the speed you are commanding with the 5deg/sec speed.... if not it will interpolate the TCP path and you do not want that. If you are only moving the 6th axis back and forth you do not need a linear movement and with a J movement axis 6 will turn freely with the other axis standing still.

Third thing... when you modify PR on the program directly, motion planner calculates a path, then you are modifying the 6th axis position while in movement.

I think motion planner do not look ahead the same way with "PR" as with "P" points, and it may do a fine point instead because of this.

I never do that anymore so I can't be sure of that but I remember having problems regarding this matter while calculating points middle-movement.

If you calculate all points and store them in PR before the movements, then execute the trajectory it will work ok, but as far as I know if you edit PR while on movement the program pointer will stop briefly on every PR assignment before the next move path is calculated.... it may not be much time, but on some cases it will pause a bit.

If you can, you should use an additional PR just to be sure.

• It should not make any difference I would think, but Have you tried using another PR ? Or using an offsetregister ?

• It would be helpful if you post the PR position data and also the rest of the program. Since you have CNT25 these 2 motions will be blended with something else further down your program.

• It would be helpful if you post the PR position data and also the rest of the program. Since you have CNT25 these 2 motions will be blended with something else further down your program.

Further down is linear motion in another direction, with no more rotation.

I don't have the positional data handy right now, but would be surprised if it has something with the issue.

• Assumption was based on the program content and that tool is pointing down.

But it doesn't matter, if you are using cartesian coordinates then you want to rotate 90 degrees around Z, its ok.

Speed issue can be because movements are blending toguether due to use of cnt like HawkEye says.

You have a movement with 1000mm/s and before it reaches that destination you change the speed to 5deg/sec, but robot do not decelerate instantly and may be going faster than 5deg/sec when passing near the first point to the second one.

Have you tried to put a fine point on both points and see how much time it takes to do the full rotation without the cnt?. Only as a way to check if the robot is doing what its expected when provided that speed command.

• 2 things, a 5 axis robot. And the X,Y, and Z of the move are none.

I would try

!At this point, PR[1,6]=0 ;

!Tool is hanging downwards.

L PR[1] 1000mm/sec CNT0

PR[2:different pr] = JPOS

PR[2:different pr, 5] = PR[2:different pr, 5] + 90

J PR[2:different pr] 5deg/sec CNT25 ;

But being a linear move that only rotates, I would go with Joint move anyway.

or you could Try your original logic with a Joint move on the second move, and time based speed. I have had better luck with the Time. Make it easy on yourself to adjust by using a register.

J PR[1] R[6:time]secs CNT25