Re: Follow-Error




Malte

After a little more work here, I have come to the tentative conclusion
that you should try setting 

[TRAJ]
...
MAX_VELOCITY       =  1.5 

to a value larger than the value that you set for any axis 

[AXIS 0]
...
MAX_VELOCITY  = 1.2

IMHO this allows some overhead that steppermod can use to feed in
pulses that otherwise build up as following error during acceleration and
during running at max velocity.

(You would not need to translate the experimental details below)


DETAILS OF MY EXPERIMENT.

1 - Percent of Max Velocity and Following Error.

On my first run, I set all Max Velocity parameters to 15 which gave a rapid
feedrate of 900 mm/min.  I also had several processes running which may
account for some of the differences between this experiment and the others
below.  All of these values are averaged from five runs at each feedrate.

feedrate 900 ->  34 mm
feedrate 890 ->  46 mm
feedrate 880 ->  83 mm
feedrate 877 -> 108 mm
feedrate 875 -> 150 mm
feedrate 874 -> 183 mm
feedrate 873 -> 230 mm
feedrate 872 -> 307 mm
feedrate 871 -> 480 mm
feedrate 870 -> 500 mm without trip

First reading of this suggests that I may have exceeded the ability of my PC
to spit out pulses when I try to travel faster than 870 mm/min using 1600
pulses for each mm.  But keep reading.


2 - Max Velocity problems with steppermod

When I change the max velocity to 10 rather than 15 and I am moving at
600 mm/min I again quickly run into following error at 600 ipm.  However at
592 mm/min the control is able to complete the move as programmed. 
Although I didn't do as rigorous a test of this as at 900 mm/min, I suspect
that the curve would look about the same.

I changed the max velocity to 5 rather than 10 and I am moving at 300
mm/min I again run into following error but it is nearly at the 500 mm
distance.

So the easiest conclusion, that there is a max that I'd exceeded at 900
mm/min doesn't prove to be a good answer.  It would seem that the correct
answer has more to do with a percent of the traj max velocity and that
the following error problem is compounded at higher max velocity values.


3 - Acceleration problems with steppermod.

it would seem that the ini values

DEFAULT_ACCELERATION       =  20.0 
MAX_ACCELERATION       =  20.0 

affect how soon a following error will occur when an axis is started at
or near maximum velocity. I'll illustrate by giving some average distance
traveled before the following error message stops the control.  I am using
your ini with max velocity = 15.  This gives a max travel rate of 900
mm/min. (35 ipm)  I used the K6II-400 and executed the mdi command

g1 f880 x500

I repeated the procedure several times and averaged the distance traveled
before following error.

acceleration 01.0 -> 233mm
acceleration 02.0 -> 170mm
acceleration 03.0 -> 161mm
acceleration 05.0 -> 159mm
acceleration 10.0 -> 134mm
acceleration 15.0 -> 130mm
acceleration 20.0 -> 126mm
acceleration 25.0 -> 124mm

I can complete the entire 500 mm at a feedrate of 870/900 with an
acceleration of 20 and 875 with an acceleration of 1.  Below are some
values of feedrate and the distance traveled before following error stops
the axis.


4 -  Discussion

It would seem from the above test that at max velocity, steppermod has no
way to feed in steps that accumulate as following error during acceleration
or that build up as left-over pulses during rapid travel.

Quote from Fred Proctor regarding steppermod and binning.  

"A version of emcmot.c that uses the "binning" algorithm for allocating
pulses that causes resonance in some systems. This was the original stepper
motor algorithm added to the servo-only emcmot.c, using the STEPPER_MOTORS
compile time flag. This creates a second task that runs faster than the
motion controller, typically 10 cycles for every motion cycle. During these
cycles, the pulses resulting from the motion cycle's calculated position
increment are spread out as best as possible. "

If the variable TRAJ MAX_VELOCITY sets the number of spaces within each
bin to exactly match the number of steps needed to achieve max velocity
then there is nothing left over for steppermod to use to catch up and
following error gradually accumulates until it reaches the trip setting.

4 - Possible solution

If Traj Max Velocity sets the number of spaces in a bin and max velocity
for any single axis never quite reaches the number of steps set, then
steppermod should be able to feed in steps that have accumulated as
following error.  To test this using much of the same procedure used
during the acceleration tests above, I set

[TRAJ]
MAX_VELOCITY = 16

and each axis 

MAX_VELOCITY 15

and ran in mdi using g1 f900 x500.  It completed the full move every time.

5 - Possible problems with this solution

Some have observed times when axes do not seem to move according to
a straightforward interpretation of the values set for Max Velocity.  It
was suggested that setting all Max Velocities the same might solve that
problem.  If you decide to implement the solution suggested above, would
you watch for times when you might get the faster rate rather than the one
set for each individual axis. 

Hope this helps

Ray - (ultracrepidarian: (n., adj.) a person who gives opinions beyond his scope
of knowledge.)


 On Sun, 17 Jun 2001, you wrote:
> 
> Hello,
> when I dirive the axes in manual mode I get a Follow-error after some time.
> Here is my conf.
> Thanks a lot
> Malte



Date Index | Thread Index | Back to archive index | Back to Mailing List Page

Problems or questions? Contact