fifo for 2 machines

James Mcquade

Member
Join Date
Oct 2007
Location
Nashville, Tennessee area
Posts
3,640
Hi everyone,

we have had 2 machines delivered to us, #1 is 12 stations and #2 is 36 stations. each does the same thing.

We have installed it and have started running it, trouble is,
someone under estimated the cycle time for one of the processes and now our plant utilities is unable to keep up with the process.


what they want me to do is to modify the program and use a fifo. the first station loaded is the first run and so on. I have looked for fifo posts and i don't think i did it correctly because i didn't find much information.

I have never used a fifo load / fifo unload before so i am needing some help.
I have done several programs with indexed addressing but i don't know if this will work. I can load the counter registry, but how can i move the station addresses in a word shift manner?

Any help would be much appreciated on the fifo and addressing question.

thanks in advance,
james
 
Last edited:
Your going to have to describe in much more detail what the problem is and how you think it could be solved. Then someone could suggest the best way to accomplish it.
 
Right. What informatation do you need to capture at each station and what do you do with that information downstream?

Also, what do the plant utilites have to do with it?? :confused:
 
Paul,

Plant utilities consists of all the inputs needed to run a process, including process water, cooling water, wastewater, firewater, electricity, compressed air, natural gas, communications bandwidth, and so on. If the machine cycles are longer than expected, that can cause one or more of one of the plant utilities to be overloaded. Electricity and compressed air are the usually the first to reach their limits.

James,
My first response would be to ask the machine builder to modify the programs. They can do it in a flash, but you will first have to learn how the entire program works before you can change it without causing more problems.

To allow anyone to help you, you need to list what each of these 48 "stations" are made of, and what controls are on each one. Also list the PLC equipment brand, model, and communications method, and operator graphic panel brand and model.

You will have to gather up manuals, schematic drawings, installation instructions, operating procedures, and any other information you have (or can get) about these machines.

I can load the counter registry, but how can I move the station addresses in a word shift manner?
A FIFO register will move any word data from one PLC memory location to another, in the order they were loaded, and timed according to a trigger input. The next FIFO move will not occur until the FIFO is indexed to the next step. It sounds like the key item is deciding WHEN the next machine station will be allowed to "run:. This Run Permission should be based on when enough utilities are available to run the next machine.
 
Last edited:
First off, thanks for the replies.

I forgot to mention this is an AB SLC 5/05 with 64k memory.

We went back to the oem and their programmer quit and has moved out of state to another job and no one knows where he went. Evidently the owner and programmer had a heated debate several weeks ago.

I will define what i am trying to do with the 12 station machine only.

As parts come down from the assembly line, the operator places the processed parts into the station and pushes a start button for that station.
As the part is being processed (approx 20 minutes), the next part is loaded into another station(approx 4 minutes after the part that is in process)and the operator hits the start button. The pattern continues.
Trouble is, that our air, coolant water, recycling water, and other resources either are depleated or are swamped. This also has led to us manufacturing bad product and burning up tooling, a defect caught by quality when we were proving the machine out.

What i want to do is create a fifo (or indexed addressing) loop that will start the stations in an orderly manner without getting our resources in trouble. After processing the 12 stations, the loop repeats as the stations are loaded.

I hope i have done a better job of defining my problem.
Any suggestions in regards to helping me start the logic would be much appreciated.

thanks,
james
 
First off, thanks for the replies.

...

As parts come down from the assembly line, the operator places the processed parts into the station and pushes a start button for that station.
As the part is being processed (approx 20 minutes), the next part is loaded into another station(approx 4 minutes after the part that is in process)and the operator hits the start button. The pattern continues.
Trouble is, that our air, coolant water, recycling water, and other resources either are depleated or are swamped...

thanks,
james

OK, so the OPR is actually manually loading a station, then pressing START to run the station, and it takes about 20 minutes to run?

What unloads the station?

What is the constraint in the system - water, air, oil, something else? One of them? Two? All?

Are the resources "fixed" like, say, CFM from the plant compressors, or water pipes, or are they "replenishable" like, say, cooling oil from a tank that is filled when empty?

What happens if the station faults during the 20 minutes - can it fault and continue to use resources, or does a fault cause it to shut down and release resources that can now be used elsewhere?

Is resource loading level for the station over the 20 minutes?

Can you simply limit the number of stations in operation at any given time?

If other stuff is happening in the plant and sometimes you can run 10 stations simultaneously, other times 15, can you monitor air/water pressure coming into these stations to dynamically set your station limit?

Do you really need a FIFO, or just some logic to tell you the number of stations in use? That is, do you really need to process the stations using a FIFO, or can you just scan from Station 1 to Station 12 and the first one waiting to START gets to start? If you really do need a FIFO, because the parts can't sit in the station too long, then that still should not be too bad.

If START is pressed when the number of stations is maxed out, do you ignore it or do you want to save it and then start automatically as soon as the resources are available - like when another station finishes? Is starting a station "automatically" like this going to pose any danger to the OPR or product?

I can see this being pretty simple - like, no more than 10 stations running at once - to being pretty complicated. Complicated would be breaking each cycle up into segments and tracking resource use at each station over the 20 minutes. You would need as many segments for each resource as made sense in terms of peak loading, and you'd have to then both monitor and project your loads so that you could decide if you could START another station. You'd run this subr every minute or so to examine current conditons, project future requirements, and decide if you could start another one or more stations.

If different products require different levels of resources, then it gets even more fun since now you have to have a table that holds resources required for each product and look up the correct values at each station. That would be the slick way to do it in the first place, though.

This is all doable, but obviously some is a lot harder than others. So, is there an easy way - like counting stations that are running and then just holding "new" station START requests until the count drops by one or more?


You know, though, I still see a disconnect here in terms of, what, 48 stations vs. resources available. If you bought 48 stations, then I'm assuming you want to run all 48 at the same time to make rate. But, the plant utilities can't support that... so you still are not going to make rate! So, who do you talk to about upgrading your plant resources, because it sounds like it just got to be time to do that.
 
Last edited:
Paul T,

I have been asking others in the department and engineering for more details. i also think i have created some confusion on my part. The 12 station machine runs independent of the 24 station machine. i just need them to run in the same manner.

When the process is finished, the operator manually removes the part.

The main constraint is water above all else. All other resources are fixed and are not a problem.

If the station faults, the parts must be salvaged if possible and reworked.

I want to limit the stations being run to a first come, first serve basis.

Other stuff is happening on the assembly line, but they are processed as they come down the line, first come, first served.

To be honest, i don't know if i need a fifo or not. What i want to do is process the first start pushbutton pressed and then hold in memory the order the remaining pushbuttons are pressed. When station 1 for example is done, process station 2 or 10 or whatever is next.

We are only able to run one product at a time thank goodness.

Production is key as you said, but not if we scrap more than we make.

regards,
james
 
What i want to do is create a fifo (or indexed addressing) loop that will start the stations in an orderly manner without getting our resources in trouble.
As the old saying goes, "go to the horses's mouth". You want a feedback signal from the utility resource that is most likely to be over-used. For example, if it is water, you could create a routine that measures the remaining capacity, and let that inhibit the starting of the next station request in the FIFO stack. Here is an example, but will require lots more work.
 
Last edited:
Is there a possiblility of increasine water capacity..either in amount or pressure? time is money..
 
just a thought If i was to spend the $$$$ to increse proudction "we have had 2 machines delivered to us, #1 is 12 stations and #2 is 36 stations. each does the same thing." i woul incress plant utilities. if not cut down on the # of machines you use. I dont think you can increse production with a fifo but i have been wrong before
 
agreed bce sounds like slowing production would be counter productive. Heck just have them put the parts in slower.
 
Paul T,

I have been asking others in the department and engineering for more details. i also think i have created some confusion on my part. The 12 station machine runs independent of the 24 station machine. i just need them to run in the same manner.

When the process is finished, the operator manually removes the part.

The main constraint is water above all else. All other resources are fixed and are not a problem.

If the station faults, the parts must be salvaged if possible and reworked.

I want to limit the stations being run to a first come, first serve basis.

Other stuff is happening on the assembly line, but they are processed as they come down the line, first come, first served.

To be honest, i don't know if i need a fifo or not. What i want to do is process the first start pushbutton pressed and then hold in memory the order the remaining pushbuttons are pressed. When station 1 for example is done, process station 2 or 10 or whatever is next.

We are only able to run one product at a time thank goodness.

Production is key as you said, but not if we scrap more than we make.

regards,
james


Hm. So, can you simply count the number of stations that are running and limit it? Then, when a START is pressed, you capture it and every minute or so you look at the count and then start stations as allowed?

This would be pretty easy, assuming that your START PB is now wired to the PLC.

First, you'd create a STN RUNNING flag for each station. Well, you will probably need to do this anyway no matter what. This is set when the station actually starts, and cleared when the station is done. Maybe when it faults if the water valves close when that happens, otherwise not.

Then, you'd create a STN START REQUEST flag for each station. That is tied to the existing START PB. When the OPR presses START, it sets that flag. Bonus points... if the OPR happens to press the START PB and the station is already running or faulted or offline, nothing happens... i.e., flag is not set. When the station starts, it clears the flag. If you do in fact need a FIFO, the FIFO stack would replace this - keep reading, LOL!

Then, you'd create a STN START CMD flag for each station. That replaces the existing START PB contact in the existing station logic. Again, when the station starts, it clears that flag.

I say flags, but I do this stuff using N registers that I set to 0 or 1 rather than using bits in B words. Personal preference. I like N registers because I can write them in more than one place, I can use different values in them if I need more than two states, and I can clear them all to zero with a simple FLL whenever I need to do a system reset. Pet Peeve!! Whatever you do, registers or bits, write logic to clear them all via the HMI, the EStop, preferably both, so that if an individual station, or the whole machine, needs to be reset it can be.

Anyway. Now that you have a bunch of new flags, write a new subr. Call it every minute using a timer.

It starts by clearing a register that holds the current run count, then adds one for each station that is running.

Now for each station, create a rung that is [STN RUNNING COUNT < MAX ALLOWED RUNNING COUNT] - (not STN RUNNING) - (STN START REQUEST) in series. If those are all true, set STN START CMD for whatever STN we're examining and add 1 to STN RUNNING COUNT.

So you have 12, or 36, rungs, one for each station. The logic scans down them and if the count is less than max, the station is not running, and the station run request flag is up, the station start flag will be set.

The drawback is that this starts STN1, STN2, etc and maybe never gets to STN12 or STN36 if the OPR keeps removing product from the first stations and putting new product in. To do what you want - capture the PB press and then run the stations in that order - yup you need a FIFO.

So, in that case the FIFO is loaded with the station number, rather than setting the STN START REQ flag, whenever the START PB is pressed. In the new subr, if the running count was less than the allowed count, you would unload the FIFO and, with that number that you unloaded, use indexed addressing to set the RUN CMD flag for that station. (So if you're still awake, the START REQ flags would go away since the FIFO would be holding that info.)

Clear? LOL! But the biggest question at this point is, what is the baseline logic for running the stations?? If it's just a simple count of what's running, great. If it has to be more than that, you need to know that first.

Sorry, gotta go do some work! But let us know what the STN START criteria are, then we can help figure out the logic to do it. You probably do want a FIFO, it's not that bad once we know the criteria for using it.
 
Last edited:
But let us know what the STN START criteria are...
The next start can occur when there is enough process water to run another station. That is, after all, the problem we are trying to solve. I think James will need an input from Water Pressure, or Water Flow Meter.

I think the FIFO Unload should be controlled when all 3 of these conditions are TRUE: The next machine finishes a cycle, AND "Water is Available" AND "some are minimum time has elapsed since the last machine start".
 
Paul and Lancie1,
thanks again.

We have been doing research into the machine process and have discovered that if we limit the stations in process to one at a time, we have plenty of water.
Everything is tied into the plc except the water temp and the level sensors and we're working on it.

The sequence of events is:
1. load part and close door.
2. press start cycle start pb.
3. fill area with water (4 1/2 or until sensor says stop).
4. process part.
5. drain water - 4 1/2 minutes.
6. signal operator to remove part.
7. system recognizes part is removed and resets station for
next part.
8. process the next station - what everstation that was loaded
and the start pushbutton was pushed first.

WE CAN start the next station when step 3 mentioned above is complete. If we can do that, we can meet production rate and
not cause any strain on our resources.

Paul,
i was planning on using the flags that you mentioned in my logic. My problem is, i have never used a fifo load/unload and
i am having trouble understanding how the commands relate to
the station numbers. Lancie1 gave me a good start and i am looking into it when i can.

regards,
james
 

Similar Topics

I am not sure if this is possible but if there is a way, you guys would be the ones to know. I am currently working on a project where we are...
Replies
7
Views
187
Hello all, I'm using a 5069-L330ER in a project and I need to essentially capture some data that will be shown as a trend on a screen. The data...
Replies
9
Views
943
Hello! I have a network of conveyors bringing raw product to 4 machines. A sensor in the hopper of each machine calls for more product. I'm...
Replies
15
Views
5,689
Hello everyone, has anyone out there ever made a FIFO using an FFL and FFU instructions on a Micro800? I have tried setting it up just as I would...
Replies
9
Views
3,066
I have a bottle capper that is using an encoder and FIFO logic to track the free standing bottles passing through a bottle capper. I have checked...
Replies
31
Views
11,604
Back
Top Bottom