Well, that explains a lot. One option is to convert the D into
floating point (or fixed point with a decimal), but with an integrator
- FIR filter. You need a FIFO buffer where you put the D value, you
sum all the values in the FIFO, and if necessary divide it by the size
of the FIFO.

For starters, we may begin with 16, 32 or 64-entry FIFO. Just one
rolling pointer and 16-entry table should do a lot. (similar to analog
D/A converter)

The most sensitive input on a PID is the D term, so solving this is
very important.

On 9/24/07, Jon Elson <[EMAIL PROTECTED]> wrote:
> Hello,
>
> I had some odd problems with following error settings this
> weekend.  I am setting up a machine in pure mm user units, and
> got the tuning working pretty well, so I then wanted to tighten
> up the following error limits.  So, I set both FERROR and
> MIN_FERROR to 0.01 (mm) and found that I would get the following
> error trip about 150 ms after motion started.  The jerk at the
> start of the linear acceleration ramp caused the worst error of
> about .003mm, the error then decreased a lot, and was about
> .001mm when the following error was declared!  So, the error
> never reached the limit.  I then raised both FERROR and
> MIN_FERROR to 0.05, and everything was fine.  If a put enough
> drag on the motors to cause a following error, it ocurred at
> around 0.05mm, as expected, and was very prompt, within a couple
> ms.  I have looked at the code, and can't see what could make
> this happen.  Are there some defaults for these parameters that
> may override what is in the ini file?
>
> Another problem that I discussed a bit with Stephen Padnos was
> the sensitivity of the D term.  When I look at the velocity
> derived from the ppmc encoder, it is conveniently in raw encoder
> counts, and looks beautiful, ie. it is a noisy band between
> consecutive integers, so it jumps between 2 and 3, then as speed
> picks up it jumps between 3 and 4, etc.  This is as good as you
> can get due to the double quantizing, first by the encoder, and
> second by the servo sampling interval.  But, of course, this
> forces the following error to suffer the same quantization, so
> there is a lot of noise at 1/2 the servo sampling frequency.
> The D term of the PID is totally swamped by this noise, that is
> maybe 2-5 times greater than the real velocity fluctuations.
> The lower the encoder resolution, the worse it gets.  I am using
> 128,000 counts/inch on my minimill, this user's machine is set
> up for 40,000 counts/inch (or in mm units it comes to 1574.803)
> And, worst of all, on his A axis it is 400 counts/degree.  That
> axis is really growly at low speeds.  Anyway, the range of D
> settings that produce stability is narrow, and has to be set
> very low to prevent the quantizing from being greatly amplified
> and swamping the actual velocity signal coming out of
> pid.x.output.  When I look at that pin, I see a very small
> signal, punctuated with huge noise bursts that are about 3 times
> larger than the P-P magnitude of the velocity ramp hidden under
> the noise.  That sure isn't the way to make a well-behaved servo.
>
> Steve and I discussed some digital filtering of the
> instantaneous error signal before feeding it into the D term.
> After looking at the signals with a very expanded time scale, it
> became clear that a lot of the energy was at 1/2 the servo rate
> (no surprise there), so the filter could actually be really
> simple.  I'm not an expert on control system theory so I could
> be chasing the wrong problem.  Hey, John, how about an FFT
> function in HalScope?  That would be really cool!  Otherwise, is
> there a data dump function that would hardcopy the screen
> samples to a file?
>
> I couldn't find too many people on IRC yeaterday.
>
> Any comments?
>
> Jon
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2005.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Emc-developers mailing list
> Emc-developers@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/emc-developers
>

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to