question

Martin K5 avatar image
0 Likes"
Martin K5 asked Ryan Clark commented

How to assign label from path to taskExecuter?

Hi,

I would like to ask, how is it possible to assign path label to taskExecuter? Each of my paths has its own label based on number and I would like to assign this label to taskExecuter to decide next movement.

Does anyone knows please?


Thank you.

Martin

FlexSim 21.1.4
labelslabel assignmentpath
· 4
5 |100000

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

Joerg Vogel avatar image Joerg Vogel commented ·

can you attach a model?

0 Likes 0 ·
Martin K5 avatar image Martin K5 Joerg Vogel commented ·
Hi,

I did that as a new comment.


0 Likes 0 ·
Martin K5 avatar image Martin K5 commented ·

Hi,

I have attached a simple model. What I want is that one of my taskExecuters travels and unloads a box at a rack, but one path is connected to two racks and that is why a dead lock appears. The another taskexecuter gets different aisle number but it refers to the same Rack. The Idea was to check the aisle firstly and then check the path to avoid the deadlock.

Is it clearly described?

Thank you.

Martin

pokus_community.fsm

0 Likes 0 ·
pokus-community.fsm (62.1 KiB)
Ryan Clark avatar image Ryan Clark commented ·

Hi @Martin K5, was Felix Möhlmann's answer helpful? If so, please click the "Accept" button at the bottom of their answer. Or if you still have questions, add a comment and we'll continue the conversation.

If we haven't heard back from you within 3 business days we'll auto-accept an answer, but you can always unaccept and comment back to reopen your question.

0 Likes 0 ·

1 Answer

Felix Möhlmann avatar image
0 Likes"
Felix Möhlmann answered Felix Möhlmann commented

I found two ways to get a reference to the path the task executer (TE) is currently on. In the attached model I demonstrate both. Instead of assigning the path itself to a pointer label on the TE, you can obviously also directly assign a label value from the path to the TE.

The first is to place a control point at the start of each path and use waypoint logic to assign the path to a label on the TE in the trigger function.

The other method finds the path through the node, corresponding to the TE, in the agvnavigator tree. The only reference needed there is the name of the TE. I don't know of any event that could be used to trigger this code, so it would probably have to run on a timer. In the attached model I realised this through a process flow.

Both methods will have a small delay in updating the path, based on the distance from the control point to the start of the path or the timer interval.

Get_AGV_Path.fsm


get-agv-path.fsm (103.5 KiB)
· 1
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 ·

Hi @Martin K5,

in the attached model I use labels to keep track of which (Rack-)CPs are allocated. After a rack/slot is acquired, I look for a non-allocated, connected CP and set it as now allocated. The code then loops through all racks connected to that CP. If all connected CPs are blocked now, the label "reachable" on the rack gets set to 0, so it isn't valid anymore in the "Find Slot" activity.

The allocated CPs gets written to label on the TE, so it can freed up again, when the TE travels to pick up a new item. At that point, the connected racks are set as "reachable" again.

This was the first solution I could come up with to take into account most, but not all, racks being connected to two CPs. It is also scalable to more than two TEs.

pokus-community_fm.fsm

0 Likes 0 ·