FIFO Array of active Timers in ControlLogix5555

radfahrer

Lifetime Supporting Member
Join Date
Nov 2006
Location
Boston
Posts
156
I'm in the brainstorming phase of a project and am looking to see if anyone has ideas on the feasibility of some code I'd like to implement.

My project involves tracking vials for a filling machine, the product being filled is being frozen after filling and is perishable so I need to track how long a particular vial has been on the line between the filler and freezer and reject any that exceed a set time limit (about 5 minutes just to give an idea of scale I'm working with). I was thinking of using inkjet labeling after the filler and then scanning prior to the freeze, but I think those options may be too costly, so I'm trying to figure out if I can do it all in a PLC using just discrete sensors along the line.

I'd like to implement an array of timers where each timer represents a vial...the array would be manipulated as a FIFO buffer, so when a vial gets filled and passes an input sensor to the monitoring zone, its timer starts. The timer keeps incrementing until the output sensor trips and then that particular timer would get reset and reused for the next vial coming in. The array would need to have a variable and dynamic number of elements equal to the number of vials in the zone being monitored (I know a PLC will not allow dynamic array sizing, so the max number of elements could be set high enough never to be exceeded, but the elements with timers active at any time would be variable).

Has anyone ever implemented something like this before?
Is ladder the right language to do this in, or should I be using structured text?

Thanks for any input,

Greg Krueger
 
Use UDTs. Include a timer in the UDT as well as any other data needed. A series of pointer in a FIFO will keep you pointed to the correct entry in an array of the vial UDTs.
 
Why not just FIFO the actual time the vial is filled?

Then at the reject position, compare filled_time(vial_x) to a calculated value based on the current time? Then you don't have to update dozens of timers constantly.

JMHO
Paul
 
I would vote for Paul's suggestion of using time-stamps.

However, I'm not keen on using a FIFO for product tracking unless you can ensure that no product will be removed between the two tracking locations. It only takes one "disappearance" to make all following items invalid.

A shift register approach would be more reliable.
 
In addition to Paul's suggestion, which makes sense, with a Logix processor, you already have a means of getting the coordinated system time-stamp on an input event. You might have to re-configure the input module (basically, delete it, and replace it with the same module, but with 'CST Time Stamped Input Data' for the data format field.
Use a standard FIFO to track the vials, but record the input event timestamp for 'begin', and then when it hits the exit sensor, compare the current CST time to the FIFO to determine a reject.
 
I would look at some sort of encoder or a pulsed input in synch with the drive conveyor and then use an array of time stamps. Say a widget enters the system every 100mm of travel and the total travel is 10,000 mm then the array would be of length 100. Each 100 mm of travel (by the pulsed input) I would word shift all the time stamps forward 1. The last time stamp in the array is always the time that that section of conveyor went past the load point.
This method allows any number of items to be removed from the conveyor and not upset the times.
Obviously you cant put them back on later, though this still will not upset the ones that have not been touched. Regards Alan Case
 
Last edited:
Alan, I use your solution providing that the product does not slip in the conveyor - when the product can slip I use a FIFO stack of UDT

radfahrer - more information could be helpful - How are the vials transferred to the freezer - On a conveyor belt (implies that the vials can change position on the belt) OR on a link chain belt with one vial per link ( Vials Cannot slip on the belt)
Can an operator remove vials between filler and freezer? effects the final solution.

Do you have control of the filler? When does the filler restart if you are rejecting vials because the freezer stopped?
typical transfer time from filler to freezer is?


Is it more important to reject stale product or risk possible stale product being frozen? Are QA procedures are required to prove that the product did not go off?

Sorry it seems that I asked more questions than gave answers?

MG
 
Paul's idea of using a timestamp then evaluating the actual time the vial crosses the gate compared with the timestamp would determine the validity of the contents.

I would be sure to validate the process with strict testing. I would be concerned about cross tracking a vial. Example - what would happen if a vial cracked and was removed from the line? Now your index would be off.
 

Similar Topics

Hi All I am using a 42 dint array for a project. Im using a FSC instruction so if any values in the 42 dint array are lower then 32000 it will...
Replies
5
Views
1,421
I am using a distance laser to bring in an analog value. I have converted the value to inches and filling an array using FIFO using RSLogix 5000...
Replies
21
Views
5,961
Hello all, I need some guidance creating a FIFO array to display data into an HMI. The data will be the sum of jams of a conveyor section in an...
Replies
5
Views
2,635
Hello! New to this forum, but have read a lot of different threads. Anyway, I have a question for you all, I have played around with AB PLC's...
Replies
0
Views
4,738
Hi All Im using RSlogix 5000 and compactlogix. I need to store 2 bits of data to a register in the PLC, one is a time stamp from the wall...
Replies
12
Views
14,335
Back
Top Bottom