Mark,
It provides some filtering to the input of the integrator and slows down its response some. The integrator does run on every call but the output of it is only added to the total output every n'th call to PID and at that time it's the average of the accumulated error over the last n calls (times the gain) that gets added. So I believe it should/could help with an otherwise "ringing" or "hunting" response where the integrator drives the target above the setpoint, then back below the setpoint and back up etc.
Step and direction servo, cool! That's the exact application for my own use as well :-) Care to share some details?
One thing I've done in my servo is to allow the user to disable the I-term when the commanded velocity is >0. This is because when moving there will always be a following error which will build up I-term which will cause overshoot at the end of the move. If the intergrator is only allowed to accumulate when the commanded velocity is zero it will only work to drive the steady state error at the end of a move away. It will come at a cost of a slightly larger following error but feedforward can help with that.
/Henrik.
Bookmarks