To make AGV simulation even simpler, FlexSim has two pre-built AGV process flow templates
you can use with your AGV simulation project. These process flow templates already have the
basic logic needed for most AGV systems. The following image shows a zoomed out version of
the AGV template:
In this tutorial task, you'll learn how to set up the process flow template. You'll also
learn how to create pick up areas, drop off areas, and park points. At the end of the
tutorial, you'll learn how to adjust control point sensitivity in order to make your system
more efficient.
While it is beyond the scope of this tutorial to explain the exact details of how the AGV
template works, you should be aware that this process flow will control nearly all of the
logic in this AGV system. Consider exploring the AGV process flow template in more detail to
learn how it works. The template is organized by function and is self-documented to help you
understand it.
When you're finished, your model will look similar to the following image:
Step 1 Add the AGV Process Flow Template
In this step, you'll create the AGV Process Flow template and attach the AGVs to the
process flow. As you'll see in this step, the basic set up is fairly simple. After creating
the process flow template, you'll need to attach the AGVs to the process flow. Then, you'll
set the processors to push transportation tasks to a global list called AGVWork, which is
automatically created when you set up the AGV process flow. Once the AGVs are attached to
the process flow, you won't need the dispatcher object, so you can delete it.
In order for the process flow to work correctly, you'll also need to create a Next Look
For Work loop. A Next Work For Work loop is basically a series of control points that are
connected to each other in a loop. Once this circuit has been set up, the AGVs in the system
will loop continuously through the network looking for transportation tasks to work on.
You'll set up the Next Look For Work system in the main AGV network in this step.
To add the process flow and set up its logic:
On the main toolbar, click the Process Flow button to
open a menu. Point to Add a Task Executer Process Flow and
then select AGV to create this process flow template.
In the newly created process flow, click a blank area to ensure nothing is selected.
In Quick Properties under the Process Flow Instances group,
find the Attached Objects (instances) box. Click the
Sampler button
by this box to enter sampling
mode.
In the 3D model, click AGV1. It should now show up in
the Attached Objects box.
Repeat the previous steps to attach AGV2 to the process
flow as well.
Now that the AGVs are attached to the process flow, you can delete the
AGVDispatcher in the 3D model.
In the 3D model, double-click the Staging1 processor to
open its properties window. On the Flow tab, click the
arrow next to the Use Transport box to open a menu. Point
to Use List, then select Push to Item
List (no task sequence) to open a picklist window.
Check that the List box shows that the AGVWork
list is currently selected. Leave the rest of the properties on their default
settings.
Click the OK button to save the changes and close the
properties window.
Repeat the previous steps to add the AGVWork list to the
Staging2 processor as well.
If the two AGVs are currently hovering over the
AGVEntryPoint control point, drag those away from the
control point so the control point is visible.
Create a connection (A-connect) from the AGVEntryPoint
control point to the MainDropOffPoint control point to open
a menu. Select NextLookForWork. A red line will appear
showing the two control points are connected.
Repeat the process to create Next Look For Work connections looping between the rest
of the control points in the following order:
From the MainDropOffPoint control point to the
MainPickUpPoint control point
From the MainPickUpPoint control point to the
bottom left control point
From the bottom left control point to the bottom right control point
From the bottom right control point to the lower right control point
From the lower right control point to the upper right control point
From the upper right control point to the
AGVEntryPoint control point
Reset and run the simulation model:
If you'll recall from the end of the previous tutorial task, there was a problem in which
AGV1 and AGV2 get deadlocked. Fortunately, this problem no longer occurs because both AGVs
now loop around the system continuously looking for work, regardless of whether there is
actual work that needs to be performed or not. The AGV process flow template automatically
creates this logic.
Step 2 Add a Pick Up Area
In this step, you'll learn how to add a pickup area and connect pick up control points to
location control points. You'll create pickup stations where up to 10 items can wait for
transportation by an AGV.
When you're finished with this step, your 3D model will look similar to the following
image:
To create a pick up area:
Create a horizontal AGV path going from right to left extending out from the lower
left corner of the AGV network that is 16 units long. Leave 1 unit of space on either
end.
Create a vertical AGV path going from up to down that is 3 units long. The path
should be 1 unit left and down from the previous path.
Create a horizontal path going from left to right that is 18 units long. It should
be 1 unit right and down from the previous path.
Create a vertical path going down to up that is 3 units long. It should be 1 unit
right and up from the previous path.
Use the Join Paths tool in the Library to join these
paths together. Join the main AGV path to the first and last new path you created. Make
sure the join paths flow in the same direction as the other paths.
Add 10 control points to the top and bottom paths, spacing them about 3 units
apart.
For clarity, rename the new control points as PickUp1, Pickup2, etc. in the order
that the AGVs will pass over them.
Create a control point connection (A-connect) from
MainPickUpPoint control point to the
PickUp1 control point to open a menu. Select
PickUpPoints. A green line will appear showing the two
control points are connected.
Repeat the previous steps to create pick up control points from the
MainPickUpPoint to all 10 of the pick up control
points.
Open the DeliverySchedule process flow.
Click the Source: MedSupplies Deliveries activity to
select it. In Quick Properties, under the Arrivals group,
find the cell on the first row under the Quantity column.
Type 10 in this cell.
Reset and run the model:
Notice that the flow items enter the queue and the processors begin processing them.
Then, the processors pass them to the MainPickUpPoint control point, which immediately
diverts the items to one of the ten pick up points. When the AGVs pass over the
MainPickUpPoint looking for work, it diverts them to the pick up area. The AGVs then load
the flow items and transport them to their destination.
If you keep the model running long enough, the AGVs will transport all of the items.
Notice that when that happens, they will bypass entering the pick up area because there
isn't any transportation work in that area for them to work on:
Step 3 Add a Drop Off Area
In the same way that you can create pick up points for AGV transfers, you can also create
drop off points for fixed resources. This step will guide you through the process.
When you're finished with this step, your 3D model will look similar to the following
image:
To create a drop off area and use a global list:
In the 3D model, delete the DropOff sink.
Create a horizontal AGV path going from right to left extending out from the upper
left corner of the AGV network that is 12 units long. Leave 1 unit of space on either
end.
Create a vertical AGV path going from up to down that is 3 units long. The path
should be 1 unit left and down from the previous path.
Create an identical horizontal path going from left to right that is 12 units long.
It should be 1 unit right and down from the previous path.
Use the Join Paths tool in the Library to join these
paths together. Join the main AGV path to the first and last new path you created. Make
sure the join paths flow in the same direction as the other paths.
Add 4 control points to the top and bottom path, spacing them equally along the
path.
For clarity, rename the new control points as DropOff1, DropOff2, etc. in the order
that the AGVs will pass over them.
From the Library, add a Queue to this area.
For clarity, rename the new queue LoadingDock.
Create a connection (A-connect) from the
LoadingDock queue to the
MainDropOffPoint control point.
Create a connection (A-connect) from the
MainDropOffPoint control point to the
DropOff1 control point to open a menu. Select
DropoffPoints. A light blue line will appear to show that
the location control point is now connected to the drop off control point.
Repeat the previous steps as needed to create additional drop off control points for
the other three drop off control points.
Check that your simulation model looks similar to the image shown at the beginning of
this step.
Step 4 Use Lists to Set Item Destinations
In this step, you'll learn about a different method to send items to a downstream object.
Rather than using port connections, you'll push and pull items from a global item list named
ItemsReadyForDelivery. You'll also change the Dropoff sink to a queue instead.
Although lists require a little more thought to set up correctly, lists are sometimes
better for item routing in an AGV model because they don't require making port connections
over potentially long distances. Lists can also simplify what many-to-many port routings for
models with many different origin points and many different destination points.
To create a global item list:
In the Toolbox, click the Add button
to open a menu. Point to
Global List, then select Item
List.
In the list properties window, change the list name to
ItemsReadyForDelivery.
In the Label Field box, delete the current text and
type LoadType.
Delete all the Expression Fields.
Press the OK button to save the changes and close the
window.
Double-click the Staging1 processor to open its
properties window. In the Flow tab, click the arrow next to
the Send to Port button to open a menu. Point to
Use List, then select Push to Item
List.
Click the arrow next to the List box to open a menu.
Select ItemsReadyForDelivery.
Click the OK button to save the changes and close the
window.
Repeat the previous steps for the Staging2 processor as
well.
Double-click the LoadingDock queue to open its
properties window. In the Flow tab in the
Input group, check the Pull
check box.
Click the arrow next to this box to open a menu. Point to Use
List and select Pull from Item List.
Click the arrow next to the List box to open a menu.
Select ItemsReadyForDelivery.
Click the OK button to save the changes and close the
window.
Reset and run the model:
Notice that the first AGV drops off at DropOff4 and the second AGV drops off at
DropOff3.
Step 5 Add Park Points
In this step, you'll add three more AGVs to the model for a total of five. You'll also
create park points for each of the AGVs. Park points are locations where AGVs begin when the
simulation model first starts running. During a simulation run, an AGV can return to the
park point to recharge its batteries when they are running low.
When you're finished with this step, your 3D model will look similar to the following
image:
To add additional AGVs and create park points:
From the Library add three more TaskExecuter objects to
the 3D model.
For clarity, rename these AGVs as AGV3, AGV4, and AGV5.
Open the AGV process flow.
Click a blank area to ensure nothing is selected. In Quick Properties under the
Process Flow Instances group, find the
Attached Objects (instances) box. Click the
Sampler button
by this box to enter sampling
mode.
In the 3D model, click AGV3. It should now show up in
the Attached Objects box.
Repeat the previous steps to attach the other two new AGVs to the process flow as
well.
Drag AGV1 and AGV2 away
from the AGVEntryPoint control point so that it is visible
in the 3D model.
Create a port connection (A-connect) from AGV2 to the
AGVEntryPoint control point to open a menu. Select
Traveler AGV. A red line will appear showing the second AGV
is connected.
Repeat the previous step to connect the rest of the AGVs to the control point.
In the top left corner about 4 units away from the corner, create a vertical AGV
path that is 6 units.
Click the new path to select it. In Quick Properties, check the
Two Way check box.
Press Ctrl+C to copy the selected path. Press Ctrl+V to paste a copy of the path in
the model.
Repeat the previous step to create 5 paths. Space the paths out so that they are
about four units apart from each other.
Use the Join Paths tool in the Library to join each
park path to the main AGV network.
Click one of the new joining paths you created to select it. In Quick Properties,
check the Two Way check box.
Repeat the previous step to change all the new joining paths to two-way paths.
From the library, add a Control Point to the middle of
one of the park paths.
Repeat this step for all five park paths.
For clarity, rename these new control points ParkPoint1,
ParkPoint2, etc.
Create a port connection (A-connect) from the
AGVEntryPoint control point to the
ParkPoint1 control point to open a menu. Select
ParkPoints. A dark green line will appear showing the
second AGV is connected.
Repeat the previous steps to connect the AGVEntryPoint
control point to the rest of the park points.
Reset and run the simulation model:
When the simulation starts, all five AGVs start in their designated park points and then
travel throughout the network working on the transportation tasks. You'll notice that
sometimes the AGVs have to stop momentarily. You'll learn how to reduce the amount of time
an AGV waits at a control point in the next step.
If you keep the model running long enough, the AGVs will transport all of the items.
Notice that when that happens, the AGVs will eventually all return to their park points to
charge their batteries instead of idly looping around the system:
Step 6 Change Control Point Sensitivity
In the previous step, you noticed that sometimes the AGVs had to stop while waiting for
the AGV on the path ahead of them to clear the control point its on. That's because AGV
networks have a sophisticated look-ahead mechanism that can avoid crashes by determining if
the next control point on the path is available or not. If it is not available, the AGV will
wait at its current control point.
By default, the control points don't become free until the AGV that claimed it has
reached the next control point. You can change the control point's sensitivity so that the
AGV merely has to clear the control point itself before the control point can be allocated
by another AGV. You'll learn how to change this sensitivity by changing its Deallocation
Type property in this step.
To change the AGV system's control point sensitivity:
Drag the five AGVs away from the AGVEntryPoint control
point so that it is visible in the 3D model.
Click the AGVEntryPoint control point to select it. In
Quick Properties, click the Deallocation Type menu to open
it. Select Deallocate When Past Current.
Repeat the previous step for all the control points on the main AGV network.
In the Toolbox, double-click the AGV Network to open
the network properties window.
On the Deallocation Types tab, select
Deallocate When Past Current from the type menu.
Under the Deallocate When heading, click the first menu
to open it. Select Center.
Press the OK button to save the changes and close the
window.
Reset and run the simulation model:
Notice now that the AGVs are more efficient as they travel through the system. The AGVs
deadlocks less often and they quickly space themselves out efficiently throughout the
network.
Conclusion
Now you've learned how the AGV process flow template makes it possible to do even more
complicated AGV behavior like pick up points, drop off points, and park points. You've also
learned how to adjust control point sensitivity to make your system more efficient if
needed. In the next tutorial, you'll learn how to add elevators to your AGV system so that
AGVs can travel to multiple floors if needed. Continue on to
Tutorial 4.3 - Using Elevators With
AGVs.