Jerry Avins made a comment in another thread that made me realize: I discussed a lot of methods for use with PID loops that, when used correctly, limit overshoot. But dangit if I never actually said "if you want to limit overshoot, this is what you do"!
So now I'm all fired up to write an article on how to design your PID loop so that overshoot would be limited, and I'm wondering if you could share your favorite methods of doing so. The methods that I know of are:
- Combine a controlled command trajectory (trapezoidal) with clever feedforward to keep the integrator from really winding up, and hence relieve the need for that overshoot at the end.
- Use comparatively heavy derivative feedback (or back off on the 'P' and 'I' terms) to generally slow things down. This will give you a low, long overshoot which is sometimes acceptable.
- Seen here -- change the tuning of the controller as the target is approached, to continually kill the overshoot.
- Make a two-loop system with an inner, limited velocity loop wrapped by a position loop. I've done this before with success, but I think I may have also had to wrap it with feedforward -- I'm going to check.
Anyone have any others?
Thanks.