question

gust-flex avatar image
0 Likes"
gust-flex asked gust-flex commented

loading from a crane on multiple AGV's

Hello, I'm new to FlexSim and I'm trying to make an AGV path. On the first point I want to load the box from the conveyor with a crane on to an AGV. It need to be unloaded from the AGV at the same point with the same crane but on the other conveyor belt. I really have no clue how I can do this.

test AGV_autosave.fsm

FlexSim 23.2.1
agvconveyorcrane
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 gust-flex commented

First tip I want to give. If you've done the AGV Process Flow tutorial, so you know what the AGV template does, and you want to implement logic that is exactly that or very close to it (patrolling along a route looking for work), then use the template.

For anything else, build your own logic. You will learn more about the possibilities of Process Flow and it will ultimately also be easier quicker than trying to remodel the AGV template into something it wasn't designed to do. You can of course use parts of the template (like the parking logic) and reuse it in your own logic after adjusting it to work with the information and logic structure you are using.

Now to the actual question. The important part here is that the two task executers (crane and AGV) need to be synchronized. The crane can't unload the item if the AGV is not in position to receive one. One option to do this is to use a list. A token can wait until it can pull the needed resource, in this case the AGV, from a list.

In order to be able to unload to a conveyor, an entry transfer must be used. You can create a new transfer by connecting some object to the conveyor and then delete the object. The entry transfer will remain. In the attached example, I added both entry transfers to the output conveyors to a group and choose a random one among them to unload the item to.

I also make the AGV do a round trip before the item is unloaded again, so it doesn't just stand at the CP all the item and to further demonstrate how tasks can be synchronized by having the "AGV-Token" control the unload task once it returns to the CP.

test-agv-fm.fsm


test-agv-fm.fsm (68.7 KiB)
· 8
5 |100000

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

gust-flex avatar image gust-flex commented ·

Thank you very much for the explanation and the file. I already understand more about how to use a list. But I haven't quite figured out how to add multiple AGVs to the loop, how do I ensure that the crane unloads on multiple AGVs?

0 Likes 0 ·
Felix Möhlmann avatar image Felix Möhlmann gust-flex commented ·

That's the nice thing about building the logic from the perspective of the AGV: Since the token in the left flow represents the AGV, all you have to do is create a token for each AGV and assign the respective object to the "AGV" label. This is easy to do if you add the AGVs to a group.

1710857865428.png

The rest of the logic uses no static references, so it can theoretically handle any number of AGVs. When the crane pulls an AGV, the pulled object is written to a label and this then used to have the crane unload to the correct AGV.

1710857905252.png

1710857925314.png

This is another good practice in my opinion: When building a Process Flow, try to have as few static references as possible. Use labels instead.

test-agv-fm_1.fsm

1 Like 1 ·
1710857865428.png (20.7 KiB)
1710857905252.png (12.1 KiB)
1710857925314.png (8.9 KiB)
test-agv-fm-1.fsm (69.6 KiB)
Jason Lightfoot avatar image Jason Lightfoot ♦♦ Felix Möhlmann commented ·
And also consider using instanced/object process flows.
0 Likes 0 ·
Show more comments