question

Dwight avatar image
0 Likes"
Dwight asked Felix Möhlmann commented

Help with AGV process using lists

I have a model where AGVs sequence down parking spots and each spot is responsible for operating a set of chutes when totes become full. I was recently asked to add a tote priority where a full tote can pull from an 'upstream' AGV parking spot, as well as the 'assigned' spot. This all works fine, except that an AGV between spots will be ignored in favor of AGVs at the spots and the selected AGV might be behind the AGV we really want (blocking the selected AGV until the other one clears out as well).

I somehow need to keep the AGVs that are moving between spots in the Parking_Spot process accessible to the Divert process flow. I briefly tried keeping AGVs on the list (not removing them, just accessing them) to move from one spot to the other but that didn't work. Any help is greatly appreciated

Aegis_AGV_Remodel_wHeadstart_2_13_2025.fsm1739493539277.png

1739493526783.png


FlexSim 25.0.2
agvusing lists
5 |100000

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

1 Answer

Felix Möhlmann avatar image
0 Likes"
Felix Möhlmann answered Felix Möhlmann commented

I think you had the right idea by keeping the AGVs on the list. For that to work a couple of adjustments need to be made though.

The biggest issue is that the parking spot token needs to be informed that an AGV that was moving to it was pulled by a Chute-Token. For this I chanced the "Spot" label on the AGVs to be Tracked Variables. The parking token can thus listen to the label increasing past its own number to notice when it should start to look for a new AGV to pull.
(I did the same for the "Occupied" label on the parking spots to replace the 'check if occupied every 0.1s loop'. While this is how it would likely work in reality and not a big drain on resources in this case, it's still best to avoid such loops. As a discrete-event-simulation software FlexSim gives you enough tools to know when exactly something happens to not need them.)

The task sequences given out by the Chute-Tokens should be able preempt the AGVs. And they set the "Spot" label on the AGVs to 100 so any spot the AGV might still be 'assigned' will start looking for a new one.

I haven't tested the model extensively but is seems to work fine in the first 1000s or so.

aegis-agv-remodel-wheadstart-2-13-2025_1.fsm


· 5
5 |100000

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

Dwight avatar image Dwight commented ·

Felix, this is great! Thank you. I've tried the whole 'wait for label change' before and could never get it to work right. You've taught me several new tricks in this one suggestion. Super helpful!

0 Likes 0 ·
Dwight avatar image Dwight commented ·

@Felix Möhlmann, I took what you did for the mode without charging stations and tried to apply it to the process that uses charging stations and can't quite get it to work (Parameters charging enabled = 1). I'm only getting the first AGV to enter the charging station and then when it finishes it is not re-entering the queue. I made a label called 'ReserveCount' and originally AGVs would not be pulled into the spot from upstream spots if an AGV were done charging and this label was greater than zero. I can't understand why that branch isn't activating once an AGV is done charging, or why only the first AGV enters the charging process. Now looking at how the rest of this is working, there might be a simpler way to keep them on the list and just route them to a charging station. Any thoughts would be appreciated.


Thank you


Aegis_AGV_Remodel_2_17_2025.fsm

0 Likes 0 ·
Felix Möhlmann avatar image Felix Möhlmann Dwight commented ·

When an AGV is send to a charging station its "Spot" label is not increased. Thus, the parking location from which it was pulled does not know that it was removed and isn't calling a new AGV.

If interrupting the charging process is not possible, then I wouldn't keep the AGVs on the list. Once they are done charging the respective flow would push them back to the list.

By setting their "Spot" label to X.4 and allowing parking spot to pull AGVs within the interval [N-1, N), where N is the spot's number, they can pull vehicles from the previous spot or a charging location. Using an ORDER BY statement in the query you can prioritize one over the other.

This simplifies the flow a quite a bit, so that the charging case can actually be neatly integrated into the non-charging logic we had already set up.

aegis-agv-remodel-2-17-2025_fm.fsm

1 Like 1 ·
Dwight avatar image Dwight Felix Möhlmann commented ·

There are exceptions being thrown for some reason, the model is not getting to the 12pm mark. Looks like something related to that change. Also when charging is disabled the packages off the end number is significantly higher than it was in the previous one. Hmmmm


1739894802869.png

0 Likes 0 ·
1739894802869.png (61.8 KiB)
Show more comments