PID level control of sequential pumps

@Peter I agree in principle, but I wonder about the non-continuous nature of the flow each time a pump or added.
The levels won't change in a non-continuous way

What if the lead pump is P-only, and the rest of the three pumps are I-only with a PV deadband equivalent to 60-90% of the lead pump speed and a CV range of 0-240%, with each lag pump's 20-100% taking one-third of that range.
I don't like the idea of 3 pumps with 3 INDEPENDENT integrators trying to follow a set point. I see this as having a too many degrees of freedom problem if there is only one set point for all 3 pumps. There would need to be a method of keeping all 3 pump's integrator the same. That is doable. However, they can't be independent.

Why make this complicated? skyfire claims he has a foot of band to work with. He also has a way of keeping track of which pump to start next. I don't know if he has a good method of stopping the long running pump. It isn't clear to me that the pumps are speed controlled, only that there needs to be a soft start but the drive should be able to handle that and the soft start should be relatively fast compared to how fast the level changes so the ramp time can be ignored.
 
Ballparking the dynamics

HP = kGPM * ftH2O / (3.96 η)

kGPM = HP 3.96 η / ftH2O

Say 50ftH2O differential head, and η = 85%.

Under those conditions, a 150HP pump would pump up to around 10kGPM. So with one to four pumps running, a 30kgal tank halfway filled has from two minutes to around two dozen seconds until it overflows if all the pumps stop or goes empty if the inflow stops.

So if the system is in a near stable state, and we assume the controllable range is 17ft (2*.85), then the level moves a foot in about 7s if the equivalent of one pump running at full speed is lost.

So not slow, but not terribly fast either, and with the system in control, the movement will be much slower.

I could be off by a factor of 10 (differential head, available capacitance, pump efficiency) and this should still be doable.
 
Last edited:
I don't like the idea of 3 pumps with 3 INDEPENDENT integrators trying to follow a set point.


Neither do I, that would be insane, and that is not even close to what I described; apparently you consider me the village idiot (not that it would be undeserved ;)).

One I-only PID with a split-range output controlling all three lag pumps. The deadband basically the equivalent of a relay start/stop circuit pattern as a bang-bang level control, so the if the flow is more than 100% of the lead pump but less than an additional 20% of the next lag pump to turn on, then the lag pump will not cycle on and off, because the lead pump will back off the necessary amount.

Of course this could be done without PIDs by using atomic scaling and offset instructions, but by using PID instructions the scaling is built-in and trivial to configure.
 
Last edited:
It isn't clear to me that the pumps are speed controlled, only that there needs to be a soft start but the drive should be able to handle that and the soft start should be relatively fast compared to how fast the level changes so the ramp time can be ignored.


That's the key tooth to be extracted; if that highlighted "should" is not true, then it was a design flaw and no scheme will suffice to control this system well.
 
There are other teeth that need to be extracted. Where are the engineering managers with answers or are they going to let poor skyfire flail and fail.


Another molar to extract is the types of pumps are being used. If they are using fixed displacement pumps then all is good. If the pumps are centrifugal pumps, the flow of one pump affects the flow of the others. skyfire better find out. If the pumps have a speed control then it could be possible to set the running speed to be slightly over 25% and my solution above will work, If you want to get tricky and vary the speed of the operating pumps to exactly match the flow then things get trickier.


I see a recurring theme is so many posts like this.
1. The poor automation guy doesn't provide us with all the important data.
2. #1 occurs because he and/or his management is clueless.
3. the designers are clueless about how to design such a system and even worse, they are clueless as to how to control such a system.


@skyfire,ask for a transfer function. It will be a bluff but a good one. At least get a description of how the system is to be controller. This will make the managers/designers think.


The world needs better management and engineers so the poor automation guy doesn't get screwed.


@drbitboy, the second derivative, rate of change in flow, is not a problem by itself. However I think we agree that the rate of change in flow on the in-flow better be able to match the rate of flow of the out-flow or there will be level excursions until the pumps catch up.



FLOW IS IMPORTANT!


We don't know how the level is being sensed. Typically the level feedback is a little noisy. I don't think this is necessary with proportional only control and a large hysteresis band.
 
What if the lead pump is P-only, and the rest of the three pumps are I-only with a PV deadband equivalent to 60-90% of the lead pump speed and a CV range of 0-240%, with each lag pump's 20-100% taking one-third of that range.

Dude I'm not unfamiliar with a “trips”. But you smoked me down like I'm greenhorn : )))


If the level goes above 8.9ft i.e. above the PIDlag deadband, the output CV of the PIDlag will accumulate (integrate), and increase the speed of the highest lag pump running, and eventually bring on the next lag pump.

And what happens after that?
 
I would revisit the spec. This doesn't have to this difficult. The simple approach described in several posts will work. Often times, they put boilerplate verbiage in these specs. Just my experience.
 
... with one to four pumps running, a 30kgal tank halfway filled has from two minutes to around two dozen seconds until it overflows if all the pumps stop or goes empty if the inflow stops.


That should be one to three pumps running, or maybe two; the system capacity should have been designed to have at least one pump out for maintenance or repair.

So it's more like half a minute to overflow or go empty in the worst case.

I am curious what the pump ramp rates will be; chatGPT suggests 10-15% per minute as typical, with 25% per minute as a general maximum. So if one pump were running at 20%, it could take from eleven+ to twenty-eight minutes to ramp up, serially, to three pumps running at 100%.

If that is the case, I would guess that a worst case maximum step inflow change, i.e. around the capacity of three pumps, would swamp this system. That said, I would not expect any real life change to be a hard step i.e. Heaviside function.

So another tooth is, what is the character of expected process load changes?
 
And what happens after that?


Either that lag pump ramps up until the level is back within the deadband, or the next lag pump comes on and does the same.

Once the level is back within the PIDlag deadband, the PIDlag makes no more changes to its output CV, so the lag pumps' total flow is more or less constant, and the PIDlead and lead pump speed execute P-only level control again.

The I-only PIDlag control will overshoot, but, if properly configured and tuned, then that overshoot will not be too much to drive the PIDlead-controlled level out the other side of the deadband.
 
Last edited:
I.e. after a capacity decrease or a complete stop of the lead pump?
neither.

  • As long as the level is above the deadband,
    • the lead pump, PIDlead.CV = PIDlead.Kp * (PIDlead.PV-PIDlead.SP) + PIDlead.Bias, will be at 90-100% speed (flow), and
    • The additional flow by the lag pump(s), PIDlag.CV = Σ (PIDlag.Ki * (PIDlag.PV - PIDlag.SP) * PIDlag.Δt), will continue to increase.
    • Eventually the total flow will be more than the inflow, at which point the level will start to decrease, and
    • At some time after that point, the additional flow by the lag pump(s) will continue to increase until the level drops back into the deadband.
  • After the level is within the deadband,
    • That additional flow will not change (or at least the lag pumps' speeds will be fixed)
      • Because the PID does not change its CV when the PV is within deadband (zero-crossing deadband option is not enabled),
    • The level will continue to drop, which will eventually cause the lead pump (PIDlead) to back off and find a stable level (assuming inflow is more or less stable).
 
neither.

  • As long as the level is above the deadband,
    • the lead pump, PIDlead.CV = PIDlead.Kp * (PIDlead.PV-PIDlead.SP) + PIDlead.Bias, will be at 90-100% speed (flow), and
    • The additional flow by the lag pump(s), PIDlag.CV = Σ (PIDlag.Ki * (PIDlag.PV - PIDlag.SP) * PIDlag.Δt), will continue to increase.
    • Eventually the total flow will be more than the inflow, at which point the level will start to decrease, and
    • At some time after that point, the additional flow by the lag pump(s) will continue to increase until the level drops back into the deadband.
  • After the level is within the deadband,
    • That additional flow will not change (or at least the lag pumps' speeds will be fixed)
      • Because the PID does not change its CV when the PV is within deadband (zero-crossing deadband option is not enabled),
    • The level will continue to drop, which will eventually cause the lead pump (PIDlead) to back off and find a stable level (assuming inflow is more or less stable).


Each pump max capacity = 1
t = 0 inflow = 0.5
t = 500 inflow = 2.9
t = 4000 inflow = 1.5

P-term curve = P-term+ 50% bias
I-control deadband = 0.2

Pump4.jpg
 
Again, you guys are making this too complicated.
However, drbitboy does have a valid point that the pumps should have enough capacity to handle full demand with only 3 pumps in case one pump is down and only 3 pumps are available.
I disagree with the complications of using an integrator gain. Integrator gains is ONLY NECESSARY IF A PRECISE SET POINT MUST BE MAINTAINED.
So now, instead of dividing the 1 ft proportional band into 4 zones, the band should be divided into 3 zones of 8-12 inches, 4-8 inches and 0-4 inches in the proportional band. A hysteresis value of 2 inches can be used for turning the pumps off. If the 4th pump is available, it can be turned on when the level drops to -4 or more inches from the proportional band.



We still do not know what kind of pumps are being used. It makes a big difference. I think this is the biggest molar to be pulled.



Why are you guys making this more difficult?


Why did Rockwell get rid of the SCP instruction? We have something like the SCP instruction that we use for what we call absolute gearing. It is easy to use.
 
I would be just about 100% sure that these will be centrifugal pumps, if it's a municipal wastewater lift station. If the static head is the main contributor to the system curve and there isn't a lot of friction loss, then you can normally run at different speeds per pump. If headloss is very much flow dependent you can have issues.

But as Peter says... everyone's making this very complicated. No offense, but all you are doing is pumping sh*t. The consultants over complicate things because they feel that simply saying "start pumps based on level" doesn't justify their exorbitant design fees.

I've done dozens of lift stations. Most are fixed speed, even when we have VFDs... they get used for start current limitation and pipe fill / water hammer reduction. The largest one I did a PLC upgrade worked fine with 10 x 250kW pumps on soft start. As Peter again said, spend your time on the algorithm for "first to start, first to stop" to spread the starts. Not that it's as important when you have VSDs.

If you really feel the need to follow the consultants spec for "PID" control, then implement a loop with I and D terms set to 0. Show him the PID block in the code. Ask him if he wants steady level or steady inflow vs. Outflow he can't have both.

Linear scale function with level as input and common speed SP as output. Modify what is 100% level scale (for the linear function only) depending on how many pumps are running.
 

Similar Topics

How can I connect PID Output to a valve. In ladder logic program is there any logic do I want to add between valve and PID? PV=SP What will be the...
Replies
7
Views
420
Have a level control application that consists of a small chamber relative to the size of the incoming and outgoing pumps. I've done this type of...
Replies
6
Views
3,597
Good morning, I have a question and I don't really know what you would call this.... I have 2 tanks which I need to control the level or froth...
Replies
14
Views
7,777
Hi friends I have a L24ER-QBFC1B in a Level Control that you can see in the picture. Tank1 is the process tank. Level sensor is the process...
Replies
4
Views
3,055
I am working on a CIP project. There is a tank which is about 1500L. We need to keep the water volumn inside the tank to be SP:200L. The control...
Replies
17
Views
10,847
Back
Top Bottom