I am familiar with PI and PID control but I've recently been reviewing code that seems to use I (Integral) only control. What are the benefits of I control over PI control, and when should it be used / not be used?
Another way to look at your question is when would you use PI control with the P term 0.
The answer is basically "Whenever you think you can get away with it.".
This main risk with only integral control is oscillation or large overshoots due to windup. If the output is low for a while, for example, then the integral term gets ever larger. If this happens too quickly, the plant is driven harder and the output goes up before the controller has a chance to respond by lowering its output.
I-only controllers need to be well damped to avoid instability. The plant needs to respond "quickly" in response to controller output before the integrator has a chance to wind up and cause unacceptable overshoot. The equivalent is saying that the controller needs to be "slow" compared to the plant.
One advantage of I-only controllers is that the integral of the output is controlled long term. For example, you might use something like this to control shaft speed, but where the total revolutions over some long time is more important than instantaneous shaft speed.
A real world example of such a requirement is the power line frequency. It needs to be close to the nominal, but the total cycles over a longer term, like a day, are important to keep line-synchronous clocks correct. The actual control of power line frequency is a lot more complicated than a I-only controller. I'm only using this as a example of a control problem where the long term integral of the output is important, with a little noise allowed on the instantaneous value.
What are the benefits of I control over PI control, and when should it be used / not be used?
Just as with any other forms of control, the answer is simple - you should use the form that best suits the physical characteristics of the system you are trying to control. There is no generic "this one is the best" answer.
Let's review the properties of I-only control in order to understand how it can be used.
While there is an error in a system the I-term grows, increasing control signal until the process reaches setpoint (assuming positive error here, although it works exactly same way in other direction).
When there is no error in a system the I-term remains unchanged, keeping control signal constant
The above shows that main function of integral term is to introduce offset into control signal to balance out external disturbances or internal system offset.
One good example where this can be useful is a control of tail rotor of the helicopter flying in the strong crosswind. The wind creates weathervane effect trying to turn the helicopter, that should be countered by changing tail rotor pitch. When the additional thrust is sufficient to keep helicopter straight the error does not change anymore, however I term remains active.
The example of system offset is a chemical process that needs fixed temperature. It is hard to make true thermally isolated system, so some heat loss is always present and should be compensated for, which is easily done with I control.
The above were good properties. Let's review the bad ones
- If your plant is slow to react, I-term can grow too high, causing overshot or even oscillation (see @OlinLathrop answer).
This means, I-only control cannot be used if system does not tolerate overshot, like mechanical constraints that result in damage if some servo moves beyond them.
It also cannot be used if setpoint can become unreachable. An example would be an elevator door increasing the force if somebody's hand gets in a way.
While there are many methods to deal with windup (like term limiting or back calculation), if your system exclusively depends on them to work properly you probably need to consider different control form.
- The integral gain is usually small, so the control signal is slow to react to external disturbances.
By increasing integral gain one can achieve almost P-controller start-up performance, but then the windup will be inevitable. So, the need to react quickly is exactly the case where one has to choose PI controller over I-only controller.
To summarize: I-only controller can be used in systems with low inertia (in other words, fast response) to correct system offset or deal with relatively stable external disturbances. In all other cases different control type should be used.