FIFO Program help

locotumbler

Member
Join Date
Jan 2013
Location
Otsego, MN
Posts
98
I have read the various threads on the FFU/FFL uses. I am trying to chase down an issue I am having with a program one of my predecessors wrote. I was told that it works about 90% of the time. I have not been able to figure out how this programs works some of the times and not all. Program Function as such.
Press is cycling at 300 SPM (so 200msec per stroke)
1. at BDC (bottom dead center) the press control sends a signal to the plc it then fires a signal to the camera controller to activate the camera (this is my first possible point of failure I am working trying to see if i can avoid the need for the middle man to tell the camera to fire.
2. when the camera detects a failure it sends the signal to plc which then dumps it into the FIFO que. This is where i am having the issue with the PLC proram I don't understand why the constant count is needed to do the comparison. Would it be easier to do a constant mov ever cycle and just have it be a 0 on a good part (no signal from the camera controller) and a 1 on a bad part (signal from the controller)?
3. When the failed part gets to the singulation point (the press feeds the material forward on the upstroke) and the press gets to TDC it retracts the singulation punch and leaves the failed part in the strip of scrap material
 
I have not been able to figure out how this programs works some of the times and not all.
Usually that comes down to timing issues - sometimes part of the machine runs faster or slower, or the part moves faster than normal, allowing the failed part to arrive at the singulation point BEFORE the failed-part camera signal arrives at the same point.

If you slow the press down to 200 SPM, does it fail less often? If so, that would indicate the logic is logically correct, but some part of it is not able to keep up at higher speeds.
 
Last edited:
I haven't had a chance to do that because the timing of the feeder and oilers are set a the 300 spm. I am going to have a free reign run on friday and i hope to do that then.
 
It seems that a modification to create a master speed setting might help, where the press, feeder, and oilers all look at the master speed setting and the program makes automatic adjustments based on that single master speed.

This reminds me of a problem that Eric Nelson had with a camera reject system on a conveyor belt in 2013. This old thread might have some clues for your situation:

http://www.plctalk.net/qanda/showthread.php?t=79774&highlight=camera

In Eric's case, the solution apparently was simply to reload the RSLogix program from scratch (thus also reloading a different copy of the data values of timers, counters, and memory variables).
 
Last edited:
unfortunately thats not an option on this machine. Its set via mechanical adjustments. And rereading misrepresented. I went and verified. the oilers fire at a time set in the press monitor control so i can adjust that easily enough and the feeder on this unit is operated via mechanical linkage. I hope to have a much better understanding of this operation in 8 days time. I will update this thread on what i find.
 
Yes, please do let us know how the trouble-shooting is proceeding. Also, you would get more people interested if you printed your program to a PDF file and posted that. I (and many others) do not have the latest RSLogix software so could not open your program.

Maybe someone else will convert the Needle Sort RSS program to a PDF file.
 
Thanks for the PDF copy. I can answer your question about the FFU.

Here is the part i'm not understanding. i've never programmed with FFL and FFU before. The point in the tool that needs to react is 4 stations (parts advance 1 station per cycle) after the inspection point. I am reading this and seeing that the unload is looking for 100 hits later right?

The unload is NOT 100 counts later. The 100 is only the maximum positions in the FIFO. It will hold 100 numbers. But the FFU Unload can occur anytime that there is at least ONE number in the FIFO (the range from N7:0 to N7:99 as defined by the Length).​

In your Rung 005, the Unload occurs when the value in N7:0 is Greater Than or Equal to C5:2.ACC AND (N10:0 is Less Than C5:2.ACC OR C5:2.ACC Equals N7:0).

That looks a little shaky and unstable. Your Unload is NOT being triggered when a failed part reaches a certain point in the machine (the whole purpose of using a FIFO). Instead the FIFO is being unloaded WHEN a value in the first FIFO Position (N7:0) is equal to the Counter value. Which comes first, the chicken (N7:0) or the egg (C5:2.ACC)?​

Normally the Unload would be done DIRECTLY when the part reaches the desired location (probably as indicated by I:0/5).​

In any case, I suspect that sometimes the unload is being attempted when C5:0.ACC = 0 and N7:0 = 0. To prevent that, I would stick a Not Equal comparison block at the front of Rung 5. "If R6.0.POS is Not Equal to 0" then proceed with the FFU. Otherwise, the FIFO is empty, so do nothing (go to next rung).​
 
ok i'm getting an error that the address must be specified to the word level. when I put R6:0 into the source A on the NEQ instruction. I haven't used compares much in what simple programming i have done.
 
ok i'm getting an error that the address must be specified to the word level. when I put R6:0 into the source A on the NEQ instruction. I haven't used compares much in what simple programming i have done.

R6:0 is a structure of several words. You need to specify which of those words you want to compare. Not having really read this entire thread, I suspect it is probably the first of my two examples:
R6:0.POS (position)
R6:0.LEN (length)

EDIT, yes after I zoomed in on Lancie's tiny print on this little laptop, I see he recommends you compare the .POS word.
 
Last edited:
I think you could come up with a better Rung 5 left-side expression to trigger the FFU. One thing is for sure: you cannot unload unless the R6:0.POSition word > 0. Then because C5:2 is being controlled by the physical location of the press (I:0/5), probably you could just use:

R6:0.POS NEQ 0 AND N7:0 GEQ C5:2.ACC ...[ FFU Unload ]

Leave off the N10:0 LES C5:2.ACC OR C5:2.ACC EQU N7:0.
If the above doesn't solve the problem, try adding I:0/5 to the FFU logic.

I:0/5 AND R6:0.POS NEQ 0 AND N7:0 GEQ C5:2.ACC...[ FFU Unload ]

Uh-oh! There is no reset for Counter C5:1. You need to reset it at some point (beginning of a RUN cycle), so the next time you start, it will count to 3 before the FFU is triggered. Otherwise the FFU will start instantly before 3 press cycles have occurred.
 
Last edited:
Yes, S:1/15 is the First Pass bit.

But will that do the job of resetting C5:1? It seems it should be reset each time the PRESS is started on a new batch, not when the SLC is first started. The SLC could run for months before being powered down or into Program mode, where the press might start on a new batch every shift.

You need a C5:1 Reset bit that goes ON when the press starts on a new batch or a new run (Press Start Pushbutton, or something similar). Any time that all parts are run out or removed from the press, C5:1 needs to be reset.
 
Last edited:
I am thinking now that you should give the camera all the possible time to gets its reading in. So I am changing my recomendation for the modifed Rung 5. Use the Press Top Dead Center bit I:0/2 (instead of the earlier Bottom Dead Center bit) to trigger the FFU Unload:

{Rung 005} I:0/2 AND R6:0.POS NEQ 0 AND N7:0 GEQ C5:2.ACC...[ FFU Unload ]
 

Similar Topics

I need to program a 5 input fifo system for material transfer. One input fires valves and vacuum and the next ones line up and go fifo in order...
Replies
4
Views
5,003
From the analog flow meter I need to move the actual CFM every minute to a rolling 60 words address. The problem is that the AB 1500 does not...
Replies
4
Views
2,720
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
218
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
962
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,871
Back
Top Bottom