PID PLC Blocks - Proportional Component


Thread Starter


Hey guys, noob technician here.

I'm pretty new to PLC stuff, but I'm having a ridiculously hard time understanding why my PLC behaves like this. The definition of the PID function block I'm using says that it uses an incremental algorithm. That's great, I'm totally comfortable with that. My problem seems to be though, there is never any proportional action from the start. Here's what I mean by that. The documentation for this blocks says that ProportionalComponent= kp*(change in error). So lets say I have a setpoint of 100 and a PV of 0. If I run that PLC - with a Kp=1 and say Ki >0, I should end up with an output of 100 right off that bat. But what actually happens is, my output starts from 0, and as I increase my PV, my output decreases (like should happen with an incremental controller).

Can anyone explain why this happens? All through college was taught that if I have an error of 100, my controller output should have a proportional component of 100*Kp; but with this block (and another one I've seen as well), I actually only take away from my output as I decrease my error. This isn't a direction problem, because the integral component accumulates in the correct direction.

Basically, my PID doesn't seem to operate like any control systems "textbook" would suggest. Any help to a PID noob? I'd be forever grateful if someone could get me out of this rut!

William Sturm

What kind of PLC?  Are there any options for a PID block with a non-incremental algorithm?  You are correct that a proportional control should simply output a value of error times gain for the P term.  This is assuming that there are no I or D terms which will also add to the output signal.  What you describe sounds like a Derivative function.
Does the block operate in "velocity mode"? That can give results that are hard to verify by calculating manually.

Hans H. Eder

The incremental version is absolutely the one to prefer – as you can even for the I-controller calculate by hand exactly what you should see. For the absolute version you would have to do always the integration.

Question upfront: Is this a closed loop simulation / test? If so, is there some dead time in the (simulated) process? If there is deadtime or if the controller is not connected to a process, then we have the following:

Starting point: SP = 100, PV = 0 and OP = 0. With a P-controller alone nothing should happen: The PV is unchanged, so is the SP, so is the error and thus the change in error. Of course, Kp * (change in error) gives 0.

Adding integral action should drive now the OP to 100 - if and only if:
- the error is computed as PV – SP; and
- reverse control action is set
- or both are the other way round (E = SP – PV and direct action).

P-only control: Increasing the PV gives a smaller error thus a negative change in error (current error – prev. error) and thus a lower OP.

PI-control: The same can be expected when the P-action is stronger than the I-action: Just calculate Kp * (change in error) and compare to Ki * (current error): Easy with the incremental version.

What I do not understand is: At starting point your OP = 0. How can you go lower – does the system allow negative values for the OP???

Finally, if you are not in a hurry (a sales pitch): In about two months my booklet about PID control will be ready – with detailed step-by-step description (also comparing absolute and incremental PID differences) and many, many pictures / curves. We look first at the P-, the I- and the D-controller individually, then at combinations. Or: If you are living in Europe you could take one of our training courses.

Hans H. Eder