PID - Anti Windup Initial Value


Thread Starter

Greg Thompson

Hey guys,

I'm having a bit of trouble figuring out how this PID block works in one of my controllers.

I've simulated an output with this using just a P controller, but I'm getting rattled on this "I0" parameter which keeps tripping me up.


Here's how I've tried it:
I've got a SETPOINT of 50, and a MV (my measured feedback from a pump) of 0. The output of my controller immediately shows 50 since P=1 and OUT=KP*E. As my MV climbs, the output of my controller gets smaller since E does as well.

Now here's the problem: when I switch my controller to "TRACK OFF", the value of OUT prior to this event is stored in IO. The issue is, this value is negative for some reason. So when I switch back into tracking, the value of my output for a MV of 0, a SETPT of 50, is 0. Since OUT=KP*E+IO ; and IO=-50.

So what gives? That means if I switch my controller to manual mode right with an ERROR of 50, then put it back into automatic, then my controller won't generate an output because IO is negative...

What am I misunderstanding here? Shouldn't IO be positive?
P controller the one shown in (figure 1)

PV //Process value input
SV //Setpoint
MV //Control value output
P //Gain

(figure 1)
DMV = (SV - PV) * P //multiplied Gain to the difference between the PV and SV.
MV = MV + NEG(DMV) //change value sign negated. after Addition to the MV.

It's being output to the DMV in your case.
It is necessary to output the MV.

best regards

<b>Moderator's note:</b> there is no link to a figure in this message, but I decided to post it anyway. I hope it helps some.

Karl Harshbarger

You didn't say exactly what CO you had when you switched to manual but I have to guess the output was 0% when you did.

P only controllers are rare. If MV=SP in a P only controller there can be no output since there is no error. The "IO" parameter you see is the bias term. The controller you're working with is probably back calculating the integral error in an effort to try to provide bumpless transfer when you switch back to auto. This occurs in some controllers where I and D are not used. I don't know if your controller uses integral time or integral gain. If you really don't want integral you'll have to set the term to some ridiculous number that adds little to the output to prevent the controller from calculating the bias. If it's integral time use an impossibly high number, it it's integral gain use a really low number.