# Why does a proportional controller have a steady state error?

I've read about feedback loops, how much this steady state error is for a given gain and what to do to remove this steady state error (add integral and/or derivative gains to the controller), but I don't understand at all why this steady state error occurs in the first place.

If I understand how a proportional control works correctly, the output is equal to the current output plus the error, multiplied by the proportional gain (Kp). However, wouldn't the error slowly diminish over time as it is added (reaching 0 at infinite time), not have a steady state error? From my confusion, it seems I'm completely misunderstanding how it works - a proper explanation of how this steady state error eventuates would be fantastic.

• (so no- the output is not the current output plus the error multiplied by Kp, the output is the error multiplied by Kp, if you are adding then it's Ki...) Oct 19, 2013 at 5:41
• (this isn't really a programming question but while we're at it :-) you can get by with I as you describe but a PI controller is going to be a lot more responsive... Oct 19, 2013 at 5:51

The controller you are describing where you keep adding the error times a constant to the current output value is an Integrator. You are clearly integrating the error. A proportional controller would be setting the output to P times the error. It also matters what the output controls, e.g. whether it's torque, or position, or velocity for a motor control system. (something proportional in velocity is integral in torque...)

The reason for a steady state error with P only is that as your system approaches the set-point the error signal gets smaller and smaller. Your control is Kp times that error signal and eventually the error will be small enough that Kp times the error won't be enough to force it all the way to zero.

An Integrator "saves the day" by accumulating the error over time and therefore even the tiniest error will eventually accumulate to something large enough to force the controller to correct for it.

As an example let's look at a P temperature controller for an oven. We have a heating element and we control the current to that element. Our set-point is 100 degrees. The oven is constantly losing heat to the outside environment (which is lets say at 0 degrees). We start up at an error of 100 and let's say our P is set such that this is 10A. If P is set too large the system is going to be unstable but if we assume stability at some point the error will be so small such that P*error isn't going to be enough to overcome the heat loss of the oven to the environment. You will reach equilibrium away from your set-point.

• " Your control is Kp times that error signal and eventually the error will be small enough that Kp times the error won't be enough to force it all the way to zero." How do you know that it is not enough to force to zero error? Dec 1, 2017 at 17:53
• @anhnha because as you approach zero error you have zero force. If you have a system with zero friction, or a system that doesn't lose heat to the environment then a P controller could asymptotically converge on zero... Dec 2, 2017 at 18:07
• So you are saying that in theory (with zero friction, no heat, etc) there would be no offset error for P-only controller? Dec 3, 2017 at 6:12
• Can you tell how this is shown by using math as Dan M's post below? Dec 3, 2017 at 6:15
• @anhnha All I'm saying that if you have an output that's `gain x error` then it's clear that under an external force that system can't hold a set-point because the output is zero. That's a mathematical proof that a proportional controller can't zero the error in any system that is subject to external force (heat loss, gravity, whatever) which is any real world system. Dan's math is stronger in the sense that it shows that there is always a bias even in systems that don't exist in the real world. If the error is already zero and there is no force acting on the system there is no bias. Dec 3, 2017 at 21:20

Consider the following system: (source: prenhall.com) This is a proportional system with a plant G(s), gain K, input R(s) and output Y(s). The system has no disturbance modeled and has unit feedback, but using this we can show how the proportional controller (even in this simplified, ideal state) inherently produces an offset at the output.

Let's express our output Y(s) in terms of everything else.

Y(s) = G(s) * K * (X(s) - Y(s))

Doing a few manipulations, you can get this:

Y(s) = X(s) * [G(s)*K/(1+G(s)*K)]

What this means is Y(s) is always proportional to the input signal X(s) multiplied by the system G(s)*K/(1+G(s)*K), which means there is always a biased output (unless K or G(s) go to infinity).

You have to remember, you're dealing with real devices. In a perfect world, a control signal will have an effect, no matter how small. In the real world, control signals smaller than some threshold value don't do anything at all. (Imagine a chihuahua trying to pull a Mack truck.)

In a proportional control system, the control signal is the error multiplied by the control gain. To prevent overshoot, instability, and other Bad Things, you make the gain small.

As your plant (controlled system) gets closer and closer to the desired value, the error gets smaller and smaller. When you multiply a smaller and smaller error by a small gain, eventually the product gets too small to have any effect, and is truncated to zero.

That's your steady state error, the region around the desired output where the product of the error and the gain is too small to register.

After whatsisname's downvote, I thought back. He's right. I was confusing "dead band" with "steady state error".

If you have a constant perturbing force (for lack of a better term), and you are using a PI controller, there will be some point at which the control signal (product of error and gain) exactly balances the perturbing force. At this point, the plant (system being controlled) experiences zero net force: the perturbing force and the correction cancel each other, and the plant just sits there, with a constant error, the error generating the signal to cancel out the perturbing force.

The first-level fix is to go to a PI controller, one that not only produces a correction based on the error, but also based in the integral over time of the error. The integral term is what "notices" the steady state error and moves to correct it.

The catch is that a PI controller can have overshoot problems. There are no silver bullets.

• -1, there will be SSE even with ideal devices, it's mathematically guaranteed. Oct 19, 2013 at 22:05