question

Fernando MG avatar image
0 Likes"
Fernando MG asked Fernando MG commented

Stay time at a parking spot instead of using battery threshold

Hello! I have the following situation in my model and I would like to know how to program it. I would like that every time an AGV arrives at the control point 1 (see the picture) it goes to the parking spot and stays there for 1 minute recharging batteries. If an AGV arrives at the Control Point 1 and there is an AGV at the parking spot, it will go to the Control Point 2.

I tried to use way points but it does not work properly. For the AGV network logic I am using the AGV template and the NextLookForWork loop.

FlexSim 20.0.4
agvtimeparking pointflexsim 20.0.4
agvparkingspot.png (149.1 KiB)
· 2
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 tannerp commented ·

@Fernando MG,

Would you be able to upload the model so we can see your Process Flow logic? That way we can find a solution that works well with your model.

0 Likes 0 ·
Fernando MG avatar image Fernando MG tannerp commented ·

Sure! Here you have the model. Anyway, the logic I used is the one from the AGV template provided by FlexSim. I don´t know whether changing the process flow logic or working with way points could be the best option.

AGVSimulation.fsm

0 Likes 0 ·
agvsimulation.fsm (6.0 MiB)

1 Answer

tannerp avatar image
1 Like"
tannerp answered Fernando MG commented

@Fernando MG,

Thanks for uploading your model. I implemented some logic in the AGV Process Flow template that should do what you'd like. The Decide activity checks to see if the AGV is arriving at CP1615. If that's true, it sends the token to try and pull the parking spot "CS1625" from a list. If it is successful, it travels to that point to recharge for 60 seconds then returns to the normal AGV control loop.

Hopefully this works or at least gets you started on how to do this. Let me know if you have any questions.

fernando agv help.fsm


· 3
5 |100000

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

Fernando MG avatar image Fernando MG commented ·

I have tried it and it works almost good! Thank you so much, your help has been very useful. There is only one problem, when the AGV is loaded, even if there is no any other AGV at the parking point, it will take the other way, I guess because is the shortest distance to its destination as it is programmed in the template logic. When the AGV arrives at CP1615, it only goes to the parking spot if it is unloaded. Is there any way to fix it?

0 Likes 0 ·
tannerp avatar image tannerp Fernando MG commented ·

@Fernando MG,

When an AGV is loaded, it's going to take a different route through Process Flow. If you look at the screenshot below, the AGV is going to be assigned a destination and then travel to that location or its dropoff points.

So I think there are two ways to implement that logic. One would be to create a loop at this point in the Process Flow that continually checks to see which CPs are allocated by the current AGV and re-routing it if one of the CPs is CP1615.

Another way would be to listen for a Pre-Arrival at CP1615 and then preempt the AGV's task sequence with a re-routing if it is loaded. These might be difficult to implement, but I can try if you'd like.

Wouldn't it make more sense to have the loaded AGV finish its task, however, by unloading first before charging? Or is that not a possibility?

1 Like 1 ·
unload-pf-agv.png (26.9 KiB)
Fernando MG avatar image Fernando MG tannerp commented ·

The thing is that this system is based on a real system that works like that. As the AGV is going to stay at the parking point for just 60 seconds, it does not matter whether it is loaded or not. It should always go to the parking spot if it is at CP1615 and the parking place is free, and, after that, unload the box at its correspondent destination.

I think your solution could work, and it would be very useful if you can try it and help me. I am new at FlexSim and I don´t know the difficulty of implementing this functionality, so it is okay if it is not possible to do it. Anyway, thank you for all the time you have spent in this question!

0 Likes 0 ·