Two types of products going into one processor

Two types of products going into one processor

harish_g
Not applicable
132 Views
31 Replies
Message 1 of 32

Two types of products going into one processor

harish_g
Not applicable

[ FlexSim 22.1.0 ]

Hello everyone,


I am stuck with a problem which involves 2 types of products from separate sources which goes through inspection and then to the same rack, where it cures for 4 hrs, from where it goes into the processor, through to the queue where it accumulates in batch of 4 before it is dispatched.


The following are the constraints which I am figuring out how to add into the model:

1. Eg: When the PalletMB1 is empty, the processor should evaluate if pulling more of same type1 will be able to produce a full batch of 12, coz we don't want partial batches. If it can't, then it should switch to pulling Type 2 product from the rack and do the same evaluation. If both types can't result in full batch, the model should stop the processor and start filling the rack to full with both product types and then continue this.

2. There is a changeover time of 15 minutes at the processor, when it switches from on type to another. So, in order to minimize this it should run type 1 parts completely before switching to type 2, satisfying the above constraints.


Please see attached the model image for your reference. Thanks for your kind help!

1647277641338.png

0 Likes
Accepted solutions (1)
133 Views
31 Replies
Replies (31)
Message 2 of 32

ryan_c10
Not applicable
Accepted solution

Hi @Harish G,

I created an example model that demonstrates one way to accomplish the objectives you outlined in your question. I've attached an image of my model below: screenshot-2022-03-14-175945.png

The upper portion (outlined in red) uses an event-triggered source to create a new token for each item that enters the rack, then uses a Batch activity to group them by Type. The token is then pushed to a list. The bottom portion (outlined in blue) has one token to represent the processor downstream. The processor pulls one batch from the list at a time and processes the batch one item at a time (sub flow outlined in green). Then, after it has completed processing that batch, it attempts to pull the next batch from the list using a query that specifies the same type as the batch that was just processed. screenshot-2022-03-14-180058.png

If the processor is unable to pull a batch of the same type, then it just pulls any available batch.

I hope this helps! Let us know if you have further questions!

0 Likes
Message 3 of 32

harish_g
Not applicable
Hi Ryan,


Thanks for your kind response! 🙂


Can you please share the model with me, so that I can take a look at the constraints used within each process flow item for better understanding?


Thanks,

Harish

0 Likes
Message 4 of 32

harish_g
Not applicable

Hello @Ryan Clark,


That flow didn't quite work for me as I believe I have assigned labels for the tokens right at source 1 and unsure what are the parameters as a part of your model, which might be different from what I am using. So, I am not able to navigate the objects properly from Rack to the processordownstream. I would be interested to see your model and please see my model attached.


flexsim-new - Copy.fsm


1647315680821.png

0 Likes
Message 5 of 32

moehlmann_fe
Observer
Observer

Your uploaded model looks incomplete/corrupted to me. For instance there is no list in the process flow.

Anyway, here is one way to set the logic up. I can't say if this is what Ryan built since there are of course many variations of how exactly the process flow is set up.

flexsim-new-copy_fm.fsm

0 Likes
Message 6 of 32

harish_g
Not applicable
Hi Felix,


Thanks for your model!


It works fine, but one thing it does is it just keeps alternating between one batch of type 1 and other batch of type 2 in the downstream process. Whereas, what I wanted the model to do at a point when PalletMB1 or PalletMB1 Queue is full, it needs to make a decision should it continue running the same type based on the availability to run a full batch or should switch to the next type? That way we can reduce the changeover between types, coz every time we switch from one type to another on the downstream processor, it causes changeover time of 15 minutes.

0 Likes
Message 7 of 32

harish_g
Not applicable

*Adding to my above comment*

For eg: At this point eventhough it could have continued running type 2, since we clearly have more than 12 of that type in the rack, the processor still alternates running to type 1 (red).


1647357724016.png


0 Likes
Message 8 of 32

harish_g
Not applicable
@Felix Möhlmann Got it my bad! If I understand this right, those remaining type 2 are still curing and so hasn't entered the batch yet right?


Also, how do we create the event initially when the model starts to fill the inventory to 36 and then start running processor, rather than using queue 5 & queue 6 to bring the initial inventory in?

0 Likes
Message 9 of 32

moehlmann_fe
Observer
Observer

You are correct. The event triggered sources listens to the "OnEndDwellTime" event, so the items are not batched before the curing time has elapsed.

Instead of creating the objects in then queue, you can create them in the model and move them into the rack with the "Move Object" activity. When creating multiple objects in a "Create Object" activity, all items are assigned to the chosen label as an array. You can use a subflow to easily run actions for each item such as coloring them.

1647368261865.png

flexsim-new-copy-fm_1.fsm

0 Likes
Message 10 of 32

ryan_c10
Not applicable

Hi @Harish G,

I've attached my model here. I hope this helps!

twotypes-oneproc-example-rc.fsm

0 Likes
Message 11 of 32

harish_g
Not applicable
Thanks, @Felix Möhlmann.


Yeah I did that before adding the quantity directly to the model. But, I wanted to have the product from actual source fill the rack and then open it up to the downstream processor, rather than having some initial inventory directly, just like you added wait for rack to be full in the end of the process flow.


Is there a way to do that?


0 Likes
Message 12 of 32

harish_g
Not applicable
Thanks, @Ryan Clark!
Message 13 of 32

moehlmann_fe
Observer
Observer

The connection in the 3d model is only there because I chose to "release" the items from the rack rather than move them via "Move Object" like Ryan did (matter of preference as far as I know). Items are only moved if pulled by the processor-token. So you can copy the Wait for Event I placed and add it right after the source. This way, the token won't be able to pull anything before the rack has filled up.

1647370543902.png

0 Likes
Message 14 of 32

harish_g
Not applicable
Thanks @Felix Möhlmann. I did that and the system would wait for the rack to be full each and every time the pallet MB1 becomes full and starts emptying again.


I just wanted it to wait for the rack to be full the first time though. Thanks!

0 Likes
Message 15 of 32

ryan_c10
Not applicable

Hi @Harish G,

If you only want it to wait for the rack to be full the first time, you just need to put the "Wait for Rack Full" activity right after the source. Then, you can get rid of the other wait for event below and change the "Pull any" activity to disable the Max Wait Timer. Then it should do what you want.

0 Likes
Message 16 of 32

harish_g
Not applicable

Thanks @Ryan Clark & @Felix Möhlmann!

I added a wait for rack full after the source while still retaining the existing rack pull at the end of the flow. That way it makes the rack full the first time and stops the model whenever the batch size isn't enough to refill the rack as below.


But, the only challenge I have is I am unable to visualize as to why the processor is stopping (Eg: Is it is due to changeover? due to not enough dwelled boxes? due to waiting for the rack to be full?) Couldn't find a suitable option for it.


Also, I am trying to tie the dwelling time to the box itself as soon as it comes out of the Table 1 (Queue right after the source), rather than tracking the dwell time in the rack. Coz if there is any queue buildup in between, its still considered dwelling which isn't accounted for resulting in extra time spent for dwelling.

Thanks for your valuable insights!


1647381789589.png

0 Likes
Message 17 of 32

harish_g
Not applicable
Adding to above question regarding the dwell time to clarify a bit more:


The object after it leaves the queue near source should be dwelled before it reaches the processor, but can go until the rack without being dwelled. Thanks! @Felix Möhlmann @Ryan Clark

0 Likes
Message 18 of 32

harish_g
Not applicable


@Felix Möhlmann & @Ryan Clark

Also I ran into another issue. When I was trying to increase the batch size at the queue before sink to 24, changing the rack size to hold 52 totes, it would run the 1st iteration properly, but during the 2nd iteration it gets stuck at the Wait for rack full step as you can see in the image & queue starts building up before the rack.

When I was running the same setting with batch size 12, it would work fine.

I tried attaching the new model, but it doesn't let me do it. Thank you!

1647407799421.png


0 Likes
Message 19 of 32

harish_g
Not applicable

Please see attached the model for the above issue regarding the batch size of 24. Thank you!

flexsim-new-copy-fm.fsm

0 Likes
Message 20 of 32

harish_g
Not applicable

@Felix Möhlmann & @Ryan Clark,


Another issue: When the model runs, it simply alternates between two types without considering that there are products of same type still available in the rack and pulling them, as you can see in the picture below. I changed the batch size back to 12.

1647411518923.png

0 Likes