question

fiz avatar image
0 Likes"
fiz asked Felix Möhlmann commented

Connect my process flow to Advance AGV network

Hi All. I recently completed the logic for my simulation with the initial logic of my AGV to be a task executor with Task Sequences. After completing the logic for the part flow within my simulation i would like now to incorporate the Advance AGV function into my model. From flexsim tutorial on agv i assume that i am able to do this easily by the following:
1719284213776.png

however when i do that on my current sim model it doesnt work. is there any way/tutorial for me to incorparate AGV advance process flow into my task sequence?

the pick up destination, and the deliveray destination have already been define in my mai process flow, how do i replace the red parts below with Advance AGV process flow?

1719284390409.png


Sim Model Link

FlexSim 21.1.5
agv network
1719284213776.png (24.1 KiB)
1719284390409.png (62.3 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

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

Pushing the item to a list in Send to Port and then pulling that item with a token in Process Flow will not trigger the Use Transport logic of the object. This only happens if the object is send to a port connection or if the item is pulled by another fixed resource's Pull option (Input tab).

The sections marked in red would be replaced by an Assign Labels activity that writes the destination to a label "destination" on the item, a Push to List activity that pushes the item to the AGV work list and a Wait for Event activity that awaits the arrival at the target object (generally probably listening to the On Entry event of the respective object).

· 10
5 |100000

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

fiz avatar image fiz commented ·

Hi, is there an example how i can connect efficiently between my process flow and the agv template. I tried doing it but still can't.


attached is the modified sim model.

sim model link

0 Likes 0 ·
Felix Möhlmann avatar image Felix Möhlmann fiz commented ·

You have not defined any NextWorkPoint connections between the control points, so the AGVs will not start moving. Your model would probably benefit from using Work Forwarding as well.

https://docs.flexsim.com/en/24.0/WorkingWithTasks/AGVNetworks/UsingAGVProcessFlowTemplate/UsingAGVProcessFlowTemplate.html#agvWorkForwarding

The AGV templates implement a patrolling behaviour for the AGVs, keeping them moving through the system as long as there is work available. But the AGVs only 'see' the work once they arrive at the respective Control Point.

So before you remodel your logic, be sure that this is what you want. It might be easier to integrate other behaviours, such as returning to a park point when idle to the existing system.

0 Likes 0 ·
fiz avatar image fiz Felix Möhlmann commented ·

I would like to use the template but there are too many errors which arises from it. Is there a way or a template which dont make use of "NextWorkPoint" function? this is because my task sequence have already define which CP the item is to be delivered to for every mission, but utilising the template would still be useful as it takes into account functions such as parking/nearest agv for deliveries

0 Likes 0 ·
Felix Möhlmann avatar image Felix Möhlmann fiz commented ·

The "NextWorkPoint" loop is the core of the AGV Process Flow template. If that is not something you want to use, then implementing other functions that you do need yourself is (in my opinion) almost always going to be easier and faster than trying to rework the template into something it wasn't designed to be.

I've attached an example model that contains a rudimentary, yet flexible and relatively easy to implement parking logic. To use it in your model you only need to make one change which is to replace the Resource/Acquire/Release activities dealing with the AGVs with List/Pull from List and the "Create AGV Return/Park Token", used in the attached model, respectively.

agv-parking-example-fm.fsm

You mention that the AGV template takes distance into account for deliveries. It doesn't, at least not directly. As I mentioned previously, the template implements a patrolling behaviour. An item is going to be picked up by the first AGV to pass the station, but when or if that happens depends on how the "NextWorkPoint" loop is set up. If it contains forks, the nearest AGV that could have picked up the item might travel along a different path first, leaving an item to be picked up by another AGV that arrives later.

0 Likes 0 ·
fiz avatar image fiz Felix Möhlmann commented ·

Im trying to incorporate the previous model provided above by Felix.

However I am unable to comprehend the following

1719460143234.pngthe activity " Push AGV to List (check for other task)" how is it checking for other task?

0 Likes 0 ·
1719460143234.png (75.7 KiB)
Felix Möhlmann avatar image Felix Möhlmann fiz commented ·

The 'task tokens' in the lower section, created by the Event-Triggered Source acquire an AGV for their task by pulling from the AGV list. The Push to List activity marked in red has a maximum wait time of 0s.

So either, the AGV is pulled as soon as it is pushed. Which means that there was a task waiting for an available AGV. And the token will be released through the first connector to the sink.

If there is no waiting task, the token instead exits through the second connector, starting the parking logic. The important part there is that the "Wait until complete" option is not checked. This has the effect that the token creates the complete task in an instant and then pushes the AGV to the list again. However this time without any maximum wait time.

The "Create TS" activity of the transport task has a preemption setting that the task sequences to interrupt and delete other currently active task sequences. So as soon as a task becomes available, the AGV travel task to the park point is interrupted.

0 Likes 0 ·
fiz avatar image fiz Felix Möhlmann commented ·

Thanks Felix, that explains it well. Ive successfully incorporated the above model with mine, and i discovered there was a built up in token when pushing back parkpoints.

1719474649166.png

1719474727585.png


what i did differently was that i made the entries of ParkCP list stay forever as it is always being pulled by "Where isAvailable = 1".

what could be the cause of token building up?


0 Likes 0 ·
1719474649166.png (48.8 KiB)
1719474727585.png (66.8 KiB)
Felix Möhlmann avatar image Felix Möhlmann fiz commented ·
If no maximum wait time is set, a token will stay in a Push to List activity until the pushed value is pulled/removed from the list. So if the parkCPs are not actually removed the list, the tokens stay there forever.

But if the CPs are never removed you can just remove this activity and route the tokens directly to the sink after the AGV is pulled.

0 Likes 0 ·
fiz avatar image fiz Felix Möhlmann commented ·

Thank you once again Felix.

Currently I have compiled the AGV delivery task (travel, load, travel, unload as a subflow) which is called upon easily and it works well.

1719493122945.png

however by doing so, the entering token can only exit the Zone only after one the subflow. I tried inserting the "Exit Zone" activity into a diff subflow but error occurs. how may i rectify this error, or is there another way to exit the zone during subflow?

1719493280960.png



0 Likes 0 ·
1719493122945.png (137.5 KiB)
1719493280960.png (118.4 KiB)
Show more comments