On 01/12/2012 10:05 PM, Jon Elson wrote:
> I was just perusing some of the EMC docs, and wound up on the PID
> hal component docs and source. I have never quite understood the
> behavior of
> the D term.
>
> To (over) simplify:
> error = commanded - feedback
> errorD = error - previous error
> output = error * P + errorI * I + errorD * D
>
> Let's look at a couple cases :
> 1. commanded pos is 5.0, feedback is now 4.8, it was 4.8 last servo cycle.
>
> So, error is -0.1, previous error is -.2, so
> errorD is -0.1 - (-0.2) = +.1
I assume from your results there is a typo in the feedback -- it should
have been 4.9 this cycle and 4.8 last cycle. So
error = commanded - feedback
= 5.0 - 4.9 = +0.1
previous error = previous_commanded - previous_feedback
= 5.0 - 4.8 = +0.2
errorD = error - previous error = +0.1 - +0.2 = -0.1
errorD is negative, so with a positive D the D-term contribution is
negative, which I think is what you want to avoid overshoot.
> Now, errorD is multiplied by the P term and adds a positive value to
> the output. This seems wrong, as the error is decreasing with movement
> in the positive direction, so you would
> actually want to add a negative adjustment to the output to avoid
> overshooting
> the commanded position.
>
> Here's another:
> commanded position is 5.0, and not changing. A disturbance
> has occurred, and the feedback is now 4.9, so the machine just
> bumped in the minus direction.
error = 5.0 - 4.9 = +0.1
previous_error = 5.0 - 5.0 = 0
errorD = error - previous error = +0.1 - (0) = +0.1
when multiplied by a positive D, this adds a positive adjustment to the
output, to bring it back to where it should be.
> error is -0.1, previous error was zero.
>
> errorD is -0.1 -(0) = -0.1
> This adds a negative adjustment to the output, which is forcing it in
> the wrong direction. It should be moved to the positive to correct
> the disturbance.
If I'm missing the boat, please let me know.
Karl
------------------------------------------------------------------------------
RSA(R) Conference 2012
Mar 27 - Feb 2
Save $400 by Jan. 27
Register now!
http://p.sf.net/sfu/rsa-sfdev2dev2
_______________________________________________
Emc-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-developers