Pump alternation - 10 pump preassure control

Patz

Member
Join Date
Sep 2010
Location
Norway
Posts
3
Hi guys,

I'm a automation student here in Norway, and I have just become an apprentice at a fish processing plant.
One of my first tasks is to replace the control system on a central mounted high preassure washing system. There are 10 pumps that are each controlled by a contactor. The pumps supply several washing stations around the plant.

The preassure is read by a 4-20mA preassure sensor.
I need to regulate the preassure. That's not a big problem. The part i find diffucult is that i want all the pumps to alternate so that each pump wear equal.

I have tried several "tactics" but all seem to end up with way to much logic (big program).
My experience at school is limited to Saia-Burgess PLCs (FBD). At this project i use a Omron CJ1 PLC (ladder logic).

Anyone have some hints to how to write this program?

Regards,
Patrick.
 
No experience with Omron, but in general terms:

Obviously with pumps, you'll want a minimum run time and a minimum off time to prevent short cycling.

You'll also have a run hours timer for each pump that accumulates time only while it's respective pump is running. I normally use a floating point address for this.

When the pressure system calls for a pump to be stopped, your logic will select the pump that has met its minimum run time and has the greatest run hours value.

When the pressure control calls for a pump to be started, your logic will select the pump with the lowest run hours value that has also met its minimum stop time.

I know my description is very basic and might be obvious, but without any knowledge of Omron, I probably can't go much further.

Welcome to the forum, by the way. I know there a many Omron users who frequent this site, so I am certain you'll get some good answers.
 
To expand on OkiePC's excellent advice...

If you use a FIFO you won't have to keep up with minimum run time.

When pump is running, accumulate hours. I use a DINT for this.

Compare pumps to each other to determine who is next to start. You need to use some Greater than or equal to instructions along with Greater than instructions to ensure if the pump hours are the same at least one pump is put into the queue. Part of your debugging will uncover this tidbit.

When time to start, pump in queue gets started and loaded into FIFO.
When time to stop, unload FIFO so pump that has been running the longest is the one that is stopped.

Good Luck!
 
Hi guys,

I'm a automation student here in Norway, and I have just become an apprentice at a fish processing plant.
One of my first tasks is to replace the control system on a central mounted high preassure washing system. There are 10 pumps that are each controlled by a contactor. The pumps supply several washing stations around the plant.

The preassure is read by a 4-20mA preassure sensor.
I need to regulate the preassure. That's not a big problem. The part i find diffucult is that i want all the pumps to alternate so that each pump wear equal.

I have tried several "tactics" but all seem to end up with way to much logic (big program).
My experience at school is limited to Saia-Burgess PLCs (FBD). At this project i use a Omron CJ1 PLC (ladder logic).

Anyone have some hints to how to write this program?

Regards,
Patrick.

You will need a totalizing Timer TTIM/TTIMX. This will keep track of the Accumulated Run Time. It will also require a Reset Condition. Have a look at the CX-Programmer Instruction Help, or the Instruction Reference Manual W340-E1-15. As pointed out by OkiePC and PaulB, you will have to do something to decide which Pump has the least run time, and logic to prevent short cycling of an Individual Pump. In other words, once you have started a Pump, if conditions call for a Pump to shut down, you will need to shut down the Pump that has been running the longest, or some similar scheme. This does complicate things a bit. Don't be too worried about a lot of PLC Code, Omron Rungs tend to get that way.

Why don't you put together some Code, and post your Project so we can have a look at it. (Zip it first)

Stu.....
 
I never really understood the reason for wearing out a redundant system like this equally. It seems like you wouldn't want everything to start failing/needing to be replaced at the same time. It'd be a potential for a lot of downtime and spikes in repair costs.

I have a system running with two 250HP hydraulic pumps. One is main, the other is just "if needed". They tried to get me to put them on a cycle so that we wouldn't wear out one pump and not the other. I convinced them that if we wear out one pump to the point of needing replacement, we just switch main to the other, and replace the worn out pump with little to no downtime and spread out replacement costs rather than have them all happen relatively close together.
 
Thank you all for very good advice!

I decided to count the number of pump "starts" rather than accumulate total run time. On average all pumps should still run the same time.
The FIFO really did the trick for the stopping sequence.

In this code one pump could short cycle, but i think this would not be a problem in real service (the pressure takes some time to build up). If it turns out to be a problem it could easily be fixed in the program.

I never really understood the reason for wearing out a redundant system like this equally. It seems like you wouldn't want everything to start failing/needing to be replaced at the same time. It'd be a potential for a lot of downtime and spikes in repair costs.
Haven't taught of it that way! :) That is actually very true.
This is though not really a "redundant" system. All pumps are connected to one manifold and under high use all pumps run at the same time. Also this system started out as a 6 pump system and has later been upgraded to 8 pumps and then 10 pumps (4 pumps already have a lower total run time).
However i still absolutely see your point.

I have attached the program as a ZIP. If anyone see improvements to be made (i'm sure you do) then yell out.
 
Simple cycle timer

Maybe unrelated to the OP's question but the idea of preventing a motor pump from cycling too fast made me think of posting this.

Here is a simple cycle timer. It's easy to implement to prevent a motor from chattering. Thanks to an engineer named Dave that showed it to me well over ten years ago. I have really gotten a lot of use out of this simple extra timer.

Cycle timer.png
 
It does take a fair amount of time to get used to. I would add one feature.

manual\auto\off switch for servicing in case someone wishes to disable a pump from usage for repairs
 
Last edited:

Similar Topics

My department has been tasked with writing the program for a 4 pump lift station that alternates all four pumps (one lead, one lag, two on...
Replies
4
Views
1,071
I'm sure this question has been asked a lot but i cant seem to find a response I understand. Im fairly new to programming so as much help as...
Replies
5
Views
2,515
Hi guys, I know that "this has been covered lots of times in the past and I should just search it"... But I am struggling to find the correct...
Replies
9
Views
5,503
Looking for some advice... The scenario: I have two discrete pumps used to empty a tank. The lead pump is requested to run once a high level...
Replies
10
Views
12,661
Hi, I would like to assemble a simulator/practice booster pump system that uses PID to maintain steady water pressure under various outlet demands...
Replies
0
Views
70
Back
Top Bottom