[Logix] Lead/lag pumps with PID control and auto/manual speed setpoints

defcon.klaxon

Lifetime Supporting Member
Join Date
Feb 2015
Location
Far NorCal
Posts
616
Hi guys,

I'm working on controlling two pumps with a single PID loop. I've been doing searches in the forum and with Google so I have the general idea down, but wanted to ask about a few "best practices" sort of things that aren't quite be answered by Google searches.

So the general idea is, I have two pumps that bring water in from a lake and supply treatment units. Each pump can supply 900 GPM, and maximum needed influent flow is 1400 GPM but typical operation will likely be 700-1100 GPM. Thus, one pump will be able to handle many situations, but not all. So I'll call a lag pump to run. My plan is to, if the lead pump is called to 100% for a time delay, call the lag; manually ramp the lag pump to 50% and hold it for a minute, then let the PID loop control both pumps at same speed; then, shed the lag pump once the PID output drops below something like 30%.

I have the PID instruction in a periodic function that is set to run once a second. All other PID related instruction (moving data, etc) is done in a subroutine under the main task. So I should be set.

Here's my specific issue: Both pumps have manual speed setpoints if they're in Hand (in the HMI). So if one pump is in auto, but the other is in hand, then the one in auto still runs off the PID. If both are not in auto, then I disable the PID loop with the .SWD bit. Should I also force the output to 0 with .SO? If a pump is in hand, I will simply move the manual speed setpoint to the pump speed setpoint (if the pump is in auto, the PID output is moved to the pump speed setpoint). To ensure smooth, "bumpless" operation do I need to set .SO to 0? Finally, one more question: when the pumps aren't being called to run, what should I do to the PID instruction to keep it from winding up the integral? Should I disable it with .SWM? Put a contact in front of it to keep it from executing? Reason I ask is, I have a Time-of-Day Enable/Disable function that keeps the pumps from running during off hours (5pm to 8am, when no one is at the treatment plant).

Thanks for any help! I did a bunch of Google searching to minimize as much duplicate questions as possible, but these still are stumping me.
 
Last edited:
Just realized I made a small typo; the manual PID override bit is .SWM, not SWD. Hope that doesn't cause any confusion; for some reason the edit button for the post is unavailable so I can't change it.
 
I would take a different approach. With one pump running the tuning setting will be different then with 2 pumps running using one PID. You may have to introduce different tuning parameter on the fly.

I would have one PID controlling the first pump, it's called inching control..

The first pump is controlled by a PID. When it's output gets to 80 to 85% you start the second pump and slowly ramp it up. This will cause the first pump’s PID output to go down. At about 55 to 60% stop ramping the second pump and leave it at whatever speed its at. If the first pump's PID increases again to 80 to 85% ramp up the second pump again. Continue this cycle as needed. If the PID reduces back down to 20 to 25 % then ramp down the second pump ,stop ramping down when the PID increases to 55 to 60%. Continue this cycle as needed. You decide at what % to shut off the second pump.

For when you turn off the pumps, I would just lower the setpoint to the PID to zero.
When you turn it back on, just ramp the setpoint up. How fast will be dictated by your process.
 
I have done this before with 3 pumps. 2 active and 1 backup.
Agree with Mikey above. PID control only 1 of the pumps.
My version was a bit simpler where I had 3 preset speeds for the second pump.
30%, 50%, and 100%
 
Thanks for the replies guys. I can see the merits of just the single pump on the PID, with the lag at discrete setpoints. The functional descriptions describe both pumps running on the PID output; the assumption was that the system's response time would be slow enough for that to be possible and the level setpoint the PV is running off of would respond slow enough that some overshoot would be ok (I wasn't around when the functional description was written, but the guys who did write it are experienced in water so maybe they've done this before).
 
I would argue that they method I suggested above does comply with your funtional descriptions. The second pump's ramping is controlled by the output of the PID. IMHO
 
Are you using VFDs for the pump drives? If so why not let the drive PID control the pumps and slightly stagger the setpoints for redundancy and after the lead pump has gone to 100% then the second one will provide power to meet setpoint.
I have 4 400 hp drives and pumps supplying industrial water to a steel mill and this setup has performed flawlessly for years and provides deep redundancy and keeps running just fine if the PLC were to go down.
I power 4 pressure transmitters with the 24 volt supply from each of the Altivar drives and it's returned signal is the input for the loop in the VFD.
4 separate systems with dedicated pressure transmitters and very very good availability as long as there is power to the system.
Smooth operation and we pick up the power of each pump for a visual indication of demand.
To change the lead and lag order we just slightly move the individual setpoint on a drive.
We use the same system for our cooling spraywater system. Occasionally there is more demand than one pump can deliver, but if two are in operation a lot op power is wasted with bypasses. Starting the second pump on demand caused pressure spikes that were undesirable and also unbalanced the circulating flow in the system.
 
I would argue that they method I suggested above does comply with your funtional descriptions. The second pump's ramping is controlled by the output of the PID. IMHO

Technically I agree, but the description literally says that the pumps are to run at the same speed, from output of the PID. I've asked about the idea of running one pump on the PID and doing the staggered setpoints, and the consensus is that we should try out the original description, and if it doesn't work we can make changes then. So, we'll see how things go when it's time to integrate.
 
Are you using VFDs for the pump drives?

Yeah, VFDs for all the pumps.

If so why not let the drive PID control the pumps and slightly stagger the setpoints for redundancy and after the lead pump has gone to 100% then the second one will provide power to meet setpoint.

Can you explain what you mean here? Sounds like one PID loop sends a speed setpoint to each VFD, but then you're talking about staggering them...I'm not following.


I have 4 400 hp drives and pumps supplying industrial water to a steel mill and this setup has performed flawlessly for years and provides deep redundancy and keeps running just fine if the PLC were to go down.

So if the PLC goes down, where is the PID loop being run? How would the pumps continue to get their run commands?
 
Yeah, VFDs for all the pumps.



Can you explain what you mean here? Sounds like one PID loop sends a speed setpoint to each VFD, but then you're talking about staggering them...I'm not following.




So if the PLC goes down, where is the PID loop being run? How would the pumps continue to get their run commands?

If the PLC goes down the drives keep doing what they the same thing they were doing before... solving the PID within each drive and keeping the delivery on line ans at setpoint.
 

Similar Topics

Hello!! I am trying to create a AOI to perform lead lag pumping operations based on run time. I do have 8 pumps out of which 6 are duty and 2...
Replies
6
Views
2,650
Greetings! I am currently working on an intuitive AOI to perform lead lag pumping operations based on run time. The concept is to...
Replies
7
Views
7,013
Hi All Can anyway shed some light on Lead/Lag/lag1 for Pump operation based on level setpoint? Where can i find a simple project about this? Any...
Replies
4
Views
6,801
Hi Everyone, I am not proficient in RSLogix 500 so I have a question regarding the evaluation of N7:0 data as an input. So as I understand in...
Replies
1
Views
71
Hi folks, in the alarm manager of Rslogix 5000, the tag-based alarm has been created. But when I tried to change the condition, it was found the...
Replies
2
Views
134
Back
Top Bottom