RSLogix 5000 Product tracking

Thanks everyone, lots of food for thought here.
I'll try and digest it and come up with a plan.....

One other thing, with an L16 you only have 384kb of Memory.
If you make a UDT like this:
ID DINT (I´m assuming that an DINT is sufficient maybe this needs to be a string)
FIFO INT
Zone1 Enter Time DINT
Zone1 Leave Time DINT
Zone1 Time Spent DINT
Zone1 Warning Bool
Zone1 Alarm Bool
Zone2 Enter Time DINT
Zone2 Leave Time DINT
Zone2 Time Spent DINT
Zone2 Warning Bool
Zone2 Alarm Bool
Zone3 Enter Time DINT
Zone3 Leave Time DINT
Zone3 Time Spent DINT
Zone3 Warning Bool
Zone3 Alarm Bool
Zone4 Enter Time DINT
Zone4 Leave Time DINT
Zone4 Time Spent DINT
Zone4 Warning Bool
Zone4 Alarm Bool

Thats 58Bytes per UDT (assuming you group all your bools etc)
1500 of them will be basically 84kB so your going to be working with only 300kB. Will that be enough to implement all your code?

You might need to push to an L18 or L24.
 
Paul, I believe your idea is good, but why only put a 1 or 0 into the FIFO position? Because the Product ID is supplied by the loading robot and is the first known parameter, why not put Product ID or 0 into each tracking FIFO position? This would allow easier debugging or error handling when something goes wrong. Instead of a "1" that does not identity what is in the oven at any position, use the Product ID in in the FIFO, with all other parameters tied to that position.

Potentially they could all be different product ID's (ID's are supplied by loading robot in the form of a string).
 
This PLC is being used for a small amount of conveyor control elsewhere in the system and currently only uses just under 80kb.
Having said that.....if I need to move to something larger, that shouldn't be an issue. Right now the budget isn't a concern for this project, but functionality is. My boss suggested moving to an L32 if we needed to change up.

Lancie, I was thinking the same thing myself. To make things more specific, the product ID comprises of the following:
A string of 12 characters
first 4 characters are sequential (1-9999).
last 8 characters represent the SKU for the particular product type.
 
This PLC is being used for a small amount of conveyor control elsewhere in the system and currently only uses just under 80kb.
Having said that.....if I need to move to something larger, that shouldn't be an issue. Right now the budget isn't a concern for this project, but functionality is. My boss suggested moving to an L32 if we needed to change up.

Lancie, I was thinking the same thing myself. To make things more specific, the product ID comprises of the following:
A string of 12 characters
first 4 characters are sequential (1-9999).
last 8 characters represent the SKU for the particular product type.

Thats good that there is no real limitation. Personally I wouldn´t go to an L32 that is one of the Old compact models, go with an 1769-L30ER and you´ll get more memory and two ethernet ports for more or less the same price, plus it will be supported in Studio 5000 and RSLogix5000.
 
Paul, I believe your idea is good, but why only put a 1 or 0 into the FIFO position? Because the Product ID is supplied by the loading robot and is the first known parameter, why not put Product ID or 0 into each tracking FIFO position? This would allow easier debugging or error handling when something goes wrong. Instead of a "1" that does not identity what is in the oven at any position, use the Product ID in in the FIFO, with all other parameters tied to that position.

Sure, that would be fine too. Anything that easily allows you to determine whether or not the FIFO position links to part data vs. no part. Since there is so much data that has to be linked anyway, I thought just to throw the Product ID off to the side with everything else.

Ones and zeros allow you to make quick decisions and don't take up much space. Plus, coming mostly from an SLC perspective, I can use them as integers or booleans at will and I often do. I am about to embark on a CompactLogix project... I hope I can do the same, but moreso LOL.
 
My dilemma is how to efficiently check each products time stamp to see if it's approaching (or exceeding) it's time in each zone though. This is the part I'm having a hard time getting my head around right now.
With up to 1500 products total in the oven I need an easy (and not time consuming) way to do it.

The FSC Instruction (File Search And Compare)would do well Here. You can use it to Compare 2 different Values. Make an Array to hold the Entry Time into each Zone. The Comparison Value Would be The Current Time Value. You would use an Expression to find the Position of the Alarm.

(EntryTime + AlarmTime) >= CurrentTime

The FSC could Check All 1500 positions and notify which position is in the Alarm State. This would be done with the
.pos value. You reset the .in (inhibit bit)and continue your search. This allows you to find multiple Alarms in one FSC scan.

So the FAL would increment your Times thru the Entry Array and The FSC would do your Comparison and tell you which position in the Array is in an Alarm State.
 
Can a FIFO be a FIFO of UDTs or does there need to be a FIFO for every field in a UDT?
If the conveyor can stop or slow down there must be an encoder to keep track of the parts.

I have been busy. I have written real time kernels so I know how to do this efficiently but I am not that familiar with FIFOs and if they can handle UDTs.

It shouldn't be necessary to check all 1500 positions, the next part at the output of the FIFO.

There would need to be a FIFO for each zone if the FIFO can handle UDTs. There would need to be multiple FIFOs for each zone if there is a need to keep track of encoder, time and part data.

You don't want to move strings in a FIFO. It would be best to move an index into a table of part info.

I will look at this thread again tonight.
 
To Peter and MartB:

yes, fifo can hande UDT, that's what I suggested yesterday. UDT must contain time stamp and product code. This way and by using an elapsed time AOI you can know exactly how long an item has been inside the oven at any time without any effort.
The only problem I see is PLC memory, not sure how big the Fifo is going to be.
 
I think the encoder counts should be stored too so that the position is known. So that would be 3 items x 4 bytes x 1500 UDTs is 18000 bytes plus over head of a few bytes for each FIFO.

The the next item in the FIFO needs to be checked. The other items will not have been in the zone as long as the next item out.
 
I think the encoder counts should be stored too so that the position is known. So that would be 3 items x 4 bytes x 1500 UDTs is 18000 bytes plus over head of a few bytes for each FIFO.

The the next item in the FIFO needs to be checked. The other items will not have been in the zone as long as the next item out.

I'm pushing the entire UDT into the FIFO. The UDT contains the product data and a time stamp of when the product entered the FIFO.
I wasn't going to store the encoder counts, I really didn't think it was necessary.
I was going to increment the FIFO position each time the encoder count is equal to the space for the next product (i.e. every 100 counts).

I'm using a FIFO for each of the 4 zones, and I'm just using Zone 1 to feed zone 2, zone 2 to feed zone 3, etc.
I guess I could just use a single FIFO for the whole oven if it made things easier.....
But I will need to display the times for each zone.

I'm still trying get my head around how best to use the Elapsed time AIO right now.

Keep the ideas coming guys, it's starting to come together slowly :D

Hopefully I'll get some time on the actual machine today as they're shut down, so I should be able to test some code ideas.
 

Similar Topics

Hello all, I have a question in regards to RSlogix 5000. I am having issues with the program force closing when I try to make online edits. We...
Replies
0
Views
95
Greetings ... someone sent me a request for some student handsouts that I developed ... turns out that I had this hosted on my business website...
Replies
0
Views
109
Thank you for any and all responses/help. I have an RSLogix 5000 v20 and a Cognex In-Sight v5.9 spreadsheet (8502P). I can not figure out how to...
Replies
0
Views
101
Hi All, I've been pulling my hair out trying to fix this for a few days and need some advice. I have V19.01, v20.05, V21, V24, V30, V31, V32...
Replies
5
Views
345
Hello Friends I have a installation with v16, v17, v18, v19, v20. When I tried to open a v20 file, the enable source protection was not enabled...
Replies
1
Views
214
Back
Top Bottom