This article is rated Start-class on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | ||||||||||||||
|
Zeroing Integral OR
editI removed this text arguing for zeroing the integral with https://en.wiki.x.io/w/index.php?title=Integral_windup&oldid=1056491271
In addition, integral terms, in general, can have unwanted effects. Different situations may require different integral behaviors. For example, in a navigation system based on bearing and the error between target and actual bearings, the integral term has the desirable ability to correct the bearing after a deviation and restore the course (and not just the bearing) to the desired one. Conversely, a car speed cruise control should not attempt to equally balance errors in one direction with errors in the other. For example, a period of time spent below the speed set point should not be balanced by an equal integral above the speed set point. In this latter case, it is desirable to zero the integrator every time the error is zero or when the error changes sign. A convenient and robust method to determine when the error changes sign or is equal to zero is to multiply the current error by the previous error. (The previous error would be available if a derivative term is also being used.) If the product is zero or negative then the integrator should be zeroed.
If the integral parameter is well-tuned, and the controller algorithm well designed it will avoid the unwanted effects. The example of the car is original work and mischaracterizes the integral term. At steady state, the error is zero, the derivative is zero, and the integral term is the sole term providing output. Zeroing may work in the case of the setpoint being zero, but if the system is operating far from zero, zeroing the integral would cause a large disturbance. In the cruise control example, if cruising above idle at 50% throttle, zeroing the integral would be like turning off the cruise control, idling the engine, and hitting 'resume'--there's not enough error to signal 50% throttle.
In PID_controller, some solutions are addressed to the Integral windup problem. I think this should be part of this article. Maybe the solutions for Integral Windup should be moved from PID_controller to here, or maybe this article should be merged in PID_controller?
84.80.227.148 (talk) 16:33, 30 October 2008 (UTC)
a code implementation:
output = PID(input)
if output>100 then
ISum = ISum - (output-100)
output = 100
else if output<0 then
ISum = ISum - output
output = 0
end if
129.132.32.244 (talk) 13:47, 16 November 2012 (UTC)
- The second link in the references does not seen to work. Can anyone fix it or delete it?
Picture to Showcase the Windup Effect
editI suggest using this picture or a similar one to showcase the effect.
http://brettbeauregard.com/blog/wp-content/uploads/2011/03/Windup.png — Preceding unsigned comment added by PirateWithRum