question

Andrew S3 avatar image
0 Likes"
Andrew S3 asked Andrew S3 commented

Decision Point Evenly Sending Parts to Eight Locations Depending on Availability

Hello,

I am trying to make a simulation representing one load that leads to eight feeding lanes to four production cells. My model currently is sending most parts to the first cells, while the last cell receives very few parts. It should be evenly distributing the parts in all the lanes. What I would like it to do:

1.Send parts evenly to all eight lanes

2.Send parts to whatever lane is available (no more than four parts per lane)

3. If all eight lanes are full (four wheels in each lane) then the parts stop at the beginning of the conveyor

Thanks in advance!

Attached is my model:

Cell Infeed Problem.fsm

FlexSim 19.2.4
flexsim 19.2.4decision pointlogic
5 |100000

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

tannerp avatar image
2 Likes"
tannerp answered Andrew S3 commented

@Andrew S3,

Here's a Process Flow example. I hope works a little bit better. The Process Flow utilizes a zone to limit the number of items that can enter the lanes (max 16) and then the logic calculates which lane should receive items based on the minimum count based on the Global Table "CountTable".

A lot of the logic for calculating the lane and sending the items is the same, but the Process Flow handling the zone makes that aspect of things easier. Also, you can use triggers in the Wait for Event activities to tell items to resume traveling on the conveyor.

Hope this helps!

cell-infeed-example_1.fsm


· 6
5 |100000

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

Andrew S3 avatar image Andrew S3 commented ·

@tanner.p the process flow is working well. But I think something is wrong with my count chart and I'm not sure why it's ends count is like this?

Also, did yours start sending parts again after it went under the zone cap? Mine hits 32 and then stops. I'm not sure what to add to have it start sending again. Thanks for your continued help!

Cell Infeed Problem PF.fsm

0 Likes 0 ·
tannerp avatar image tannerp Andrew S3 commented ·

@Andrew S3,

I'm not sure why, but the conveyorresumeitem() function was not working properly by default. I'm sorry it's taken me so long to figure this out and reply. I added a "1" as my second parameter in the aforementioned function and the model seemed to run appropriately. Please try adding this and see if it solves the count issue.

If this doesn't work for some reason, we can try stopping the actual conveyor rather than the item, although that wouldn't be preferred, as it might throw off the upstream conveyor items.

1 Like 1 ·
1606412500986.png (26.5 KiB)
Andrew S3 avatar image Andrew S3 tannerp commented ·

@tanner.p that worked! Thank you so much for your continued help! I would not have been able to do it without you!

0 Likes 0 ·
Show more comments
Andrew S3 avatar image Andrew S3 commented ·

@tanner.p I may have spoken too soon.... When playing around with different load and unload speeds I ran into this issue:

When the unloader is too slow (which is something I want to simulate) it prioritizes the last two cells and the first two starve. I would like it to continue to feed to whatever lane doesn't have 4 parts already in its queue. Thank you so much for your help!

FM 4 Cell - Auto Load.fsm

0 Likes 0 ·
1606752024909.png (215.1 KiB)
Jason Lightfoot avatar image Jason Lightfoot ♦♦ Andrew S3 commented ·

The DP output ports were not connected in the same sequence as the table, so the logic wasn't sending the item to the place it identified as the min value in the table.

I've renamed DP1 as DP_router and then each DP has the correct number for the conveyor to make it easier to check. Model attached.

fm-4-cell-auto-load_jl.fsm

1 Like 1 ·
tannerp avatar image
1 Like"
tannerp answered Andrew S3 commented

@Andrew S3,

1&2)

When you say "evenly distribute", do you mean that each of the eight lanes should ultimately receive the same number of parts? Or do you mean that the decision point should send to the lane with the fewest number of items, such that all lanes have about the same size buffer?

The reason I ask is there are two types of logic that could work to "evenly distribute" the work. You could create round robin or shortest queue logic, depending on your needs. The former logic will make sure each lane receives the same number of items. The latter will make sure that lanes aren't overworked or starved.

3)

As for stopping the items at the beginning, I suggest placing a photo eye on each conveyor's "full" point (wherever the 4th wheel stops). It looks like you already have some in place. Then, when all eight conveyors' photo eyes are blocked with a 4th wheel, you can trigger the decision point to stop sending objects. The one downside is that if a wheel is already on its way to a lane but hasn't arrived yet, it may not block the photo eye in time to prevent another wheel from coming.

You may need to consider the time it takes for wheels to travel to their assigned lane. In this case, I would use a counter, such as a Global Variable or a zone, so that any wheels entering the area are welcome up to 32 wheels. Once the zone has 32 wheels, there are no more wheels sent until a wheel leaves. It's as simple as incrementing a variable upon entry to the zone and decrementing the same variable upon retrieval by a robot.

Picture for reference:

Unfortunately, I don't have a working version of FlexSim 2019 Update 2 on my computer at the moment, so I can't update your model, but I hope I've given you some ideas. Feel free to ask clarifying questions.


cell-conveyor.png (126.8 KiB)
· 7
5 |100000

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

Andrew S3 avatar image Andrew S3 commented ·

@tanner.p thanks for the response!

For the first part shortest queue logic would be best, and for the second part a zone sounds like the best solution. I am not very familiar with either solution though and was wondering if you could help walk me through it? Thank you so much!

0 Likes 0 ·
tannerp avatar image tannerp Andrew S3 commented ·

@Andrew S3,

I'll do my best to walk you through how you can do this with labels. You can also do this sort of thing with Process Flow, which is probably preferable, but I know you've already designed some of your model in the 3D, so I didn't want to shake up the whole thing. I made an example model in 2019 Update 1, which I hope you're able to open with Update 2. That way, you can kind of follow along with my explanation. I'll explain in steps:

1) Create a "Count" label value on each of the DPs. This is used to store the number of items allocated to each lane.

2) Add code in the DP at the beginning of the conveyor that checks the "Count" labels at each of the DPs. The DP with the smallest (minimum) "Count" label is found and then the item is given a label called "shortQ" with the port number for the shortest queue.

3) Using the "shortQ" label, send the item to the correct port.

4) Increment the "Count" label of the DP where the item is being sent.

5) Somewhere downstream, probably when the items exit the lane, decrement the "Count" label for each DP.

6) I added logic that checks to see if there are more than 16 (in this model) items in total in the zone. If so, the items stop at the initial DP.

7) This step is not complete in my model, but you'll have to add logic that allows stopped items at the beginning to resume and receive a lane assignment.

I hope I covered everything. If not, let me know what questions you have. Like I said, this can also be done with Process Flow. In that realm, this might be easier or harder depending on how you feel about Process Flow. Either way, this at least demonstrates some ideas. Good luck!

cell infeed example.fsm

0 Likes 0 ·
Andrew S3 avatar image Andrew S3 tannerp commented ·

@tanner.p thanks again!

I made the changes based on your help the model runs but there are a few issues I am having:

1. It seems like the model isn't sending the parts to the shortest queue

2. It will send more than 32 parts even when I constrained it to <= 32

3. I attempted to create some logic to resume sending parts but it didn't do anything


I would appreciate some more help! Thank you very much!

Cell Infeed Problem.fsm

0 Likes 0 ·
Show more comments