loading from a crane on multiple AGV's

loading from a crane on multiple AGV's

Gust_Flex
Not applicable
22 Views
9 Replies
Message 1 of 10

loading from a crane on multiple AGV's

Gust_Flex
Not applicable

[ FlexSim 23.2.1 ]

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

0 Likes
Accepted solutions (1)
23 Views
9 Replies
Replies (9)
Message 2 of 10

moehlmann_fe
Observer
Observer
Accepted solution

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

0 Likes
Message 3 of 10

Gust_Flex
Not applicable

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
Message 4 of 10

moehlmann_fe
Observer
Observer

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

Message 5 of 10

jason_lightfootVL7B4
Autodesk
Autodesk
And also consider using instanced/object process flows.
0 Likes
Message 6 of 10

Gust_Flex
Not applicable

Hi Felix, thanks for the detailed explanation. I now want to make a simulation of an assembly line, at each control point an operator must 'do some work' (can this be simulated? Like adding nuts and bolts.) or perform a task before the AGV is allowed to continue driving. test-agv-assemblyline.fsmAttached you will find my file, but I am a bit stuck with this process flow. Can you help me?

0 Likes
Message 7 of 10

moehlmann_fe
Observer
Observer

You'd essentially just repeat either of the two options that I demonstrated.

Either an arriving AGV is pushed to a list from which the "WorkStation 1" can then pull it and run the necessary steps before the AGV continues.

Or the process is build into the AGV flow, whose token acquires the operator and tells it to move to the AGV and do the work step.

The attached model demonstrates two more things:

List partitions:

Each partition is essentially a separate list. When pushing/pulling to/from a list you can specify a partition ID. This lets you use a single list to handle different types of entries without mixing them. In the attached model, the AGV is pushed to different partitions, so the Loading flow can only pull AGVs parked at the conveyors and the Statoin 1 flow can only pull AGVs at CP2.

Wait for Event parameters:

Each event in FlexSim usually has one or more parameters attached to them. In the Wait for Event activity, you can either assign these to labels to later access this information (for example what type of item entered a queue) or you specify that a parameter must match an already existing label or fixed value in order for the token to continue.

In the attached model a Wait for Event activity reacts to tokens entering the Release activity in the Station 1 flow, but only if that token is the one that previously pulled the AGV off the list (the label "puller" is assigned in the Push to List activity)

1711005485248.png

test-agv-assemblyline-fm.fsm

0 Likes
Message 8 of 10

Gust_Flex
Not applicable
Hi Felix, your answers helped me a lot! But I'm currently struggeling with the AGVs, I want them to wait if there is already one AGV on the CP before them. It works in this test file, but when I integrate it to the full assembly line it doesn't work anymore. I can't upload that file because of restrictions but can you help me with that one?
0 Likes
Message 9 of 10

Jeanette_Fullmer
Community Manager
Community Manager
Hello @Gust_Flex,

Its hard to say without seeing your model. Can you check the settings for your paths and deallocation of CP? I would also compare your AGV network settings.

0 Likes
Message 10 of 10

Gust_Flex
Not applicable
Hi @Jeanette F, I solved it. The settings of the CPs were wrong, I needed to put them on "Deallocate At Next Control Point". But thanks for the answer!
0 Likes