Multiple PID loops? How do they work?


Thread Starter


OK, let me try to keep this short, as it is my first message here.

Some background...
On a refrigeration plant, I want to use multiple PID loops to look at different things simultaneously, and they must all affect the single output.

The output drives the frequency of a single compressor.
The main set-value is the required temperature of the coldroom.
The main feedback is the current temperature of the coldroom.

So the further the current or actual temperature is from the setpoint, the higher the output will be from the loop, the higher the frequency of the compressor will be, the faster the room will cool down.

I'm using isagraf to write the structured text code for this.

Now comes the other loops.
At any point, I know what the cooling capacity of the compressor is. I calculate it by looking at different things.
I select a required capacity, let's say 12kW.
So as the compressor speeds up, I don't want it to simply speed up to maximum capacity. The compressor speed must be regulated, when the compressor capacity matches the required capacity.

Next there is the maximum allowed head pressure.
As the compressor speeds up, the head pressure increases. Once the head pressure goes over 350psi, the compressor must start slowing down, because once the head pressure reaches 400psi, it's game over and the compressor pretty much explodes.

The same for the low pressure (or suction) side of the compressor. As the pressure drops on the suction side, there comes a point where the compressor has to slow down. The faster the compressor runs, the lower the pressure will be on the suction side. The low pressure side must always be above 0psi.

How would I circuit these multiple PID loops, so that they work together to achieve the optimal compressor speed?

Should I code them all in parallel and add or subtract or multiply or divide their individual outputs, to combine those into a single output?

Or is there another way where the one loop's output becomes the other loop setpoint, or feedback or something?

I can't visualize how these loops should interact with each other :-(
Hi Leon,

I am not familiar with the software you are using, but we have a couple of systems which have more than one PID control loop.

Ultimately there is only ever one loop in control (you only have one output). In our systems we use max / min selection and rate limiters. Careful tuning of the loops then allows for optimum crossover between loops.

To ensure plant safety we then have switches in the loops, which under a given set of conditions will then pull in a protective loop.

Sorry i cant be more specific, but hope this helps with visualising how the loops may interact.

Bruce Durdle

This is a situation where selective control can help. Basically, you want to use the temperature to control the speed of the compressor unless either of the inlet or discharge pressures is outside its acceptable range.

You need to set up three controllers - on temperature, discharge pressure, and suction pressure. The outputs of these are fed to a low signal select module, so that the lowest of the three speed demands is actually used to give the set-point to the speed controller.

While you can leave it like that, you will have to deal with the effects of wind-up in the non-selected controllers. However, if the PID units use integral reset feedback, you can use the selector module output rather than the individual controller outputs to give the feedback signals and avoid windup problems.