Waste Oil Pump Control

wdreynolds1

Member
Join Date
Jan 2009
Location
Upstate New York
Posts
18
The project I'm working on is strictly digital I/O.

L30ER Compactlogix with 17 nodes of point I/O in the field...

The customer is building a service center for heavy equipment. They will have 8 service bays where techs will do preventative maintenance on heavy duty industrial vehicles.

There will also be 17 locations where techs will pump waste oil into a central waste oil bulk tank. Each location has their own waste oil pump, operator panel with pilot lights and control.

There is one high level float switch in the bulk tank and one pressure switch at the header going into the tank.

The waste oil pumps are rated up to 50psi of back pressure. The customer is asking for three things:

1) As long as the bulk tank isn't full and line pressure is less than 50 psi any amount of pumps can run.

2) If 5 pumps are currently running and we see a high pressure event (over 50 psi in the line) then we shut off the last pump started and queue it until the pressure drops below 50psi (this is digital IO so the setpoint is at the switch) and then we start it back up.

3) If any additional pumps are asked to start during a high pressure event then we queue those pumps in order and they will start in turn after pressure is below 50psi.

I have several ideas on how to proceed... but I'm hoping one of the more seasoned controls engineers on here (the relay logic/digital guys) can suggest to me the most efficient way to code this.

My primary goal, after safety and efficiency, is making the code as easy for their techs to troubleshoot as possible.

Thanks in advance for any advice,

W
 
I understand the Digital approach - the problem is how long can the system handle a high pressure.
If you rely on timers there is a possibility that the pressure may stay high and damage the system.
I would suggest/recommend that you Add an analogue PS to the system.
Use the digital PS as an override should it remain high for too long.

the only digital way to program your planned process is with time delays.
and you want to rely on a single pressure switch
what happens if it fails?
 
You actually have one of the tougher tasks done - a clear description of the program functions! It is amazing how many people try to skip that one.

Next create an I/O point list and an alarm list. This helps organize your thinking.

Then just start programming. Don't try to get it all organized or figured out in your head ahead of time. Begin with something simple like the start circuit. Add the pressure lockout, etc. etc.
 
My primary goal, after safety and efficiency, is making the code as easy for their techs to troubleshoot as possible.
If you did not have the requirement to "make it easy for their tech to troubleshoot", then my first thought for the Pump queue would be to use a FIFO PLC memory stack register to keep up with the list of pumps that need to run, and the order to run them (first in, first out). But the FIFO is a somewhat non-transparent instruction, with a lot going on that is not obvious to the casual tech user.

So if you want it to be "easy to troubleshoot", that means you might have to sacrifice some of the wish list. You could make it easy by only allowing ONE pump in the queue, with all other pumps being ignored until the operator again presses the Pump Start button.

I guess the bottom line is you can have it as requested but not simple and easy to troubleshoot, or you can not use the FIFO and only have a 1-pump Queue.
 
Last edited:
I assume you are pumping to a common header with multiple pumps. I would do two things
1 make calc of maximum flow and pressure drop - size pipe to minimal / desirable liquid velocity. Too large is infinitely better than too small.

2. Mount check valves on the header to ensure one pump does not pump thru another idle pump.

Yes a hydraulic pump can be driven backwards - it is then called a hydraulic motor. If this happens you may be called back handed rags to clean up a bunch of oil all over the floor.

Dan Bentler
 
I'm hoping one of the more seasoned controls engineers on here (the relay logic/digital guys) can suggest to me the most efficient way to code this.
Using a FIFO stack register with Length = 17 like the attched example would be efficient. This is a LogixPro simulator software program, but your CompactLogix will have similar instructions. I completed and tested all steps for TWO pumps. Adding the other 15 can be done by copying rungs, pasting, then changing addresses to add the next sequential addresses for the next pump.
 
I made a change to correct the counting of the number of pumps running (added Up/Down Counter C5:0).
 
Last edited:
Lancie,
Thank you for your suggestion... and thank you to all for your help! The FIFO stack register seems to be the most efficient way to code this without requesting a change order on the job scope.

I appreciate the input!!

W
 
Yes, because you have to have FIFO logic (or something similar) to keep up with pump requests that cannot start immediately due to high pressure or tank level, then you might as well insert ALL pump start requests into the FIFO Load (FFL), and then only inhibit the FIFO Unload if needed. Notice that if the FIFO Unload is not inhibited due to pressure or tank level, a pump request will be filled immediately and the pump will start right away.

I was thinking about this setup while thinking about the program. It occured to me that is was similar to a waste oil system that I once programmed for a large compressor building at a fertilizer plant. There were about 12 large compressors (1000 to 3000 horsepower) that had oil collection sumps around the base to collect oil that leaked out of each one. Instead of using a pump for each compressor (expensive), I used ONE vacuum pump for the whole system, installed a drain line at the lowest point of each oil sump, with a solenoid valve that opened that line when energized. So the main cost was for one vacuum pump and 12 solenoids, tubing, and a SLC 5/02 PLC. The program ran a timed cycle that opened each solenoid for a set time (depending on the leakage rate for that compressor). It worked well and as far as I know is still running.

For your system, one vacuum pump could do the job, with a oil sump and solenoid at each of the 17 stations, and a pushbutton that would signal the PLC that station needed to be emptied.
 
I didn't have time to look at Lancie1's code but a FIFO was also my first thought. The one concern I have have with using the FIFO is what happens when the third pump in the queue when four pumps are running finished pumping while the first, second, and fourth still need to run? The pump can be removed from the queue, but a simple FIFO isn't going to do it. One option is to swap the queue position with the #1 position and then unload with FFU, or you can manually unqueue the third pump, copy everything down one position in the queue, and decrement tagname.pos. Just something to think about.
 
The one concern I have have with using the FIFO is what happens when the third pump in the queue when four pumps are running finished pumping while the first, second, and fourth still need to run?
When any pump is stopped, it has no effect on the other running pumps. They can keep running until their Stop PB is pressed. In this case, the FIFO Unload is NOT controlled, nor is it related in any way, to the FIFO Load! These functions are completely independent as they should be in the majority of FIFO uses.

Each pump is removed from the FIFO stack when the next pump to run causes a FIFO Unload. The FIFO Unload only STARTS each pump. When any pump is unloaded from the FIFO queue, it starts and seals itself on until the Stop PB is pressed for that pump, or the pressure switch or tank level goes high.

If no other pumps have a Start Request, then the last pump remains in the FFU Dest position. If any pump happened to be the last one started AND there are 5 pumps running, then that pump will stop then restart after a high pressure or high tank level event (because it is still in the FIFO unload position).
2) If 5 pumps are currently running and we see a high pressure event (over 50 psi in the line) then we shut off the last pump started and queue it until the pressure drops below 50psi (this is digital IO so the setpoint is at the switch) and then we start it back up.
This restart feature was one of the specifications and isn't it lucky that it happens automatically if you use the FFU instruction?

If a pump was not the last one started, then once started, it will continue to run until its Stop PB is pressed. (Now that I think about it, there really should be a XIO I:1/0 Tank High Level switch in each Pump Output rung to shut it off on high level). To start it again, it will need to be re-entered into the FIFO by pressing its Start Request PB.

Here is Revision 2 with the added Tank High Level XIO's on the Pump Output rungs, still only filled in for 2 pumps. If my headache goes away, I might fill in the other 15 just to see if it still works correctly.
 
Last edited:
I started filling in the other pumps in the LogixPro simulator program, and when I got to Pump 4, I got this ugly message that said "Too Many Instructions", and LogixPro shut down. I have never had that to happen before, but I guess this one exceeded the capacity of LogixPro.

I am now in the process of entering it into RSLogix 500. I see that the easiest way is to divide it into 17 subroutines, then copy the logic for Pump 1 into all the others, then change the addresses.
 
Here is the RSLogix 500 version. I put all the FIFO and related instructions in the MAIN Lad 2 file, and each pump in 17 subroutines that are called every scan, simply to make it easier to enter and to make changes. Not all pages printed out to the PDF file, but all rungs are in the RSS zipped file.
 
Last edited:

Similar Topics

We have two submersible waste pumps in a sump. Submittals for the pumps are 1hp, 1.5A@460VAC Motor, 91GPM, 50FT max. Long story short, the...
Replies
18
Views
5,398
Hey all, Question regarding waste water treatment control standards. Without too much context, i am wondering if waste water for some reason...
Replies
5
Views
2,386
Hello everyone, In a conversation with a major drive distributor MCCs and Kiosks were frequently mentioned and I had no clue what he meant by a...
Replies
2
Views
1,131
This system is a 1769-L32E PLC/SCADA, with three 1794-AENT flex bus remote I/O stations, over Ethernet. This system has been in place for 10 (or...
Replies
6
Views
1,936
I have a customer that needs to start logging their waster water system at the demand of the county. They need to report quarterly the daily...
Replies
16
Views
4,061
Back
Top Bottom