question

Ajay M avatar image
0 Likes"
Ajay M asked Ajay M commented

Despite items pushed to list on all Qs, AGV is unable to load them from all Qs

Hello Everyone,

I created a model with the help of flexsim from this question https://answers.flexsim.com/questions/136208/how-to-make-agv-to-stay-travel-to-park-points-or-t.html. Now I'm dealing with a problem where the processflow logic is running well without any issues but I still can't figure out why the AGV in the model isn't loading the items from all the Qs on item available. Here i am using a global table for defining the pickup and dropoff points.

In the below picture, even items are avilable for pickup still AGV is resting in its parkpoint. It is the same with other 3 Qs on the left marked in Red and it is picking items from the Qs on right marked in Blue . Any Suggestion?

AGV Loading Qs issue.fsm

1676364970974.png


FlexSim 22.1.0
agvlist pull from listloading
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 Ajay M commented

Q5, the queue in the top left in your screenshot is not pushing its items to the list and is also not assigning a destination in the OnExit trigger like the other queues do.

Furthermore, you have placed an Acquire activity within the looped part of the Process Flow without ever returning the resource. So the token will get stuck there when it tries to acquire the AGV a second time.

Since you have a single token that loops through the Process Flow, I don't really see the need for the AGV to also be defined as a resource, since there is currently no possibility of a second token interfering with the tasks. You could also just assign the reference to a label directly.

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

Felix Möhlmann avatar image Felix Möhlmann commented ·

In most cases, Process Flow activities expect a reference to a single object of the respective class (FlowItem, TaskExecuter, ...). So you always have to refer to a member of a group, not the group itself.

https://docs.flexsim.com/en/23.0/Reference/CodingInFlexSim/FlexScriptAPIReference/Data/Group.html#Operator-bracket

When assigning AGVs at the source, you can use "tokenIndex" which is a parameter that is available in the source only and numbers the tokens that were created through a single row. (Group(...)[tokenIndex])

For the park points it would make sense to add them as a resource and acquire one whenever it is needed (remember to release it when the AGV leaves the point).


However, with all that said. If you use more than one AGV in this system with two way paths everywhere, you will, more or less inevitably, run into deadlock situations when two AGVs travel toward each other on the same path. (Which is why I assumed the system was meant for a single AGV when I suggested to not use the AGV template)

While it is theoretically possible to build/program logic to avoid those situations, that is a very complex topic, even in a small system like this. And with AGVs constantly having to wait for each other, get out of the way of one another, take detours and so on, you might just end up with a system that is little more efficient than a single AGV to begin with.

So I would suggest to either

- Use mostly one-way paths, especially for long sections like the large loop (some two-way paths can probably be handled by using control areas and careful placement of control points)

- Assign the AGVs fixed areas of the network that they work, by using separate lists or partition a single list. Those areas could "touch" each other (have control points at the edge of the area belong to more than one) but not overlap.

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

@Felix Möhlmann Thank you very much.

The model is now working correctly after I created and allocated one additional AGv using "tokenIndex". I agree that it is not a good idea to assign two AGVs to a two-way network, especially in the model mentioned above. Using this model logic, I am attempting to track the AGV empty travel statistic, and it works pretty well.

Once again, thank you for your fantastic logic and suggestions.


0 Likes 0 ·
Ajay M avatar image Ajay M commented ·

@Felix Möhlmann Thank you very much for the response and the Suggestions. I corrected my mistakes and the model is working well. I also discovered that the major cause of AGV's failure to pick the items from the Qs circled in RED was my mistake to uncheck the "Batching" option.

1676369717259.png

After checking it, Now AGV is picking items from all the Qs.

I now added 1 additional AGV and connected the AGV group to the source's AGV label. An error was shown during the loading process. Could you please give me any sugesstion to this? I also have another question: Can I add Park Points to a Group and Assign the Group to the "Travel to Parking" Activity? as i want to park my second AGV when there is no work to pick or drop.


1676369695632.png


0 Likes 0 ·
1676369695632.png (51.3 KiB)