need ideas/suggestions on a program

Join Date
May 2011
Location
South Carolina
Posts
87
Hi all.

I am writing a program in RS Logix 5000. I have 8 pieces of support equipment that are exactly the same. They supply high pressure water to several pieces of plant machinery and I want to auto start them, as needed (i.e. pressure drops to a certain set point), based on the least amount of run time. I also need to be able to start them manually. I have a few ideas how to do this but they all seem long and drawn out. Does anyone have a suggestion or an idea on the easiest way to do this? Sorry but my brain is fried from working 7 days a week for the past two months.

Thanks in advance for any help I get.
David
 
Hi all.
I am writing a program in RS Logix 5000. I have 8 pieces of support equipment that are exactly the same. Does anyone have a suggestion or an idea on the easiest way to do this?
Thanks in advance for any help I get.
David
I suggest you create an add-on for the program that controls each piece of equipment, and then you can call the add-on associated with the corresponding piece as a parameter.
Also, this is a great opportunity to create an UDT for the piece, and the you can instantiate each of the 8 pieces.
 
Hi, I would say most of the folks here would suggest that you use an AOI for this application. I haven't used them much, but I know they're real good for duplicate logic, as you said 8 pieces of equipment that are exactly the same and run the same. Turning them off and on in auto, manual and using a run time parameter is additional logic you can create, but use the AOI's to do all the same logic (start, stop, overload, pressure, etc)
There are good examples of AOI's in the sample programming in Rockwell knowledge base, I believe. Hope this helps
 
I think maybe I need to explain a little further what I am trying to do. The high pressure intensifiers are controlled off of a common PLC and the equipment that it supports will interface with this via consumed and produced tags. So they can manually start one if needed. What I really need help with is when I get a signal, based on a dropping pressure, how can I guarantee the high pressure intensifier with the lowest run time is the one that starts. And if it is already running, how do I identify the one with the next lowest run time and start it?
 
Presumably, you will want both an "AutoStart" and an "AutoStop" for each pump, starting the "youngest" when the pressure is below X and stopping the "oldest" when the pump is above Y.

Presumably, you'll be displaying the RunTme to the user in some human readable format: DDDD HH:MM, but you could just keep everything in fractional hours or days. Programmers choice.


Perhaps the easiest thing way to do what you want is to build a float array, RunTime[9].

If a pump is "Available" (by however you want to define that -- in Auto Mode, not Faulted, Out-of-Service for maintenance, etc), then calculate/move its runtime into its corresponding pump # in the RunTime array (converting DDDD HH:MM to fractional days or hours, if necessary). OTOH, if the pump is not "Available", move an "infinitely" large number into the array (1032).


When you detect that you need a pump, find the largest number in the array. Here's some loose pseudo-code to do that. Keep in mind that it may take a few scans to find the right pump.
Code:
If not (FAL_Ctrl.DN)  ONS CLR Largest, CLR StartPumpNo , RES (FAL_Ctrl)
FAL Runtime[FAL_Ctrt.POS] > Largest
Mov Runtime[FAL_Ctrt.POS], Largest
If Not FAL_Ctrl.DN, OTU FAL_Ctrl.FD
If FAL_Ctrl.DN MOV FAL_Ctrt.POS StartPumpNo

Once the FAL control element's .DN bit is set, it's found the largest value, so you can now start the appropriate, available pump. Once started, it stays started until stopped by similar "Stop Pump" logic. (you'll need to move a 0 rather than an "infinitely large" number for your stop logic, as you want the oldest pump, not the youngest one.

HTH. If you need me to provide more detail, just ask. This post is following the adage, "A word to the wise is sufficient." Hopefully it is, sufficient I mean.

Cheers
 

Similar Topics

hi! Background on me: Self learned programmer mostly on LOGO, s7-1200, regular HMIs and WinCC Flexible 2008 Runtime. Only smaller projects. The...
Replies
20
Views
4,176
Need some ideas as to how to do a "for each" loop to check what box is measured. Hello, I need some help in understanding the appropriate...
Replies
4
Views
3,941
I have an application where we have a truck loading program written in Visual Basic. The truck loading program issues a permissive to a Reliance...
Replies
7
Views
1,782
Hey fellas, I'm looking for ideas. I've been asked to look into creating a system that will measure the length of panels cut by our flying cut...
Replies
14
Views
6,923
Hi all I'm after some ideas for some new PLC projects. We are running S5 95U and S7 313C plcs. I have classes doing everything from basic PLC's...
Replies
12
Views
8,856
Back
Top Bottom