Paul Toone avatar image
Paul Toone posted Paul Toone edited

AGV Lesson 3 Introduction   

This lesson extends the previous lesson to take you deeper into AGV simulation concepts.

What You Will Learn

  • How AGV speeds are determined
  • How to dispatch to spurs in the AGV network for pick-up
  • How to implement work polling
  • How Control Areas Work

Time to Complete

This lesson should take approximately 15-20 minutes to complete.

AGV Model Overview

Lesson 3 will start where Lesson 2 left off. From that point we will add spurs to our network for loading multiple items from the same location. We will implement triggers on the AGV team's OnResourceAvailable to direct AGVs to their next work location. Finally, we will define custom max speeds for the curved paths and spurs.

Click here for the Step-By-Step Tutorial.

New Concepts

AGV Types

The AGV module includes a flexible method for determining AGV speeds and other AGV-specific attributes. First, the AGV network categorizes its member AGVs into AGV Types. An AGV Type correlates to a specific AGV's "make and model". An AGV vendor may sell several different lines of AGVs, some for transportation of heavy loads, some for medium loads and so on. With each of these models comes a spec sheet that defines the carrying capacity, max speeds, battery capacity, battery usage, etc. In FlexSim, an AGV Type would correspond to one of these vendor-specific AGVs.

By default, a FlexSim AGV model has only one AGV Type, called DefaultAGV. You can add, remove, and configure AGV Types by right-clicking on a Path or Control Point, and choosing AGV Network Properties. Then click on the AGV Types tab. Here you will see the list of AGV Types defined in your model, along with the specs for each AGV Type. Way Points Tab

To define AGV Type for an AGV object in your model:

  1. Make sure the AGV has been added to the AGV network with an "A" connect (there should be a red line drawn to its reset Control Point).
  2. Click on the AGV.
  3. In Quick Properties on the right, in the AGV Type panel, choose the desired AGV Type in the drop-down. Way Points Tab Note that since a default FlexSim AGV model only has one AGV Type, DefaultAGV will be the only option starting off. Again, you can add more AGV Types through the AGV Types tab.

You can also batch-define AGV Type for multiple AGVs by selecting them all, doing the above steps for one of them, and then pressing the popup button "Apply To All Selected."

AGV Type Specs

An AGV's acceleration and deceleration are determined by 2 factors:

  1. Its AGV Type
  2. What it is currently carrying (its Load Type)

An AGV's max speed is determined by 4 factors:

  1. Its AGV Type
  2. The type of path, or Path Class, it is currently traveling on
  3. Whether it is traveling forward or backward
  4. What it is currently carrying (its Load Type)

An AGV's non-idle battery usage, defined in Amps, is determined by 2 factors:

  1. Its AGV Type
  2. What it is currently carrying (its Load Type)

An AGV's battery capacity, idle battery usage, and recharge rate are determined solely by the AGV's AGV Type.

All of these factors are encapsulated in the AGV Type table. Each AGV Type has its own table. AGV Type Table

Load Types

Load Types are a user-defined list defining categories for what an AGV is carrying. This allows you to break out AGV speeds by the AGV's current load. Each time an AGV starts a travel operation, it will set its current Load Type. This is done in the Initialize Travel trigger. Here you can customize which Load Type the AGV should use for a given travel operation. You can add a Load Type, and then specify the acc/dec, speed and battery usage parameters for that Load Type in its corresponding column of the AGV Type table.

Path Classes

Path Classes are a user-defined list of path categories that allow you to break out AGV speeds based on the path the AGV is on. Each path in your model has an assigned Path Class. To change a Path's path class:

  1. Click on the Path in the 3D view.
  2. In Quick Properties on the right, in the Straight Path or Curved Path panel, choose the desired Path Class from the drop-down. Choose Path Class

You can also batch-define the Path Class for multiple Paths by selecting them all, doing the above steps for one of them, and then pressing the popup button "Apply To All Selected."

Control Areas

Control Areas enable more fine-tuned control over who gets into and out of an area. Control Areas are especially useful in controlling traffic at intersection points.

Take for example an intersection where AGVs branch off to multiple spur locations.

When an AGV travels along a path, it looks ahead to its next Control Point and claims that Control Point before traveling to it. If the paths of two AGVs cross but do not need to claim the same Control Point, as in the picture above, then they may run into each other. This is where Control Areas can be used.

As an AGV looks ahead to claim its next Control Point, if the AGV's path enters a Control Area before reaching the next Control Point, then the AGV must additionally claim the Control Area before proceeding. If it cannot claim both the Control Point and the Control Area, then it will leave both unclaimed and wait until both can be claimed before continuing to the Control Point.

You can have any number of Control Areas between two Control Points. The AGV must claim all Control Areas between it and its next Control Point, plus the Control Point itself, before continuing to the next Control Point.

Creating Control Areas

To create a Control Area:

  1. Click on the Control Area tool in the library.
  2. Click-release at the point in the model where you want to place a corner of the Control Area.
  3. Move the mouse to the location in the model where you want the other corner of the Control Area
  4. Click-release at the other corner's position.

Build the Model

Now build the tutorial model with the step-by-step instructions.

flexsim users manualusers manual
5 |100000

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



paul.t contributed to this article


FlexSim 2016.1