L
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 :-(
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 :-(