The user guide can also be downloaded as a PDF.

1. Introduction

LSAT has been developed by ASML, ESI (TNO) and TU/e. The acronym LSAT stands for Logistics Specification and Analysis Tool. The figure below shows the main functionality of LSAT

introduction

2. Installation

The LSAT tool is available as a full product and also as a feature for the Eclipse IDE through the update site repository.

2.1. Install as Eclipse Product

In order to install it as a full product, follow the instructions:

  • Download LSAT IDE "zip" file and extract it to a folder.

  • Double click the “lsat.exe” file, the tool will start.

image06

2.2. Install as Eclipse Feature

The instructions to install LSAT from scratch as feature for the Eclipse IDE through the update site repository are as follows:

2.3. Logistic perspective.

Once you have installed LSAT, you can choose the Logistics perspective following the instructions as below:

  • In Eclipse: select Window  Perspective  Open Perspective  Other…​  Logistics

  • Or, click to the icon of perspective (right-up of the window) and select Logistics as it is shown in the figure below:

set logistic perspective

3. Motion Calculator

A motion calculator is used to calculate the time it takes for a move to complete. The default Third order point-to-point motion calculator is capable of calculating time for point-to-point moves with a 3rd order motion profile. It also supports passing moves, with the constraint that for all sub-moves the motion profile is the same.

LSAT provides an extensible design for adding custom motion calculators. Creating a custom motion calculator requires knowledge about Eclipse plug-in development and Java. As such the instructions can be found in the design documentation of LSAT.

When a custom motion calculator is installed in the LSAT environment, it can be selected via the Window  Preferences  Logistics  Motion Calculator menu.

motion calculator selection

4. Logistics Specification

4.1. Create New Project

You can create a new specification by using the File > New menu on the Workbench menu bar. Start by creating a logistics project as follows:

  1. From the menu bar, select File > New > Project…​

    new project

  2. In the New Project wizard, select Logistics > Logistics Project then click Next.

  3. In the Project name field, type your name as the name of your new project, for example "Tutorial".

  4. Leave the box checked to use the default location for your new project. Click Finish when you are done.

The wizard creates a machine specification in the project and configures the project for graphical editing. It will open the machine editor, allowing the user to add the resources and peripherals to the machine.

Within the project, the different types of specification can be created:

  • machine specification

  • settings specification

  • activity specification

  • activity dispatching specification

A new project always starts with machine specification, since it specifies the resources with their peripherals.

If it is the first time a file is created in the project, a pop up dialog about adding Xtext nature to the project will appear. Click Yes to continue.

image23

4.2. Create Machine Specification

Machine specification with file extension “machine” is used to specify the resources with their peripherals. This file is created automatically with the new project. It usually has the same name with the project, e.g. “tutorial.machine”.

A machine specification file can be opened to edit. Below are the basic concepts and small examples within a machine specification file.

Ctrl+Space can be used to see the hints for the next step in textual editors.
Machine Tutorial (1)

PeripheralType Clamp { (2)
  Actions {
    clamp
    unclamp
  }
}

PeripheralType Motor { (3)
  Actions {
    apply_brake
  }
  SetPoints {
    X [m]
    Y
  }
  Axes {
    X [mm] moves X
    Y [mm] moves Y
  }
  Conversion "X=X/1000;Y=Y/1000" (4)
}

Resource Robot1 { (5)
  C: Clamp
  M: Motor {
    AxisPositions { (6)
      X (Left, Right)
      Y (Above)
    }
    SymbolicPositions { (7)
      Above_Left (X.Left, Y.Above)
      Above_Right (X.Right, Y.Above)
      Below_Left (X.Left)
      Below_Right (X.Right)
    }
    Profiles (normal, slow) (8)
    Paths { (9)
      Above_Right --> Below_Right [Y] profile slow
      Below_Right --> Above_Right profiles normal, slow (10)
      Above_Left [X] <-> Above_Right profile slow
      FullMesh {
        profile normal
        Above_Left
        Above_Right
        Below_Left [Y]
      }
    }
  }
}
1 Machine - the unique name for a machine
2 PeripheralType (unmovable) – it only declares actions
3 PeripheralType (movable) - it may declare actions, but it also declares set points and axes.
The SetPoints relate to the physical coordinate system of the peripheral on which the motion profile settings are applied.
The Axes relate to the symbolic coordinate system on which the physical locations are applied. An axis specifies which set points change when its value changes. The unit is specified between the square brackets [] and defaults to m(eters).
4 Conversion - If the unit of an axis differs from the unit of its set points a conversion script is required. The conversion needs to convert a physical location in the symbolic axes coordinate system to a physical location in the physical set points coordinate system. For each axis a variable is available containing its coordinate value and for each set point a variable should be set containing the set point value.
NOTE: The script language is JavaScript
5 Resource – it defines its peripherals. For every movable peripheral in a resource its symbolic positions and paths need to be specified.
6 AxisPositions (optional) - if a peripheral has multiple axes and the symbolic positions can be categorized in axis positions, these axis positions may be declared in this section. In this case only a physical location per axis position is required in the settings file for this axis in stead of one location per symbolic position.
7 SymbolicPositions - declares the symbolic positions for this peripheral. Optionally a symbolic position may be expressed in its axes positions. If no axis position is specified (i.e. Below_Left and Below_Right) the symbolic position will automatically be added to the axis positions for the axis.
8 Profiles - declares the speed profiles to use for the paths.
9 Paths - declares which moves are allowed in the system. If a path is declared between two locations the move is allowed using the speed profile as specified by the path. For each end point of a path its settling axes can be specified as a comma separated list between square brackets []. Different types of paths are available:
unidirectional path - indicated by an unidirectional arrow -->, only a move from left to right is allowed
bidirectional path - indicated by a bidirectional arrow <->, both moves from left to right and right to left are allowed
full mesh - indicated by keyword FullMesh, all moves from a location to another location in the full mesh are allowed.
10 Profiles - You can specify more than one speed profile per path by means of the profiles keyword.

4.3. Create Settings Specification

Settings specification with file extension “setting” is used to specify physical settings for peripherals or peripheral actions. Within the project, create a “.setting” file by using the new file wizard.

Only 1 setting file is allowed per project
If another file is selected while running the new file wizard, this file will be automatically imported
new wizard setting

A property specification file is opened. Below are the basic concepts and small examples within a property specification file.

Ctrl+Space can be used to see the hints for the next step in textual editors.
import "tutorial.machine" (1)

Robot1.M { (2)
  Timings { (3)
      apply_brake = 100e-3
  }
  Axis X {
    Profiles { (4)
      slow (V = 0.5, A = 0.5, J = 0.5, S = 0.1)
      normal (V = 1, A = 1, J = 1)
    }
    Positions { (5)
      Left (min = -100, max = -200, default = -150)
      Right = 300.0
    }
  }
  Axis Y {
    Profiles {
      slow (V = 0.5, A = 0.5, J = 0.5, S = 0.1)
      normal (V = 1.0, A = 1.0, J = 1.0, S = 0.1)
    }
    Positions {
      Above = 150.0
      Below_Left = -160.0
      Below_Right = -150.0
    }
  }
}

Robot1.C { 
  Timings { (3)
    clamp = Normal(mean = 1.1, sd = 0.1)
    unclamp = 0.9
  }
}
1 import - first step in a property specification is to import a machine specification file. After that, it is allowed to specify properties for peripherals or actions.
2 Robot.M - for a movable peripheral, it is required to set the motion profiles to its profiles and physical relative locations to its symbolic positions. These properties are always set per axis.
3 Timings - if a peripheral contains actions, a timing must be specified. There are different types of timing available:
Fixed value (no keyword) - One fixed value, use if the timing does not vary.
Normal - The variation is specified using a normal distribution. Parameters: mean, sd (standard deviation)
Triangular - A triangular distribution as described here. Parameters: min, max, mode.
Pert - A Pert distribution as described here. Parameters: min, max, mode, gamma.
NOTE: In addition to the distribution specific parameters, it is possible to specify a default value for a distribution. If present this value is used for scheduling. The distributions are used for stochastic impact analysis. If no default is specified the mode of the distribution will be used.
4 Profiles - motion profiles need to be assigned to each profile individually. They can be either Third-order profile (VAJ) or Second-order profile (VA). Optionally a settling time (S) can be specified per profile.
5 Positions - physical relative locations can be specified as a set of maximum, minimal and default values or one fixed value.

4.3.1. Plotting a timing distribution

To gain insight in the probability density for timings in a distribution, the probability density factor (PDF) can be plotted in the Chart View. To do this, please select the distribution keyword of the requested distribution and select the 'Plot in Chart View' item from the context menu, as illustrated in the next figures

plot distribution
The chart view also shows the mean marker, this is the value used for scheduling.
chartview distribution

4.4. Create Activity Specification

Activity specification with file extension “activity” is used to specify activities of a machine. Within the project, create an “.activity” file by using the new file wizard.

If another file is selected while running the new file wizard, this file will be automatically imported

An activity specification file is opened. Below are the basic concepts and small examples within a activity specification file.

Ctrl+Space can be used to see the hints for the next step in textual editors.
import "tutorial.machine" (1)

activity MoveRobot { (2)
  prerequisites { (3)
    Robot1.M at Above_Right
  }
  actions { (4)
    C: claim Robot1
    R: release Robot1
    A1: move Robot1.M to Below_Right with speed profile slow
    A2: Robot1.C.unclamp
    // Schedule A3 to end together with A4 (As Late As Possible)
    A3: Robot1.C.clamp ALAP (5)
    A4: move Robot1.M to Above_Right with speed profile normal
  }
  action flow { (6)
    C -> A1 -> A2 -> |S1 -> A3 -> |S2 -> R 
                     |S1 -> A4 -> |S2 (7)
  }
}
1 import - first step in an activity specification is to import a machine specification file.
2 activity - specify activities by defining individual actions and dependencies among these actions.
3 prerequisites - specify the initial location for all movable peripherals for this activity.
4 actions - there are four types of actions:
Resource claiming – action name, claim keyword and resource
Resource releasing – action name, release keyword and resource
Peripheral action – action name, resource, peripheral and peripheral action
Move - action name, move keyword, resource, peripheral, symbolic position destination and speed profile.
The default Move action is point-to-point (stop at target position). However, it can be changed to passing. By using the keyword, you specify that the action should not stop at target. Another name for passing is event-on-the-fly. This feature is used to concatenate Move actions and the user needs to explicitly enable it. Here is an example declaration of a passing move:
A1: move Drill.ZR passing UP with speed profile normal ALAP
The images below illustrate the difference between two types of Move actions.
movement point to point
Figure 1. Movement point-to-point.
events on the fly
Figure 2. Movement on-the-fly event.
5 ALAP / ASAP - Each action has scheduling type. There are two types available: As Soon As Possible (ASAP) and As Late As Possible (ALAP). If no value is specified at the end of the action, then the scheduling type is ASAP by default. To change it to ALAP you can add the ALAP keyword at the end of the action. For more information, see section Constraints for ALAP and ASAP scheduling actions.
Resource claimingASAP by default, cannot be changed.
Resource releasingASAP by default, cannot be changed.
Peripheral actionASAP by default, can be changed to ALAP.
Move - ASAP by default, can be changed to ALAP.
6 action flow - uses arrows to specify action flow. A1 → A2 represents A2 starts when A1 finishes.
7 syncbar - used to specify synchronization, for instance A2 → |S1 → A3 and |S1 → A4 represents A3 and A4 start simultaneously after A2 finishes.

4.4.1. Constraints for ALAP and ASAP scheduling actions

There are a number of validation rules implemented in LSAT for the different scheduling algorithms. In general you have to keep two things in mind:

  1. The scheduler algorithm prefers ASAP scheduling over ALAP scheduling.

  2. A concatenated move with events on-the-fly may be delayed as a whole, but not in between its events.

Scenario 1

Consider action A1 in the ALAP scenario 1 with scheduling type ALAP and a sole successor (A2), which is not a syncbar. In this case the ALAP keyword does not have any effect due to the ASAP (default) scheduling of action A2.

Eclipse will show you the following warning:

The ALAP keyword does not have any effect for action A1.
alap scenario 1
Figure 3. ALAP scenario 1
Scenario 2

Consider move A1 in ALAP scenario 2 which is passing. As its successor is a syncbar, and this syncbar has more than one predecessor, then move A1 must be ALAP. As moves A1 and A3 should be concatenated, there cannot be any delay between them. As action A2 might cause such a delay, move A1 needs to be scheduled ALAP to guarantee concatenation.

Eclipse will show you the following error:

Move A1 must be set to ALAP to guarantee concatenation with successor move A3.
alap scenario 2
Figure 4. ALAP scenario 2
Scenario 3

Consider move A3 in ALAP scenario 3 which is a continued move of A1. Move A1 continues into move A3 by means of the passing keyword and therefore move A3 cannot be delayed. As the predecessor of move A3 is a syncbar, move A3 must be ASAP to guarantee concatenation.

Eclipse will show you the following error:

Move A3 must be set to ASAP to guarantee concatenation with predecessor move A1.
alap scenario 3
Figure 5. ALAP scenario 3

4.4.2. Plotting a move

To gain insight in the motion path of a move, the motion path can be plotted in the Chart View. To do this please select the move keyword of the requested move and select the 'Plot in Chart View' item from the context menu, as illustrated in the next figures

plot move
chartview move

4.5. Create Activity Dispatching Specification

Activity dispatching specification with file extension “dispatching” is used to specify a sequence of activities to schedule. For more information about scheduling, see section Schedule Activities. Within the project, create a “.dispatching” file by using the new file wizard.

If another file is selected while running the new file wizard, this file will be automatically imported

An activity dispatching file is opened. Below are the basic concepts and small examples within a activity dispatching file.

Ctrl+Space can be used to see the hints for the next step in textual editors.
import "tutorial.activity" (1)

throughput { 
	iterations: 1 (2)
	iterations.Robot1: 2
}

activities { (3)
  MoveRobot ("First product")
}

activities {
  offset: 6.00 (4)
  MoveRobot ("Second product")
}
1 import - first step in an activity dispatching is to import an activity specification file.
2 iterations - specifies the default number of iterations - for all resources - or the number of iterations for a specific resource (see next line). When omitting the throughput section the default number of iterations will be set to 1. For more information about iterations see section Specifying the number of iterations.
3 activities - within an activity sequence one or more activities can be included. These activities will be scheduled as parallel as possible adhering to the claim/release strategy. If activities cannot be scheduled in parallel the order of this section is applied.
Optionally a description can be added to the activity
4 offset - optionally an offset can be defined for an activity sequence. The scheduler will ensure that these activities will not be started before the offset time.

4.5.1. Specifying the number of iterations

The number of iterations is used to calculate the throughput per resource, as explained in section Calculating the Throughput per Resource. In the activity dispatching specification example above the Robot resource performs activity MoveRobot twice, once for the "first product" and once for the "second product". In this case the number of iterations can be used for the calculation on how many products per hour can be processed by the Robot resource.

The number of iterations does not influence the Schedule Activities or Conformance Check.

5. Graphical Viewers

5.1. Convert to Modeling Project

In order to open a graphical viewer, the project needs to be converted to a modeling project.

Open Modeling perspective

image26

Right click on the project folder → Configure → Convert to Modeling Project

image27

After conversion, it shows the structure of files in the Modeling Explorer.

image28

5.2. Add Viewpoints Selection

Right click on the project folder, select Viewpoints Selection.

image29

The following viewpoints are available:

Machine

shows the resources with their peripherals and illustrates symbolic position graphs for movement-based peripherals.

Activities

shows activity diagrams based on activity specifications.

Physical settings

shows settings for motion profiles and physical locations.

Check the relevant viewpoints and click OK.

viewpoints

5.3. Generate Graphs

5.3.1. Peripheral types in machine

Target element: a machine

Right click on a target element, select New Representation and choose the corresponding Peripheral Types for the target element.

peripheraltypes create

The peripheral types graph for the target element includes all action and movement based peripheral types for the target element.

This viewer can also be used to edit the peripheral types by using the palette.
peripheraltypes editor
Double clicking a peripheral type will open its textual representation allowing to specify the detailed information, like the conversion pattern. Typing Ctrl+Enter in the text editor will save the changes and typing Escape will cancel them.
peripheraltypes editor text

5.3.2. Resources and peripherals in machine

Target element: a machine

Right click on a target element, select New Representation and choose the corresponding Machine for the target element.

machine create

The graph for the target element includes all resources with their action-based and movement-based peripherals for the target element.

This viewer can also be used to edit the resources and their peripherals by using the palette.
machine editor

5.3.3. Axis position graph for peripheral

Target element: a movable peripheral defined in a resource

Right click on a target element, select New Representation and choose the corresponding Axis positions for the target element.

axis pos menu

The axis position graph for the target element includes specific information about axes and corresponding positions.

Axis positions for Robot

The axes in a axis position graph are shown as compartments, and the positions associated to an axis are shown under the axis. For example, in the figure above, the position Above is associated to the axis Y.

Adding/removing axes

To add a new axis to a peripheral, select the empty canvas and select the desired axis from the Available axes list, and press Add Axis on the right side.

axis pos axes

To remove an axis from a peripheral, select it and press Delete.

Deleting an axis will also delete all corresponding positions.
Adding/deleting positions

The positions can be associated to an axis by selecting the Position tool from the Axis Positions Editor Tools palette on the right side, and selecting the axis compartment.

By default, name of the newly created position is new. The name of a position can be changed by selecting it, typing the name directly and pressing Enter. Alternatively, the name can be changed using the properties editor, as shown in the figure below.

axis pos name

To delete a position, select it and press Delete.

If a position is specified in both axis position graph and Settings Create Settings Specification, deleting that position from the axis position graph will also delete it from the Settings specifications.
Validation

An axis must not be added more than once. To validate this property, right click on the canvas and click Validate diagram. If any axis is added more than once, a red error sign will appear on those axes, as shown in the following figure.

axis pos error

5.3.4. Symbolic position graph for peripheral

Target element: a movable peripheral defined in a resource

Right click on a target element, select New Representation and choose the corresponding Symbolic positions for the target element.

symb pos menu

The symbolic position graph for the target element includes specific information about profiles and settling on the paths.

Layout of existing symbolic position graphs will be reset to default layout. As manual layout of these diagrams may require extra time and labor, it may not be wise to upgrade to the latest release of LSAT for existing symbolic position specifications.
Symb positions for Robot

The symbolic positions are shown as compartments. The axis positions corresponding to a symbolic position are shown inside the respective compartment.

The full mesh paths are shown as gray vertical rectangles. The single-headed arrows between symbolic positions represent unidirectional paths, whereas double-headed arrows represent bidirectional paths. If a symbolic position is a part of a full mesh path, then there is also an arrow between the symbolic position and the full mesh path.

The labels in the center of paths represent motion profiles. Whereas, the labels at the end of paths represent settling.

Adding/deleting motion profiles

To add a new motion profile to a peripheral, click on the empty canvas. As a result, properties editor will appear at the bottom. Enter the name of the motion profile without a white space in the field Add a motion profile, as shown in the following figure, and hit Enter.

symb pos motion profile

The available profiles are visible in the Available Profiles field. To delete a profile, select it and press Delete Profile on the right side.

Adding/deleting symbolic positions

To create a new symbolic position, select the respective tool from the Symbolic Positions Editor Tools palette on the right side, and then click on the canvas. The name of the symbolic position can be typed directly while selecting the newly created symbolic position. Alternatively, the name can also be typed in the properties editor at the bottom, as shown in the following figure.

symb pos name

To delete a symbolic position, select it and press Delete.

Adding/deleting axis positions

The axis positions can be added to a symbolic position compartment by selecting the respective tool and selecting the symbolic position compartment. The name of the axis position can be typed directly in the format Axis.Position (same as textual representation). Alternatively, the name can also be typed in the properties editor at the bottom, as shown in the following figure. Here, Key represents an axis and Value represents a position. To delete a axis position, select it and press Delete.

symb pos axis pos
The typed axis position name cannot be entered if either of the typed axis or position does not exist.
Double clicking a symbolic position opens its textual representation allowing to specify the axis positions. Pressing Ctrl+Enter in the text editor will save the changes and pressing Escape will cancel them.
symb pos double click
Adding/deleting paths

Uni/bidirectional paths between two symbolic positions can be added by selecting the respective tool and clicking the symbolic positions. To add a symbolic position to a full mesh path, select the Full Mesh Target tool, and then click the full mesh path and the symbolic position. To delete a path, select it and press Delete.

A settling to a unidirectional path can be added in the properties editor by selecting the path, as shown in the figure below.

symb pos path settling

In the Assign a settling field, a settling can be selected for a path. The settlings currently assigned to a path are visible in the Current settlings field. To remove a settling from a path, first select the path and then select the settling in the Current settlings field and press Delete Settling on the right side.

In bidirectional paths, we can add two settlings, i.e., one settling for each connected symbolic position. A settling to a bidirectional path can be added in the properties editor by selecting the path, and then assigning a settling at each connected symbolic position, as shown in the figure below.

symb pos bi path settling

The settlings currently assigned to a path at a symbolic position are visible in the Current settlings field. To remove a settling from a path, first select the path and then select the settling in the Current settlings field and press Delete Settling on the right side.

Assigning existing motion profiles to a path

To add a motion profile to a path, choose one of the options below:

Option I
  • Select the path by left clicking on it.

  • Select the General tab.

  • Scroll down to the Motion Profiles section.

  • Select your the profile you want to add from the Available profiles list.

  • Press Add to path.

symb pos path motion profile
Option II
  • Select the motion profile from the diagram by left clicking on it.

  • Press F2 to enable direct editing.

  • Add a comma after the existing profile and write the name of the profile you want to add, e.g normal, slow .Please note slow should have been initialized earlier.

  • Save your diagram. The changes are then saved to the model.

symb pos path motion profile2
Hiding axis positions/paths

In order to visualize a diagram clearly, it is possible to hide axis positions or paths or both from a diagram. To hide axis positions, click on the canvas, and then click on the Filter icon on the top tool bar, and click Axis Positions, as shown in the figure below.

symb pos filter

Paths from a diagram can also hidden in the same way.

Layout

A symbolic position graph can be layout by right clicking on the canvas and selecting Show Layout View.

symb pos layout selection

As a result, a new tab named Layout will appear at the bottom. Click on the empty canvas, and then in the Layout tab, a new Property Layout Algorithm with a Value Activity Diagram will appear.

symb pos layout selection algo

Select Activity Diagram, and double click it or use the button on the right side.

A pop-up will appear showing all pre-defined layout algorithms. In our experience, the ELK Layered algorithm is most suitable for symbolic position graphs. However, please feel free to explore other algorithms also.

symb pos layout selection ELK

Select an algorithm and press OK. Afterwards, apply the automatic layout by right clicking on the canvas and selecting Layout Selection from the context menu, or use the button from the toolbar activity layout btn.

Validation

Each symbolic position must have a unique name. To validate this property, right click on the canvas and click Validate diagram. If any symbolic positions do not have unique names, a red error sign will appear on those symbolic positions, as shown in the following figure.

symb pos error

To quickly fix this error, a quick fix is available. Go to the Problems tab on bottom and right click on the error message and select Quick Fix, as shown in the figure below.

symb pos error quick fix

Then select the Change name and press Finish.

symb pos error quick fix2

As a result _new will be added at the end of the name of the symbolic position.

Symb positions for Robot quick

5.3.5. Motion profile settings table for peripheral

Target element: a movable peripheral defined in a resource.

Right click on a target element, select New Representation and choose the corresponding motion profile for the target element.

Motion profile settings data is from the first setting file in the project directory.

Column specifies profile names and row represents one axis. Each row contains sub rows to specify VAJs for an axis.

image35

5.3.6. Physical location settings table for peripheral

Target element: a movable peripheral defined in a resource.

Right click on a target element, select New Representation and choose the corresponding physical location settings for the target element.

The same to motion profile settings table, the physical location settings data is also from the first setting file in the project directory.

In the table, each column represents one symbolic position for the target element. Each row represents its axes and the physical location values (min, default, and max) are shown on the sub rows.

image37

5.3.7. Activity diagram

Target element: an activity defined in an activity specification

Right click on a target element, select New Representation and choose the corresponding activity for the target element.

image39

It shows an activity diagram with an action flow. Green swim-lanes represent resources and their peripherals, gray blocks represent either claiming a resource or releasing a resource and brown blocks represent actions for peripherals. If an action is specified to be scheduled As Late As Possible (ALAP), then an icon with an arrow pointing down is shown. alap

The generated activity diagram (probably) needs some layout to be done, but an automated default layout is applied. The initial layout is not optimal yet, therefore it is wise to apply the automatic layout once the Activity diagram is visible, using the tip below.

To (re)apply the automatic layout, select Layout Selection from the context menu on the canvas, or use the button from the toolbar activity layout btn
This viewer can also be used to edit the activity by using the palette.
activity layout nice
Adding a new action
add action new
  1. Select Action from the Palette at the right side of the editor.

  2. Left click somewhere in the green swim-lane of a peripheral. A popup window as the one above will show up.

  3. Provide a name for the action.

  4. Use the radio button to select the type of action you want to create. If the action is of type Move, then you must also specify if it is point-to-point (stop at target position) or on-the-fly (don’t stop at target position) and the speed profile to use.

  5. Select the scheduling type - As soon as possible (ASAP) or As late as possible (ALAP)

  6. Click Finish.

  7. New action illustrates an example. In this case, the new action is A7.

new action
Figure 6. New action
Modifying the properties of an existing action
  1. Select the action you would like to modify from the activity diagram.

  2. Select the Properties tab in Eclipse. It is usually located below the diagram.

  3. You should now have access to a menu that looks like the image below.

modify properties of an action new
You can use the Properties view to change the scheduling type of an action from ASAP to ALAP or vice versa.

5.4. Location of Generated Graphs

The generated graphs are located inside its target element. By unfolding the element from the Model Explorer, the generated graphs will appear.

image41

All the graphs can also be found under the “representations.aird” file.

image42

In graphical viewer, if one semantic element can be generated more than one graph, these graphs can be navigated. Navigation only happens when the semantic element is shown as a container/block in a source graph. Since there is no container concept in table, there is no navigation starting from a table view. Besides, navigations also request the target graphs have already been generated.

A peripheral is represented as a write block in an activity diagram. Some white blocks contain a small graph icon image43 at right bottom corner. It means there are other graphs can be generated for the semantic element of this block.

Right click on the write block, open with a desired graph. Movable peripherals can produce five types of graphs: axis position graph, symbolic position graph, motion profile settings table, physical location settings table and physical location overview table.

navigation activity diagram

It is the same as navigation from activity diagram. Right click the container which has a small graph icon and open with a desired graph. From a axis position graph, it is possible to navigate to symbolic position graph, motion profile settings table, physical location settings table and physical location overview table.

navigation axis

Right click the container which has a small graph icon and open with a desired graph. From a symbolic position graph, it is possible to navigate to axis position graph, motion profile settings table, physical location settings table and physical location overview table.

navigation symb

6. Schedule Activities

6.1. Scheduling & Configurations

Scheduling an activity sequence requires a fully specified system. See section Logistics Specification for more information on creating this specification.

Scheduling an activity sequence generates a Gantt chart that represents the system execution in time. Within an activity sequence one or more activities can be included. These activities will be scheduled as parallel as possible adhering to the claim/release strategy. If activities cannot be scheduled in parallel the order of this section is applied. An activity typically starts with claiming a Resource, hence this activity can only start if it predecessor activity has released this Resource.

Optionally an offset can be defined for an activity sequence. The scheduler will ensure that these activities will not be started before the offset time.

The scheduling of activity sequences is configured via the Run Configurations window. To access this window either right click a dispatching file and navigate to Run As - Run Configurations…​ or use the dropdown from the green play button in the toolbar on top.

generate schedule runconfigurationsPlayButton

Available scheduling configurations show in the list on the left side of the Run Configurations window below the entry for Timing Analysis.

generate schedule available configurations
A new configuration can be created by using the New Launch Configuration button generate schedule new

A Timing Analysis run configuration consist of the following elements:

  • Name Allows the user to identify the configuration for future usage.

  • Activity Dispatching Each configuration refers to one particular dispatching file. This is a required field.

  • Show

    • no Gantt chart No Gantt chart is generated

    • Gantt chart A Gantt chart is generated and is shown on-screen. The timing of the Gantt chart is based on fixed timing settings and default values. The coloring is based on correspondence between Activities and Resources, see below for a more detailed explanation.

    • Gantt chart with critical path A critical path analysis of the schedule is made, based on fixed timing settings and default values, and is represented in a Gantt chart. The coloring is based on the outcome of the critical path analysis. See below for an explanation of the coloring scheme.

    • Gantt chart using stochastic impact analysis Based on fixed timing and default values a Gantt chart is generated. The coloring is based on the probability that a task will be on the critical path given the specified timing distributions. In order to determine this probability 200 samples are drawn. For each sample a schedule is determined and a critical path analysis is performed. See below for an explanation of the coloring scheme.

  • Options

    • Show web animation The scheduling produces skeleton files for Javascript/Paperscript based 2D animations. The default animation shows colored dots and by modifying the skeletons arbitrary animations can be produced. If the configuration also generates a Gantt chart an timing indicator is shown on the Gantt chart that is synchronized with the timing of the animation. The Javascript files are located at analysis/scheduled/animated.

    • Remove dependencies for claims and releases Before calculating the critical path the dependencies relating to claims and releases are cut short. As a result claims and releases are not included in the dependency graph and are thus removed from the critical path while preserving the net effective dependencies between actions. NB The claims and actions themselves are not removed from the schedule nor is the timing of the schedule influenced by this option.

6.2. Gantt Charts

The Gantt chart shows a resource on the Y-axis for every Peripheral which participates in the activity sequence. The X-axis shows the relative time in seconds. Each resource in the Gantt chart shows a low bar and a high bar:

Low bar

Represents the claiming of a Resource in the Machine by an Activity. This bar is replicated for all Peripherals in the claimed Resource.

High Bar

Represents an action that is performed by a Peripheral. An action can be either a move or an atomic action.

The arrows represent the dependencies between the tasks.

When a Gantt chart is generated, at least two files have been created in the project folder analysis/scheduled (i.e. the Gantt file <file>.etf and a configuration file Scheduling_Config.txt). The file name of the etf file is derived from the file name of the dispatching file that is scheduled. The Gantt file is automatically opened in an editor showing the Gantt chart.

tutorial scheduled
The ESI Trace Properties view shows detailed information about the selected bar.

6.2.1. Gantt chart

In case of a Gantt chart without critical path analysis the color of the low bars represent the Activity that holds the claim. Additionally all actions, the high bars, of the same Resource are colored equally. The black arrows indicate the dependencies as specified in the Activity and the gray arrows indicate the dependencies between Activities as derived from the claim/release strategy.

Scheduling the actions in the activities

An action can be scheduled using two types of algorithms: As Soon As Possible (ASAP) or As Late As Possible (ALAP). The default algorithm for all actions is ASAP, unless specified otherwise as described in Logistics Specification. As mentioned previously, resource claiming or releasing are always ASAP by design.
ASAP executes each action on a resource as soon as the resource is available, and all preceding actions have finished.
ALAP executes each action on a resource as late as possible. You can see the difference between the two schedules illustrated below.

tutorial scheduled
Figure 7. ASAP scheduling example for Action A3
tutorial scheduled ALAP new
Figure 8. ALAP scheduling example for Action A3

6.2.2. Gantt chart with critical path

In project management the critical path is defined as “the sequence of scheduled activities that determines the duration of the project.” The same applies for the calculated schedule as visualized in the Gantt chart.

When a critical path analysis has been performed the actions and dependencies are either colored red or grey. Red indicates an action or dependency is on the critical path of the schedule. The low bars can be dark red, light red or grey. Dark red indicates both claim and release are on the critical path. Light red indicates either claim or release, but not both, are on the critical path. Grey is used to indicate neither claim or release are on the critical path.

generate schedule criticalPath

6.2.3. Gantt chart using stochastic impact analysis

The actions in the Gantt chart of the stochastic impact analysis are colored based on the probability that the action is on the critical path taking into account the specified timing distributions. A dark bluish grey indicates that the action will never be on the critical path, bright red indicates the action is always on the critical path. Intermediate colors are used to indicate intermediate probabilities. Tasks can be selected by using the mouse and the Properties window shows the property Critical that displays the probability that the selected task is on the critical path.

generate schedule stochastic

6.2.4. Filtering

By default the Gantt chart will hide all superfluous information. To show all information in the Gantt chart use the ESI Trace toolbar to Clear all filters. Now all dependencies a drawn and also the dispatching offset is visualized.

For more information about the possibilities in the ESI Trace viewer, see the TRACE user manual
tutorial scheduled nofilter

7. Throughput per Resource Editor

The throughput per resource editor helps to identify where the specification can be optimized for throughput performance of the system.

As the specification is partitioned in multiple files (i.e. dispatching, settings, schedule, etc.) this makes it rather difficult to identify where the specification can be optimized for throughput. For this a new view has been designed which provides an overview of the most critical information w.r.t. throughput optimization for a specific activity dispatching sequence.

For each resource in the specification a tab page is available in the editor. The tab page shows an ordered table with all actions that are relevant for its resource. More information about the table content can be found in section The Resource Actions Table. The Outline view shows an overview of the throughput per resource and the throughput of the total activity dispatching sequence, for more information see section The Outline View.

7.1. Opening the Throughput per Resource Editor

The Throughput per Resource editor shows information for a specific activity dispatching sequence. For this reason the editor can be opened by means of the context menu of a particular dispatching file. The use of the context menu is needed as by default the Dispatching Editor is opened when double-clicking a dispatching file. To open the Throughput per Resource editor right-click a dispatching file in the Model Explorer view and select Open With → Throughput per Resource Editor from the context menu.

throughput per resource open
Eclipse remembers the last editor used to open a file. When double-clicking the file this editor will be used again to open the file. The Open With context should be used to open the file using another editor.

7.2. The Resource Actions Table

The resource actions table contains a row for every action in the activity dispatching sequence that is relevant for the resource. The rows are ordered as such that their actions are ordered in topological order w.r.t. the activity dispatching sequence. Topological ordering basically means that an action will never be listed before all actions required to be executed prior to the action. So this doesn’t guarantee that two succeeding actions in the table are executed in sequence as they might be executed in parallel. For more information on how the action sequence is determined please see section Calculating the Throughput per Resource.

In general a table cell will be gray when its information is not applicable for the action at that table row. When needed the data in the table either can be refreshed or reloaded.

Refreshing the data - by means of the refresh toolbar button - will update all data in the resource actions table and Outline view reflecting the current state of the editor including already made changes.

Reloading the data - by means of the reload toolbar button - will discard all made changes and reload the specification models. This action can be used to reload changes in the specification which are made outside the Throughput per Resource editor.

The Throughput per Resource editor will not detect added/deleted resources, axes and setpoints. When these are modified the Throughput per Resource editor needs to be closed and re-opened again.

The table contains the following columns:

Peripheral

The fully qualified name (format <Resource Name>.<Peripheral Name>) of the peripheral performing the action.

Action

The fully qualified name (format <Activity Name>.<Action Name>) of the action.

Name / From

Either the name of the peripheral action or the start position of the move.

To

The end position for the move.

Settling

The axes that require settling for the move.

Old <Axis>

The start location per axis for the move.

New <Axis>

The end location per axis for the move. An icon up or down indicates that the axis is adjusted as part of the move. The edit icon in the column header indicates that the values in this column may be edited.

Profile

The motion profile name for the move. The edit icon in the column header indicates that the values in this column may be edited.

<Setpoint> time

For every setpoint, the minimum time needed to adjust the setpoint using its axis motion profiles. In other words, the time needed to adjust the setpoint conforming to its motion profile, not taking into account the adjustment of other setpoints, thus no stretching will be applied.

Time

The time needed to perform the action. An icon critical indicates that the action is on the critical path of the resource. For more information see section Calculating the Throughput per Resource and section Gantt chart with critical path. The edit icon in the column header indicates that the values in this column may be edited. Do note though that this only applies for the times of peripheral actions and not for moves.

throughput per resource editor

7.3. The Outline View

The image in the previous section also shows the Outline view. This view shows a table with an overview of the throughput per resource and - in the last row - the throughput for the total activity dispatching sequence. For more information on how the throughput is calculated for a resource, please see section Calculating the Throughput per Resource.

The table contains the following columns:

Resource

The resource for which the throughput is calculated.

Makespan

The total time needed to perform all resource actions in the activity dispatching sequence.

No. Iterations

The number of iterations for this resource in the activity dispatching sequence, for more information see section Specifying the number of iterations.

Iteration Makespan

The total time needed to perform exactly 1 iteration in the activity dispatching sequence.

Throughput

The theoretical maximum number of iterations per hour that this resource is capable of executing.

7.4. Calculating the Throughput per Resource

This section provides some background information on what is meant by calculating the throughput per resource.

Though the systems throughput performance is determined by the full orchestration of all actions for all resources and peripherals in the system, sometimes it is good to know which resource is most critical in this orchestration. When calculating the throughput per resource the theoretical maximum throughput of the resource is calculated as if no actions of other resources are limiting its throughput, with the exemption of all actions in the 'entangled' section of an activity.

The entangled section of an activity

With the entangled section of an activity the section is meant in which multiple resources are working together in harmony, most likely to transfer a product from one location to another. Maybe this can be explained a bit easier by use of the following example. The figure below shows the schedule of an activity dispatching sequence with an overlay that illustrates the pre, post and entangled sections of an activity. The activity 'Robot1_GiveTo_Robot2' is repeated twice in the dispatching.

throughput per resource schedule1

In the entangled section Robot2 first needs to clamp before Robot1 is allowed to unclamp. This causes a gap in the schedule of Robot1 as illustrated by the blue rectangles. As these gaps are within the entangled section, they are kept in the schedule when calculating the throughput for Robot1.

Additionally to gaps in the entangled section, Robot2 also has gaps in the schedule in its prepare section, as illustrated by the yellow rectangles in the schedule. These gaps are caused by Robot1 delaying Robot2. For calculating the throughput for Robot2 the pre and post sections of Robot1 will be omitted and a schedule will be used as illustrated in the following image.

throughput per resource schedule2

8. Generating Optimal Activity Dispatching Sequence

This feature generates an optimal activity dispatching sequence for a given activity specification.

As an activity file may contain multiple activities, it is difficult to generate an optimal sequence of activities in the activity dispatching file by hand. Therefore, a new feature has been designed which automatically generates an optimal activity dispatching sequence w.r.t. makespan/throughput.

The requirements of a system are synthesized as a supervisory controller using a modeling language termed Compositional Interchange Format (CIF). The documentation and tutorials for CIF can be found at http://cif.se.wtb.tue.nl/index.html.

8.1. Generating Dispatching File

Target element: an activity specification

Right click on a target element, select Generate Dispatching File (throughput) for generating an optimal activity dispatching sequence w.r.t. throughput.

clickThroughput

For generating an optimal activity dispatching sequence w.r.t. makespan, select Generate Dispatching File (makespan).

clickMakespan

Select relevant CIF specification file.

selectCIF

The dispatching file showing the optimal activity dispatching sequence is generated in the result folder.

displayDispatching

8.2. Viewing Optimum Makespan/Throughput

The optimum makespan/throughput can be seen in the Error Log view. The Error Log view can be opened by clicking Window in the toolbar on top and Show View → Error Log.

openErrorLog
showMakespan

For calculating the optimum throughput, the CIF file must contain a cycle.

errorThroughput

For calculating the optimum makespan, the CIF file must not contain a cycle.

errorMakespan
The generated activity dispatching sequence can be scheduled in the form of a gantt chart. See section Schedule Activities for more information.

9. Conformance Check

Conformance checking functionality is used to check whether traces from log files are able to be projected to a certain dispatching.

9.1. Add Trace Point

Before conducting a conformance check, trace points are supposed to be added to activity specifications. Trace points, logged in trace log files, are used to identify the starting and end points of an event. An example of log file is given below. Each line in a log file contains all the information of time and a trace point.

By default, log files with an extension trace are supported for conformance checking. A trace file is line based where each line starts with an instant in UTC (i.e. parsed using DateTimeFormatter.ISO_INSTANT), followed by comma-space and then the trace point.
2011-12-03T07:15:30.454994Z, TP-0001
2011-12-03T07:35:15.454894Z, TP-0002
2011-12-03T07:35:15.455168Z, TP-0005
2011-12-03T07:35:15.455172Z, TP-0006
2011-12-03T07:35:15.455429Z, TP-0007
2011-12-03T07:35:15.455434Z, TP-0008
2011-12-03T07:35:15.455588Z, TP-0009
2011-12-03T07:35:15.455591Z, TP-0011
2011-12-03T07:35:15.455797Z, TP-0010
2011-12-03T07:35:15.455805Z, TP-0012
2011-12-03T07:35:15.456519Z, TP-0003
2011-12-03T07:35:15.456716Z, TP-0004

In the first line, “TP-0001” is the string identifying the trace point in principle which is unique throughout the entire log files.

Additionally, there must be a trace point specification, which maps a trace point to either a starting or an end point of a known action. For instance, TP-0001 maps to start claiming Robot. In order to perform conformance check, trace points are supposed to be added to its related activity specification surrounding an action definition.

import "tutorial.machine"

activity MoveRobot {
  prerequisites {
    Robot1.M at Above_Right
  }
  actions {
    C: ["TP-0001"] claim Robot1 ["TP-0002"] (1)
    R: ["TP-0003"] release Robot1 ["TP-0004"]
    A1: ["TP-0005"] move Robot1.M to Below_Right with speed profile slow ["TP-0006"]
    A2: ["TP-0007"] Robot1.C.unclamp ["TP-0008"]
    A3: ["TP-0009"] Robot1.C.clamp ["TP-0010"]
    A4: ["TP-0011"] move Robot1.M to Above_Right with speed profile normal ["TP-0012"]
  }
  action flow{
    C -> A1 -> A2 -> |S1 -> A3 -> |S2 -> R
                     |S1 -> A4 -> |S2
  }
}
1 ["TP-0001"] and ["TP-0002"] represent starting and end points for claiming a Robot.

9.2. Conduct Conformance Check

After adding all the trace points to an activity specification, conformance check can be applied upon a dispatching file.

Dispatching offset is not supported for conformance check currently.

Right click on a dispatching file and select Run Conformance Check.

conformance

Note that in order to obtain a successful conformance check based on the above activity file, the dispatching file look like:

import "tutorial_tp.activity"

activities {
  MoveRobot ("First product")
}

Select trace files to run the conformance check, and Next.

conformance traces

There are several configurations for conformance check.

conformance option
Activity dispatching

Selected, if it activity dispatching occurs multiple times in log files.

Conformance level

There are three levels for conformance check.
Minimal - only recognized trace points are kept for conformance check. It will pass, as long as it find one valid projection.
Claim - based on minimal level, all trace points for the claimed resources are used for conformance check.
Dispatching - most strict conformance check, it requires all the recognized trace points in log files are perfectly matched, even before claiming and after releasing a resource.

Set conformance check options and Finish. The conformance check will be executed.

After the progress is completed, a pop-up will appear to show whether or not it passes the conformance check.

conformance pass
conformance failure

If a conformance check fails, a petrinet file will be generated under the folder analysis/conformance. It is used to diagnose conformance check failure.

In order to open a graphical view of a Petri Net, a new viewpoint needs to be added to the project.

image29
analysis viewpoint
If the Analysis viewpoint is not visible, please restart your Eclipse using File  Restart.

Navigate to a Petri Net model element to open an existing graphical view or right click it to create a new one.

petri open

A graphical view is opened.

petri net

The Petri Net shows how the trace lines are projected upon it.

Black Bar - it represents a trace point transition. A green arrow on top indicates this trace point transition has been passed.
Gray Bar - it represents a transition doesn’t require a trace point check.
Red Bar - it represents an armed transition with a certain trace point is expected. Usually, it is a place where an error occur.
Yellow Circle - it represents an action as a place.
Gray Circle - it is a place to connect two transitions, if there is no action in between.
Blue Token - it indicates where the conformance check stops.

9.3. Filter Trace Point

Filtering out irrelevant trace points in log files is not required for conformance check. However, it helps to reconstruct activities manually, especially when the amount of irrelevant trace points is much more than the relevant ones. Before filtering, activity specification should be inserted with trace points.

Right click log files and select Filter traces.

filter tp

Select Activity elements which contain all the relevant trace points and continue with OK.

filter window

After filtering, selected log files will only keep the trace points which are used in activities.

10. Generate Max-Plus Specification

The timing behavior of the activity execution is characterized by two elements, which are:

synchronization

waits for incoming dependencies to finish

delay

duration of execution before completion (fixed timing)

Max-Plus aims to capture the timing behavior of the activity in a matrix. Then, the computation of the worst-case and best-case throughput/makespan optimization is based on this matrix.

In order to generate it, click on the activity file and select Generate Max-Plus Specification.

maxplusClick

Next, select the respective CIF file. If the CIF file contains cycles,the optimal throughput can be computed. Modify the CIF file as it is shown below in order to simply include a cycle.

controllable MoveRobot;

supervisor Tutorial:

  location l0:
    initial;
    edge MoveRobot goto l1;

  location l1:
    edge MoveRobot goto l0;

end

Now, we are ready to generate the activity dispatching sequence which ensures optimal maximum/minimum throughput.

maxplusThroughput
maxplusresult

11. Generate GraphML from CIF specification

LSAT also gives you the opportunity to generate a GraphML diagram from a CIF specification. This feature allows the user to verifying the correctness of the CIF specification.

cif to yed

To do so, execute the following steps:

  1. Right click on the desired file containing the CIF specification.

  2. Select Convert CIF to yEd diagram.. as shown in the figure above.

  3. Select your desired output from the available radio buttons: error, warning, normal or debug.

  4. Press OK.

  5. Two new files should be generated:

    1. (name of your cif file).model.graphml

    2. (name of your cif file).relations.graphml

For the official documentation on the CIF to yEd transformer, click here.

12. Twilight Manufacturing System: a showcase

The first step for using LSAT in industry is to decompose the manufacturing system into a plant by defining resources, peripherals, actions and the respective activities ordering.

In this section, we introduce the Twilight System to show a use case of LSAT in industry. Twilight refers to a simplification version of a wafer handling sub-system used at ASML. This system is presented in the figure:

twilightsystem

The components of a system are described by resources. Each resource consists of one or many peripherals.

The behavior of the system is modeled on three levels:

  1. Actions: executed by peripherals.

  2. Activities: used to describe scenarios of end-to-end deterministic behavior. An activity consists of a set of actions and dependencies among these actions.

  3. Activity sequences: used to describe orderings of activities.

Within the respective system, the Resources are Collision Area (CA), Load Robot (LR), Conditioner (COND). Each resource contains usually more than one peripherals, for example resource LR is composed of three peripherals: the R and Z motors and the CL clamp. The motors allow LR to move within a certain area, whereas the CL clamp allows it to grasp/release a product.

The actions are:

  1. Claim and Release resources;

  2. Unclamp, Clamp, Moves.

The basic activities are: Condition and Drill, whereas those related to the moving are: LR_PickFromInput, LR_PickFromCond, LR_PickFromDrill, LR_PutOnCond, LR_PutOnDrill UR_PickFromCond, UR_PickFromDrill, UR_PutOnCond, UR_PutOnDrill, UR_PutOnOutput.

The name of the activities can be easily connected to the respective meaning based on figure:

0.8

Based on the dispatching file which specifies the ordering of activities, a feasible schedule can be generated, which meets the constraints related to the resources and the synchronization/delays.

twilightscheduling

As explained in Generating Optimal Activity Dispatching Sequence, this schedule can be optimized in terms of throughput/makespan based on the information included in the CIF file.

twilightthroughput

The figure above shows the ordering of the activities for an optimal throughput.

For an extensive explanation regarding the theory and the examples based on LSAT, please refer to:

13. Release Notes

The release notes of the Logistics Specification and Analysis Tool (LSAT) are listed below, in reverse chronological order.

13.1. LSAT v2.0.0

This version includes the following changes:

  • Synchronize actions to finish simultaneously. An ALAP keyword has been added to the activity specification to specify that parallel actions should be aligned on their end rather than their start.

  • Allow custom units to be defined for axes and setpoints in the machine specification.

  • Updated the MotionCalculator API to allow more flexibility in providing custom motion profiles.

    This is a backwards incompatible API change that impacts existing custom motion calculators.

    The scan keyword has been removed from the activity specification. If your current specifications make use of it, you will need to make some changes:

    1. Create a custom motion calculator that provides a scan motion profile.

    2. In the machine file, define a new Profile (e.g. called scan) and add it to the paths that are used for scanning.
      NOTE: The machine specification now allows to assign multiple motion profiles to a path by means of the profiles keyword.

    3. In the activity file, replace the scan keyword with move and use the scan profile instead of the original profile.

    4. In the settings file, define the motion settings for the scan profile that uses the scan motion profile of the custom motion calculator, see step 1.

  • Removed ^ProM export utilities for Conformance Check

This version also contains various bug fixes.

13.2. LSAT v1.0.1

This version only contains bug fixes that allow LSAT to be used as base for customer specific extensions.

13.3. LSAT v1.0.0

This is the initial version as created as part of the Concerto project.