question

Kashif K avatar image
0 Likes"
Kashif K asked Joseph Gillespie commented

Using Process flow to load different item types on pallets

sample-model-palletizing.fsmHi,
I have 9 different destinations (called Sort rank) for incoming items and based on their destination, they get diverted to the lane conveyor assigned for that destination. Both sort rank and lane for each item are assigned at the source trigger on creation using the global table "Sort_distribution"
I have 3 lanes and each of these lanes have 6 operators to load the items on pallets. Following is the logic that I am trying to implement using process flow:


Each pallet has a maximum capacity of 16 items. For each sort rank, certain number of pallet locations are available. As soon as the max capacity is reached, incoming items belonging to that sort rank will be loaded to next available pallet location and meanwhile, the full pallet will be changed over and replaced by an additional operator, called as "waterspider" (apart from those 6 operators, each lane has one waterspider operator to do pallet changeovers on FIFO basis). If all the pallet locations for a sort rank are full and waiting for pallet changeovers, the items coming in this duration will be down-stacked on the floor, known as "backlog" due to pallet unavailability. But as soon as a fresh pallet for that sort rank is available, both backlog items and arriving items of that sort rank will be loaded on the new pallet simultaneously (new arriving items will be loaded by one of those 6 operators while backlog items will be loaded by waterspider operator of that lane). The waterspider operator will not proceed to next pallet changeover until he is done with moving all the backlog items for that sort on the newly placed pallet.
(Note: I am putting remaining explanation in the comment as it makes the question too long to post)

FlexSim 19.1.1
process flowconveyorpalletzone partition
· 1
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Kashif K avatar image Kashif K commented ·

In my process flow, I restrict number of tokens that can enter Zone1 to 6 in order to represent that there are 6 operators per lane. In Zone2, I restrict maximum number of tokens to 1 in order to represent that there is only one waterspider operator available per lane who does pallet changeovers and backlog items loading. I record everything in the global table Lane_Qty. It has following columns:
Sort_rank: For the sort rank of items
Loc: Number of available pallet locations for the sort rank.
Capacity: Max capacity of pallet (16 for all pallets)
Current: Number of items currently on the pallet being utilized for loading.
Cont: The pallet on which the operator is currently loading items of that sort rank (i.e. Cont<=Loc)
Backlog: Items currently being down-stacked due to pallets unavailability for that sort rank.
Total: Number of times pallet changeovers happened for the sort rank.
Max: Maximum value of Cont at any time. This will tell me to what extent of available pallet locations for any sort rank did I use through out the simulation. (i.e. Cont<=Max<=Loc)
Max_Backlog: Maximum value of Backlog at any time. This will tell me how many maximum number of items were down-stacked at any time for any sort rank. It will be a key indicator to decide how many Loc I need for each sort rank.

The issue I am facing here is that it does not work the way I want to model it as stated above. My backlog column in Lane Qty table shows negative values sometimes as well.

0 Likes 0 ·

1 Answer

Joseph Gillespie avatar image
0 Likes"
Joseph Gillespie answered Joseph Gillespie commented

@Kashif K

The negative values you were getting were because of this section of your Process Flow:

After checking if there is a backlog for the sort rank, you checked if the pallet could take any more backlogs. If there is space, you have it move one item from the backlog to the pallet. This is where the problem is. Instead of checking again if there is a backlog, you only check if the pallet can take more backlogs, regardless of whether those backlogs exist or not. I would connect the custom code at the bottom of this section of your Process Flow back up with the first decide.

Another potential issue I found with your model is that you have it set to run this code every time an item arrives:

if(Lane[token.Sort_rank][token.Cont]>=Lane[token.Sort_rank][2])
{
	Lane[token.Sort_rank][token.Backlog]++;
}

If you follow your logic in the "Increase Lane Qty" custom code, you'll see that adding a 16th item to a pallet will cause the pallet to be filled and add an item to the backlog. I would recommend changing it to this:

if(Lane[token.Sort_rank][token.Cont]>=Lane[token.Sort_rank][2])
{
	Lane[token.Sort_rank][token.Backlog]++;
} else {
	Lane[token.Sort_rank][token.Current_Column]++;
}

That way items are either added to a pallet or the backlog, but not both.


capture.png (9.3 KiB)
· 4
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Kashif K avatar image Kashif K commented ·

sample-model-palletizing-1.fsm

Hi Joseph,
Thank you for the reply. I made the changes as suggested in the code and process flow. I have attached the new model with these changes. Could you please check if that's the way it should be? I observed more than 1 token (2 tokens) entering Zone2 at some instance, which is not right (see attached picture). Does adding decision loops cause enter zone and exit zone to behave improperly? Also, I am still not sure if the process flow is letting the lane operators and waterspider operator to keep loading items on the new/available pallet location simultaneously. Could you confirm from the process flow?
Finally, the waterspider operator is changing over the pallet and loading backlog items for the sort rank based on FIFO (first in first out). What if I want to change this strategy and do the changeovers based different criteria such as sort rank priority/ sort rank with most backlogs etc.? I know that this can be done using List and query but I am new to using List in process flow. Can you please explain how to achieve this? (Let's say we want to do changeovers by prioritizing the sort rank having maximum backlogs)

0 Likes 0 ·
Show more comments