Re: Open loop control


EMC folks,

I've been working on an idea proposed by Matt Shaver that may solve
stepper motor resonance problems and let you use encoders for feedback
on stepper systems.

The problem with the way stepper motors are currently controlled is that
the pulse train is not very uniform for two reasons. First, the EMC
motion controller runs its two tasks in RT Linux's default one-shot
mode, in which the timer is reprogrammed each time it expires. Timing is
much better in pure periodic mode. Second, even with pure periodic
timing, the EMC algorithm for issuing pulses is based on allocating some
number of pulses, based on the velocity, to the fixed number of calls
the stepper task will take until the next time pulses are computed. So,
if you are running at max speed, you allocate one pulse per stepper
task. If you are running at slightly less than max speed, you have to
drop a pulse every now and then. This gets worse at certain spots, and
this "binning" problem excites resonances.

Matt's idea was to set up the stepper task as a frequency generator,
which runs at a fixed period (we've done 16 microseconds per task = 30
kHz for full up-then-down pulse period) and can be stepped down to half,
third, fourth, fifth, etc. This is driven through an error signal from a
"PID", where the feedback is either the open-loop accumulated pulses,
signed by the direction, or actual feedback from something like the DRO
board. Setting the velocity feedforward to 1 gets you almost there. You
can tune the P gain so that it locks on to the position even better. We
tested this and it works fairly well, at least compared with the
current  EMC that excited resonances all the time.

The problem with this is that at high speeds, there is a large
difference between adjacent frequencies. At about 60 ipm the
acceleration resulting from going to the next higher frequency was too
much. This can be improved by offloading the frequency generator to an
8254 chip, which can run at much higher frequencies than we can get in
software. Then, the frequencies near 60 or even 200 ipm should be close
enough that the acceleration from one to the next will be within the
stepper's reduced torque at high speeds.

--Fred



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

Problems or questions? Contact