Sign in to follow this  
Followers 0
ChaosIQ

Round Robin Pump Control with availability

5 posts in this topic

Hi every one, I need some help from the Smart Ones out there. I have to write a pump stage up and down routine that takes pump availability into consideration and runs on the Round robin principle - First In First Out. So we have 4 pumps, all may or may not be available to run. Pumps quantities may stage up or down at any time during the process. On stage up, the available pump that ran the longest time ago should come on and so on. On Stage down, the pump that has been running the longest in the current group of running pumps should stage off first. Should one fail whilst running it should be replaced by the next available pump in the queue immediately and resume its place in the sequence as Last In pump. The final goal is to balance out the run time of all pumps in the system once available. I think this has to be done with MASKS but I am stuck in my thought process. I would appreciate any and all help on this topic. Best regards. p.s. Logix 5000 V20.x Edited by ChaosIQ

Share this post


Link to post
Share on other sites
If the final goal is to balance the run time, then you should simply measure that, and then use comparison statements of their run times. This will have the effect as you stated to balance them and maximize off time duration. From there there are a couple of approaches I can think of to create a queue or next up bit for each pump. You could simply populate an array with the sequence based on total run times excluding any running or unavailable pumps. The lowest total run time would be next up during the transition to add one in your sequence, an array tag something like PumpSeq[0]. To get the right values in there might be best done with a loop, but for only four iterations the straight logic should not be too bad. I have done this for a three pump rotation in a Micrologix1000, and it was not too complex. Let me hammer out some Microlite500 tests for a four pump-er and get back to you.

Share this post


Link to post
Share on other sites
Thank you for the help. What I am trying to accomplish is the following. That the next pump to start is always the next available pump that started the longest time ago and the first pump to stage down will always be the pump that have run the longest in the current group of running pumps. And if one pump should fail for some reason that is currently running the next available pump that started the longest time ago should take its place. I hope this makes since, I do not always express myself properly. Edited by ChaosIQ

Share this post


Link to post
Share on other sites
Nice Mid-Term Assignment give your professor an atta boy from me :) That said I'd suggest since this is RSlogix 5000 you create a UDT for each pump and include tags for .Runnung .Available . Runtime .LastStartTime .LastStopTime. With logic to maintain these variables you can implement what you want fairly simply with an array of lpumps and cycle sort thru the array each time you want to start or stop or have a pump fail.

Share this post


Link to post
Share on other sites
Okie Can I see what you have done for a 3 pump cycle with the ML1000 ? I'm always looking to improve.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0