question

Jiawei D avatar image
0 Likes"
Jiawei D asked Matthew Gillespie edited

How to use a crane to load/unload an AGV

agv-crane.fsmI am fairly new to FlexSim. I am trying to simulate a scenario that a crane loads and unloads the work piece from and to an AGV. I have managed to create the simulation with Process Flow. However, the AGV and crane will wait for the processor to finish to work. I tried to release the AGV and crane after loading one processor so that they can tend another processor. But if I do that, then the AGV and crane would not come back to unload the first processors.

Currently, I have three processors in the simulation. I would like to simulate AGV and crane move on to the next available process for loading/unloading job without waiting for the the current one to finish. But cannot seem to find the correct way to program it.

I also tried 3D object, but don't know how to set the crane to load/unload the AGV in 3D object environment.

Thanks for the help!

FlexSim 17.2.5
agvcrane
agv-crane.fsm (38.6 KiB)
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

Joshua S avatar image
0 Likes"
Joshua S answered Joshua S commented

Take a look at this model, it does what you want, but I don't know the priority of what should be done, it fills all the processors, then empties all the processors, then refills them.

19162-agv-crane-1.fsm


· 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.

Jiawei D avatar image Jiawei D commented ·

Hi @Joshua S I noticed that you added a Wait for Event in the process flow compare to my original code. Could you please explain the logic behind it so I can fully understand the simulation?

Also, I noticed that the AGV executes the loading/unloading job in the same sequence as I set up the group for the processors. What's a proper to add some priority to make it more "smart", i.e., take the unloading job at a high priority?

Thanks for your help!

0 Likes 0 ·
Joshua S avatar image Joshua S Jiawei D commented ·

The wait for event I believe your referencing is a Event Triggered Source. It fires and creates a token when an event happens, objects and process flow activities have events that you can listen to. You can then place on the token labels associated with the event, such as the object that event occurred at and the associated objects relating to the event.

To make your system smarter I suggest using lists. items in the Queue and Processors would be pushed to a list. You could add a label when the object is created in the queue like priority, then when it is dropped off at the processor, the priority is incremented. Then you can pull items off the list based on their priority.

0 Likes 0 ·
Jiawei D avatar image Jiawei D Joshua S commented ·

Hi @Joshua S, I didn't see a way to implement all these logics using just 3D object logic environment. Is it fair to say this?

0 Likes 0 ·
Show more comments
Jiawei D avatar image Jiawei D commented ·

Hi @Joshua S, I also noticed that when the crane load the processor, it does not move to the processor to load it. It always releases the part a certain distance from the processor. But when it unloads the processor, it does move to the processor. Is there a way to fix this visualization? Thanks!

0 Likes 0 ·
Joshua S avatar image Joshua S Jiawei D commented ·

For Task executors, they find the closest place, or for racks and queues it takes it to the spot that it will be placed in, with a processor, it doesn't know what to do with the item till it gets there, and some other logic. Task executors will take it to the closest point of the object it is traveling to. To fix this you could have it drop it off at a queue that is shrunk and placed where you want it, and that queue would feed it right to the processor.

Something like this 19162-agv-crane-1.fsm

0 Likes 0 ·
Jiawei D avatar image Jiawei D Joshua S commented ·

@Joshua S, If I create a queue just for the visualization purpose, it actually creates an extra step in the process. Once the work piece is transported from this queue to the processor, another work piece will be loaded to this queue right away to wait in the line. Then on the process, you will see two work pieces on the same processor. I have change the max content capacity of the queue to 1 to stop further accumulation of more work pieces. But if I change the max content of the queue to 0, then it stops the flow.

0 Likes 0 ·
Show more comments