Plant Simulation Step-By-Step ENU PDF
Plant Simulation Step-By-Step ENU PDF
Simulation 13
Step-by-Step Help
Copyright © 2016 Siemens Product Lifecycle Management Software Inc. All rights reserved.
This documentation is proprietary to Siemens Product Lifecycle Management Software Inc.
This document contains proprietary information and is protected by copyright. No part of this document may be
reproduced, stored in a retrieval system, translated, transcribed, or transmitted, in any form or by any means, without
the prior explicit written consent of Siemens Product Lifecycle Management Software Inc.
Information in this document is subject to change without notice.
09 June 2016
Proprietary and Restricted Rights Notice
Siemens and the Siemens logo are registered trademarks of Siemens AG. Tecnomatix and the Tecnomatix logo are
registered trademarks of Siemens Product Lifecycle Management Software Inc.
Siemens is a registered mark or trademark of Siemens Corp. or its subsidiaries in the US and other countries.
SIMIT and Step7 are trademarks of Siemens AG.
3D Labs is a registered mark or trademark of 3Dlabs, Inc. or its subsidiaries in the US and other countries.
Adobe is a registered mark or trademark of Adobe Systems Incorporated or its subsidiaries in the US and other
countries.
Apache is a registered mark or trademark of The Apache Software Foundation or its subsidiaries in the US and
other countries.
ATI is a registered mark or trademark of ATI Technologies Inc. or its subsidiaries in the US and other countries.
AutoCAD is a registered mark or trademark of Autodesk, Inc. or its subsidiaries in the US and other countries.
Beyond Compare copyright © by Scooter Software.
Google Chrome copyright © 2014 Google Inc. All rights reserved.
HP is a registered mark or trademark of Hewlett-Packard Company or its subsidiaries in the US and other countries.
IBM is a registered mark or trademark of International Business Machines Corporation or its subsidiaries in the US
and other countries.
Intel is a registered mark or trademark of Intel Corporation or its subsidiaries in the US and other countries.
Java and iPlanet are registered marks or trademarks of Oracle Corporation or its subsidiaries in the US and other
countries.
Microsoft is a registered mark or trademark of Microsoft Corporation or its subsidiaries in the US and other coun-
tries.
Microstation is a registered mark or trademark of Bentley Systems, Incorporated or its subsidiaries in the US and
other countries.
Paint, PowerPoint, Word, WordPad copyright © 2006 by Microsoft, Corporation. All rights reserved.
Netscape is a registered mark or trademark of Netscape Communications Corp.or its subsidiaries in the US and
other countries.
NVIDIA a registered mark or trademark of NVIDIA Corporation or its subsidiaries in the US and other countries.
Oracle is a registered mark or trademark of Oracle Corporation or its subsidiaries in the US and other countries.
UNIX is a registered mark or trademark of The Open Group or its subsidiaries in the US and other countries.
VizStream is a registered mark or trademark of RealityWave Inc. or its subsidiaries in the US and other countries.
RAMIS is a trademark of Human Solutions. The software is sub-licensed by Human Solutions GmbH, Kaiserslaut-
ern, Germany.
Body Builder is a trademark of Human Solutions. The software is sub-licensed by Human Solutions GmbH, Kai-
serslautern, Germany.
VarChart, copyright © NETRONIC Software GmbH 2004. All rights reserved. The software is sub-licensed by
NETRONIC Software GmbH, Aachen, Germany.
ProEssentials v7.1 Charting Software, copyright © 1994-2012 Gigasoft, Inc. All rights reserved.
Adobe and Acrobat and FrameMaker are trademarks of Adobe Systems Incorporated.
Paint Shop Pro copyright © by Jasc., Inc.
SnagIt copyright © 1996–2007 TechSmith Corporation.
WinMerge copyright © 1996–2009 by Dean P. Grimm/Thingamahoochie Software
3D Studio Max® R3 copyright © 1999 Autodesk, Inc. Microsoft® and Windows® are registered trademarks and
Gif is a Service Mark property of CompuServe, Inc.
Trend Micro Office Scan is a trademark of Trend Micro, Inc. © 1998–2009 Trend Micro, Inc. All rights reserved.
This application incorporates Teigha® software pursuant to a license agreement with Open Design Alliance.
Teigha® Copyright © 2003-2014 by Open Design Alliance. All rights reserved.
All other product names or brand names are trademarks or registered trademarks of their respective owners.
Table of Contents
I
Section 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
The Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Animating Your Simulation Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Distributing the Flow of Materials with an Exit Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
The Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
The Method and the Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Section 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Loading Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
The TableFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Editing the TableFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Recording Simulation Results in a TableFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
The Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Working with the Program, Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Working with Window Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Docking Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Dialog Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Object Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Selecting Settings in Plant Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Select General Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Select Modeling Options for the Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Select Options for Units and for Displaying the Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Changing the Settings of the Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Change Values in the Dialog of the Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Change Values by Assigning a Value in SimTalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Change Values in the Dialog Show Attributes and Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Change Values with the AttributeExplorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Finding Objects and Text in Your Simulation Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Find the Name of an Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Find a Condition of an Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Find Any Text within a Built-in or a User-defined Attribute of an Object . . . . . . . . . . . . . . . . . . . . 58
Find Any Source Code in a Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Find Any Value within a List or Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
II
Modeling in Tecnomatix Plant Simulation 2D . . . . . . . . . . . . . . . . . . . . . . . . . 61
Creating a Simulation Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Creating a Simple Simulation Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Insert Objects into the Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Connect Objects in the Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Run the Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
View the Results of the Simulation Run. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Introducing Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Classes, Subclasses, and Instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Replacing and Merging Objects with Drag-and-Drop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Using Inheritance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Show Inheritance Relations in the Class Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Show the Origin of an Object in the Class Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Working with Classes in the Class Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Configure the Class Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Add Basic Objects to the Class Library or Remove Them from It . . . . . . . . . . . . . . . . . . . . . . . 76
Add a Library or a Tool to or Remove it from the Class Library . . . . . . . . . . . . . . . . . . . . . . . . 77
Add a Library, Which You Yourself Developed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Update a Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Create a Folder Structure for Your Simulation Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Set the Root Folder for Your Simulation Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Create Your Own Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Work with Folders, Frames and Objects in the Class Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Show the Contents of a Frame in the Class Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Saving a Folder or an Object and Loading it into Another Model . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Save a Folder as a Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Save an Object or a Folder as an Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Load an Object or a Folder into Your Simulation Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Load an Object or a Folder into Another Folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Update the Class Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Working with Objects in the Toolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Add Objects to the Toolbox or Delete Them from It . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Copy Objects from Toolbar to Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Modeling Hierarchically. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Test a Component You Modeled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
III
Working with the Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Select Options in the Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Model with Objects from the Class Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Insert an Object from the Class Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Insert an Object from the Toolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Add a Graphic and a Color to the Background or the Icon of the Frame . . . . . . . . . . . . . . . . . . . . 101
Draw Vector Graphics or Text onto the Background of the Frame . . . . . . . . . . . . . . . . . . . . . . . . 103
Create Your Own Ribbon Tab/Context Menu in the Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Work with Objects in the Frame Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Connect Objects with the Connector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Model Transitions between Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Controlling the Simulation with the EventController . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Select Settings for the Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Working with the Event Debugger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Example 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Example 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Example 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Example 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Example 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Delete Parts with the Mouse or when Resetting the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Work with Drag-and-Drop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Drag an Object Onto Another Object and Drop It There . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Use a Drag-and-Drop Control for Several Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Modeling the Flow of Materials, Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Active and Passive Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Producing Parts with the Source. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Select How the Source Proceeds, When it Cannot Produce MUs . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Produce Parts According to a Delivery Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Produce Parts During an Interval Which You Define. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Produce a Single Part Type Only . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Produce Parts in a Fixed Sequence Over and Over Again . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Produce Parts in a Fixed Sequence One Time Only . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Produce Parts According to a Random Frequency Entered into a Table . . . . . . . . . . . . . . . . . 140
Produce Parts According to a Percentage Entered into a Table . . . . . . . . . . . . . . . . . . . . . . . . 141
Produce the Number of Parts You Need. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
IV
Produce Parts Using a Trigger Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Producing and Processing Parts with a Work Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Create the Processing Stations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Define Times in the Class of the Processing Stations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Define Set-up Behavior in the Class of the Processing Stations . . . . . . . . . . . . . . . . . . . . . . . . 148
Enter the Name of the Exit Control in the Class of the Processing Stations . . . . . . . . . . . . . . 149
Create the Work Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Produce the Parts with a Source Using a Sequence Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Program the Exit Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Removing Parts from the Plant with the Drain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Transferring Parts from Station to Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Use the Standard Transfer Behavior. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Select an Exit Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Carry Part Away . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Cyclic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Cyclic Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Least Recent Demand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Linear Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Maximum Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Maximum Number In . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Maximum Processing Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Maximum Relative Occupation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Maximum Set-up Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Minimum Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Minimum Number In . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Minimum Processing Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Minimum Relative Occupation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Minimum Set-up Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Most Recent Demand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
MU Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Percentage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Start at Successor 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Distribute Parts Among its Successors with the FlowControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Configure the Source That Produces the Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Configure the FlowControl Which Distributes the Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
V
Load, Unload, and Reload Parts with the TransferStation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Load Parts with the Transfer Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Reload Parts with the Transfer Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Unload Parts with the Transfer Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Setting a Station Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Select Set-up Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Set the Station Up Automatically . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Only Set the Station Up When it is Empty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Set the Station Up after it Processed a Certain Number of Parts . . . . . . . . . . . . . . . . . . . . . . . 184
Select the Set-Up Criteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Select the Set-Up Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Defining Processing Times . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Enter Times . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Enter Data of a Probability Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Define Processing Times Depending on the Type of MU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Define Processing Times in a Formula. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Define Processing Times for a ParallelProc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Modeling Failures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Define Failures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Change Failure Settings During the Simulation Run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Buffering Parts within the Production Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Use a Buffer between Processing Stations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Check the Fill Level of the Buffers in the Plant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Configure the Processing Stations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Configure the Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Configure the Chart for Showing the Full and Empty Portions . . . . . . . . . . . . . . . . . . . . . . . . 209
Placing Parts into Stock and Removing Parts from It . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Configure the Stations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Program the Method that Places Parts into Stock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Program the Method that Removes Parts from Stock. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Program the Method that Manages the Inventory Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Visualize the Occupancy of the Store Over Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Balancing a Production Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
VI
Modeling Random Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Random Numbers and Their Statistical Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Using Pseudo Random Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Use Probability Distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Modeling the Flow of Materials, Advanced . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Create Entrance and Exit Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Define Controls for Point-Oriented Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Change the Processing Time in the Entrance Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Change the Services of the Importer in the Entrance Control . . . . . . . . . . . . . . . . . . . . . . . . . 236
Change the Assembly List in the Entrance Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Distribute Parts with an Exit Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Define Controls for Length-Oriented Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Create Sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Create and Delete an Observer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Create and Work with a Distance Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Configure the Source That Produces the Transporters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Configure the Track on Which the Transporters Drive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Configure the Transporter That Drives on the Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Customize the Behavior of Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Define Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Assign a Control Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Create a Control which is Part of the Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Create a User-defined Attribute Manually . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Create a User-defined Attribute During the Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Simulating Free-flowing Materials and Fluids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Modeling the Production of Chocolate Bars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Configure the Recipe in the MaterialsTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Configure the Sources Providing the Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Configure the Tanks Storing the Materials. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Configure the Mixers Transmuting the Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Configure the Source Providing the Refining Material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Configure the Portioner Pouring the Chocolate Bars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Configure the Line and Run the Simulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
VII
Portioning and Deportioning Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Create the Required MUs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Configure the Recipe of the Material in the MaterialsTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Configure the FluidSources Which Produce the Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Configure the Tanks Which Buffer the Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Configure the Mixer Which Mixes the Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Configure the Portioner Which Portions the Material. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Configure the DePortioner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Configure the Tanks at the End of the Plant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Simulating the Power Consumption in Your Plant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Configure the Processing Stations and the Conveyor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Configure the ShiftCalendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Check the Power Consumption in the Dialogs of the Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Check the Power Consumption in the Statistics Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Check the Power Consumption in the Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Modeling Workers and the Jobs They Do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Model a Worker Who Works at a Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Model a Worker Who Repairs a Machine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Define How Many Workers Are Created When the Model is Initialized . . . . . . . . . . . . . . . . . . . . . . . . 321
Model a Worker Who Carries Parts Between Workplaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Model a Worker Who Walks on FootPaths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
Model a Worker Who Carries Two Parts in 2D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Model a Worker Who Carries Two Parts in 3D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Model a Worker Who Walks Between Workplaces in 3D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Exchange the Default Graphic of the Worker With an Animated Worker . . . . . . . . . . . . . . . . 338
Change the Size of the Part Which the Worker Carries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Model a Worker Who Walks Freely Within the Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Model and Record Times for Picking-up and for Depositing Parts . . . . . . . . . . . . . . . . . . . . . . . . . 350
Model the Stations Which Process and Transport the Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
Program Controls Recording Times for Picking-up and Depositing Parts . . . . . . . . . . . . . . . . 357
Display the Times for Picking-up and for Depositing Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Model Workers with Importer, Broker and Exporter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Model Processing Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Model Processing and Set-up Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
VIII
Modeling a Shift System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
Defining Shifts with the ShiftCalendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
Enter the Names of the Shifts, the Corresponding Times and Days . . . . . . . . . . . . . . . . . . . . . . . . 382
Enter Times During which the Plant Works Part of the Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
Enter the Stations Which the ShiftCalendar Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
Schedule Date and Time to Start or to Finish the Production Process . . . . . . . . . . . . . . . . . . . . . . 386
Pausing Material Flow Objects and Pausing Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
Paused Material Flow Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
Paused Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
Example of a Pause Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
Example of an Unplanned Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Modeling a Lockout Zone. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Enter the Stations Which the LockoutZone Stops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Create a Failure Profile for One of the Stations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
Stop the Associated Stations Immediately After a Failure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
Stop the Associated Stations When the Repair Service Arrives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Use a Stop Processing Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
Use a Resume Processing Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
Stopped Material Flow Objects and Stopped Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
Assembling Parts with the Assembly Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
Removing Parts with the Dismantle Station. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
Configure the Source Where the Cars Enter the Junk Yard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
Configure the Dismantle Station that Removes the Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
Configure the Station That Tests the Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
Configure the Station That Distributes the Removed Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
Picking and Placing Parts with the Pick-And-Place Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
Pick Up Parts and Place Them with the Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
Pick Up Several Parts and Place Them with the Robot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
Configure the Sources and the Containers and Parts to be Produced . . . . . . . . . . . . . . . . . . . . . . . 422
Configure the Robot to Pick Up Several Parts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Configure the Assembly Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
IX
Place Parts with a Target Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Configure the Sources and the Parts to be Produced . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Configure the Processing Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
Configure the Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
Conveying Parts Laterally with the Converter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Convey Parts Straight Through. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Convey Parts Laterally According to Their Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
Configure the Source That Produces the Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Configure the Converters that Convey Parts to and from ProcessingA. . . . . . . . . . . . . . . . . . . . . . 439
Configure the Stations ProcessingA and ProcessingB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
Configure the Converters that Transport Parts to and from ProcessingB . . . . . . . . . . . . . . . . . . . . 441
Convey Parts According to a Strategy Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
Configure the Source That Produces the Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
Configure the Converter that Conveys the Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
Send Parts to the Default Exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
Feed Parts from a Branch Line into the Main Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
Changing the Conveying Direction With the AngularConverter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
Aligning and Shrink-Wrapping Parts with the Turnplate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
Align Parts with the Turnplate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
Model a Shrink Wrapper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
Configure the Source and the Feeder Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Configure the Turnplate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
Configure the Line Which Transfers the Parts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
Configure the Stations Which Handle the Pallet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
Moving Parts On with the Turntable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
Modeling an Electrical Overhead Monorail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Lift Hangers With the Lifter to a Different Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
Load and Unload Hangers With the LoadStation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
Insert the Rails and the Stations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
Program the Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
Set the Hangers for the Transport and the Produced Part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
X
Modeling a Kanban System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
Create the Sequence of Stations within the Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
Configure the Assembly Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
Configure the Kanban Station which Orders the Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
Configure the Kanban Sources which Produce the Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
Configure the Kanban Buffer which Manages Storing and Ordering of Parts. . . . . . . . . . . . . . . . . . . . 493
Program a Control which Orders Parts from the Kanban Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
Modeling Transport Systems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
Working with Curved Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
Insert Curved and Straight Segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
Draw Straight and Curved Segments with a 90° Angle (Fixed Values) . . . . . . . . . . . . . . . . . . . . . . 505
Draw Straight and Curved Segments without Fixed Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
Change the Shape of a Segment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
Create a Curved Object with SimTalk Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
Import Settings of a Curved Object from Another Simulation Model. . . . . . . . . . . . . . . . . . . . . . . 511
Keyboard Shortcuts for Inserting a Curved Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
Modeling a Transport System with Active Objects of Type Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
Model a Simple Conveyor Between Two Stations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
Model an Accumulating/a Non-Accumulating Conveyor Between Stations . . . . . . . . . . . . . . . . . . 515
Model a Fixed Gap or a No Gap Conveyor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
Modeling a Transport System with Passive Objects of Type Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
Model with the Library CrossSlidingCar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
Model a Simple Cross-sliding Car . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
Model a Cross-sliding Car that Distributes and Brings Together Parts . . . . . . . . . . . . . . . . . . . 527
Model a Cross-sliding Car with an Application-specific Strategy . . . . . . . . . . . . . . . . . . . . . . . . 529
Model a Plant Using a Storage Crane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
Automatically Place Parts into Stock and Remove Parts from Stock . . . . . . . . . . . . . . . . . . . . 532
Automatically Place Parts into Stock, Remove Parts from Stock on Demand . . . . . . . . . . . . . 533
Place Parts into Stock on Demand, Remove Parts from Stock Automatically . . . . . . . . . . . . . 535
Place Parts into Stock on Demand, Remove Parts from Stock on Demand . . . . . . . . . . . . . . . 536
Temporarily Store Parts, Put Together the Order, Remove the Parts From Stock . . . . . . . . . 538
Define How the Source Creates Parts and Moves Them On . . . . . . . . . . . . . . . . . . . . 538
Shuffle the Sequence of Orders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
Place Parts into Stock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
XI
Remove Parts from Stock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
Load a Train with the Storage Crane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
Produce the Parts and Place them into the Storage Area of the Crane . . . . . . . . . . . . . 545
Parameterize the Crane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
Create the Train . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
Load the Train . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
Unload the Train . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
Feed Machines with an Overhead Crane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
Model a Tugger Train . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
Define the Tractor of the Tugger Train . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
Model the Source Creating the Tugger Trains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
Configuring the Source Object and Creating the Sequence Table . . . . . . . . . . . . . . . . . 558
Programming the Collision Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
Model the Track System on which the Tugger Trains Move . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
Configure the Loading and Unloading Stations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
Preparing Data for the Simulation with DataFit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
Step 1: Define the Task and the Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
Step 2: Collect and Prepare Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
Step 3: Decide which Distribution to Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
Distribution-Fitting with DataFit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
Input Data in DataFit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
Filter Data in DataFit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
Fit Data in DataFit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
Evaluate Data in DataFit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
Use Distributions with Bounds. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
Executing Simulation Experiments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
Execute Experiments with the ExperimentManager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
Execute a Simple Simulation Study. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
Step 1: Define input values and output values of the experiments . . . . . . . . . . . . . . . . . . . . . . 573
Step 2: Run the experiments with the settings you defined . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
Step 3: Evaluate the results of the simulation study . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
View the Results as a Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
View the Results in a Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
View the Results as a Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
XII
Refine the Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
Set Static Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
Modify Settings in the Configuration Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
Set Dynamic Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
Create a Rule of Your Own . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
Optimize Models with Genetic Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
Packing a Model and Sending it to Another User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
XIII
Showing Statistics in a Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
Select Settings in the Statistics Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
Select Where the Data Comes From . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
Selecting How the Chart Shows the Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
Show Values in a Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
Show Values in a Histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637
Show Values as the Chart Plots Them . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638
Show Values as an XY Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
Select the Chart Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
Select Additional Display Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
Add Labels, Format Them and Add a Legend. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
Showing Statistics and Other Values in a Report. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
Showing Values During the Simulation Run with the Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
Select which Data the Display Shows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
Select How the Display Shows the Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
Showing Statistics During the Simulation Run in Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
Set the Variable Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
Set Excel Up. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
Embed the Excel File into the Model Using the Object FileLink. . . . . . . . . . . . . . . . . . . . . . . . . . . 663
Accessing Statistics with Methods and Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
Toggling States and Executing Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
Toggle States with the Checkbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
Toggle the State by Clicking the Checkbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
Switch Modes Using a Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
Execute an Action by Clicking a Button. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
Select One of Several Options from a Drop-down List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
Configure the Source That Produces the Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
Configure the Feeder Line with Sensor and Sensor Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
Configure the Turnplate to Rotate the Part According to an Attribute . . . . . . . . . . . . . . . . . . . . . . 675
Configure the Check Box and the Drop-down List. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676
Configure the Buttons to Open the Parts Table and the Callback Method . . . . . . . . . . . . . . . . . . . 678
XIV
Working with Evaluation Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
BottleneckAnalyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
Configuring the BottleneckAnalyzer Through Other Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
Analyze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
Remove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
Open. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
Navigate Menu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
Help Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
Help on BottleneckAnalyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
EnergyAnalyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
Tab Evaluate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
Open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
Show . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
Visualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686
Plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688
Tab Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
Tab Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
Monitor energy consumption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
Graphics layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690
Radius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690
Display panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690
Navigate Menu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690
Tools Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690
Set Default Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690
Set Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
Help Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
Help on EnergyAnalyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
SankeyDiagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
Active . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
MUs to be watched . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
XV
Color. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
Maximum width of the flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
Graphics in layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
Navigate Menu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
Help Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
Help on SankeyDiagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
XVI
Working with Lists and Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744
Set the Data Type of a Column. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
Set the Dimension of a List. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
Set Alignment and Colors of Cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749
Insert, Cut and Delete Rows and Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751
Work with Data in a List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753
Work with Data in the TableFile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
Accessing Data in Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
Set the Column Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
Set the Row Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
Create a User-defined Column Index and a User-defined Row Index . . . . . . . . . . . . . . . . . . . . . . . 758
Set and Get the Upper Bound of a List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
Address Columns and Rows with Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760
Set the Format of Columns and Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760
Get the Format of Columns or Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761
Search Lists with Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761
Search Manually within Lists. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
Create Lists within Lists and Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
Sort CardFile, TableFile and TimeSequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
Make Calculations with a Formula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
Import or Export the Contents of a List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
Open a List as a Dialog Window in the Foreground . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771
Exchanging Data via a Network Socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773
XVII
Add a Set of Radio Buttons. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795
Add a Check Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796
Design a Tabbed Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797
Add a Tab Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799
Add Tabs to a Tab Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800
Add a List Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801
Add a List View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803
Add a Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804
Add an Image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805
Program Actions which the Dialog Items Execute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805
Program Actions for Interacting with the Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807
Set Parameters with the AttributeExplorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
Enter the Objects You Want to Parameterize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
Enter the Attributes You Want to View or Change. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811
Select How to Show the Objects and the Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812
Find Objects and Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816
XVIII
Animate the Camera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831
Working with the Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831
Show and Hide the Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
Set Grid Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
Edit Grid Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
Position the Grid on Different Planes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834
Move the Grid in the Scene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836
Working with Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838
Model with the Built-in Object Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838
Insert an Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839
Select Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840
Simultaneously Paste Multiple Copies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840
Connect Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841
Move an Object With Keyboard Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842
Move an Object With the Mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843
Manipulate an Object Precisely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843
Move an Object Precisely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844
Edit Several Graphics Simultaneously . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845
Rotate an Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846
Rotate an Object Manually . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846
Rotate an Object Precisely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847
Scale an Object Precisely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848
Set the Material of a Graphic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848
Use a Different Graphic for An Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850
Add a Layout File to Your Simulation Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 852
Animate Parts on Locations on Material Flow Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854
Define the Capacity of a Material Flow Object in Plant Simulation 2D. . . . . . . . . . . . . . . . . . . . . . 855
Define Locations on an Object in the 3D Viewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855
Select How Coordinates are Mapped . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855
Enter the Number of Storage Places . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 856
Define the Center of the Loading Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 856
Define the Size of the Loading Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857
XIX
Use Identical Lengths and Positions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857
Set How the 3D Viewer Shows an Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 858
Create Your Own 3D Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867
Import a 3D Graphic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 868
Employing Graphic Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869
Create, Edit, and Delete a 3D Shape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870
Create a Textured Plate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873
Attach a 3D Shape to an Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876
Working with Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876
Create a New MU Class Representing the Airplane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877
Create the Graphics of the Components in 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878
Show the Progress of the Airplane Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 888
Insert and Configure the Source and the Processing Stations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 888
Program The Methods Controlling The Visibility Of The Airplane On The Stations . . . . . . . . . . 889
Change the Orientation and the Position of the Airplane on the Stations . . . . . . . . . . . . . . . . . . . . 891
Import JT Graphics Representing an Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 892
Illustrating State Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895
Show States at the Front of the Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896
Show States on a Pole Above the Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
Creating an Animatable Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900
Create the Required Simulation Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900
Add Animations and Interactions to the Simulation Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903
Test Our Station in the Simulation Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 909
Fine-Tune Our Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911
Modeling a Complex Receiving Department . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914
Insert the Objects Required for Modeling the Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914
Configure the Individual Stations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915
XX
Optimizing a Graphic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920
Working with Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922
Animation Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922
Editing a Path. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923
Create a Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925
Edit a Path With the Mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926
Edit a Curved Path with the Mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928
Edit a Path by Entering Values into the Dialog Anchor Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930
Create an Animation Path that Rotates Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932
Test an Animation Path. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934
Working with a Point Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935
Modeling a Fly Through . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938
Attach a Camera to an Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938
Detach the Camera from an Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938
Animate the Camera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939
Switch Between the Cameras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939
Recording a Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 940
Set Up the Scene for Recording . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 940
Selecting Video Settings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 941
Selecting a Video Compressor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942
Microsoft Video 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942
Cinepak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942
Intel IYUV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942
Record the Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942
Play the Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943
XXI
XXII
Getting to Know Tecnomatix Plant
Simulation
Getting to know Tecnomatix Plant Simulation introduces you to the basic concepts that simulation is based on
and to the basics of working with Plant Simulation.
What is Simulation?
VDI (Verein Deutscher Ingenieure, Association of German Engineers) Directive 3633 defines simulation as the
emulation of a system, including its dynamic processes, in a model one can experiment with. It aims at achieving
results that can be transferred to a real world plant. In addition, simulation defines the preparation, execution and
evaluation of carefully directed experiments within a simulation model.
As a rule, you will execute a simulation study like this:
• You first check out the real-world plant you want to model and collect the data you need for creating your sim-
ulation model.
• You then abstract this real-world plant and create your simulation model according to the aims of the simulation
studies.
• After this, you run experiments, i.e., execute simulation runs, within the simulation model. This will produce a
number of results, such as how often machines fail, how often they are blocked, which set-up times accrue for
the individual types of station, which utilization the machines have, etc.
• The next step will be to interpret the data the simulation runs produce.
• Finally, management will use the results as a base for its decisions about optimizing the real plant.
Developing your simulation model is a cyclical and evolutionary process. You will start out with a first draft of your
model and then refine and modify it to make use of the intermediary results the simulation runs provide. Eventually,
after several cycles, you will arrive at your final model.
As a simulation expert, you must never loose sight of these questions:
• What do you want to accomplish with the simulation study?
• What are you examining?
• Which conclusions do you draw from the results of the simulation study?
• How do you transfer the results of the simulation study to the real-world plant?
Events Jump
Exit event
Event-oriented movement, in jumps
ent
o vem
Leap e m
Material flow object -tim
, real
s
uou
Co ntin
Time
Entrance event
• Put the plan you formulated into practice. Here simulation helps you to:
• Develop a template for creating the control strategies.
• Test different scenarios during the warm-up phase of the plant.
• Train the operators of the machines in the different states, which machines and the plant can be in.
In general, you will reap these benefits from employing simulation:
• Enhance the productivity of existing production facilities.
• Reduce investment in planning new production facilities.
• Cut inventory and throughput time.
• Optimize system dimensions, including buffer sizes.
• Reduce investment risks by early proof of concept.
• Maximize use of manufacturing resources.
• Improve line design and schedule.
• Open one of the model files for the tutorial in the Plant Simulation installation folder > Plant Simulation > Tutorial,
compare the example below.
Note: When you print a topic of the pdf file, do not enter the page number on the bottom of the page you are
viewing, but the page number the Adobe Reader shows on the toolbar Page Navigation.
Theme
The theme of the tutorial model is a testing line for TVs and DVD players. You will first create a testing station
before adding two stations to the main line. TVs and DVD players will enter the processing line, will be put into
containers, moved across a line to a pre-testing station, then to the main testing station, before being packed and
shipped.
Creating the entire model is quick and easy. You can, however, save your models and return to them at a later point
in time. If you do not want to start at the beginning of the tutorial, you can start at the beginning of any of the three
sections. The respective model files are located in the Plant Simulation installation folder > Plant Simulation > Tuto-
rial, compare the example below.
Section 1
In section 1 we will create a folder for our simulation model, name it TestingLine, and build a basic test station for
the production line.
First, we have to create a new Folder and a new Frame.
• Click Create New Model on the Start Page to create a new model.
• Click the item Basis in the Class Library with the right mouse button and select New > Folder.
• Click the new folder with the right mouse button, select Rename, and rename it to TestingLine.
We now have a folder in which to store all the objects that we create. Next, we will create a Frame in which to build
our simulation model.
• Click the folder TestingLine in the Class Library with the right mouse button and select New > Frame.
• Click the Frame with the right mouse button, select Rename, and rename it to Test.
• Double-click the Frame Test to open it.
The Frame is the container in which we create our simulation model. We have created the first Frame, named Test,
for the TV and DVD player test line. Now we can insert the stations that make up the testing line.
The Source
The first object that we’ll insert into our simulation model is the Source. It produces the parts, in our case the TVs
and DVD players, which will be moving through the production system. The Source might, for example, represent
the machines that produce the parts in the plant or the receiving department of the plant.
• Double-click the Frame Test to open it.
The SingleProc
Next, we will insert two objects of type SingleProc. The SingleProc is a generic object which represents any station or
machine on which parts spend a certain amount of time to be processed.
The Drain
The last object we need is the Drain. The Drain removes the parts from our plant. It might, for example, represent
the shipping department of our plant.
The Connector
The Connector connects the stations which we inserted into our model. It determines how the parts move through
our plant, i.e., it determines the flow of the materials.
• Select the Connector on the tab Materialflow in the Toolbox to activate connect mode.
• Move the mouse over the object Source, which is the starting point of our connection. Click on the Source to start
connecting the objects.
• Next, move the mouse over the icon of the first SingleProc, the first target object, and left click to connect the two
objects.
We can now test the Frame by running a basic simulation, to do this we have to insert an EventController.
Select the EventController on the tab Materialflow in the Toolbox and insert it in the top left corner of the Frame.
Instead, you can also click the EventController icon on the ribbon tab Start on the ribbon bar. Plant Simulation then
automatically inserts an EventController.
• Click the Start/Stop Simulation and Reset Simulation buttons in the EventController to stop the simula-
tion and to reset your simulation model.
Plant Simulation shows the parameters, which this distribution requires, above the text box.
In Plant Simulation we separate seconds from minutes with a colon (:). So 1:30 stands for 1 minute and 30 sec-
onds.
The processing time for the station Testing now follows the Normal distribution with a mean value of 55 seconds
and a standard deviation of 5 seconds.
Next, we’ll select a distribution in the Source according to which it produces parts.
• Open the dialog window of the Source.
• Change the Interval to Negexp on the tab Attributes.
• Type in a distribution time of 1:00.
Run the simulation again. You will notice that the parts sometimes have a yellow border around them. This
shows that the parts are blocked, i.e., they cannot move on to the next object because it is still occupied by the pre-
ceding part. We need to solve this issue.
The Buffer
As we have created a potential bottleneck within the model, we will insert a Buffer between the Source and the Testing
station.
• Select the object Buffer on the tab Materialflow in the Toolbox and replace the SingleProc with the Buffer.
• Connect the Source with the Buffer and the Buffer with the station Testing i.e., Source - Buffer - Testing.
• Open the dialog window of the Buffer and change to the tab Attributes. Change the Capacity from 4 to 20.
When you now run the simulation, you will notice that the Buffer holds more than one part.
Rather than being blocked immediately, it accumulates parts to a maximum of 20 parts. Once it reaches the capacity
of 20, it will not allow any more parts to enter until a part has moved on.
• Click the object Chart on the tab User Interface in the Toolbox.
• Insert the Chart above the Buffer.
• Drag the Buffer onto the Chart and drop it. Make sure that Occupancy is selected in the dialog Statistics Type. Click
OK.
If you closed the display window of the Chart, click it with the right mouse button, and select Show on the context
menu.
Section 2
If you have not completed Section 1 of the tutorial, you can open the respective tutorial model from the Plant Sim-
ulation installation folder > Plant Simulation > Tutorial, compare the example below.
We will start this section by creating another Frame within our folder TestingLine with a Source, a Drain and several
SingleProcs. We will also be using the Frame named Test, which we created in Section 1 of the tutorial.
• Create a new Frame as described in section 1.
• Click the folder TestingLine in the Class Library with the right mouse button and select New > Frame.
• Rename the new Frame to ProcessingLine.
• Double-click the icon of the Frame named ProcessingLine.
We will now insert the objects which we need into the Frame named ProcessingLine.
• Insert a Source .
• Insert a Drain .
Next, we will insert the two Test stations, which we created earlier, between the station PreTest and the Drain.
Inheritance
Before we can connect and run this model, we have to edit the Test objects. To do this, we will edit the object Test
in the Class Library. Editing the class object automatically propagates our changes to all of its instances in our sim-
ulation model.
• Open the Frame Test in the Class Library.
• Delete the Source, the Drain, and the EventController from the Frame named Test.
You will notice that this also deleted the Source, the Drain, and the EventController from the Frames Test1 and Test2.
The Interface
We will now insert two Interface objects in place of the Source and the Drain into the Frame Test. Interface objects de-
termine where the flow of materials enters and exits a Frame.
Now we connect all objects within the Frame ProcessingLine using the object Connector .
• Click the icon of the Connector in the Toolbox.
• Connect all the objects so that your model matches the screenshot below.
• Insert an EventController.
Let’s now run the simulation with the EventController. You will notice that the Test Frames behave like any other ob-
ject within the model. When you open the Test Frames however, you can view the activities of the parts within the
Frames.
• Click the class object Test in the Class Library with the right mouse button and select Edit Icons.
• Click the ribbon tab Animation on the ribbon bar.
• Click once in the center of the image.
The color of the pixel changes to red and the number 1 is displayed above it. This is the animation point with
which we are going to link to the station Testing in the Frame Test.
• Click the button Link Animation Point on the ribbon tab Animation.
• Click the animation point you just created.
• You’ll now see the contents of the Frame named Test.
• Click the station Testing to activate the link.
• Save the changes by clicking the Apply Changes button on the toolbar and close the Icon Editor.
When you now run the simulation, you’ll see the parts moving across the Test stations as they are processed.
• Type 60 into the first row, press the Enter key on your keyboard, then type in 40 into the second row. This means
that 60 % of the parts move to the successor with the number 1 and 40 % to the successor with the number 2.
• Click OK to apply your changes and to close the SingleProc named PreTest.
When you now run the simulation and analyze the Charts in the two Test stations, you will notice that more parts
are processed in the station Test1 than in the station Test2. This is caused by the distribution we entered into the
Percentage table of the station PreTest.
Note: If it is the other way round, namely more parts are processed on the station Test2 than on the station Test1,
delete the connectors between PreTest and the Test stations. Then first connect PreTest with Test1 and then
PreTest with Test2. The test station which you connected first to the PreTest station is successor number 1,
the station which you connected after that with the PreTest station is successor number 2. Successor number
1 is always served before successor number 2.
The Line
Now we are going to insert an object of type Line into our simulation model. It represents a conveyor feeding parts
to the testing stations. First, delete the Connector between the Source and the SingleProc PreTest. To fit the Line between
the stations, you might have to move the rest of your objects to the right. Drag a rectangle with the mouse across
all objects to select them. Then, drag them to the right.
• Insert a Method from the tab Information Flow in the Toolbox below the object Line.
• Click the Method with the right mouse button and rename it to counter.
• Open the dialog window of the Line.
• Click the tab Controls.
• Click Sensors.
• Click New and enter 0 as the Position of the sensor. This places it at the start of the Line.
• Click the button in the text box Control, select counter and then click OK.
• Click OK again to apply your changes and to close the dialog window of the Line.
• Double-click the method counter.
• Copy the following source code and paste it into your method. To do so, select the text, then click it with the
right mouse button and select Copy on the context menu, or press Ctrl+A, Ctrl+C, and then Ctrl+V.
param sensorID: integer, Front: boolean
NumberOfDevices := NumberOfDevices + 1
• Apply the source code by clicking the button on the Edit ribbon tab and then close the method window.
• Run the simulation to watch the parts moving along the Line triggering the sensor and increasing the counter. To
better follow the simulation, decrease the simulation speed in the EventController.
Section 3
If you have not completed Section 2, you can open the respective tutorial model from the Plant Simulation installa-
tion folder > Plant Simulation > Tutorial, compare the example below.
In this section we will insert a second Source to produce Containers. We will also insert the object Assembly Station to
load parts onto the Containers before the parts are processed.
• Insert another Source below the existing Source in the Frame ProcessingLine.
• Click the new Source with the right mouse button and rename to SourceContainers.
• Select the object Container in the folder MUs in the Class Library and drop this Container on the SourceContainers
in the Frame ProcessingLine. This way we tell the Source to produce containers. Double-click the SourceContainers and
check the field MU on the tab Attributes. It shows that it now produces Containers.
Loading Containers
To load parts on the objects of type Container :
• Drag the object Assembly Station from the tab Material Flow in the Toolbox on the Connector between the Source
and the Line and drop it there. This way you don’t have to delete the the Connector between the Source and the Line
and insert it anew.
• Rename the station to LoadingStation.
• Double-click the LoadingStation and select the Assembly mode > Attach MUs on the tab Attributes. Change to the
tab Times and type in a Processing time of 0:50.
As the Assembly station is connected to two stations, the order in which you connect it with the predecessors is im-
portant. If the assembly process does not work as expected, check the numbering of the predecessors by activating
More View Options > Show Predecessors on the ribbon tab General of the Frame.
The TableFile
Next, we will introduce a second type of MU, name it TV and DVD_Player, and use a TableFile to set the percentage
of each part that will be tested in the model.
• Insert a TableFile from the tab Information Flow in the Toolbox above the Source.
• Click the TableFile with the right mouse button and rename it to SourceData.
• Open the dialog window of the Source.
• Select Random as the MU selection on the tab Attributes.
• Select the table SourceData in the text box Table.
• Select the object Entity in the folder MUs in the Class Library. Drag this object to row 1 of the column MU of
the table SourceData and drop it there.
• Enter 70.00 into row 1 of the column Frequency.
• Enter TV into row 1 of the column Name.
• Drag the object Entity from the Class Library to row 2 of the column MU and drop it there.
• Enter 30.00 into row 2 of the column Frequency.
• Enter DVD_Player into row 2 of the column Name.
• Click outside the table cell which you just edited and close the table.
• Once you run the model, you will see that the Source produces 70 % TVs and 30 % DVD players for testing.
The next step will be to separate them after they have been tested in the Testing stations and to record the amount of
each that have been tested within a TableFile.
Next, we will introduce another control to separate the TVs and the DVD players after they have been tested, and
write the amount of each of these parts into a table.
• Click the Drain with the right mouse button and rename it to TVs.
• Delete the Connectors between the stations Test1 and Test2 and the Drain.
• Insert a second Drain below TVs and rename it to DVDPlayers.
• Insert a SingleProc between the Testing stations and the two Drains.
• Click the SingleProc with the right mouse button and rename it to Packing.
• Connect all objects.
When you run the simulation now, you will detect the default behavior of the SingleProc, namely that the parts, on
leaving the station Packing, alternate between the two Drains. We need to separate the TVs from the DVD players
and send them to their respective Drain though. We accomplish this by using a Method as an exit control in the station
Packing.
• Select the data type Integer on the tab Data Type from the drop-down list:
The Chart
We will now insert a Chart to view the number of parts that have been tested by our ProcessingLine.
• Click the Chart with the right mouse button and select Show to reopen the display window of the Chart.
At the moment the numbers of parts in the Results table increase with each and every simulation run. We would like
to delete the contents of the table though when we reset the simulation with the EventController. To do so, we insert
a reset method.
• Insert another Method object.
• Rename the Method to reset (notice how the default icon changes).
• Type in the following source code:
Results.delete
• Click Apply on the Edit ribbon tab of the Method window and close the Method.
• Save your simulation model.
This completes our tutorial as we have solved all of our modeling tasks.
For further information compare The Plant Simulation Program Window in the Reference section of the Online Help.
Docking Windows
Plant Simulation docking windows are the Class Library, the Favorites, the Toolbox, and the Console.
Docking windows have a red border in the figure below Working with Window Types. Docking windows always open in the
foreground, on top of any other windows, i.e., they will also be placed on top of any open dialog windows.
• To undock a docking window, click into the title bar of the window with the right mouse button and select Float-
ing.
• To redock a floating window again, click in the title bar of the window with the right mouse button and select
Docking.
• To dock a floating window to any of the sides of the program window, drag the title bar on a floating window
to another location. When you drag the window to the edge of the program window or to a location beside an-
other docked window, it docks there.
Note: When you move a docked window, this might affect the location and size of other windows in the same
row within the program window.
• To prevent a floating window from docking when you drag it, hold down Ctrl, and move the window to a position
of your choice.
• To make a docked window a floating window, double-click the move handle or hold down Ctrl, and drag the
window.
• To dock a floating window again, double-click its title bar or drag the window to one of the sides of the program
window or to a location beside another docked window, it docks there.
• To close a floating window, click Close on the title bar.
• To show or hide the Class Library, click on the Window ribbon tab.
• To show or hide the Favorites window, click on the Window ribbon tab.
• To show or hide the Console, click on the Window ribbon tab.
• To show or hide the Toolbox, click on the Window ribbon tab.
• To show or hide the Console, click on the Window ribbon tab.
• To customize the Quick Access Toolbar and the Ribbon, click the down arrow on the Quick Access Toolbar and
select More Commands.
Dialog Windows
Plant Simulation dialog windows are the dialog windows of the Plant Simulation material flow objects, the mobile objects, the
resource objects, the information flow objects, and the user interface objects.
Dialog windows have a green border in the figure below Working with Window Types.
A dialog window always opens in the front as it expects that you select or enter something. You cannot minimize or
maximize it.
You can drag a dialog window outside of the program window and move it around on the entire screen.
Object Windows
Plant Simulation object windows are the object windows of the Frame , the Method , the Method Debugger, the Queue-
File and StackFile , the CardFile , the TableFile , the Icon Editor, and the Plant Simulation 3D Viewer.
Object windows always open in the background. Object windows have a blue border in the figure below Working with
Window Types.
To bring an open object window to the foreground, click the icon of the window in the window tab bar.
To arrange the windows, i.e., to cascade, to tile them horizontally, or to tile them vertically, you can select the re-
spective command on the Window Ribbon Tab.
To bring an open object window to the front, select the name of the window on the Window Ribbon Tab. You can
also arrange these windows with one of these commands.
Note: You can also open the CardFile, the QueueFile, the StackFile, and the TableFile in the foreground as a dialog
window with the method openDialogBox.
You can close all object windows with the function closeAllWindows.
You can minimize and maximize an Object window and move it around within the program window. When you
maximize an object window, Plant Simulation adds the button combination Minimize, Maximize, Close that
is otherwise located in the title bar of the window, above the Ribbon Bar.
You can also add links to the following object windows to the Favorites:
• Frame windows
• Method windows
• CardFile windows
• windows of QueueFile and StackFile
• TableFile windows
• windows of user-defined attributes of data type method, table, list, stack, and queue.
You can then quickly open the respective window by double-clicking its name in the favorites list.
• To select settings, which apply to new models, select File > Preferences. On the tabs General, Modeling, User
Interface and Editor you can select general settings, which are independent of the simulation model. On the tabs
Simulation and Units you can select model-specific settings, which apply to new models.
You will:
• Select General Options
• Select Modeling Options for the Frame
• Select Options for Units and for Displaying the Time
yyyy/mm/dd 24 hour
dd.mm.yyyy 24 hour
Select which kind of comment Plant Simulation adds to your model file each time you save it:
• Without comment adds no comment to the model (.spp) file.
• With comment opens a comment window, each time when you save the model. Enter your comment here.
• When you select Without comment or With comment Plant Simulation adds a row to the dialog Model Saving History
each time you save the model.
When the model crashes, Plant Simulation adds a description of the problem to the model history window instead
of a comment. This helps our software engineers detect what caused the crash.
• None does not save the history of how you saved your model.
To view the comment you entered:
Select File > Show Model History in the program window.
If it annoys you that Plant Simulation opens a dialog prompting you to confirm, when you delete objects, clear the
check box Confirm.
If you want to use another spacing for the grid in the Frame, enter a larger or a smaller number for the Frame grid.
Note: To select units and time settings, which only apply to the active model, select > Model Settings > Units.
To select units and time settings, which apply to all new models, select > Preferences > Units.
• Select the check box Daylight saving time.
• If the plant you are modeling is located in the European Union, you do not have to change the default settings.
Here summer time starts at 02:00 o’clock in the morning Greenwich Mean Time (GMT) on the last Sunday in
March. It ends at 03:00 o’clock in the morning on the last Sunday in October. In the EU, all time zones change
at the same moment.
• If the plant you are modeling is located in the United States of America, you have to change the settings. For
most of the US daylight saving time starts at 02:00 o’clock in the morning on the second Sunday of March. It
ends at 02:00 o’clock in the morning on the first Sunday of November.
If your specific modeling needs require it, you can also change the display of the Time scale. You can enter a number
between 0 and 86400. You can enter an integer greater than 1 into the text boxes next to Transfer if.
You might, for example, divide a minute into 100 units, instead of in 60 seconds, or you might want to read 1:50
as 1.5 hours instead of 1 minute and 50 seconds.
Note: You can only change the display of the time scale, not the time scale itself.
A time statement consists of four numbers, separated by colons, normally in the format days:hours:minutes:sec-
onds. Plant Simulation stores the value itself in seconds and converts it at output time for the display.
Plant Simulation converts times according to the values you enter into the text boxes Time scale and Transfer if.
The following examples illustrate what to enter to achieve different displays of the time:
• If you want to use the standard time format, 24 hours to the day, 60 minutes to the hour, 60 seconds to the min-
ute, use the default setting Time Scale 1/1.0 Transfer if 24:60:60.
• If you want to simulate a longer period of time and want to display the time in the format
years:months:days:hours, enter Time Scale 1/3600 Transfer if 12:30:24, as an hour has 3600 seconds, a year has
12 months, a month has 30 days, and a day has 24 hours.
• If you want to divide a minute into 100 subunits instead of 60 seconds, enter Time Scale 1/0.6 Transfer if
24:60:100.
All of these settings correspond to attributes which you can also access with the programming language SimTalk. The
What’s This help for the respective dialog item shows the name of the attribute in the bottom row next to SimTalk.
To manually set the SingleProc up, you can clear the check box Automatic.
To toggle the value of an attribute of data type boolean from true to false and vice versa, double-click the row of the
attribute in the dialog Show Attributes and Methods.
2. Click the right mouse button anywhere in the Class Library and select Find Object on the context menu.
3. Select what you want to find from the left drop-down list. You can select to:
Find the Name of an Object
Find a Condition of an Object
Find Any Text within a Built-in or a User-defined Attribute of an Object
Find Any Source Code in a Method
Find Any Value within a List or Table
4. Type in the name of the folder or the Frame into the text box Look in, where Plant Simulation is going to start
searching for the expression you entered into the text box.
Instead, you can also click and select a folder or a Frame in the dialog Select Object.
To search on the highest level of the structure, accept the default setting that Plant Simulation enters, namely the
period (.).
5. Select Include subframes to also search all Frames located in the Frame in which the item you are searching for is
located.
6. Click Find, to start searching.
7. Double-click the name of the object in the results field, to open its dialog. You can then change any settings.
8. When you select Match whole word only, Plant Simulation only finds entire words that exactly match the word you
entered. In our example it only finds the word singleproc.
9. When you select Match whole word only, and also select Match case, Plant Simulation only finds words that exactly
match the word you entered, including upper and lower casing. In our example it only finds the word singleProc.
10.When you select Regular expression, Plant Simulation also finds the regular expression you select. Click and
select any of the items displayed in the window Regular Expression. Plant Simulation enters the special characters
designating that expression into the right drop-down list.
Select To enter and to find
Any single character .
Beginning of line ^
End of Line $
Beginning of word \<
End of word \>
Group \(\)
Zero or one matches ?
Searching with regular expressions allows you to use wild cards in the string you are searching for.
• To find all strings that contain a sequence of the character a, followed by any character, and the character b,
enter a.b into the text box.
• To find all objects whose name starts with an upper case S, enter ^[S].
• To find all objects whose name does not end with an e, enter [^e]$.
• To find all objects whose name contains an upper case L, followed by any character, followed by proc, enter
L.*proc into the text box.
11.Click Find.
4. Click Find.
5. To open the Method that Plant Simulation found and to jump to the first occurrence of the item, double-click it in
the results pane. Double-clicking or selecting Open again jumps to the next occurrence of the found item.
To jump to the previous occurrence in the source code, hold down Shift and double-click.
6. To replace the found source code with other source code, click one or several Methods in the results list with the
right mouse button and select the command Replace With. Then, enter the replacing source code into the dialog
which opens.
The passive material flow objects do not actively process parts. They store parts and represent tracks on which
the processed parts are moved.
• The mobile objects (MUs) represent the parts that are created in, stored in, transported in, processed in and
removed from your simulation model.
• The fluid objects serve for simulating free-flowing materials, be they in liquid, gaseous, or pourable form. The
fluid objects are suited for the food and beverages processing, and for the pharmaceutical industries.
• The resource objects are intended for modeling how and when Workers move from the WorkerPool to the Work-
places at the stations.
• Employing objects of data type method you can program the actions that you need to take place when the condi-
tions you program become true. For this we integrated a powerful programming language into Plant Simulation.
The Methods are either activated as controls by the material flow objects or by other Method objects. The Method
also provides a Debugger to locate errors and allow you to correct faulty code.
• Lists and tables ensure the random exchange of information between all objects. The powerful processing of
information in Plant Simulation is the result of a variety of functions, data types and operators.
• The objects Chart and Report allow you to graphically display the statistical values that the material flow objects
collect during the simulation runs.
• With the object Dialog you can create a dialog window similar to the built-in dialog windows that Plant Simulation
provides. This way you can provide a simple user interface for complex simulation models other users work with.
You can also prevent another user from manipulating a Frame. To accomplish this, insert a Method object as an
open control into the Frame. Double-clicking the Frame will then not open it any longer, but call the control method
in which you might, for example, program it to open a dialog, where the user can then select the settings.
• With the objects BottleneckAnalyzer and SankeyDiagram you can analyze and evaluate the results the simulation runs
provided. Use the ExperimentManager to define how Plant Simulation executes the simulation experiments.
• Naturally you can also exchange data with other programs and processes using the interfaces we provide. For
integration purposes with other software it is important that data can be exchanged not only at the beginning and
the end of the simulation run but also during the simulation run.
When you create your simulation models, you will more than likely combine these two modeling strategies:
• The top-down strategy is characterized by a roughly structured model that you break down step-by-step. The
more refined the model becomes, the more detailed it becomes. This approach requires a large degree of abstrac-
tion. The big picture becomes obvious quickly though.
• The bottom-up strategy is characterized by a detailed model that you created by using prefabricated components
with a rather small degree of abstraction. This enables a quick analysis of the details, but makes it harder to rec-
ognize the big picture.
The Source produces the parts that the stations, symbolized by the SingleProcs, are going to process. The Drain re-
moves the parts, symbolized by the Entities, from the production line after the SingleProcs have processed them. The
Source can represent the receiving department, while the Drain can represent the shipping department. We also insert
a Chart that visualizes the results of our simulation run in different ways.
You will:
• Insert Objects into the Frame
• Connect Objects in the Frame
• To move the selected object one grid unit at a time, hold down the Shift key, and press one of the arrow keys.
• To align all objects to grid points in the Frame window, select all objects by dragging a marquee over them and
click Align to Grid on the Icons ribbon tab of the Frame.
• To delete an object, press the Delete key on the keyboard or click it with the right mouse button and select Delete.
• Drag the slider to set the speed of the simulation. The slower the simulation is running the better you will be able
to watch how the parts move through the model.
Now change different components of the model and check the impact of these changes. You might:
• Manually pause SingleProc1 for a while, re-start the simulation, remove the pause and continue the simulation.
• Change the processing time of SingleProc1 or SingleProc2.
• Select a different Exit strategy for the SingleProc to see how it distributes the parts to the succeeding machines.
• Change the type of MU which the Source produces: Double-click the Source and click MU. Select the Container in
the dialog Select Object.
Instead of using the buttons in the dialog of the EventController, you can also click the corresponding buttons in the
EventController section of the Home ribbon tab.
• To view the statistics, which the object collected, in the statistics report, select the object and press F6. This opens
a report showing the most important statistics value in meaningful overview.
• To present the results of our simulation run to management, we will use the object Chart . Drag the objects
whose data you would like to show over the icon of the Chart and drop them there or right‐click the Chart and
select Statistics Wizard. Then, select the objects there.
Right-click the Chart and select Show.
If you want to, you can play around with the settings to show the values in different ways.
Introducing Classes
Imagine that, for example, you have to find the optimum type of store for a production plant. First, you have to
come up with different types or stores that might work for the specific plant, such as fully automated high bay ware-
house, manually operated shelving system, etc. To be able to compare the different types of stores, you are going
to build several simulation models, execute simulation runs and suggest the type of store with the best cost/gain
relation.
Your simulation models are going to be variants of a single basic model, i.e., you are going to use the same produc-
tion plant and are going to modify the store.
When creating the model variants you are going to build the basic model first. In conventional systems you would
then copy this basic model until you arrive at the number of variants you need. In Plant Simulation, on the other
hand, you will inherit this basic model, which we call the parent model, and arrive at child models. The main dif-
ference between a copied and an inherited model is that a child model recognizes which parent it is derived from
while a copied model knows nothing about its origin.
Now you are going to insert the different types of stores into the model variants you created. If you now find a
modeling error while modeling the basic model or if a specification changed, a conventional system requires chang-
ing all copies, which is time-consuming and error prone.
In Plant Simulation, on the other hand, you make the change once in the parent model. It then immediately propa-
gates all of your changes to all of its children, provided you did not change the setting in the child model. This saves
a considerable amount of time and the hassle of manually updating a number of sub-models.
By changing a property in the class object, you change that property for all objects you derived from this class.
This is much less error-prone than having to change the same property for each and every individual object over
and over again.
• A class passes all of its properties on to an instance you derive from it.
• A class passes those of its properties on to a subclass you derive from it, for which you do not deactivate inher-
itance. Remember that a button that looks like this means that inheritance is active.
Note: Inheritance only works from class to subclass/instance, not the other way around!
• A subclass is an object in the Class Library, which inherits some, but not all, of its properties from another class.
By deactivating inheritance for certain dialog items, you can define properties that only apply to this subclass. An
example of subclasses could be several lines that only differ in their length.
To create a subclass from a class, right-click the class in the Class Library and select Derive. When you open the
dialog of the derived object, you will notice that inheritance is active for all dialog items, denoted by a button that
looks like this . Then, change the identifying property of the subclass. In our example below we derived the
object Line to create the subclass. We renamed it to Line_5m and changed its length to 5 meters.
Instead, you can hold down Ctrl and Shift, and click the object you wish to derive an instance from with the left
mouse button. Then, hold down the mouse button, drag the object to the location of your choice, for example
into another folder in the Class Library, and release both keys and the mouse button.
• To create a copy from a class, right-click the class in the Class Library and select Duplicate. When you open the
dialog of the duplicated object, you will notice that inheritance is deactivated for all dialog items, denoted by a
button that looks like this .
Instead, you can hold down Ctrl, and click the object you wish to duplicate with the left mouse button. Then,
hold down the mouse button, drag the copy to the location of your choice in the Class Library, and release Ctrl
and the mouse button.
• An instance is an object, which you insert into your simulation model from the Class Library or the Toolbox by
dragging a class object to a Frame and dropping it there.
The objects use class relations and origin relations to inherit their properties from other objects:
• The object inherits all of its basic properties from its class object. This includes settings it has by default, built-
in Methods, basic functionalities, etc. The class is the object in the Class Library you instantiated the selected object
from.
• The object inherits its settings from the origin object, provided you did not change them locally within the ob-
ject. The origin of the selected object is the object you derived it from.
Making full use of the potentials of inheritance saves a considerable amount of time and effort during modeling.
Using Inheritance
Inheritance allows one class or object to incorporate data or behavior of another class or object.
Inheritance has a number of applications, among them:
• Specialization of existing classes or objects. Here, the new class or object has data or behavior aspects, which
are not part of the inherited class.
• Extension to provide additional data or behavior features. In contrast to the case of specialization, with exten-
sion the new data or behaviors could have been provided in the inherited class because they are generally appli-
cable to all instances of the class.
• Code re-use to allow a new class to re-use code, in our case any of the settings you selected, which already exists
in another class.
The toggle button to the right of a dialog item activates or deactivates inheritance for that item in the di-
alogs of the Plant Simulation objects.
• A button that looks like this means that inheritance is active. Then the object inherits, i.e., uses, the value from
the origin object from which you derived it. When you modify the value of the origin object, Plant Simulation also
modifies the value of the derived object.
Let us illustrate this with an example. We derive the SingleProc in the Class Library and insert it from the Class Li-
brary into the Frame Model1. Then, we derive Model2 from Model1. The origin of the SingleProc in Model2 is the Sin-
gleProc in Model1. When we now change the value of an attribute that inherits its value in the SingleProc in Model1,
the SingleProc in Model2 also applies this value.
• A that looks like this button means that inheritance is not active. The values you enter only apply to the current
object.
Note: The object might display the current value only after you click Apply.
You can repeat this to move up in the hierarchy until Plant Simulation does not select another object. Then you have
reached the object from which the selected object was derived from originally, i.e., its origin.
• Click Apply to add the selected objects to the Class Library and to the Toolbox or to remove them from it.
• If you want Plant Simulation to always show this dialog, when you open a new model, select the check box Always
show this dialog when you open a new model. Then you can configure each simulation model to your liking. If
you want to use the same settings for all new simulation models, clear the check box.
• If you want Plant Simulation to apply the settings you selected in the dialog to all new models, which you create
hereafter, click Apply to New Models.
• Click Apply to add the selected objects to the Class Library and to the Toolbox or to remove them from it.
Plant Simulation adds the folder AssemblyLine within the folder Application Objects to the Class Library and the
Toolbar AssemblyLine to the Toolbox.
• The dialog Manage Class Library shows the library, FinalAssemblyEU in our example, on the tab Libraries under
Additional Libraries.
Update a Library
You can also update an outdated library on your computer with a newer version with the library manager. Let’s say
you have to update a model, which you haven’t worked with for a while and which contains a library. If the library
manager finds a newer version of the used library in the directory, which you entered under > Preferences > Libraries
directories, the Caption Bar shows this message:
• Click Manage Libraries. The dialog shows libraries in red for which a newer version is available.
• Click in the cell below version to show the version number of the newest version and select it if you want to
update the Class Library. Click OK.
Plant Simulation shows a Merge Report with detailed information about added and deleted objects, about the in-
stances of the objects which were affected by the changes and which classes were deleted.
• Rename the folder: Click NewFolder once and type in a meaningful name. In our application object libraries we
use ApplicationObjects.
We also recommend to create a sub-folder for the basic, built-in objects that your simulation model uses, within
the folder ApplicationObjects. In our application object libraries we named this sub-folder BasicObjects. This fa-
cilitates that your application object libraries are independent of the language of the model that the user selects and
of the naming conventions of the built-in objects you use in your model. In addition, this simplifies loading the
application object library into other models, as this mechanism makes merging objects superfluous.
You can also use the anonymous identifier rootFolder within Methods in which you programmed controls. Here Plant
Simulation looks for the folder for which you set the attribute RootFolder, starting with the class of the Frame into
which you inserted the object in which you programmed the control.
• Right-click the class in its folder in the Class Library that has the features you would like to use and select Dupli-
cate. This copies the selected object or model and creates a new class from it, severing all inheritance relations.
Changes you make to the original class object are not passed on to the copy you create. Or
• Hold down Ctrl, and click the object you wish to duplicate with the left mouse button. While holding the mouse
button down, drag the copy to another folder in the Class Library, and release Ctrl and the mouse button.
Compare the video Creating a Class under the Window ribbon tab > Start Page > Getting Started
> Videos.
• Double-click it, and enter another name into the text box Name.
• Press F2 and enter another name.
• Select Rename on the context menu and enter another name.
• To rename an open object, press F4 and enter another name into the dialog Rename.
You can:
• Save a Folder as a Library
• Save an Object or a Folder as an Object
• Load an Object or a Folder into Your Simulation Model
• Load an Object or a Folder into Another Folder
• Type in the name of the library. You can type in any combination of letters, numbers, spaces, and special char-
acters.
• Type in the version of the library. You can enter any number of number and letters separated by periods.
• Type in a meaningful description of the library.
• Click OK.
The icon of a library in the Class Library looks like this .
To also use this library in other models, save the library as a file. To do so, click the library with right mouse button
and select Save/Load > Save Library As. If you would like the library to be available in the dialog Manage Class Li-
brary later on, you have to select a location within the directory which you entered under File > Preferences > Gen-
eral > Libraries directories.
You can then load this application object library into other simulation models and share it with your co-workers.
To do so, click Manage Class Library on the Home ribbon tab in the program window.
You can edit the information you typed in when you created the library by clicking the library with the right mouse
button in the Class Library and by selecting Edit Library Information.
In addition, you can type in one or more alternative paths for your library. As a rule, you will not enter an alternative
path.
Plant Simulation identifies a library by its absolute path to the library folder in the Class Library. When you type in an
alternative path, this absolute path will also be assigned to this library. This may be helpful for two reasons:
1. When you rename the library folder in a new version of your library or when you move the library into another
folder, the absolute path of the library changes.
Plant Simulation will from then on treat the library as another library. If you do not want this, you can type in the
previous path to the library as an alternative path. This way you can update a model, for which the library is still
located under the previous path, with the new library. For this model, the library remains at its previous location
in the Class Library.
2. You can use alternative paths to assign several names in different languages to the library folder. We, for example,
also assigned the German path .Tools.EngpassAnalyse language to the library .Tools.BottleneckAnalyzer. For
this reason Plant Simulation considers both folders as the same library and can thus update both folders with the
same library file.
Note: When you type in the name of a language between $ signs in front of the alternative path, for example
$German$ or $Japanese$, Plant Simulation will automatically use this path, when you load this library into
a model with this language, i.e., when the model did not already contain this library. The alternative path
for the BottleneckAnalyzer is $German$.Tools.EngpassAnalyse for example.
Note: You can type in any number of alternative paths. Separate alternative paths with a line break.
When renaming a library in the Class Library, pay heed to the messages that Plant Simulation displays!
Click No in the dialog to retain the library properties of the folder. Clicking Yes will make the folder a normal folder
again without any of the properties that designate a library.
If you want the renamed library to be treated as a different library from now on, click Yes.
Renaming the library folder does not changed the name of the library as such, it will still have the same name as
before.
• To Replace the loaded class with the one in the class library, select the radio button. Then, Plant Simulation does
not load the new object, but replaces it with the existing object and merges all inheritance hierarchies into one.
• To replace all duplicate objects, click Replace All.
• To Rename and keep the duplicate class, select this.
• Enter a new name for the duplicate object into the text box.
Note: When the object to be replaced is a Frame, click Replacement Mode on the General ribbon tab of the Frame.
Then, select if you want to Merge the contents of the new Frame with the existing one or if you want to
Exchange the existing Frame with the new Frame.
The tools in the Tools folder in the Class Library, such as the BottleneckAnalyzer, use this technique and provide their
own parameterized BasicObjects that are independent of the object classes in the built-in folders.
When you add an add-in program by clicking Manage Class Library on the Home ribbon tab, Plant Simulation also
adds a tab/toolbar with the objects of this add-in.
• To add your own toolbars to the Toolbox, right-click the folder you want to add the toolbar to and select New >
Toolbar.
Plant Simulation adds toolbars you define, toolbars with the objects of add-in products (Home ribbon tab > Man-
age Class Library), and toolbars of object libraries to the right of or below the tabs of the built-in objects in the
Toolbox.
• To add an object to a toolbar you defined, drag the object from a folder of the tree view in the Class Library to
the window/toolbar you defined into the Toolbox and drop it there.
Note: After you inserted an object from the Toolbox into a Frame, Plant Simulation automatically switches back to
Modeling Hierarchically
Modeling hierarchically is the concept of inserting components, which you modeled in a Frame, into other Frames.
This way you can model, and test, the individual components of your simulation model detached from the Frame
which holds your complete simulation model.
You can combine any number of components in the Frame in which you build your overall model. In our example
we modeled a component in the Frame MyComponent1 and inserted it into Frame MyPlantAnytown, which holds our
complete simulation model.
To open the window of the Frame from which the current Frame was derived, click . In our example, clicking
Open Origin opens the Frame MyComponent1 in the folder ApplicationObjects > Components in the Class Library.
You can thus model the components, such as large machines or entire departments, to match their counterpart in
your real-life plant as closely as possible. You can also insert these components several times. You can use these
components in exactly the same way as you use any of the other user-defined or built-in objects. You can create
icons for them and insert them into your model just as you would any of the material flow objects. In addition it
allows you to clearly structure your simulation model.
Another advantage of modeling hierarchically is the fact that you can distribute developing the simulation model
among several colleagues, even among several sites. You can then integrate the components into the complete mod-
el at any point in time.
To do this Click
Deactivate or activate Lock Structure, allowing you to
insert objects into the Frame or to change them.
Initially, any Frame you insert into your model uses the settings you selected under File > Preferences in the program
window. Select any of the commands to activate or deactivate them for the selected Frame. To restore the built-in
settings, and deactivate any of your changes, select Inherit Settings.
Option On Off
Show Object Names
Show MU Names
Show Predecessors
Show Successors
Show Comments
Option On Off
Show Connections
• Click the toolbar, i.e., the tab, which contains the object you would like to insert.
• Move the mouse to the icon of the object.
• Click the object with the left mouse button to select it.
• Move the mouse to the target position in the Frame window and click the mouse button once.
• To insert several instances of the same object class, hold down the Shift or the Ctrl key while you click the mouse
button in the Frame window. This way you do not have to return to the Toolbox each time after inserting an object.
• To go to the class of an object, press the Ctrl key and click the object in the Toolbox. Note that Plant Simulation
highlights the class object in the tree window in the Class Library. Double-click that object in the tree window to
edit class properties or hold down the Ctrl+Alt keys and click the object in the Toolbox. Note that this does not
work, when the object is already selected.
Add a Graphic and a Color to the Background or the Icon of the Frame
To add a graphic to the background of a Frame, do one of the following:
• Drag a .gif, .bmp, .ppm, .ppm raw, .dgn, .dxf, or a .dwg file from the Windows Explorer, the Internet Browser,
the icon library etc. over the background of the Frame and drop it there.
This new graphic will then replace the icon named background of the Frame. If you have not assigned a background
icon, Plant Simulation automatically creates a background icon. Note that Plant Simulation does not automatically
scale the size of the background icon to the size of the Frame!
You can also add a background picture with the method setBackgroundImage.
• Drag a layout drawing you created in Autodesk over the background of the Frame and drop it there.
You can use this layout drawing as the actual background of the Frame and insert the Plant Simulation objects on
top of it. This is feasible when your simulation model is not too complex.
Note: If you are modeling a complex plant, this might not be practicable, as it might lead to a very cluttered
layout. Then, you might want the layout drawing to be one of the icons of the Frame, and have the MUs
move through the plant on the animation lines you define in the class of that Frame.
Be aware that the .dxf, .dgn or .dwg files are vector based, whereas Plant Simulation uses pixel based graphics. This
means that you have to think about how to transfer one size to the other.
Proceed as follows to scale an AutoCAD drawing so that it fits onto the background of your Frame:
• Measure the dimensions of your AutoCAD drawing with the AutoCAD measurement tools and convert these
dimensions to meters! Then compare the x-dimension with the y-dimension and establish the maximum value,
let’s say 90 meters.
• Divide this value by the Frame size you want to use. In our example we divide 90 by 6000 which results in the
value 0.015. This is the required scaling factor for our Frame.
• Click Scaling Factor on the General ribbon tab of the Frame and enter the scaling factor 0.015.
• When you drag the .dwg drawing onto the background of the Frame and drop it there, a dialog opens asking
for the scaling factor of the drawing. Enter the factor to convert the drawing units to meters. If the drawing
units are millimeters for example, you will enter 0.001.
To make the background graphic transparent, so that the background color of the Frame shines through:
• Click Icons on the Home ribbon tab to open the Icon Editor.
• Click the color picker and click in the background of the icon. This makes that color the active drawing
color, which we want to replace.
• Click Replace Color on the Home ribbon tab.
• Select the transparency color in the Color Palette that replaces the active drawing color.
If the transparency color is not part of the color palette, double-click any field in the Color Palette that contains
a color you do not need, and enter 0, 128, 128 into the dialog Colors > Custom and click OK.
• Click Transparent on the Home ribbon tab.
• Click the Vector Graphics ribbon tab of the Frame. The shape of the cursor changes to .
Note: As long as vector graphics mode is active, you cannot manipulate any objects in the Frame. To deactivate
it, click another ribbon tab.
• Select the shape you would like to draw:
To do this Click
Draw a line.
Draw the outline of an ellipse.
To do this Click
Draw a filled ellipse.
Draw the outline of a rectangle.
Draw a filled rectangle.
Enter text that appears in the Frame.
To force a line break when entering text, enter
\n and continue typing.
• Drag the mouse into the Frame window, click the left mouse button once and drag the mouse until the shape has
the form you need.
• To change the properties of the shape/text you drew, double-click it and edit its settings in the dialog Graphic
Settings.
• To change the form of the shape or to move it, select it, click one of the handles and drag the mouse.
The move mouse pointer looks like this .
The change shape mouse pointer looks like this .
• To move a vector graphics object one pixel at a time, press the respective arrow key.
To move a vector graphics object one grid unit at a time, hold down Shift press the respective arrow key.
• To enlarge a vector graphics object by one pixel, hold down Ctrl and press the respective arrow key.
• To enlarge a vector graphics object by one grid unit, hold down Ctrl and Shift and press the respective arrow key.
• To place an object onto a different layer, click and enter the number of the layer into the text box Layer.
The layers serve two purposes: They allow you to define the drawing order of the item you placed onto a layer.
• When you enter a negative number, ‐1 for example, Plant Simulation draws the shape you created onto the fore-
ground of the Frame.
• When you enter a positive number Plant Simulation draws the shape onto the background of the Frame.
They allow you to delete all objects on a certain layer: Click and enter the number of the layer you would
like to delete into the text box Layer.
When a user-defined ribbon tab exists, the button on the General ribbon tab is dark olive gray.
Note: To create a user-defined ribbon tab in a Frame, which you inserted into another Frame, deactivate the com-
mand Inherit, so that it does not show a check mark to the left.
• Enter the Title of the user-defined ribbon tab with which Plant Simulation shows the user-defined ribbon tab. We en-
tered My Ribbon Tab.
• To show the user-defined ribbon tab for the Frame, for which you defined it, select Active.
• Enter the name of the command that Plant Simulation shows on the user-defined ribbon tab in the Frame. Enter an &
(ampersand) in front of a letter to make this letter the access key. You can select this ribbon command by holding
down the Alt key, by pressing the predefined key combination U and T, and by the pressing that letter. The built-
in Plant Simulation access keys take precedence over any access keys you define!
You can also enter a formula as a ribbon command or a context menu command. A formula is designated by a
leading question mark. When you enter ?Method1 for example, the method named Method1 will be called. The
return value of this method has to be of data type string. This way you can toggle between different texts, for
example between Activate and Deactivate and you can translate the ribbon or context menu commands into dif-
ferent languages. If the methods return an empty string (""), Plant Simulation hides the respective ribbon or con-
text menu command.
Note: You can use any formulas, even for example a method call with parameters, such as ?Method1(42) or a
table access, such as ?TableFile[1,3].
• Enter the Methods, which the ribbon/context menu commands execute into the text boxes below method to be
executed.
If the method expects a parameter, Plant Simulation automatically passes it. To this parameter, which has to be of
data type list, the selected objects, which are located within the same Frame as the Frame whose ribbon tab or
context menu is opened, are passed.
When Methods are called from the user-defined ribbon tab, the anonymous identifier ? (question mark) points to
the Frame in which you selected the command. This way you can access objects within the respective Frame.
Note: The commands on the user-defined context menu only apply to the selected object(s) within the Frame
for which you defined the context menu.
• To create the user-defined ribbon tab or the user-defined context menu, click OK. Plant Simulation shows the rib-
bon tab to the right of the pre-defined ribbon tabs.
• Click to enter the path to and the name of the Method , which tells Plant Simulation to open the dialog, into
the text box below executed method.
• Create a Method with the name you entered above and enter <name_of_your_user_defined_dialog>.open.
• To select more than one object in a Frame at a time, hold down Shift, and click the objects you wish to mark or
drag a marquee over the objects: Hold the left mouse button down, and drag the mouse over the objects, making
sure the marquee encloses all of them, and then release the mouse button. You can also combine both methods.
To select all objects in the Frame window, press Ctrl+A or use the method selectContents.
• To search for any object in the Frame window, click in the Frame window and start typing its name. Plant Simulation
then finds and selects the object.
• To connect objects, use the Connector. The Connector displays handles after you select it. Click a handle to
change its shape, i.e., to make the Connector longer or shorter or to move the anchor point up or down.
• To show or hide connections between objects which you established with the Connector, click on the General
ribbon tab.
• To show or hide the names of the objects you inserted into the Frame, click .
• To prevent another user from modifying the structure of the model, click .
• To edit the icons of the Frame, and to add animation structures to it, click .
• To model transitions between Frames use the Interface. When you connect Frames, which have several Interfaces,
with objects, Plant Simulation opens the dialog Select Interface. Select the Interface the Connector attaches to and
click OK.
• To change the size of the icon of an object you inserted in a Frame, hold down Ctrl and Shift. Then, click anywhere
on the border of the icon and drag the mouse until the size of the icon meets your needs. To return to the original
size of the icon, select Icon > Original Size.
Note: This does not work for a rotated icon.
• To open the Frame you double-click and to close the Frame it is contained in, press the Shift key and double-click
a Frame located within a Frame.
• To move down in the hierarchy of Frames, closing the active Frame, and opening the next Frame one level down
in the structure, select Down one Level on the context menu.
• To open the window of the Frame from which the current Frame was derived, click Open Origin on the Home
ribbon tab.
• To close the active Frame and open its location, click Open Location .
• To assign the different states a Frame can be in, you can use the attributes StateBlocked, StateEntryShut, StateRe-
sourceMissing, StateSetup, StateWorking, Stopped, and Unplanned. The Frame then shows the state it is in in the LED
area along the top of the icon.
LED Means that the Frame is Looks like this
red Failed
pink Stopped
blue Paused
green Working
yellow Blocked
brown Setting-Up
• To manipulate any of the vector graphics, click the Vector Graphics ribbon tab, double-click the shape and edit
the Graphic Settings.
• To show the stacking order of the mobile objects in the Frame in a tooltip, drag the mouse over the part.
Click the Connector in the Toolbox to activate connect mode. The mouse pointer turns into crosshairs (+).
When you connect objects in the Frame, Plant Simulation attaches the connecting line to the front end of the cursor
, allowing you to actually see the connection before setting it.
To connect object A and object B, first click object A and then object B.
Note: Plant Simulation only shows the connection, when you select > Show Connections on the General ribbon
tab.
• To connect several objects one after the other without having to return to the Toolbox each time you estab-
lished a connection, hold down Ctrl, while you establish the connection.
• To automatically connect the objects while you insert them, place the objects right next to each other, when you
insert them. You will then have to manually move the objects to their final position.
Note: This only works, when File > Preferences > Modeling > Connect automatically is active. In addition the
position of the exit of the one and the entrance of the other object are to be no more than 3 pixels apart.
• To tell Plant Simulation where and how to place the Connector in the Frame, hold down Shift, Ctrl, or Alt while you
establish the connection:
• Connector, no key: Plant Simulation aligns the connection to the grid, i.e., to the grid points next to the location
where you click the mouse button.
• Connector+Ctrl: Plant Simulation stays in connect mode, so you can connect several objects one after the other
without having to return to the Toolbox each time you established a connection.
• Connector+Shift: Plant Simulation inserts the connection at a right angle, regardless of where you click.
• Connector+Alt: Plant Simulation sets anchor points of the connection at the location where you click. Note that
this is similar to the freehand drawing feature.
• To create a non-straight connection, set one or more anchor points: First, click object A, proceed to point 1
and click once, then proceed to point 2, click once, and finally move to object B and click the mouse button once
to establish the connection.
• To create a right-angled connection, hold down Shift and click the left mouse button to set the anchor point.
• To move an anchor point, click it, hold the mouse button down, and drag the handle to the desired loca-
tion. Plant Simulation also moves the Connector.
• To check if all connections between the objects really have been established, click Unconnected Objects on the
General ribbon tab. Plant Simulation selects all objects with unconnected entrance and exit points.
• To make the connecting line thicker, enter a higher number into the text box Weight.
To make the connecting line thinner, enter a lower number into the text box Weight.
• To select another color than the default black, in the dialog Colors, click the field next to Color.
You can select one of the predefined colors or you can click More Colors and click the Select button to select a
color in the color matrix. Then click OK. Plant Simulation shows this color next to More Colors and uses it as the
active color.
Or you can click Custom and select a color in the color matrix. Move the mouse in the color matrix over the area
that is similar to the color you want. You can set the attributes of the color with the scrollbar on the right hand
side. Click OK to make this color the active color in the program.
• To show the source and the target of the Connector in the Frame as a Tooltip, drag the mouse over the Connector.
• To exchange the successor of a Connector, select the end point of the Connector and drag it to another object.
To exchange the predecessor of a Connector, select the starting point of the Connector and drag it to another ob-
ject
• To place an object, which you insert from the Class Library into a Frame, in between two already connected
objects, drag that object onto that spot of the Connector and drop it there. In this process Plant Simulation exchang-
es the successor of the original Connector.
This also works when you drag a Frame, which contains exactly one suitable entrance Interface and exactly one
suitable exit Interface, onto the Connector.
• To automatically connect predecessor and successor when deleting an object located between other con-
nected objects, hold down the Ctrl key while you delete the object with the context menu command Delete.
When you work with the Delete key, select the object(s) you want to delete, and press Delete. Follow the instruc-
tions in the dialog that opens.
Note: This does not work when an object has more than one predecessor and successor. If the object has a
successor, Plant Simulation exchanges the successor of all preceding Connectors. If the object has a prede-
cessor, Plant Simulation exchanges the predecessor of all succeeding Connectors.
• To reorder the sequence of the succeeding objects, i.e., the sequence of the Connectors, click the object with
the right mouse button and select Reorder Successors.
In this case, you will have to connect the component (Frame) to the material flow objects or Frames that precede
and succeed it in the sequence of stations with the object Interface . The transitions are the places where MUs move
from one Frame to another or from a material flow object to a Frame and vice versa. Plant Simulation shows if the
Interface you inserted into a Frame is connected to another object with a Connector or not connected . Plant Simu-
lation also recognizes if an Interface is an entrance or an exit.
You can insert the Interface into your simulation model from the folder MaterialFlow in the Class Library or from the
toolbar Material Flow in the Toolbox.
To model transitions, click the folder or the toolbar Material Flow and insert as many objects of type Interface
anywhere in the Frame.
• Select the side of the icon of the Frame at which the Interface is to be located: on the Top, on the Right hand side,
on the Bottom, or on the Left hand side of the Frame.
• Enter the maximum number of external connections the Interface may have. Depending on the type, any number
of Interfaces may have more than one predecessor or successor.
The predecessor is the object that is connected to the selected object with a Connector and that is located in front
of it in the sequence of stations in the simulation model.
The successor is the object that is connected to the selected object with a Connector and that is located after it in
the sequence of stations in the simulation model.
• Enter the position of the Interface on the side of the Frame it is inserted into in percent into the text box Position
in %. You can enter a value between 0 and 100 percent. Plant Simulation uses the value you enter, when you acti-
vate File > Preferences > Modeling > Connect automatically. Connecting objects automatically only works when
the exit of FrameA and the entrance of FrameB are not more three pixels apart.
• An Interface object you insert into a Frame and connect with a Connector shows its Type in the dialog: either Entrance
or Exit.
• If need be, you can also select an exit strategy on the tab Exit Strategy.
• Plant Simulation shows the current simulation time of the simulation run in the box next to Time. Click Time to
change the display of the time between the:
• Relative time: Plant Simulation resets the relative time to zero, when it starts the simulation run. This is the
default.
• Current time plus simulation time: Plant Simulation adds the simulation time to the time and date at which
it started the simulation run.
Let us assume today is March 13, 12 o’clock noon and the simulation is to run for two days:
• For the setting relative time Plant Simulation shows 2:00:00:0000, i.e., two days.
• For the setting current time plus simulation time Plant Simulation shows 15.03.2003 12:00:00.00, i.e., March
15, 12 o’clock noon, after the simulation run is finished.
• To initialize your simulation model, click Start/Stop Simulation. Plant Simulation executes all Methods named Init.
Methods being executed when you click Start/Stop Simulation will be processed first.
Plant Simulation initializes the simulation model before it executes the next scheduled event.
Note: Plant Simulation automatically executes init methods when you start the simulation for the first time or when
you stopped the simulation and clicked Reset Simulation and you did not click Start/Stop Simulation be-
fore you started the simulation.
• To reset your simulation model, do one of the following:
• Click Reset Simulation.
• To stop the simulation after the active simulation event has been processed, do one of the following:
• Click Start/Stop Simulation.
You will:
• Select Settings for the Simulation
• Working with the Event Debugger
• Plant Simulation shows the current simulation time of the simulation run in the box next to Time.
Click Time to change the display of the time between the:
• Relative time: Plant Simulation resets the relative time to zero, when it starts the simulation run. This is the
default.
• Current time plus simulation time: Plant Simulation adds the simulation time to the time and date at which
it started the simulation run.
Let us assume today is March 13, 12 o’clock noon and the simulation is to run for two days:
• For the setting relative time Plant Simulation shows 2:00:00:0000, i.e., two days.
• For the setting current time plus simulation time Plant Simulation shows 15.03.2003 12:00:00.00, i.e., March
15, 12 o’clock noon, after the simulation run is finished.
• Enter the Date and the time the absolute time during the simulation is based on.
• Enter the time when the simulation run will be finished. Enter a relative time, i.e., the period of time the simu-
lation runs. Plant Simulation compares this period with the simulation time and stops the simulation run when
both are identical. Let us assume it is March 13, 12 o'clock noon and the simulation is to run for two days. Enter
2:00:00:00 into the text box End. If you do not want to write this out in full, you can also just type 2::: and
click Apply to have Plant Simulation translate this to the full format 2:00:00:00.0000.
• Enter the time the EventController resets the statistics. Plant Simulation starts collecting statistical data for all mate-
rial flow objects anew from this time on.
• To subtract the simulation time from the active absolute time during the simulation run, select Backwards. The
absolute time, which the EventController shows then appears to be running backwards. The simulation itself still
uses positive times.
• To delete all MUs from all Frames, when you reset the simulation model by clicking the Reset Simulation button
or by calling the method reset, select Delete MUs on reset.
• To step over animation events and to stop at the next event relevant to the simulation, select Step over animation
events and click Single Step Simulation on the tab Controls.
• To pause the simulation until the time span between two events has elapsed in real-time, select Real-time.
Note: Normally Plant Simulation does not take the time span in between events into account, as it is a discrete
event simulation system.
Enter the scaling factor for real-time mode. The scaling factor sets the time that elapses between two events in
real-time.
The duration of an event in real-time is the simulation time divided by the scaling factor you entered. The result-
ing duration is an integer.
• Click the List button on the tab Controls. The event list contains the types of scheduled events, which the
objects in your simulation model entered and which the EventController has to process. It is sorted ascending by
time, tells the type of event, the scheduled processing time, and lists recipient and sender of the event.
Double-click a cell in the row where you would like to insert a single breakpoint. Then, the Event Debugger stops
the simulation run immediately before the EventController processes that event. Double-click the row again to de-
lete the breakpoint.
• Select the check box Breakpoints active.
• Click Breakpoints to open the list of the breakpoints you defined.
• Click Insert in the dialog Breakpoint to add an additional breakpoint.
• You can also use an event from the list in the EventController to define breakpoints. Select the event in the list and
click Stop at Selected Event. This adds this event to the list of defined event breakpoints. You can also edit the
selected event.
• To process a single event and stop the simulation again, click Single Step Simulation .
• To proceed with the simulation until the EventController reaches the next breakpoint, click Start/Stop Simulation.
Example 1
In this example we watch all exit (Out) events for the Entity with the ID 1, meaning that we track the course the
Entity takes through the plant.
If you would like to create a breakpoint for each Entity, delete the ID of the MU.
Example 2
In this example all MUs leaving SingleProc1 define a breakpoint.
This time we do not enter a Receiver, as we want the EventController to insert a breakpoint for each leaving part. The
Sender is SingleProc1.
Example 3
In this example only MUs of a certain class located on SingleProc1 insert a breakpoint during a certain time span.
Plant Simulation inserts a breakpoint when a part of the class .MUs.Entity located on SingleProc1 creates an Out event
between 1 hour and 3 hours.
At times you only want to insert breakpoints when certain conditions are met. Enter these conditions into the text
box next to Condition. A condition may be a certain value or certain states of the simulation model or properties,
i.e., attributes, of mobile parts. You can also enter methods, returning a boolean value as a result, which will then
be evaluated.
Example 4
In this example we use a property of the part as a condition for a breakpoint.
Plant Simulation inserts a breakpoint, when a part of the class .MUs.Entity, which is less than 100 meters long, causes
an Out event on SingleProc1. Note that the unit depends on the settings you selected under File > Model Settings/Pref-
erences > Units > Length.
If you would like Plant Simulation to create a trace file that tracks all events, enter a name into the text box Trace File
in the dialog Event Debugger and select the check box Trace active.
If you would to only create a trace file for a certain event, enter a file name into the text box Trace File in the dialog
Breakpoint.
Example 5
In this example we track the course the Entity with the ID 9 takes through a simulation model and write the stations
to a trace file.
With the settings shown in the dialog above, Plant Simulation inserts a breakpoint for each Out event of the Entity
with the ID 3 and writes this event to the file c:\Exercises\trace3.txt. Note that this only works when you
selected the check box Trace active in the dialog Event Debugger. When you clear the check box Breakpoints active,
Plant Simulation writes the trace file without stopping your simulation using a breakpoint.
In the examples above we only used Out events. You can, of course, also use any of the available types of events,
compare the List of scheduled events.
• To delete all mobile objects when you reset your simulation model, select the check box Delete MUs on reset in
the EventController.
Note: If you would like to use an object reference instead of the absolute path, type an asterisk in front of the
path. For the example above you would type *.Models.MyPlantAnytown.MyBroker.
Note: If you do not want to use the absolute path, but the relative path, click and select the object you
would like to use in the dialog Select Object.
• Duplicate i.e., to copy the selected object or model and create a new class: Hold down the Ctrl key, drag the object
to another location in the Class Library, and release Ctrl.
• Define the drag-and-drop control for the Frame. Open the Frame and click Edit Interaction Controls on the Home
ribbon tab.
• Right-click in the text box next to drag-and-drop and select Create Control.
• Change the source code of the control so that it matches the instructions below:
SimTalk 2.0 notation looks like this:
param draggedObjects: object[] ‐‐ one‐dimensional array with n objects
‐‐ the size of which can change
var obj: object
‐‐ @,?: drop target
for var i := 1 to draggedObjects.dim
obj := draggedObjects[i]
‐‐ enter your source code here
print 1, ": ", draggedObjects[i] ‐‐ prints the dragged objects to the Console
next
SimTalk 1.0 notation looks like this:
(draggedObjects : object[]) ‐‐ one‐dimensional array with n objects
‐‐ the size of which can change
is
obj : object;
do
‐‐ @,?: target object onto whicht the dragged object was dropped
for local i := 1 to draggedObjects.dim loop
obj := draggedObjects[i];
print i,": ",draggedObjects[i]; ‐‐ prints the dragged objects to the Console
next;
end;
• Select the production line, drag it over the Frame, and drop it there.
The Console then shows the dragged objects that were dropped.
• To actually see the array containing the dropped objects, we added debug; to the source code.
This opens the Method debugger when you drag the objects over the Frame and drop them there. The row with the
name draggedObjects on the tab Variables then shows the array containing these objects.
and the Buffer their own real length and their dimension as well as the length and the dimension of the MUs, which
transfer onto them, are irrelevant.
• Length-oriented material flow objects whose own real length and dimension as well as the length and the di-
mension of the MUs, which transfer onto them, are used during the simulation. Length-oriented objects are the
Line, the Track, the TwoLaneTrack and the FootPath, the Container and the Transporter.
As opposed to the regular length-oriented objects, the AngularConverter consists of two straight segments, not of
a sequence of straight and curved segments. The Converter consists of single straight segment. The Turntable con-
sists of a single straight segment. The Turnplate consists of straight segment that sets the diameter of the Turnplate.
• Clear Blocking, so that the Source creates another MU exclusively at the time of creation you entered.
Note: When the Source is temporarily not operational because it is Failed, Paused, or Blocked, the times of cre-
ation may shift, when you select Blocking. Then, the settings for the times of creation cannot be realized.
Next to information about the name and number of the produced entities, the Delivery Table may also contain values
of their attributes. The Delivery Table has five columns.
Note: Instead of the data type time for the Delivery Time you can also use the data types date, dateTime, or real. When
you use date or dateTime, the start time of the simulation has to be before the time you enter.
Each row of the Delivery Table defines a single order for producing MUs:
• Enter the time at which the Source produces the MUs into the column Delivery Time.
• Enter the class of the MU into the column MU. You can also use drag-and-drop of the MU class to accomplish
this.
• Enter the number of MUs to be produced into the column Number.
Note: When you enter 0 as Number into a row, Plant Simulation does take the specified interval for the next cre-
ating cycle into account. This means that it does not skip this row, but does not produce a part during
this cycle.
• Enter a name for the MUs to be produced into the column Name.
Note: You have to enter the Delivery Time and the MU. When you do not enter a Number, Plant Simulation pro-
duces a single MU. When you do not enter a Name, the MUs, which the Source produces, use the name of
their class.
• In addition you can, but you do not have to enter the name of a sub-table into the column Attributes. Enter the
attributes whose value the Source sets and the user-defined attributes that it creates, when it produces the MUs,
into that sub-table.
Note: Plant Simulation assigns the data type of the column containing the value of the attribute to the data type
of the attribute itself. Plant Simulation assigns the value you enter into the cell to the generated attribute.
To produce MUs according to the time, the type, and the number of parts you entered into a Delivery Table:
• Select Time of creation > Delivery Table.
• Click and select the delivery table you would like to use in the dialog Select Object. Or
Drag your delivery table over the text box Table and drop it there.
• Click OK.
The Source:
• Produces the first MU at the time you enter for Start.
• Produces the next MU after the time you enter for Interval has elapsed.
• Stops producing MUs at the point in time you enter for Stop. Enter 0 into the text box Stop if you do not want
to apply a time limit.
When you select Time of creation > Interval Adjustable or Time of creation > Number Adjustable you can also select
how the Source produces which types of MUs.
• Produce a Single Part Type Only
• Produce Parts in a Fixed Sequence Over and Over Again
• Produce Parts in a Fixed Sequence One Time Only
• Produce Parts According to a Random Frequency Entered into a Table
• Enter the names of the MU classes to be produced into the cells below MU of the table.
• Enter the number of MUs to be produced into the cells below Number.
• You can, but you do not have to enter a Name and Attributes into columns 3 and 4 of the table.
Note: When you do not enter a Name, the MUs that the Source produces use the name of their class.
• To make the Source produce the number of MUs you specified in a row of the sequence table all at once in a single
batch before moving the entire batch on, select Generate as batch. Once the Source has processed the entire se-
quence, it starts processing the information in the table again starting at the beginning of the sequence.
To make the Source produce the MUs as a sequence of individual MUs, clear the check box. When the Source pro-
duces the MUs as a batch, it attempts to produce the entire set of entities at the given start time and to move
them on to the next object.
• Enter the names of the MU classes to be produced into the cells below MU into the table.
• Enter the number of MUs to be produced into the cells below Number.
• You can, but you do not have to enter a Name and Attributes into columns 3 and 4 of the table.
Note: When you do not enter a Name, the MUs that the Source produces use the name of their class.
• To make the Source produce the number of MUs you specified in a row of the sequence table all at once in a single
batch before moving the entire batch on, select Generate as batch.
To make the Source produce the MUs as a sequence of individual MUs, clear the check box. When the Source pro-
duces the MUs as a batch, it attempts to produce the entire set of entities at the given start time and to move
them on to the next object.
• Enter the names of the MU classes to be produced into the cells below MU into the table.
• Enter the frequency number for each class of MU to be produced into the cells below Frequency.
When the Source produces the MUs, Plant Simulation selects and processes a random generation order according
to the frequency you entered here.
• Enter the number of MUs to be produced into the column Number.
• You can, but you do not have to enter a Name or an Attributes table.
Note: When you do not enter a Name, the MUs that the Source produces use the name of their class.
To check which part types were produced at which point in time, you can activate the check box Creation table on
the tab Statistics and then open the table.
• Enter the names of the MU classes to be produced into the cells below MU into the table.
• Enter the percentage portion for each class of MU to be produced into the cells below Portion.
• Enter the number of parts to be produced into the cells below Number.
• You can, but you do not have to enter a Name or an Attributes table.
Note: When you do not enter a Name, the MUs that the Source produces use the name of their class.
• Click OK.
When you select Time of creation > Interval Adjustable or Time of creation > Number Adjustable you can also select
how the Source produces which types of MUs.
C
Before you can enter the Trigger, click the toggle button Inheritance, so that it looks like this .
• Click Trigger, drag the Trigger that controls the Source from the Frame over the list that opens and drop it there.
• In the dialog of the Trigger enter the Active interval, i.e., the interval during which the Trigger will be active.
Enter the Period length, i.e., the duration of the Trigger’s cycle.
• Click the tab Values and select the Trigger type > Input.
• Click the button Values and enter into the TimeSequence object that opens:
The Point in Time at which the Source creates MUs into the cells on the left hand side.
The current sequence of Values into the cells on the right hand side. An order is a string with this format:
<amount>,<mu_Type>,<distributionType>[,<distribution parameters>].
Note: The string defining this sequence of values may not contain any blank spaces.
You have to enter the amount of MUs to be produced, the type to be produced, and at least a constant value.
When you enter just Const, the Source produces the MUs at the point in time, which you entered into the cell to
the left. When you would like it to produce the MUs with an offset to the time you entered there, enter the num-
ber of seconds after which it produces them after Const.
When you enter a distribution, its values set the time offset to the time you entered into the corresponding left
cell. Note that the offset you enter has to be a positive number!
• Click the tab Actions and click Objects. The Trigger shows the Source in the table.
As the processing stations share a number of features, we set these in their class, MyStation in our example. The class
object passes these properties on to its instances. We
• Define Times in the Class of the Processing Stations
• Define Set-up Behavior in the Class of the Processing Stations
• Enter the Name of the Exit Control in the Class of the Processing Stations
• We want the stations to get the processing time of all parts from the work plan MyWorkPlan. This table object
is located in the Frame in which we build the model, i.e., the root Frame. The station then opens the sub-table
Operations for the respective part and gets the times in the column Processing time of the respective station with-
in this sub-table.
For the processing time we use a Method which we call from the formula. The Method is called processingTimeIn-
Formula.
The source code in SimTalk 2.0 notation looks like this:
‐> time
var PartType := @.EntityType
var Station := ?
var WorkPlan := root.myWorkPlan["Operations", PartType]
result := WorkPlan["Processing time",Station]
The source code in SimTalk 1.0 notation looks like this:
:time
is
PartType : string;
Station : object;
WorkPlan : table;
do
PartType := @.EntityType;
Station := ?;
WorkPlan := root.myWorkPlan["Operations", PartType];
result := WorkPlan["Processing time",Station];
end;
• We want the stations to get the set-up time of all parts from the work plan MyWorkPlan. This table object is
located in the Frame in which we build the model, i.e., the root frame. The station then opens the sub-table Oper-
ations for the respective part and gets the times in the column Set-up time of the respective station within this
sub-table. Self identifies the station contained in the row in the sub-table.
The above statements translate into this formula, which we directly enter into the text box:
root.MyWorkPlan["Operations",@.EntityType]["Setup time",Self]
Enter the Name of the Exit Control in the Class of the Processing Stations
As the station has to find the next station in the sequence of operations after each processing step and move the
part on to this station, we enter the name of an exit control. Program the Exit Control shows how to accomplish this.
• To open the sub-table for the respective work plan, double-click the respective cell below Operations.
• Enter the names of the operations/stations, their set-up times and the processing times of the parts.
Operations MyPart A Operations MyPart B
• Insert a TableFile into the Frame. Drag this table over the text box Table. Plant Simulation automatically assigns
the columns in the table the correct data types and the correct column headers.
• Open the table and enter the type of part you want to produce, how many of them, their name and the name of
the sub-table containing the attributes of the part.
In our example the Source is to produce 1 part of the MU class Entity each with the name MyPartA and MyPartB.
• To create a sub-table for the user-defined attributes of the parts, enter an identifier into the cells below Attributes.
To open this sub-table, double-click the cell. Here we enter the names and the values of two user-defined attri-
butes: One sets the name of the part, the EntityType is either MyPartA or MyPartB. The other sets the position
of the part in the work plan (PositionInWorkPlan). In our case the sequence of operations always starts at po-
sition 0, which is the Source. The counter, which we programmed in the exit control, then steps through the sta-
tions: Milling is position 1, Drilling_A or Drilling_B are position 2 and Packing is position 3.
User-defined Attributes for MyPart A User-defined Attributes for MyPart B
During the simulation run Plant Simulation enters these user-defined attributes into the created Entities. The Entity
with the number 5628, for example, is of type MyPart B and is located on station 3, Packing, according to the po-
sition, which we defined in the work plan as operation.
• Finally, enter the name of the exit control, which finds the processing station and moves the part onto it.
var WorkPlan := root.MyWorkPlan["Operations",@.EntityType]
if @.PositionInWorkPlan = WorkPlan.ydim
@.Move(root.Shipping) ‐‐ end of production
else
var NextStation := WorkPlan["Operation", @.PositionInWorkPlan + 1]
if @.Move(NextStation)
@.PositionInWorkPlan := @.PositionInWorkPlan + 1
end
end
The source code in SimTalk 1.0 notation looks like this:
‐‐ This is the exit control for all stations and for the source.
‐‐ This control can be called several times until the move command is successful.
is
WorkPlan : table;
NextStation : object;
do
WorkPlan := root.MyWorkPlan["Operations",@.EntityType];
if @.PositionInWorkPlan = WorkPlan.ydim
then
@.Move(root.Shipping); ‐‐ end of production
else
NextStation := WorkPlan["Operation", @.PositionInWorkPlan + 1];
if @.Move(NextStation)
then
@.PositionInWorkPlan := @.PositionInWorkPlan + 1;
end;
end;
end;
it continues the search at the beginning of the list and terminates the search when it reaches the successor from the
previous search.
Suppose Station1 is the first station in the sequence of stations in your simulation model, Station2 is the second sta-
tion, MU1 is the first mobile object that entered the flow of materials, MU2 is the second mobile object. Suppose
MU1 is located on Station2, and MU2 is located on Station1 and wants to move to Station2.
Once MU2 is completely processed by Station1, MU2 notifies Station2 that it intends to move to it.
• When Station2 can receive MU2, it notifies MU2, and MU2 moves from Station1 to Station2.
• When Station2 cannot receive MU2 because it is busy, its entrance is locked, etc., MU2 enters itself into the for-
ward blocking list of Station2 and of all other stations it intends to move to.
• When MU1 exits Station2, Station2 schedules an Out event for all entries, i.e., MUs, in the forward blocking list,
including MU2. Afterwards Station2 deletes all entries from its forward blocking list.
• Provided Station2 can receive MU2, MU2 deletes all references to itself from all blocking lists of all stations it
entered itself into, and then moves to Station2.
The material flow objects SingleProc , ParallelProc , Assembly , DismantleStation , Line , Sorter , PlaceBuffer
and Buffer handle the MUs that transfer onto them:
1. For these times, which you define:
• The processing time. This is the time, which the MU remains on the object to be processed. It is the interval
between setting-up for the present type of MU and the point in time when the material flow object moves it
on to its successor.
• The set-up time. This is the time it takes to set-up the object for processing a different type of MU. An iden-
tical name designates that MUs are of the same type.
• The recovery time. This is the time during which the first gate at the entrance of a material flow object is
closed after an MU entered the station. The recovery time is useful to model material handling equipment,
such as a robot that requires a certain time to insert into or remove work pieces from processing stations.
When you enter 0 the gate is always open, a value greater than 0 closes the gate for the specified interval as
soon as the front of the MU has entered the object.
• The cycle time. This is the time during which the second gate at the entrance of a material flow object opens
and closes cyclically, regardless of MUs entering the object. The cycle time is useful to model chain conveyors
with a fixed chain interval that only transport material when a free hook is available.
Note: You do not have to define all of the times listed above for the object.
• To make the Worker carry the MU to the target object, select Carry Part Away.
• To move the parts cyclically to the next successor in line, select Cyclic.
• To cyclically move the part to the successor according to the sequence of successors, which you entered into the
list, select Cyclic Sequence.
• To move the parts to the successor that has been Waiting the longest for an MU, select Least Recent Demand.
• To move the parts to the successor in a linear fashion, according to the sequence of successors, which you en-
tered into the list, select Linear Sequence.
• To move the parts to the successor that contains the greatest number of MUs, select Maximum Contents.
• To move the parts to the successor that received the most MUs, select Maximum Number In.
• To move the parts to the successor with the longest processing time, select Maximum Processing Time.
• To move the parts to the successor with the highest relative occupancy, select Maximum Relative Occupation
• To move the parts to the successor with the longest set-up time, select Maximum Set-up Time.
• To move the parts to the successor that contains the smallest number of MUs, select Minimum Contents.
• To move the parts to the successor that received the smallest number of MUs, select Minimum Number In.
• To move the parts to the successor with the shortest processing time, select Minimum Processing Time.
• To move the parts to the successor with the lowest relative occupancy, select Minimum Relative Occupation
• To move the parts to the successor with the shortest set-up time, select Minimum Set-up Time.
• To move the parts to the successor that has been Waiting the least amount of time for an MU, select Most Recent
Demand.
• To move the MUs on to the successor according to an attribute of the MU, select MU Attribute.
• To move the parts to the successors according to a percentage distribution, select Percentage.
• To move the parts to the successors in a random fashion, select Random.
• To always move the part to successor with the number 1, select Start at Successor 1.
Note: Click Apply, to apply your new settings, and to display additional dialog items, which the selected exit strategy
requires.
Select the Broker, enter the required Services into the services list, and enter the Priority with which the importer pro-
vides these services. To prevent the Worker from waiting too long for additional parts to arrive, enter the Maximum
dwell time. After it has passed, he walks to the target station, the MU target, and puts the part down.
The Worker evaluates the MU targets and moves to the closest one first. At the target station, he places all parts
destined for this station. If he carries additional parts, he evaluates the next target and moves on to the closest one.
To send a Worker to a specific station, you can use the methods goTo and goToPool. To change the services for an
available Worker, you can use the method services.
Compare the topic Model a Worker Who Carries Parts Between Workplaces.
Cyclic
To move the part cyclically to the next successor in line, select Cyclic from the drop-down list.
• When you select Blocking , the object moves the MU onto the object, which in sequence of successors
immediately follows on the object onto which an MU was last transferred.
• When you clear Blocking , the object moves the MU to the next object in the sequence of successors,
which can receive a part.
Once the object reaches the end of the sequence of successors, it continues the search at the beginning of the se-
quence and terminates the search when it reaches the successor from the previous search.
Cyclic Sequence
To cyclically move the part to the material flow object’s successor according to the sequence of successors, which
you entered into the list repeatedly, select Cyclic sequence from the drop-down list.
Note: Click Apply, to apply your settings, and to display the button Open List.
Click Open List and enter the number of the succeeding object into the corresponding cell of the list. When you
enter 2 into the cell in row 1, the object first moves the MU to the successor with the number 2.
The successor to which the object moves the MU is the next one in line that can receive it in the sequence, which
you entered into the list. When the object arrives at the last entry in the list (last object in the sequence), it returns
to the first entry and processes the list again.
The same successor object may be contained several times, one after the other, in the list. Then the object attempts
to move the part to this same successor as often as it is contained in the list.
• When you select Blocking , the object only moves the MU, when the designated successor is ready to
receive it.
• When you clear Blocking , the object attempts to move the part to the corresponding successor, begin-
ning with the active entry of the list.
When the object arrives at the last entry in the list, i.e., the last object in the sequence, it returns to the first entry
and processes the list again.
Linear Sequence
To move the part to the material flow object’s successor in a linear fashion, one time only, according to the sequence
of successors, which you entered into the list, select Linear sequence from the drop-down list.
Note: Click Apply, to apply your settings, and to display the button Open List.
Click Open List and enter the number of the succeeding object into the corresponding cell of the list. When you
enter 3 into the cell in row 1, the object first moves the MU to the successor with the number 3.
The successor to which the object moves the MU is the first one in line that can receive it in the sequence, which
you entered into the list.
• When you select Blocking , the object only moves the MU to the first successor in the list of successors.
• When you clear Blocking , the object moves the MU to the first available successor in the list of succes-
sors.
Maximum Contents
To move the part to the successor that contains the highest number of MUs, select Max. contents from the drop-
down list.
Note: This only works correctly, when resource statistics of the successor or of the predecessor is active
.
• When you select Blocking , the object moves the MU to the next successor.
• When you clear Blocking , the object moves the MU the next successor, which can receive the MU.
Maximum Number In
To move the part to the successor that received the most MUs, select Max. num. in from the drop-down list.
Note: This only works correctly, when resource statistics of the successor or of the predecessor is active
.
• When you select Blocking , the object moves the MU to the next successor.
• When you clear Blocking , the object moves the MU the next successor, which can receive the MU.
Note: This only works correctly, when resource statistics of the successor or of the predecessor is active
.
• When you select Blocking , the object moves the MU to the next successor.
• When you clear Blocking , the object moves the MU the next successor, which can receive the MU.
.
• When you select Blocking , the object moves the MU to the next successor.
• When you clear Blocking , the object moves the MU the next successor, which can receive the MU.
.
• When you select Blocking , the object moves the MU to the next successor.
• When you clear Blocking , the object moves the MU the next successor, which can receive the MU.
Minimum Contents
To move the part to the successor that contains the least number of MUs, select Min. contents from the drop-down
list.
Note: This only works correctly, when resource statistics of the successor or of the predecessor is active
.
• When you select Blocking , the object moves the MU to the next successor.
• When you clear Blocking , the object moves the MU the next successor, which can receive the MU.
Minimum Number In
To move the part to the successor that received the least number of MUs, select Min. num. in from the drop-down
list.
Note: This only works correctly, when resource statistics of the successor or of the predecessor is active
.
• When you select Blocking , the object moves the MU to the next successor.
• When you clear Blocking , the object moves the MU the next successor, which can receive the MU.
.
• When you select Blocking , the object moves the MU to the next successor.
• When you clear Blocking , the object moves the MU the next successor, which can receive the MU.
.
• When you select Blocking , the object moves the MU to the next successor.
• When you clear Blocking , the object moves the MU the next successor, which can receive the MU.
MU Attribute
To move the parts on to a successor according to the values of attributes of the part, select Most recent demand
from the drop-down list.
Note: Click Apply to display the dialog items of this strategy.
Click Open List to open a table, into which you can enter the names of the user-defined or the built-in attributes,
their values, and the numbers of the successors. The object searches the table from top to bottom until it finds an
attribute with the value you entered. It then moves the MU on to that successor.
Note: Create the user-defined attributes for the parts on the Tab User-defined.
• Default Successor
Enter the number of the default successor. This is the successor to which the object moves the MUs, when none
of the MUs has an attribute with the Value you entered into the TableFile.
• Attribute Type
Select the data type of the attribute from this drop-down list, compare Data Types.
Percentage
To move the part to the successors according to a percentage distribution, select Percentage from the drop-down
list.
Note: Click Apply, to apply your settings, and to display the button Open List.
Click Open List and enter the percentages in the list that opens. The n-th row in the table defines the n-th successor’s
portion: When you enter 20 in row 1, for example, the object moves 20 percent of the MUs it received to the suc-
cessor with the number 1, etc.
The object always moves the MU to the successor with the greatest difference between the rated value and the cur-
rent value.
• When you select Blocking , it moves the MU to the successor with the highest deviation from the nom-
inal percentage.
• When you clear Blocking , it moves the MU to the successor, which can receive the MU with the highest
deviation from the nominal percentage.
Note: The actual percentages reached may differ from the nominal ones due to a low number of total transfers
and to the Blocking-state of successors.
Any previous transfers of MUs affect the Percentage strategy, as they alter the deviation from the nominal
transfer frequencies.
Plant Simulation sums up the values you entered into the list of nominal percentages to obtain the value that matches
100 percent. The distribution pattern only depends on the relative size of the values, not on their magnitude. This
way you can, for example, either enter [1;2] or [0.3333…; 0.6666…], the result will be the same.
If the distribution pattern is periodic, then it is so right from the beginning. This means that the distribution pattern
at the start of a simulation run does not differ from the distribution pattern at a later point in time. These examples
demonstrate, how nicely the values are balanced:
• If you assign the values 1 and 2 to the exits 1 and 2 respectively, Plant Simulation generates this sequence of exits:
212 212 212 212 212
• If you assign 2 and 3 to the exits 1 and 2, Plant Simulation generates this sequence of exits:
21212 21212 21212
• If you assign the values 1, 2, 4 and 8 to the exits 1, 2, 3, and 4, Plant Simulation generates this sequence of exits:
434243414342434 434243414342434
Random
To move the part to the successors in a random fashion, select Random from the drop-down list.
Click Open List and enter the percentages in the list that opens. The n-th row in the table defines the n-th successor’s
portion: When you enter 20 in row 1, for example, the object moves 20 percent of the MUs it received to the suc-
cessor with the number 1, etc.
• When you select Blocking , the object determines the successor using the built-in random-number gen-
erator.
• When you clear Blocking , the object determines the successor using the built-in random-number gen-
erator until it either computes a successor, which can receive the MU or the object has iterated through all suc-
cessors.
A previous call to the random number generator does affect the Random strategy. The order in which the successors
are iterated through is not predictable.
Start at Successor 1
To always move the part to the material flow object’s successor with the number 1, select Start at successor 1 from
the drop-down list.
• When you select Blocking , the object moves the MU to the first successor in the list of successors.
• When you clear Blocking , the object moves the MU to the first successor in the sequence of successors,
which can receive the MU.
Note that a previous search for a successor does not affect the strategy Start at successor 1.
In our example below we show how the FlowControl moves the parts on to its successors according to an attribute
of the part. If a part has more than one attribute, it suffices if one of the attributes meets the criteria, which you
defined in the attribute list. If a part has several attributes though, and none of these attributes meet the criteria in
the list, you can determine what happens to the part by entering different values for the default successor of the
FlowControl:
• When you enter the number of a successor, the FlowControl moves the part to that successor. When you accept
the default setting 1, it moves the part on to the successor object with the number 1.
• When you enter 0, the FlowControl does not move the part on. It remains in front of the FlowControl, thus blocking
the following parts.
• When you enter ‐1, Plant Simulation shows an error message.
The finished simulation model looks like this:
• We then selected the name of the delivery table, which we inserted before, namely MyDeliveryTable. Selecting it
automatically applied the correct format.
• Next, we entered the required information, compare the screenshot below. The Source, which we named PartsIn
in our sample model, produces six different parts with the names we entered into the column Name.
To enter the attributes according to which the FlowControl distributes the parts among its successors, type in any
name of your choice into the column Attributes to create a sub-table with this name, and then double-click the
name.
• For the part with the Name Red, we typed in MyAttr, double-clicked the cell, and entered Color as the Name
of the Attribute and Red as the color of the part.
• For the part with the Name BlackRound, we typed in MyAttr, double-clicked the cell, and entered Color as the
Name of the Attribute and Black as the color of the part. We also entered a second attribute, namely Shape,
and typed in Round as its shape.
• For the part with the Name BlackOctagonal, we typed in MyAttr, double-clicked the cell, and entered Color
as the Name of the Attribute and Black as the color of the part. We also entered a second attribute, namely
Shape, and typed in Octagonal as its shape.
When the Source produces the parts, it creates the attributes, which we entered above, as user-defined attributes of
data type string for the respective part.
Then, insert the other objects into the plant, so that they match the screenshot below.
• Then, click Open List to open the table, into which you have to enter the names of the attributes, their values,
and the numbers of the successors. The FlowControl searches the table from top to bottom until it finds an attri-
bute with the value you entered. It then moves the part on to that successor.
• The number of the default successor decides to which successor the FlowControl sends the part whose attributes
do not meet the criteria in the list. In our example neither the attribute Color nor the attribute Shape of the part
BlackOctagonal meets the criteria.
• Run the simulation and watch what happens:
• When you use the default setting 1, the FlowControl moves the part on to the successor object with the
number 1.
• When you enter 0, the FlowControl does not move the part on. It remains in front of the FlowControl, thus block-
ing the following parts.
• When you enter ‐1, or any other negative number, Plant Simulation shows an error message. You can then react
accordingly by determining what should happen to the part.
In our example below we load a block of four parts onto a pallet, which is transported to another section within
the plant on a conveyor line. At the location in the plant, which is marked by a sensor, we unload parts in blocks
of two from the pallets and reload them onto a transport vehicle. Finally, we unload parts in blocks of one from
the transport vehicle onto a processing station and then remove them from the plant.
• Insert a Source , which creates the parts. In our sample model we named it SourceParts.
• Insert a ParallelProc , which processes the parts before they are loaded onto pallets.
• Insert a Source , which creates the pallets onto which the TransferStation loads the parts. In our sample model
we named it SourcePallets.
• Insert a TransferStation , which loads the processed parts onto the Container , i.e., the means of transport,
which moves on the conveyor. In our sample model we named it LoadingStation. Then, we tell this station
what we want it to do.
• We want to load parts, so we select Load as the Station type.
• Then, we have to tell it where the parts to be loaded come from. For this we click the button and select the
parallel station ParallelProc in the dialog Select Object.
• Next, we have to tell it where the means of transport, our Container, is located. For this we click the button
and select the Line in the dialog Select Object.
• Finally, we have to designate the exact spot on the line, where the LoadingStation loads the parts onto the pallets.
For this we type 56.5 meters as the position of the sensor into the text box on the tab Attributes. The Loading-
Station automatically inserts this sensor into the object Line.
To show a tooltip with information about the sensor, drag the mouse over the red line designating it on the
object.
Note: To successfully transfer the MU onto the target station, you have to make sure that the target station pro-
vides enough space to accommodate the incoming MU.
To set how we want the parts to be loaded, we click the tab Advanced Attributes.
• We want to load all blocks of parts in blocks of 4.
station onto which the parts will be placed. The reloading process starts as soon as both means of transport are
ready.
To model a reloading process, proceed like this:
• Insert a Source , which creates the Transporters. In our sample model we named it SourceTransporters.
• Insert the Track , on which the Transporter transports the reloaded parts.
• Insert a TransferStation , which reloads the transported parts from the Container onto the Transporter . In
our sample model we named it ReloadingStation. Then, we tell this station what we want it to do.
• We want to reload parts, so we select Reload as the Station type.
• Then, we have to tell it where the parts to be reloaded come from. For this we drag the Line from the Frame
over the text box in the dialog of the ReloadingStation and drop it there.
• Next, we have to tell it where the means of transport, our Transporter, is located. For this we drag the Track
from the Frame over the text box in the dialog of the ReloadingStation and drop it there.
• Finally, we have to designate the exact spot on the Line, where the ReloadingStation removes the parts from the
pallets. For this we enter 40.5 meters as the position of the sensor, which the ReloadingStation automatically
enters into the object Line.
• As we want to reload the parts from the pallet onto a Transporter, we have to designate the exact spot on the Track,
where the ReloadingStation loads the parts onto the Transporter. For this we enter 16 meters as the position of the
sensor, which the ReloadingStation automatically enters into the object Track.
Note: To successfully transfer the MU onto the target station, you have to make sure that the target station pro-
vides enough space to accommodate the incoming MU.
• To set how we want the parts to be reloaded, we click the tab Advanced Attributes. We want to load parts in
blocks of 2.
• To set how we want the parts to be unloaded, we click the tab Advanced Attributes. We want to unload all blocks
of parts in blocks of 1.
• Insert a Method, enter deleteMovables as the source code, and name the Method reset.
Setting a Station Up
You can define how to set up the objects SingleProc , ParallelProc , Assembly , DismantleStation and Drain
to process another type of MU.
You can:
• Select Set-up Options on the tab Set-Up.
• Select the Set-Up Time on the tab Times.
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
Note: The ParallelProc does not provide the setting After n parts.
The object always sets up for the part type, which is going to enter next. For this reason the set-up process does
not start immediately after the n-th part has been processed or when this part exits the object. setting-up starts as
soon as the (n+1)-th part enters the station.
Select Before Next Part to set the object up immediately after the n-th part was processed. Select After Last Part to
set the object up after the n-plus-first part wants to move onto the station.
The object always sets up for the part type, which is going to enter the object next.
Note: The number of parts is the number of parts entering the station. These parts do not necessarily have to be
processed. Statistics also counts parts, which are removed from the station before they have been processed,
for example during the set-up process or while the station is waiting for a service to be performed.
When setting-up, the time may not only depend on the target type, for which you want to set-up, but also on the
source type. In this case you can define the times in a table. Activate the user-defined row index and the user-de-
fined column index of the table. The row index designates the source type. The column index designates the target
type.
In our example above setting-up from no type, indicated by the hyphen, to the target type Entity takes exactly one
minute. setting-up from the type Entity to the type Transporter takes two minutes and seven seconds.
When you select the Formula distribution, you can enter a numeric expression or the name of a Method. You can use
the anonymous identifier @ to access the MU for which the set-up time applies.
Note: You can also determine the set-up time in a user-defined attribute of data type method, which you created for
the MU!
• Select a distribution from the drop-down list and enter the required values .
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
Enter Times
Plant Simulation inputs and outputs data referring to times in the format 1:00:00:00, standing for, left to right,
days:hours:minutes:seconds.split seconds. 12:34 for example, means 12 minutes and 34 seconds.
If you do not want to write one day out in full, just type 1::: and click Apply . Plant Simulation then trans-
lates this to the full format 1:00:00:00.
1 minute 1 hour 1 day
You can also enter numbers without the colon. Plant Simulation will then interpret the number as seconds and con-
verts it into the above format. 111 (seconds), for example, is 1 minute and 51 seconds.
You can change time-related settings under File > Model Settings/Preferences > Units > Time scale.
Enter the corresponding values into the text box. Note that the lower bound and the upper bound are optional,
you can, but do not have to enter them.
• Enter the name of the TableFile object into the text box. Enter the names of all MUs to be processed into column
1 of the table and the corresponding times in seconds into column 2. Plant Simulation then uses this time as the
processing time for the corresponding MU type.
During the simulation run Plant Simulation reads the processing time from that table.
result := 120
end
Modeling Failures
To closely model real situations, where machines fail at times, you can define one or several failure profiles. Failures
do affect the technical availability of the individual stations. You can:
• Manually fail the object by selecting Failed in the dialog of the material flow object. When you fail the object like
this, you will also have to manually remove the failure by clearing the check box again.
When you manually fail a station, it remains failed while any of the failure profiles you defined is active. It will change
to not failed once the last failure (DisruptionEnd) of the last failure profile is over or you clear the check box .
As soon as the failure starts, the object changes to inactive for the duration of the failure. During this time it will
not receive any parts. If a part is located on the object, its processing is interrupted for the duration of the failure
and continues once the failure is cleared. Plant Simulation adds the duration of the failure to the processing time or
to the dwelling time.
195
Modeling Failures
If an MU could not enter the object because of a failure, Plant Simulation reactivates the MU with the un-blocking
mechanism as soon as the failure ends.
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
Define Failures
Note: When you change failure settings, we recommend to first clear the check box Active and to then click Apply.
Then change your settings, apply them, and select the check box Active again. This ensures that the next
failure event (DisruptionBegin/DisruptionEnd)will be calculated with a complete valid set of parameters.
Note: The failure of the object is only active, when you activate Active the check box on the tab Failures and the
check box Active of the corresponding failure profile!
196
Modeling Failures
197
Modeling Failures
5. Select a distribution for the time at which the first failure takes place from the drop-down list Start.
Enter the values, which that distribution requires, into the text box. Plant Simulation shows these values above the
list of distributions which you can select.
The Lognormal distribution, the Erlang distribution and the Negative exponential distribution are especially suited
for modeling failures.
6. Select a distribution for the time at which the last failure will take place from the drop-down list Stop. Enter the
values, which that distribution requires. Plant Simulation shows these values above the list of distributions which
you can select.
When you do not enter a Start time and a Stop time, the first failure occurs after the Interval you entered is over.
Any value you enter as the Start time overwrites this behavior.
7. Enter the Availability in percent and MTTR. If you would like to enter the Interval and the Duration of a failure
instead, clear the check box Availability. Note that Availability and MTTR is just another kind for displaying the
Interval and the Duration When you enter values for Availability and MTTR and click Apply, Plant Simulation com-
putes the values for the Interval and the Duration and enters them into the respective text boxes. It also selects
the Negexp distribution for the Interval and the Erlang-distribution for the Duration. Plant Simulation shows them
in the dialog, when you clear the check box Availability. An availability of 100 percent has an MTTR of 0, as the
machine is available and does not have to be repaired.
8. If you want to select a distribution for the Interval and the Duration, clear the check box Availability. Then select
a distribution for the time between the end of the last failure and the beginning of the next one, i.e., the failure
Interval, from the drop-down list. Enter the values, which that distribution requires, into the text box. Plant Sim-
ulation shows these values above the list of distributions which you can select.
Select a distribution for the Duration of the failure. Enter the values, which that distribution requires, into the
text box. Plant Simulation shows these values above the list of distributions which you can select.
198
Modeling Failures
9. Select the time to which the failures relate from the drop-down list:
• Simulation Time
Consumes the time you entered for the failure interval, regardless of the state the object is in. An example
could be the electrical system of the plant, which may fail at any point in time. The simulation time is the time
between the beginning of the simulation run (Reset Simulation, Start Simulation) and its end (Stop Simulation).
• Operating Time
Consumes the time you entered for the failure interval only when the object is operational. An example could
be the coolant pump of the engine, which may fail any time during which the machine is on; the machine does
not actually have to process parts. The operating time will be interrupted by pauses and failures.
• Processing Time
Consumes the time you entered for the failure interval while the object is processing. An example could be a
saw blade, which can only break, when the machine actually saws materials.
For point-oriented objects the processing time is the time during which a part is located on a material flow
object and is being processed by it. For conveying objects, such as the Line, the processing time is the time
during which its speed is not 0. It can also be working, when the conveyor is moving and does not transport a
part.
Material Flow Objects Transporter, Exporter, Worker
10.Click OK to add this failure profile to the list of failure profiles. If you want to edit a failure profile, double-click it in
the list or click Edit.
11.Repeat this procedure for any additional failure profiles you want to define.
199
Modeling Failures
200
Modeling Failures
print EventController.simTime," Simulated availability in the afternoon: ", round(100 *
(1 ‐ MyStation.statFailPortion),2)," %";
• Then, run the simulation and watch what Plant Simulation shows in the Console.
For the first 12 hours of the simulation run the availability of the object MyStation was 100 percent. Then we set
the availability to 80 percent and the MTTR to 10 minutes and deactivated and reactivated failures, to make sure
that the next failure is calculated with an complete set of valid parameters. After an additional 10 hours of sim-
ulating, compare the end time of the EventController, the availability of the machine MyStation was decreased to
79.45 percent.
Compare the sample model: Click the Window ribbon tab, click Start Page > Getting Started > Example Models, and
click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples Col-
lection and click Open Model.
201
Buffering Parts within the Production Line
202
Buffering Parts within the Production Line
To remedy the situation, we inserted a Buffer between the processing station and the test station. The Buffer temporarily
holds the parts before moving them on to the test station.
As compared to the default settings we changed the capacity of the Buffer from 4 to 200 and entered a processing
time of 15 minutes. We left the remaining settings unchanged.
When you now run the simulation, you will notice that the processing station will not be blocked because the Buffer
temporarily holds a maximum of 200 parts for 15 minutes each before the testing station can test them.
The tab Statistics shows the relative occupancy, the percentage of the time it was relatively empty or relatively full,
maximum and minimum contents and the number of entries and exits.
203
Buffering Parts within the Production Line
You can also use a Chart to show how the number of parts in the Buffer develops over time.
To show more parts on the icon of the Buffer than it will normally show, you make the icon of the Buffer wider. To
do so, hold down the Shift and Ctrl key, drag the mouse over the right border of the icon, and drag the mouse to
the right.
204
Buffering Parts within the Production Line
• To view more exact percentages, click the tab Statistics, and check the following values:
• Relatively empty shows the portion of the statistics collection period during which the object was empty in
relation to the time during which the object was available.
• Relatively full shows the portion of the statistics collection period during which all temporary storage places
of the Buffer were occupied in relation to the time during which the object was available.
The finished simulation model for demonstrating these features looks like this:
205
Buffering Parts within the Production Line
• Enter a processing time. We decided to use a normally distributed time with the values shown below.
• Enter settings for failures of the processing station. We decided to use an availability of 92 percent.
206
Buffering Parts within the Production Line
We used the same settings for the other processing stations as well.
207
Buffering Parts within the Production Line
Insert and configure the rest of the stations so that they match the screenshot below.
Then, run the simulation and check the tab Statistics of the individual Buffers, specifically the values for relatively
empty and relative full in the middle column of the tab.
208
Buffering Parts within the Production Line
Configure the Chart for Showing the Full and Empty Portions
In addition to viewing the percentage values for relatively empty and relative full on the tab Statistics, you can also
display these values in a Chart.
To do so, proceed as follows:
• Insert a Chart into the simulation model.
• Click the tab Display and select the Category > Chart.
209
Buffering Parts within the Production Line
• Click the tab Data and select the Data source > Input Channels.
• Deactivate inheritance of the input channels table and click Input Channels.
• Enter the labels of the values you want to display into the table. We entered Empty, Partially full, and Full
into the cells of the row index.
210
Buffering Parts within the Production Line
• As we want to drag the Buffers onto the Chart and drop them there to display the values, we need to create a drag-
and-drop control for the Chart:
• Select Tools > Edit Controls, click in the text box next to drag-and-drop, and press the F4 key. This creates the
drag-and-drop control as a user-defined attribute of data type method.
• Copy the following source code and paste it into the method that opens:
The source code in SimTalk 2.0 notation looks like this:
param draggedObjects: object[]
var obj: object
var numBuffers: integer
var MyTab : table := @.InputChannels ‐‐ inheritance of the table 'InputChannels' is already
deactivated
MyTab.delete({1,0}..{*,*})
for var i := 1 to draggedObjects.dim
obj := draggedObjects[i]
switch obj.internalClassName
case "NwIOBuffer", "Buffer", "Sorter"
numBuffers := self.~.InputChannels.xDim +1
MyTab[numBuffers,0] := obj.Name
MyTab[numBuffers,1] := obj.Name + ".statRelativeEmptyPortion"
MyTab[numBuffers,2] := "1 ‐ " + obj.Name + ".statRelativeEmptyPortion ‐ " + obj.Name
211
Buffering Parts within the Production Line
+ ".statRelativeFullPortion"
MyTab[numBuffers,3] := obj.Name + ".statRelativeFullPortion"
end
next
print "Number of detected buffers: ", numBuffers
@.InputChannels := MyTab ‐‐ makes the chart apply the new settings
@.Active := true
The source code in SimTalk 1.0 notation looks like this:
(draggedObjects: object[])
is
obj : object;
numBuffers : integer;
do
local MyTab : table := @.InputChannels; ‐‐ inheritance of the table 'InputChannels' is
already deactivated
MyTab.delete({1,0}..{*,*});
for local i := 1 to draggedObjects.dim loop
obj := draggedObjects[i];
inspect obj.internalClassName
when "NwIOBuffer", "Buffer", "Sorter" then
numBuffers := self.~.InputChannels.xDim +1;
MyTab[numBuffers,0] := obj.Name;
MyTab[numBuffers,1] := obj.Name + ".statRelativeEmptyPortion";
MyTab[numBuffers,2] := "1 ‐ " + obj.Name + ".statRelativeEmptyPortion ‐ " +
obj.Name + ".statRelativeFullPortion";
MyTab[numBuffers,3] := obj.Name + ".statRelativeFullPortion";
end;
next;
print "Number of detected buffers: ", numBuffers;
@.InputChannels := MyTab; ‐‐ makes the chart apply the new settings
@.Active := true;
end;
• Drag a marquee over all objects in the model, drag them onto the Chart, and drop them there. The Chart au-
tomatically knows for which of the objects it can display values and then displays them.
212
Placing Parts into Stock and Removing Parts from It
213
Placing Parts into Stock and Removing Parts from It
removed from the Store. When the Store is full, it does not accept any additional parts. We therefore have to increase
the size of the Store in the entrance control if the Store is full. Each part that is placed into stock and that is removed
from stock must be registered in the table file InventoryTable. To manage the inventory and to remove parts from
stock, we program the control AttemptToRemoveNextPart, which is called by the methods PlaceInStock and Remove-
FromStock. This method checks whether the next removing action is possible so that the original order of the parts
can be re-established so that the production process can be maintained without a shortage of parts.
In the reset method we delete the contents of the InventoryTable and reset the counter of the variable NextNumber to 1.
You can insert the Store into your simulation model from the folder Materialflow in the Class Library or from the
toolbar Materialflow in the Toolbox.
214
Placing Parts into Stock and Removing Parts from It
Compare the sample model: Click the Window ribbon tab, click Start Page > Getting Started > Example Models, and
click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples Col-
lection and click Open Model.
215
Placing Parts into Stock and Removing Parts from It
• To make the Source produce a part every minute, enter 1:00 as the interval. To stop producing parts after a day,
enter 1:00:00:00.
216
Placing Parts into Stock and Removing Parts from It
• As parts occasionally have to be reworked, we want to mix up the original order of parts to be placed into stock
and we then want to re-establish the original order which is required for our production process when removing
the parts from stock.
To set the size of the station MixOrders, which is a ParallelProc, according to the degree of change of the sequence
of the arriving parts, enter an X dimension of 200 and an Y dimension of 20.
To mix up the order of the parts that the Source produces, we need a random processing time. We selected the
uniform distribution and entered the parameters 0, 30:00 in our example. The two values denote the bounds of
the uniform distribution.
• To set the size of the Store, enter its dimensions in the coordinate net of the storage places. We entered 4 and 8.
As the Store is passive material flow object, you have to program how it handles the parts.
217
Placing Parts into Stock and Removing Parts from It
To specify the name of the entrance control, which registers the parts contained in the Store in a table file, click
the ellipsis button and select the name of the method in the dialog that opens. We named our entrance control
PlaceInStock.
• To configure the station that receives the parts that are removed from stock, enter and select the settings for the
exit control.
218
Placing Parts into Stock and Removing Parts from It
First, select the name of the exit control. It catches the event after a part has been successfully removed from the
Store.
Then select the check box rear, so that the control is rear-triggered, i.e., after the part has left the station Retrieve-
FromStore.
‐‐ enter the ID of the new part and the path
‐‐ to the part in the ’InventoryTable’
InventoryTable[0,NextRow] := @.id
InventoryTable[1,NextRow] := @
AttemptToRemoveNextPart ‐‐ name of our Method
‐‐ increase the capacity of ’MyStore’ if needed
if MyStore.full
MyStore.xDim := MyStore.xDim + 4
end
The source code in SimTalk 2.0 notation looks like this:
‐‐ entrance control of the object ’MyStore’
is
NextRow : integer;
do
‐‐ find free row in the ’InventoryTable’ of ’MyStore’
NextRow := Inventory.ydim + 1;
‐‐ enter the ID of the new part and the path
‐‐ to the part in the ’InventoryTable’
InventoryTable[0,NextRow] := @.id;
InventoryTable[1,NextRow] := @;
AttemptToRemoveNextPart;
‐‐ increase the capacity of ’MyStore’ if needed
if MyStore.full then
MyStore.xDim := MyStore.xDim + 4;
end;
219
Placing Parts into Stock and Removing Parts from It
end;
The object MyStore uses this method as the entrance control.
220
Placing Parts into Stock and Removing Parts from It
var part := InventoryTable[1,#NextNumber]
var sequenceNo := part.id
if sequenceNo = NextNumber AND part.move(AttemptToRemoveNextPart)
NextNumber := NextNumber + 1
InventoryTable.cutRow(#part.id)
print "Retrieved part number: ", part.id
end
end
The source code in SimTalk 1.0 notation looks like this:
‐‐ control called by the methods ’PlaceInStock’ and ’RemoveFromStock’
is
SequenceNo : integer;
part : object;
do
‐‐ check if the next part according to the original sequence
‐‐ is already located in ’MyStore’
if InventoryTable.getRowNo( #NextNumber )>0 then
part := InventoryTable[1,#NextNumber];
sequenceNo := part.id;
if sequenceNo = NextNumber AND part.move(AttemptToRemoveNextPart) then
NextNumber := NextNumber + 1;
InventoryTable.cutRow(#part.id);
print "Retrieved part number: ", part.id;
end;
end;
end;
221
Placing Parts into Stock and Removing Parts from It
During the simulation the Variable, which we named NextNumber in our sample model, shows the identifier of the
last part that exited the Store according to the original sequence of parts produced by the Source named Receiving.
To check if the parts really did exit in the restored original sequence, consult the Console.
• Click the tab Display and select the category Plotter and the chart type Line for displaying the plotted values.
222
Placing Parts into Stock and Removing Parts from It
You’ll notice that the icon of the Chart changes to the icon of the Plotter in the simulation model when
you click Apply or OK.
• Click the Plotter in the model with the right mouse button, select Show, start the simulation, and watch how the
values develop over time.
223
Balancing a Production Line
To create the simulation model, insert the objects so that they match the screenshot below.
224
Balancing a Production Line
To define the balanced line, enter the name of the first station and of the last station into the text boxes. All stations
between the first and the last station, which are connected with Connectors, form the balanced line. Each station has
to have a predecessor and a successor and can only have a single predecessor and a single successor.
Note: At the moment you can only balance production lines that consist of objects of type SingleProc and Assembly
station. When an Assembly station is part of the balanced line, the Cycle only continues balancing, when the
assembly process has been finished.
If you did not define any stations for the balanced line yet, you can drag an object of type SingleProc and Assembly
station onto the icon of the object Cycle and drop it there, Plant Simulation enters it as the first station of the balanced
line.
We did this with the station called Drill, which is a modified SingleProc.
Then drag another object onto it and drop it there, Plant Simulation enters it as the last station.
We did this with the Assembly station. We then changed our mind and decided to make the station called TestQuality
the last station. To do so, we held down Shift, dragged it over the Cycle, and dropped it there.
Note: As each station within the balanced line can only have a single predecessor and a single successor, the Source
TableLegsIn, that feeds the table legs to the Assembly station in our example above, cannot be part of the bal-
anced line.
To detect the difference between a balanced line and an unbalanced line, we copied the balanced line and pasted it
below it. We then started the simulation and checked the summary report after the simulation was finished.
225
Modeling Random Processes Random Numbers and Their Statistical Distribution
Compare the sample model: Click the Window ribbon tab, click Start Page > Getting Started > Example Models, and
click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples Col-
lection and click Open Model.
226
Using Pseudo Random Numbers Modeling Random Processes
These types of random numbers are called discrete. To simplify matters, we suppose that these values can be 0, 1,
2, etc. For describing the random number we specify the probability for the individual numbers to be the result of
throwing the dice. Adding up all probabilities has to result in 1, as one of the numbers will always be thrown.
A random number that can take all values within a limited or an unlimited interval of numbers is continuous. Ex-
amples of continuous random numbers are the mean time between failures (MTBF) and the mean time to repair
(MTTR) of a machine. For describing a continuous random number, we cannot specify the probability for an indi-
vidual number to occur. We rather have to specify the probability with which this random number is located be-
tween two given values, i.e., we specify an interval.
The probability density function best describes the distribution of a random number. The density function of a
continuous random number only has values greater than 0 or equal to 0. It can be continuously drawn without in-
terruption. The area underneath the function between two values a and b is the probability that the random number
is located between these values a and b. Simply put the value of the density function at the location x describes how
often a value will occur that approximates x. The entire area below the curve of the density function has the value
1, as with each realization of the random number a certain value occurs.
The screenshot above shows the density function of the gamma distribution with the parameters Alpha = 3 and
Beta = 5,5. The most random numbers occur in the vicinity of the apex of the density function (random number x
= 11). This value is called the modal value. When you build the mean of many realizations of this distribution, you
will notice that the mean value is substantially greater than the mode/modal value. The mean value will be around
16.5. This gamma distribution will create random numbers between 24 and 26 with a probability of 0.04. This prob-
ability equals the gray area below the curve in the screenshot above.
227
Modeling Random Processes Use Probability Distributions
For creating a random number it oftentimes suffices to create a uniformly distributed random number located in
the interval between 0 and 1 (0,1). A random number is uniformly distributed, when the probability for an interval
only depends on its length, and not from it position on the line of numbers. Using a uniformly distributed random
number the computer can, for example, algorithmically create a normally distributed random number with a given
mean value and standard deviation.
A uniformly distributed pseudo random number has to meet a number of requirements:
• The arrangement of the random numbers shows no typical characteristics, i.e., the algebraic signs of consecutive
random numbers do not display any typical patterns.
• The algorithm for creating random numbers has to become periodic, as the computer only has a finite number
of states. For this reason the period length has to be as large as possible.
• Starting from the given seed values a large number of stochastically independent random numbers has to be avail-
able for the simulation.
• The random processes of a simulation have to be reproducible to be able to use certain statistic methods, such
as the variance reduction.
To enable you to reproduce these random processes in your simulation model, Plant Simulation provides a number
of probability distributions, compare Probability Distributions, Empirical Distributions, and User-defined Distributions in the
Plant Simulation Reference.
228
Create Entrance and Exit Controls Modeling the Flow of Materials, Advanced
The topic Step 3: Decide which Distribution to Use assists you in picking the right distribution for your purpose.
Once you select the distribution from the list, Plant Simulation shows the parameters, which this distribution re-
quires, along the top border of the tab.
Calculate the corresponding values in the observed data, which you received from your customer, and enter them
into the text box. Note that the lower bound and the upper bound are optional, meaning that you can, but do not
have to enter them.
229
Modeling the Flow of Materials, Advanced Create Entrance and Exit Controls
To activate the entrance control of the point-oriented objects before the standard actions are started, when a
part enters the object, select Before actions. Standard actions are, for example, starting the processing time or the
set-up time, requesting services through the importer, or changing the assembly table of the Assembly station.
Select the Method in a Frame, drag it to the text box and drop it there. Here Plant Simulation enters the absolute
path into the text box.
To open the dialog of the object, whose name you entered into the text box, either press F2 or right-click the text
box and select Open Object.
• To create a control method, which belongs to this object: Right-click into the text box and select Create Control
on the context menu:
• Enter a meaningful name into the text box and select Create Control. Plant Simulation then inserts
self.Name_you_entered_for_the_control, such as self.ExitControlEnginePlant.
• Select Create Control. Plant Simulation then inserts self.OnBuilt_in_name_of_the_control, such as
self.OnEntrance.
230
Create Entrance and Exit Controls Modeling the Flow of Materials, Advanced
Enter the source code of this control into the Method that opens.
Be aware that a control you create with Create Control is a user-defined attribute of the respective object, not
a Method object, which you can open in the Frame.
• To delete this control, delete the user-defined attribute; deleting the name from the text box just deletes the
name, but keeps the user-defined attribute.
Note: The exit control can have an optional parameter of data type object. When the Method has this parameter, then
the successor object, which pulls the MU because the MU was contained in the blocking list of the object,
will be assigned to this parameter. The MU will be pulled, for example, when the successor becomes avail-
able again or when its entrance is opened.
You can:
• Define Controls for Point-Oriented Objects
• Define Controls for Length-Oriented Objects
231
Modeling the Flow of Materials, Advanced Create Entrance and Exit Controls
Plant Simulation activates the Entrance control you entered, once the MU has entered the object in its entirety, for
the point-oriented objects, such as the SingleProc . This is the default setting for which the check box
is cleared.
To activate the entrance control before the standard actions are started, when a part enters the object, select Before
actions. Standard actions are, for example, starting the processing time or the set-up time, requesting services
through the importer, or changing the assembly table of the Assembly station.
Plant Simulation activates the Exit control, when an MU exits the object.
The check boxes Front and Rear set, when the MU triggers the Method.
• Select Front to activate the control as soon as the MU is ready to exit the object. The exit control then has to
move the part to another object, as the built-in behavior of the material flow object, i.e., moving the MU on to
the successors along the Connectors, has been overridden by the exit control.
Note: The same MU can call the Front-triggered exit control more than once, if that MU could not exit the object
and entered itself into the blocking list of the target object. As soon as the target object is ready to receive
the MU, the MU is assigned a new Out event, which triggers the Front-triggered exit control again.
Select Rear to activate the control as soon as the rear of the MU has completely exited the object. This control
does not override the built-in behavior of how MUs move to the successor of the current object.
Note: The program calls the rear-activated exit control once only. It does not override the default exit strategy.
Note: Compare the Out, OutEnd and Reference events in the List of scheduled events.
232
Create Entrance and Exit Controls Modeling the Flow of Materials, Advanced
• You can also select both check boxes, Front and Rear, for the entrance and the exit control. The MU then exe-
cutes the control as soon as the front or the rear of the MU enters or exits the object.
You can, for example:
• Change the Processing Time in the Entrance Control
• Change the Services of the Importer in the Entrance Control
• Change the Assembly List in the Entrance Control
• Distribute Parts with an Exit Control
233
Modeling the Flow of Materials, Advanced Create Entrance and Exit Controls
• Insert and configure the station which processes the parts. We used a ParallelProc. We entered a processing time
of 2 minutes, i.e., 2:00, on the tab Times. We selected the method MyEntranceControl, which we inserted before,
as the entrance control. We did not change any of the other settings.
Then, program the entrance control. We typed in the following instructions, which change the processing time
of the part called PartA to 10 minutes. The part called PartB will be processed for 2 minutes, i.e., for the time
which we entered as the processing time.
The source code in SimTalk 2.0 notation looks like this:
switch @.Name
case "PartA"
?.ProcTime := str_to_time("10:0") ‐‐ PartA will be processed for 10 minutes
case "PartB"
?.ProcTime := str_to_time("2:0") ‐‐ PartB will be processed for 2 minutes
end
234
Create Entrance and Exit Controls Modeling the Flow of Materials, Advanced
Run the simulation and watch what happens. To follow how the events are processed during the simulation, you
can click in the EventController and then click in the EventDebugger. At the start of the simulation the
Source creates a part, signified by the CreateMU event.
When you click again, the part leaves the Source, signified by the Out event.
235
Modeling the Flow of Materials, Advanced Create Entrance and Exit Controls
When you click again, the part is located on the ParallelProc and the entrance control is activated before the
standard action, in this case setting the processing time, is started. This is signified by the StartActions event.
The mean life time, which matches the processing time, is 10 minutes for PartA and 2 minutes for PartB.
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
236
Create Entrance and Exit Controls Modeling the Flow of Materials, Advanced
237
Modeling the Flow of Materials, Advanced Create Entrance and Exit Controls
• Insert and configure the station which processes the parts. We used a SingleProc. We selected the method My-
EntranceControl, which we inserted before, as the entrance control and selected Before actions.
238
Create Entrance and Exit Controls Modeling the Flow of Materials, Advanced
• Insert the two Workplaces, which service the processing station, the FootPaths on which the Workers walk to and
from the WorkerPool, and the Broker. Select this Broker as the Broker who manages the Workers on the tab Importer
of the SingleProc.
• Configure the WorkerPool. Click Creation Table and enter the data shown in the screenshot below. Select the
check box Get job orders n the pool only.
• Program the entrance control. We typed in the source code below. It creates the local variable servicesTable and get
the services table of the importer of the processing station SingleProc. It then checks the names of the parts and
writes the name of the service and the amount for that part into the servicesTable. It finally sets the local variable
servicesTable as the services table of the importer of the SingleProc.
The source code in SimTalk 2.0 notation looks like this:
var servicesTable: table[string,integer,string]
SingleProc.imp.getServices(servicesTable)
servicesTable.delete
switch @.Name
case "PartA"
servicesTable.writeRow(1,1, "ServiceA",2)
case "PartB"
servicesTable.writeRow(1,1, "ServiceB",1)
case "PartC"
servicesTable.writeRow(1,1, "ServiceA",1)
servicesTable.writeRow(1,2, "ServiceB",1)
end
SingleProc.imp.setServices(servicesTable)
239
Modeling the Flow of Materials, Advanced Create Entrance and Exit Controls
240
Create Entrance and Exit Controls Modeling the Flow of Materials, Advanced
• The SourceParts produces the parts which are loaded onto the pallet.
241
Modeling the Flow of Materials, Advanced Create Entrance and Exit Controls
• Insert and configure the station which processes the parts. We used a ParallelProc and increased its capacity to 100
parts, i.e., we entered an X-dimension and a Y-dimension of 10 each. We did not change any of the other settings.
242
Create Entrance and Exit Controls Modeling the Flow of Materials, Advanced
• Insert and configure the Assembly station which assembles the parts that arrive from the Sources. We decided to
assemble the parts according to the assembly table. As we want to attach the parts, we selected the assembly
mode > attach MUs.
• Select and program the entrance control. We selected the method MyEntranceControl, which we inserted before,
as the entrance control and selected Before actions.
We typed in the source code below. It creates the local variable assyList. It then checks the names of the contain-
ers, A or B, and writes the name and the amount for that part, MyPartX or MyPartY, into the assyList. It finally sets
the local variable assyList as the assembly list of the Assembly station.
243
Modeling the Flow of Materials, Advanced Create Entrance and Exit Controls
assyList.create
switch @.Name
case "A"
assyList.writeRow(1,1, "MyPartX",1)
assyList.writeRow(1,2, "MyPartY",2)
case "B"
assyList.writeRow(1,1, "MyPartX",2)
assyList.writeRow(1,2, "MyPartY",1)
end
Assembly.AssemblyList := assyList
The source code in SimTalk 1.0 notation looks like this:
is
assyList : table[string,integer];
do
assyList.create;
inspect @.Name
when "A" then
assyList.writeRow(1,1, "MyPartX",1);
assyList.writeRow(1,2, "MyPartY",2);
when "B" then
assyList.writeRow(1,1, "MyPartX",2);
assyList.writeRow(1,2, "MyPartY",1);
end;
Assembly.AssemblyList := assyList;
end;
When you click Apply, Plant Simulation shows a message telling you that you have to activate the check box Before
actions, if the instructions in the control are to apply to the active part.
244
Create Entrance and Exit Controls Modeling the Flow of Materials, Advanced
• Insert the Line, which transports the assembled parts, and the Drain, which removes them from the plant.
• Run the simulation and watch what happens. To follow how the events are processed during the simulation, you
can click in the EventController and then click in the EventDebugger. Compare the event list with the parts,
which the entrance control entered into assembly table. Click to
open the assembly table.
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
245
Modeling the Flow of Materials, Advanced Create Entrance and Exit Controls
• Insert and configure the Source which produces the parts. We selected and entered the settings below and did not
change any other settings.
• Insert and configure the stations which process the parts. We inserted four SingleProcs. We use them with their
default settings, except for the SingleProc that distributes the parts across its successors.
• Select and program the exit control for this station.
• We selected the Method MyExitControl and entered the source code below.
• We placed the cursor behind do, pressed Enter and typed in n := SingleProc.statNumIn; This reads the sta-
tistics value statNumIn of the SingleProc. We then pressed Enter again, changed to the Template menu and selected
if ... elseif ... end. This inserted an if ... elseif ... end-statement into the source code and saved us from typing it
in. It also showed us, with the expressions highlighted in red, which parts of the source code we have to replace
with our own instructions.
246
Create Entrance and Exit Controls Modeling the Flow of Materials, Advanced
• First, we replaced the condition with our condition, namely n less than or equal to 100, i.e., we typed in n
<= 100.
• Next, we replaced the then_branch with @.move(SingleProc1);. This instruction tells Plant Simulation to
move the first 100 parts to SingleProc1.
• Then, we replaced the elseif condition with our condition, n less than or equal to 300, i.e., we typed in
n <= 300. We replaced the remaining then_branch with @.move(SingleProc2);. This moves the next 200
parts to the station SingleProc2.
• We then pressed Enter, typed in else and pressed Enter again.
• Finally, we typed in @.move(SingleProc3); This moves the remaining 700 parts to the station SingleProc3. The
@ sign in our source code identifies the part, which is going to be moved.
The finished source code in SimTalk 2.0 notation looks like this:
var n: integer
n := SingleProc.statNumIn
if n <= 100
@.move(SingleProc1)
elseif n <= 300
@.move(SingleProc2)
else
@.move(SingleProc3)
end
The finished source code in SimTalk 1.0 notation looks like this:
is
local n : integer;
do
n := SingleProc.statNumIn;
if n <= 100 then
@.move(SingleProc1);
elseif n <= 300 then
@.move(SingleProc2);
else
@.move(SingleProc3);
end;
end;
Run the simulation and check the statistics report. It shows that the parts are distributed as we programmed them to
do: The first 100 parts moved to SingleProc1, the next 200 to SingleProc2, and the remaining 700 to SingleProc3.
247
Modeling the Flow of Materials, Advanced Create Entrance and Exit Controls
Compare the video Creating an Exit Control under the Window ribbon tab > Start Page > Getting
Started > Videos.
248
Create Entrance and Exit Controls Modeling the Flow of Materials, Advanced
Note: The Transporter backs up on the Track, it does not turn around. This means that it moves in reverse with its
front end still pointing in the direction of the flow of materials instead of its front end pointing in the op-
posite direction!
Note: The Front of the part always moves towards the end of the length-oriented object into the direction with
which you inserted it along the direction of motion of the material flow. When you insert a length-oriented
object, for example a Line, from left to right, the Front of the part is located on the right-hand side and moves
towards the right. When you insert a length-oriented object from right to left, the Front of the part is located
on the left-hand side and moves towards the left.
This also applies to parts which move backwards when you select the check box Backwards of the Line or
the Transporter! The Front of the part keeps on pointing towards the end of the length-oriented object into
the direction with which you inserted it along the direction of motion of the material flow.
Plant Simulation activates the entrance control you entered:
• When the Front or the Rear of the MU has entered the Track , the TwoLaneTrack , or the Line .
Remember that an MU, for which you entered a length, does not move onto these objects all at once, but con-
tinually. Depending on the length and the speed of the MU, there will a delay between the time the front and the
time the rear of the MU enters the object.
249
Modeling the Flow of Materials, Advanced Create Sensors
• Select Front to activate the control as soon as the front of the MU has entered, i.e., is located on the object.
This means that changing the processing time in the entrance control does not affect the MU that already en-
tered the object. To set the processing time depending on the MU that arrives, define the processing time in
a formula.
• Select Rear to activate the control as soon as the rear of the MU has entered the object.
Plant Simulation activates the backward entrance controls:
When the Front or the Rear of the Transporter has moved onto the length-oriented objects Track, TwoLaneTrack,
or Line at their entrance while it backs up.
Remember that a Transporter, for which you entered a length, does not move onto these objects all at once while
backing up, but continually. Depending on the length and the speed of the Transporter, there will a delay between
the time the back and the time its front is located on the object:
• Select Rear to activate the control as soon as the rear of the Transporter has moved onto the object while moving
in reverse.
• Select Front to activate the control as soon as the front of the Transporter has moved onto the object while moving
in reverse.
Plant Simulation activates the backward exit controls:
When the Front or the Rear of the Transporter has moved onto the length-oriented objects Track, TwoLaneTrack,
or Line at their exit while it backs up. The check boxes Front and Rear set, when the Transporter triggers the Methods.
• Select Rear to activate the control as soon as the back of the Transporter has moved onto the object at its exit while
backing up.
Note: The program calls the rear-activated exit control once only. It does not override the default exit strategy.
• Select Front to activate the control as soon as the front of the Transporter has moved onto the object at its exit
while backing up. The exit control then has to move the part to another object, as the built-in behavior of the e,
i.e., moving the MU on to the successors along the Connectors, has been overridden by the exit control.
Note: The same MU can call the Front-triggered exit control more than once, if that MU could not exit the object
and entered itself into the Blocking List of the target object. As soon as the target object is ready to receive
the MU, the MU is assigned a new Out event, which triggers the Front-triggered exit control again.
Create Sensors
The material flow objects have built-in sensors, i.e., the entrance controls and the exit controls that the arriving or
the leaving MUs trigger. A triggered sensor calls the Method object, whose name you entered as an entrance or as an
exit control. These user-defined controls will then replace the built-in properties of the object.
For the length-oriented objects Track , TwoLaneTrack , Turntable , and Line and for the Transporter you
yourself can, in addition to the entrance controls and to the exit controls, define sensor controls anywhere on the
object. The Track and the Line activate the Methods you assigned to the sensor, when an MU passes the sensor, which
in your plant might be a light barrier, or a similar device. In the Method assigned to the control you can program the
action you want Plant Simulation to execute. You might, for example define the conditions that apply when the parts
250
Create Sensors Modeling the Flow of Materials, Advanced
are transferred onto the next material flow object, or you might change the target velocity, and the icon, of a trans-
porter, when its front reaches the sensor.
To create sensors in the dialog of the Track, the TwoLaneTrack, the Turntable, the Line or the Transporter:
• Click the position at which you would like to insert the sensor with the right mouse button and select Create
Sensor on the context menu. Enter the data defining to the sensor into the dialog that opens.
• Click and select the name of the control method in which you programmed the action you would like the Trans-
porter to execute. In our example, we want it to turn around, when its front passes the sensor.
251
Modeling the Flow of Materials, Advanced Create Sensors
• To create a new sensor and open the dialog Sensor, click New.
• ID is the number that Plant Simulation automatically assigns to the sensor, when it creates it. You can use this
unique identifier to access that sensor from within Methods.
• Select the type of position, Relative or Length, from the drop-down list and enter the position of the sensor.
• For Relative you can enter a value between 0 and 1, and Plant Simulation shows 0..1 to the right of the text
box.
• For Length you can enter a value between 0 and the length of the object.
Plant Simulation uses the length unit you selected under File > Model Settings/Preferences > Units > Length.
When you enter an invalid value, Plant Simulation changes the color of the text box to red.
• When you define a sensor for a Track, you can select when a Transporter passing over it triggers the sensor:
Always, independent of the destination of the Transporter. Or Only when the Transporter has the same destina-
tion, which you entered into the sensor.
252
Create Sensors Modeling the Flow of Materials, Advanced
The Transporter’s automatic routing feature also includes this destination object. When you assign a Destination
to the Transporter while automatic routing is active, it drives to the sensor. There it activates the sensor Control
and a destination control which you defined for the Transporter. The same destination object can be defined in
several sensors. It may also be directly reached via different Tracks. Even when a direct route leads to the des-
tination object, the Transporter drives to the nearest sensor, when this sensor can be reached on a shorter route
than the destination object itself.
• Enter the name of the object to which the Transporter drives into the text box Destination.
• Click and select the name of the Method , which the sensor calls, in the dialog Select Object. To open the
dialog of the object, whose name you entered into the text box, click in the text box, and press the F2 key. The
source code of our Method accelerate looks reads like this:
@.Speed := 50
@.currIcon := “car_fast”
As soon as the sensor calls this Method, it passes the Sensor ID as parameter. When the Method expects an integer
parameter, the sensor passes the Sensor ID to the Method; if you do not enter an integer parameter, the Method
will be called without a parameter.
Or you can right-click in the text box. Then, select Create Control on the context menu to create a control method,
which is a user-defined attribute of data type method of this object:
• Enter a meaningful name into the text box and select Create Control. Plant Simulation then inserts
self.Name_you_entered_for_the_control, such as self.MySensorControl.
• Select Create Control. Plant Simulation then inserts self.OnBuilt_in_name_of_the_control, such as
self.OnSelect.
• To delete this control, delete the user-defined attribute; deleting the name from the text box just deletes the
name, but keeps the user-defined attribute.
Enter the source code of this control into the Method that opens.
• Select Front, so that the front of the MU calls the Method. You can also select Front and Rear. Then both the
front and the rear of the MU activate the Method.
• Select Rear, so that the rear of the MU calls the Method. You can also select Front and Rear. Then both the
front and the rear of the MU activate the Method.
• Click OK to apply your settings and to close the dialog.
• When you click the Close button, Plant Simulation updates and shows the number of sensors on the button
in the dialog.
253
Modeling the Flow of Materials, Advanced Create and Delete an Observer
• To edit the sensor, which you selected in the list, click Edit. Or double-click the row that defines the sensor in
the list.
• To delete the sensor, which you selected in the list, click Delete.
• To open the sensor that Plant Simulation inserts as a red line into the icon of the object, Alt+double-click the red
line and change the settings in the dialog that opens. Or click the sensor with the right mouse
button and select Open Sensor on the context menu.
• To show a tooltip with information about the sensor, drag the mouse over the red line designating it on the object.
You will make extensive use of sensors when Modeling Transport Systems. used them in our sample applications for
loading and unloading a cross sliding car and a tugger train..
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
254
Create and Delete an Observer Modeling the Flow of Materials, Advanced
• To select the attribute or method whose value you want to watch, click next to Attribute in the dialog Select
Observed Value and Method to be Executed. Then, select the attribute in the dialog Select Object. We selected
occupied.
255
Modeling the Flow of Materials, Advanced Create and Delete an Observer
• To select the Method that will be executed, when the value of the attribute or method changes, click next to Meth-
od. Then, select the Method in the dialog Select Object. We selected the Method object occupiedObserver in which we
programmed our transfer behavior.
• The dialog Observers then shows that our observer consists of the observed method numMU and of the method
occupiedObserver. The asterisk shows that we created the observer in Station1, meaning that it is not inherited from
its origin.
256
Create and Delete an Observer Modeling the Flow of Materials, Advanced
• The source code of our method occupiedObserver looks like this in SimTalk 2.0 notation:
param attribute: string, oldValue: any
if ?.occupied
?.cont.move(Station2)
end
It looks like this in SimTalk 1.0 notation:
• First, we declare the two parameters, which are passed to the Method:
• The name of the attribute or the method, whose observable value changed. This allows you to use a single
Method as the method to be called for several attributes.
• The previous value of the attribute or the method. This way you can still access the previous value after the
executed method changed it to the new value.
• Then, we tell Plant Simulation to check if Station1 is occupied, i.e., if it contains a part. If that is the case, we
want it to move the part to Station2. Within the called Method, we can use the anonymous identifiers ? and @
to address the object, whose Method changed, Station1 in our case.
• To delete the observer, you can either click Remove in the dialog or program a method.
For our example above we entered the following source code in SimTalk 2.0 notation:
Station1.removeObserver("Occupied","OccupiedObserver") ‐‐ "Occupied" is the
name of the observer, "OccupiedObserver" is the name of the method
For our example above we entered the following source code in SimTalk 1.0 notation:
is
do
Station1.removeObserver("Occupied","OccupiedObserver"); ‐‐ "Occupied" is the
257
Modeling the Flow of Materials, Advanced Create and Work with a Distance Control
name of the observer, "OccupiedObserver" is the name of the method
end;
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
258
Create and Work with a Distance Control Modeling the Flow of Materials, Advanced
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
259
Modeling the Flow of Materials, Advanced Create and Work with a Distance Control
260
Create and Work with a Distance Control Modeling the Flow of Materials, Advanced
The source code which we entered into the control attached to the sensor stops the first Transporter and shows a mes-
sage with the time at which it stopped in the Console.
The source code in SimTalk 2.0 notation looks like this:
param sensorID: integer, Front: boolean
if @.ID = 1
@.Speed := 0
print EventController.simTime, " The first Transporter stopped."
end
The source code in SimTalk 1.0 notation looks like this:
sensorID : integer; Front : boolean
is
do
if @.ID = 1 then
@.Speed := 0;
print EventController.simTime, " The first Transporter stopped.";
end;
end;
261
Modeling the Flow of Materials, Advanced Create and Work with a Distance Control
262
Create and Work with a Distance Control Modeling the Flow of Materials, Advanced
Next, click the tab Controls and select the name of the distance control and enter the distance at which it will be
called. We named our distance control myDistanceControl and we entered a distance of 6 meters.
263
Modeling the Flow of Materials, Advanced Create and Work with a Distance Control
Note: When you select a control in the Class of the object, make sure to activate Absolute path in the dialog Select
Object. Otherwise the Instances will not find the selected control.
The distance control stops the second Transporter as soon as its distance to the first Transporter, which stopped, is 6
meters. It also shows a message with the time at which it stopped in the Console.
We entered the following source code in our distance control called myDistanceControl in SimTalk 2.0 notation:
‐‐ ? is the transporter for which you entered the distance control and the distance
‐‐ @ is the transporter for which the distance became too great or too small
param distanceIsBelowLimit: boolean
if distanceIsBelowLimit ‐‐ once the distance between the transporters
?.Speed := 0 ‐‐ is less than 6 meters, the following one stops
print EventController.simTime," The second Transporter decelerated."
else
?.Speed := 10
print EventController.simTime," The second Transporter accelerated."
‐‐ when the distance reaches more than 6 meters, the second transporter
‐‐ starts again
end
We entered the following source code in our distance control called myDistanceControl in SimTalk 1.0 notation:
‐‐ ? is the transporter for which you entered the distance control and the distance
‐‐ @ is the transporter for which the distance became too great or too small
264
Create and Work with a Distance Control Modeling the Flow of Materials, Advanced
(distanceIsBelowLimit : boolean)
is
do
if distanceIsBelowLimit then ‐‐ once the distance between the transporters
?.Speed := 0; ‐‐ is less than 6 meters, the following one stops
print EventController.simTime," The second Transporter decelerated.";
else
?.Speed := 10;
print EventController.simTime," The second Transporter accelerated.";
‐‐ when the distance reaches more than 6 meters, the second transporter
‐‐ starts again
end;
end;
To make the first Transporter continue its way on the Track after being stopped, we programmed an init method and
entered the following source code:
The source code in SimTalk 2.0 notation looks like this:
‐‐ Restarts the first transporter after a certain time.
EventController.Speed := 60 ‐‐ reduces the simulation speed to better see
‐‐ what is going on in the model
&reStart.methCall(10) ‐‐ calls the method ’reStart’ after 10 seconds
The source code in SimTalk 1.0 notation looks like this:
265
Modeling the Flow of Materials, Advanced Customize the Behavior of Objects
‐‐ Restarts the first transporter after a certain time.
EventController.Speed := 60; ‐‐ reduces the simulation speed to better see
‐‐ what is going on in the model
ref(reStart).methCall(10); ‐‐ calls the method ’reStart’ after 10 seconds
To set the speed with which the first Transporter continues driving on the Track, we programmed the method reStart.
It is called by the init method after 10 seconds and sets the speed of the first Transporter to 10 m/s2.
Track.MU(1).Speed := 10
Once the distance between the Transporters is more than 6 meters again, the second Transporter accelerates as well.
This is because Plant Simulation calls the distance control when the distance becomes too small and when it becomes
too great.
Define Controls
To assign a control method that makes the object take an action you want it to execute you can:
• Program the actions you want one or several objects to take in a Method object and insert it into a Frame in your
simulation model or in a folder in the Class Library. This way you program actions that several objects can use.
• Create a control that only applies to the selected object. Then you will program the actions in a user-defined at-
tribute of data type method of this object. The control thus becomes part of the object and carries it with it, when
you insert the object into other Frames.
266
Customize the Behavior of Objects Modeling the Flow of Materials, Advanced
• In the dialog Controls select the Method to be activated, when the user or when Plant Simulation performs a certain
action:
• Click next to the name of the control. In the dialog Select Object navigate to the folder or Frame, in which
the Method object is located, select it and click OK.
267
Modeling the Flow of Materials, Advanced Customize the Behavior of Objects
• Enter a meaningful name into the text box, right-click in the text box and select Create Control. Plant Simulation
then inserts self.Name_you_entered_for_the_control, such as self.mySelectControl.
• Right-click in the text box and select Create Control on the context menu. Plant Simulation then inserts self.On‐
Built_in_name_of_the_control, such as self.OnSelect.
Enter the source code of this control into the Method that opens.
This control is a user-defined attribute of data type method. To open and modify it, do one of the following:
• Click in the text box and press F2.
• Shift and double-click in the text box.
• Select the tab User-defined Attributes and double-click the name of the Method in the list pane.
268
Customize the Behavior of Objects Modeling the Flow of Materials, Advanced
269
Modeling the Flow of Materials, Advanced Customize the Behavior of Objects
• Enter a meaningful name for your user-defined attribute into the text box. The name has to be unique, i.e., no
other built-in or user-defined attribute or method may have the same name!
• Select a Data type (compare Data Types).
• Enter a value into the text box that is compatible with this data type you selected.
• Click OK to add the user-defined attribute you just created. Plant Simulation sorts the attribute at the correct loca-
tion in the alphabet into the list.
270
Customize the Behavior of Objects Modeling the Flow of Materials, Advanced
Note that method execution of user-defined attribute methods, which are deleted, while they are being executed is ter-
minated immediately, it will not be continued. Compare the following examples:
• Suppose that an MU has a user-defined attribute method, which was suspended via a waituntil instruction. Then, the MU
is deleted in the Drain, which naturally also deletes its user-defined attributes. Thereupon the Method is deleted from
the list of suspended methods and method execution is terminated, i.e., the instructions after the waituntil instruc-
tion will not be executed. If the attribute method was called from another Method, execution of this Method will be
continued. When the attribute method had a return value, the value, which the implicitly existing local variable result
had at this point in time, will be returned to the calling Method.
• Suppose that an MU has a user-defined attribute method, which is called by the entrance control of a SingleProc. The
attribute method in turn calls a Method that is inserted in the Frame. This Method deletes the MU with the statement
SingleProc.cont.delete. Both the execution of the attribute method and of the Method called by it are terminated imme-
diately. The return value of the attribute method (or VOID if no return value was declared) will be returned to the
entrance control, whose execution is continued.
271
Modeling the Flow of Materials, Advanced Customize the Behavior of Objects
In our example below we demonstrate how to create and delete a user-defined attribute for our part, i.e., a moving
object. Depending on a distribution parts with the user-defined attribute (property) Bad are removed from the ma-
terial flow after the station paint shop, are moved to the rework station to be repainted, and are then fed back into the
production line.
To create the model, proceed as follows:
• Insert the Source which creates the parts. In our example it produces a part of type MyPart every two minutes.
• To visualize the good and the bad parts during the simulation run, create an icon each for the good parts and for
the bad parts in the Icon Editor. We named our parts Good and Bad and colored them differently.
• To dynamically create the user-defined attribute of the part when it reaches Station1, you have to program a meth-
od. We named our method createMyAttr. It creates the user-defined attribute Paint.
@.createAttr("Paint","boolean")
272
Customize the Behavior of Objects Modeling the Flow of Materials, Advanced
To make sure that the method works as intended, start the simulation, and double-click the icon of the first part.
Click the tab User-defined Attributes and check if it shows the attribute Paint.
• Then the station PaintShop has to check the paint job of the painted part and decide if it is good or bad. To ac-
complish this, you have to program a method.
We named our method checkPaintJob and entered the following source code:
The source code in SimTalk 2.0 notation looks like this:
var val := z_uniform(1,0,1)
if val < 0.1 ‐‐ checks the value
@.Paint := false ‐‐ bad paint job
@.CurrIcon := "Bad" ‐‐ switch icon
else
@.Paint := true ‐‐ good paint job
@.CurrIcon := "Good" ‐‐ don't change icon
end
print "Value: ",val,": ",@.CurrIcon ‐‐ prints the value and Good or Bad to
‐‐ the Console, depending on the value
The source code in SimTalk 1.0 notation looks like this:
is
273
Modeling the Flow of Materials, Advanced Customize the Behavior of Objects
do
local val := z_uniform(1,0,1);
if val < 0.1 ‐‐ checks the value
then
@.Paint := false; ‐‐ bad paint job
@.CurrIcon := "Bad"; ‐‐ switch icon
else
@.Paint := true; ‐‐ good paint job
@.CurrIcon := "Good"; ‐‐ don't change icon
end;
print "Value: ",val,": ",@.CurrIcon; ‐‐ prints the value and Good or Bad to
end; ‐‐ the Console, depending on the value
The distribution Z_uniform(1,0,1) creates values between 0 and 1.
The if Statement checks this value. If it is less than 0.1, the attribute Paint is set to false and the icon of the part
changes to Bad. If the value is greater than 0.1, the attribute remains true and the icons is Good. The uniform
distribution thus creates one bad part for each ten good parts.
We then entered this method as the entrance control into the PaintShop.
• Next, the station BranchOff has to check the user-defined attribute Paint. To accomplish this, you have to program
a method. We named our method checkMyAttr and entered the following source code:
The source code in SimTalk 2.0 notation looks like this:
if @.Paint ‐‐ checks the user‐defined attribute
@.move(1) ‐‐ moves the part along on Connector1
else
@.move(2) ‐‐ moves the part along on Connector2
end
The source code in SimTalk 1.0 notation looks like this:
is
do
if @.Paint ‐‐ checks the user‐defined attribute
then
@.move(1); ‐‐ moves the part along on Connector1
else
274
Customize the Behavior of Objects Modeling the Flow of Materials, Advanced
@.move(2); ‐‐ moves the part along on Connector2
end;
end;
If the value of the attribute Paint is true, the part is moved along the Connector with the number 1. If the value is
false, it is moved along the Connector with the number 2.
If the quality is good, the part is moved on to Station2, if it is bad, it is moved to the Rework station, where it is
fixed and it is then fed back into the line.
Then, enter this method as the exit control into the station BranchOff.
• Finally, program the method that deletes the user-defined attribute Paint, as it is not needed any more. We named
our method deleteMyAttr and entered the following source code:
@.deleteAttr("Paint")
• Then enter this method as the entrance control into Station2.
275
Simulating Free-flowing Materials and Fluids Modeling the Production of Chocolate Bars
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
276
Modeling the Production of Chocolate Bars Simulating Free-flowing Materials and Fluids
277
Simulating Free-flowing Materials and Fluids Modeling the Production of Chocolate Bars
We also entered the intermediate products and the final product, their density, their color, the amount which we want
to produce, and the ingredients these products require.
Note: When you change the name of materials or of ingredients at a later point in time in the MaterialsTable, you
also have to manually change this name in the text box Material of the FluidSource and of the DePortioner
and/or the text box Product of the Mixer. Plant Simulation does not automatically do that for you.
Our completed MaterialsTable looks like this.
278
Modeling the Production of Chocolate Bars Simulating Free-flowing Materials and Fluids
279
Simulating Free-flowing Materials and Fluids Modeling the Production of Chocolate Bars
Next, we inserted Pipes between the FluidSources and the respective Tanks. We then connected the three Pipes with
the FluidSources and the Tanks with Connectors.
Note: You have to connect the individual fluid objects with Connectors. You cannot connect them with Pipes only.
280
Modeling the Production of Chocolate Bars Simulating Free-flowing Materials and Fluids
281
Simulating Free-flowing Materials and Fluids Modeling the Production of Chocolate Bars
282
Modeling the Production of Chocolate Bars Simulating Free-flowing Materials and Fluids
We then connected the SourceChili with a Pipe and a Connector with the MixerFinal.
283
Simulating Free-flowing Materials and Fluids Modeling the Production of Chocolate Bars
To represent our chocolate bar in our model, we created a new MU class in the Class Library and named it Chili‐
Chocolate. We used these settings:
284
Modeling the Production of Chocolate Bars Simulating Free-flowing Materials and Fluids
Then we inserted a Drain, which we used with its default settings and ran the simulation.
You’ll notice that the Tanks, the Mixers, and the Pipes show the color of the material which we set in the Materi-
alsTable above. The chili chocolate bar, i.e., the MU, shows the color which we set for it on the tab Graphics.
285
Simulating Free-flowing Materials and Fluids Modeling the Production of Chocolate Bars
To view the model in the 3D Viewer, we clicked on on the Home ribbon tab.
As you notice, the 3D Viewer displays the default graphic of the entity with the default size for our chocolate bar.
This is not the way we want it. To display the chocolate bar with the size and color matching the size and color in
2D, we right-clicked the class of our MU named ChiliChocolate in the Class Library and selected Edit 3D Properties.
We then clicked the tab Auto Graphics and activated Auto graphics active . The chocolate bar then
looks like this:
286
Portioning and Deportioning Materials Simulating Free-flowing Materials and Fluids
287
Simulating Free-flowing Materials and Fluids Portioning and Deportioning Materials
288
Portioning and Deportioning Materials Simulating Free-flowing Materials and Fluids
• Change to the tab Graphics and select different colors for the MUs to be able to distinguish them. We selected
the colors below.
• Change to the tab User-defined and create the two user-defined attributes named MaterialName and AmountName for
both MUs. We entered the settings below.
289
Simulating Free-flowing Materials and Fluids Portioning and Deportioning Materials
• To make the 3D Viewer show the MUs with the same size and with the same color as in 2D, we open their class
in the Class Library and the tab Appearance in the dialog Edit 3D Properties. Select Auto graphics active and Material
active. Select the color as the Diffuse color, which we assigned the MUs in 2D.
The Portioner fills the materials, which the Mixer mixed, into these MUs.
290
Portioning and Deportioning Materials Simulating Free-flowing Materials and Fluids
291
Simulating Free-flowing Materials and Fluids Portioning and Deportioning Materials
292
Portioning and Deportioning Materials Simulating Free-flowing Materials and Fluids
• An outflow rate of 1 liter per second into the text box Outflow rate of the respective object for each of the ma-
terials.
• A volume of 5 liters for each of the materials into the text box Volume of the respective object for each of the
materials.
• Two sensors and their controls with the settings shown below.
293
Simulating Free-flowing Materials and Fluids Portioning and Deportioning Materials
self.~.EntranceLocked := false
Repeat these steps for the second Tank.
Next we inserted Pipes with the default settings between the FluidSources and the respective Tanks and we connected
the two Pipes with the FluidSources and the Tanks with Connectors.
Note: You have to connect the individual fluid objects with Connectors. You cannot connect them with Pipes only.
294
Portioning and Deportioning Materials Simulating Free-flowing Materials and Fluids
We also created an observer and the corresponding control so that the Mixer changes the recipe of the material.
‐‐ observer for resWorking
param Attribute: string, previousValue: Stopped
if NOT ?.resWorking AND NOT ?.Failed AND NOT ?.Angehalten
if ?.product = "Product X"
?.product := "Product Y"
Portioner.MUPath := .MUs.ForY
else
?.product := "Product X"
Portioner.MUPath := .MUs.ForX
end
end
We finally connected the Mixer and the Portioner with a Pipe with the default settings and with Connectors.
295
Simulating Free-flowing Materials and Fluids Portioning and Deportioning Materials
• We entered the Amount per MU of the product. In our example we fill 2 liters into an MU respectively.
We also created the exit control partsDone with the settings below.
296
Portioning and Deportioning Materials Simulating Free-flowing Materials and Fluids
• We selected Fluid depends on > MU Name so that the DePortioner creates the material and the amount of the fluid
depending on the MU names, which are defined in the Mapping table.
• We selected the TableFile MyTable as our mapping table. We entered the MU name, the Materials, and amount of
the product, which we want to portion.
• We selected the settings below for setting the object up to be able to distribute the two products to the two suc-
ceeding Tanks.
• The entrance control partArrives and the exit control partEmptied open or close the Pipes to the individual Tanks
into which the products flow.
297
Simulating Free-flowing Materials and Fluids Portioning and Deportioning Materials
To close the Pipes after the amount of the products defined in the Tanks has flown into the Tanks, we created the
user-defined attribute reset and we typed in this source code:
PipeX.PipeOpened := false
PipeY.PipeOpened := false
Insert the Pipes which connect the DePortioner with the succeeding Tanks. Connect the objects with Connectors.
The controls described above open and close the respective Pipes.
298
Portioning and Deportioning Materials Simulating Free-flowing Materials and Fluids
299
Simulating Free-flowing Materials and Fluids Portioning and Deportioning Materials
Note that the sensor of TankX is triggered when the fill level is both exceeded and underrung. The sensor of TankY
is triggered only when the fill level is underrun. Both Tanks call their sensor control, which in turn call the method
xyVoll, when a Tank has reached its defined volume of 2000 liters.
We entered this source code into the sensor control.
‐‐ sensor control of TankX and TankY
param SensorID: integer, Exceeded: boolean
EventController.stop(true)
Instead of a sensor control we could also use an observer for the method full of the Tanks. To do so, select Tools >
Select Observer in the dialog of TankY and TankX.
Then program the action that is to be executed in the method observerForFull.
We finally created a user-defined attribute with the name reset and typed in this source code:
self.~.EntranceLocked := false
300
Portioning and Deportioning Materials Simulating Free-flowing Materials and Fluids
When we run the simulation, we can watch the Mixer mixing two products from the two raw materials, which the
Portioner then splits up in portions. The Line moves these filled portions to the DePortioner, which dissolves the por-
tions and then lets them flow off to the designated Tanks. As soon as one of the Tanks has reached its defined vol-
ume of 2000 liters, the simulation stops.
301
Simulating the Power Consumption in Your Plant Portioning and Deportioning Materials
302
Configure the Processing Stations and the ConveyorSimulating the Power Consumption in Your Plant
303
Simulating the Power Consumption in Your PlantConfigure the Processing Stations and the Conveyor
• The second machine, SingleProc1, processes the parts for 2 minutes each. We entered the kilowatts it uses up in
the states it can be in. We also entered the times that the machine requires for switching from one energy state
to another.
To simulate a real situation, we also defined a failure profile with these settings:
304
Configure the Processing Stations and the ConveyorSimulating the Power Consumption in Your Plant
• The conveyor, the object of type Line, transports the parts from the processing station SingleProc1 to the Parallel-
Proc. We entered the kilowatts it uses up in the states it can be in. We also entered the times that the conveyor
requires for switching from one energy state to another. You will notice that the length-oriented object Line pro-
vides fewer energy settings than the point-oriented objects SingleProc and ParallelProc.
305
Simulating the Power Consumption in Your PlantConfigure the Processing Stations and the Conveyor
To simulate a real situation, we also defined a failure profile with these settings:
• The third machine, the ParallelProc, processes the parts for 1 minute each. We entered the kilowatts it uses up in
the states it can be in. We also entered the times that the machine requires for switching from one energy state
to another.
306
Configure the ShiftCalendar Simulating the Power Consumption in Your Plant
• The Drain removes the parts from the factory. We did not change any of its built-in settings.
• The Charts display a resource statistics chart and an energy statistics chart for the selected objects.
307
Simulating the Power Consumption in Your PlantCheck the Power Consumption in the Dialogs of the
308
Check the Power Consumption in the Statistics Report Simulating the Power Consumption in Your
Note: The energy states of the material flow objects differ from the resource states with the same name. The values
for the resource states refer to the statistics collection period, while the values for the energy states refer to
the total energy consumption.
309
Simulating the Power Consumption in Your Plant Check the Power Consumption in the Chart
The material flow objects also show these values on the Tab Statistics and in the dialog that clicking Energy Statistics
opens.
310
Check the Power Consumption in the Chart Simulating the Power Consumption in Your Plant
Note: The energy states of the material flow objects differ from the resource states with the same name. The values
for the resource states refer to the statistics collection period, while the values for the energy states refer to
the total energy consumption.
311
Modeling Workers and the Jobs They Do Check the Power Consumption in the Chart
312
Model a Worker Who Works at a Machine Modeling Workers and the Jobs They Do
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
Also compare the videos Modeling with Workers and Worker Carrying Parts between Workplaces
which you can open under the Window ribbon tab > Start Page > Getting Started > Videos.
• Insert the object Broker into your model. He manages all of the Workers in your model.
Click the Browse button and add the Broker to the WorkerPool in the dialog Select Object.
313
Modeling Workers and the Jobs They Do Model a Worker Who Works at a Machine
• Insert a Workplace into our model and attach it to the machine at which the Worker performs his job. Click the
WorkPlace on the toolbar Resources and place it next to the machine.
• Drag the machine, in our example the SingleProc MyMachine, onto the dialog of the WorkPlace and drop it. This
adds the machine to the text box Station in the dialog of the WorkPlace.
• Deactivate inheritance: Click the toggle button, so that it looks like this . Open the table Supported Services.
Type in the service StandardService.
314
Model a Worker Who Works at a Machine Modeling Workers and the Jobs They Do
The name of the service is not case-sensitive, just like the names of attributes and methods of the objects are not
case-sensitive.
To save memory and improve access speed, all places which are using such an case-insensitive string are point-
ing to the same string in main memory. The visible and unexpected result is that the first occurrence of the
string defines how the string is written in terms of upper- and lower-casing.
• Then, we have to tell the machine that it asks for the Worker to do a job: Select the check box Active on sub-tab
Processing of the tab Importer in the dialog of the machine.
Click the Browse button and add the path of the Broker to the sub-tab Processing of the tab Importer in the
dialog Select Object.
• Next, we will insert the FootPath on which the Worker walks from the WorkerPool to the WorkPlace. Finally, we
have to connect the WorkerPool and the FootPath with a Connector.
• Open the EventController and reduce the simulation speed. Then, start the simulation. The Worker walks on the
FootPath from the WorkerPool to the WorkPlace, works on a single part, and then returns to the WorkerPool. This
is because he performs 1 StandardService.
315
Modeling Workers and the Jobs They Do Model a Worker Who Repairs a Machine
You can also click the tab Statistics and view the most important data, which the object collected.
Compare the video Modeling with Workers under the Window ribbon tab > Start Page > Getting
Started > Videos.
316
Model a Worker Who Repairs a Machine Modeling Workers and the Jobs They Do
• Insert a Workplace on which the Worker stays, when he repairs the machine.
Deactivate inheritance: Click the toggle button, so that it looks like this . Open the table Supported Services.
Type in the service repair.
The name of the service is not case-sensitive, just like the names of attributes and methods of the objects are not
case-sensitive.
To save memory and improve access speed, all places which are using such an case-insensitive string are pointing
to the same string in main memory. The visible and unexpected result is that the first occurrence of the string
defines how the string is written in terms of upper- and lower-casing.
317
Modeling Workers and the Jobs They Do Model a Worker Who Repairs a Machine
• Add a second Worker to the Creation Table of the WorkerPool: Right-click in the table and select Append Row on
the context menu. Drag the Worker from the Class Library to the cell Worker. Enter repair into the cell below
Additional Services.
• Then, configure the machine, so that it creates failures and requests a Worker for fixing this failure.
• Select the check box Active on the tab Failures in the dialog of the machine. Type 9: into the text box Interval;
this is the mean time between failures. Type 1: into the text box Duration; this is the mean time to repair.
318
Model a Worker Who Repairs a Machine Modeling Workers and the Jobs They Do
• Select the check box Active on the sub-tab Failure of Tab Importer.
Click the button and add the path of the Broker to the sub-tab Failure in the dialog Select Object.
319
Modeling Workers and the Jobs They Do Model a Worker Who Repairs a Machine
Deactivate inheritance: Click the toggle button, so that it looks like this . and open the table Services for Re-
pairing. Replace the StandardService with the service repair.
The name of the service is not case-sensitive, just like the names of attributes and methods of the objects are not
case-sensitive.
To save memory and improve access speed, all places which are using such an case-insensitive string are point-
ing to the same string in main memory. The visible and unexpected result is that the first occurrence of the
string defines how the string is written in terms of upper- and lower-casing.
• Open the EventController and reduce the simulation speed. Then, start the simulation. You will see how the Worker
on the Workplace at the top of the machine works on the part and how the Worker on the bottom Workplace repairs
the machine, when it fails.
You can also click the tab Statistics and view the most important data, which the object collected.
320
Define How Many Workers Are Created When the Model is InitializedModeling Workers and the Jobs
321
Modeling Workers and the Jobs They Do Define How Many Workers Are Created When the Model is
• Insert a Method into which you enter the source code of the init control. We named our method myInitControl.
• Double-click the EventController, select Tools > Edit Controls, click , and select the method which you just in-
serted as the init control.
• Insert a TableFile into which you enter the information about the Workers to be created. We named our TableFile
MyWorkersTable. Format the table as shown in the screenshot below.
322
Define How Many Workers Are Created When the Model is InitializedModeling Workers and the Jobs
• Drag the Worker, which you want to create, from the Class Library to the first cell of the column Worker, and drop
it there. We want to create the Workers John and Nellie.
• Program how many Workers you want to create. Double-click the init control, myInitControl in our case, and enter
the source code. Our instruction [2,1] := 2 enters 2 into the first cell the column Amount of the table MyWork-
ersTable. This creates two instances of our Worker John. Our second instruction [2,2] := 1 enters 1 into the
second cell of the column Amount. This creates one instance of our Worker Nellie. Finally assign the table My-
WorkersTable to the Worker Creation Table of the WorkerPool with the method setCreationTable.
MyWorkersTable[2,1] := 2 ‐‐ enters the desired amount of the worker John
MyWorkersTable[2,2] := 1 ‐‐ enters the desired amount of the worker Nellie
WorkerPool.setCreationTable(MyWorkersTable)
• Click in the EventController to open the List of scheduled events. You’ll see the first event to be processed
is the init event.
323
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
When you click , Plant Simulation processes the event, enters the numbers of the Workers it created into the
column Amount of the Worker Creation Table and places the icons of the Workers onto the WorkerPool.
324
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
The Worker evaluates the part targets and walks to the closest one first. At the target station, he deposits all parts
destined for this station. If he carries additional parts, he evaluates the next target and walks to the closest one.
At the end of his shift the Worker walks back to his WorkerPool and deposits the parts he could not deliver in the
Parts buffer, which you assigned to the WorkerPool. If you did not assign a Buffer to the Workerpool, Plant Simulation
shows a warning and stops the simulation. When a new shift starts, Plant Simulation treats the parts in the Buffer ac-
cording to the exit strategy you selected there. When you select Carry part away, the Worker who carries parts re-
quests the service, which you entered.
You can, for example:
• Model a Worker Who Walks on FootPaths
• Model a Worker Who Carries Two Parts in 2D
• Model a Worker Who Carries Two Parts in 3D
• Model a Worker Who Walks Between Workplaces in 3D
• Model a Worker Who Walks Freely Within the Model
• Model and Record Times for Picking-up and for Depositing Parts
Compare the video Worker Carrying Parts between Workplaces under the Window ribbon tab >
Start Page > Getting Started > Videos.
325
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
• Select the exit strategy Carry part away on the tab Exit Strategy in the dialog of the station, which is ready to send
the part on. The part then requests a Worker. Finally the parts wait at the station until the Worker arrives and picks
them up.
Note: Click Apply to show the settings for this strategy.
Enter the names of the Services which the Broker manages and which the transport-importer provides into the ser-
vices table. We accepted the default setting, namely the StandardService.
326
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
The name of the service is not case-sensitive, just like the names of attributes and methods of the objects are not
case-sensitive.
To save memory and improve access speed, all places which are using such an case-insensitive string are pointing
to the same string in main memory. The visible and unexpected result is that the first occurrence of the string
defines how the string is written in terms of upper- and lower-casing.
Select the MU target, i.e., the target station, at which the Worker deposits the parts. We selected Workplace2.
To prevent the Worker from waiting too long for additional parts to arrive, you have to enter the Maximum dwell
time. After it has passed, he walks to the target station, the MU target.
• Select the Worker, who carries the parts from station to station, in the WorkerPool. We selected the Worker named
MyWorker, which we creating by duplicating the built-in Worker.
• Select the Broker, who manages the Workers, in the WorkerPool. We selected MyBroker.
• Start the simulation run and watch the Worker pick up the part at the first Workplace, walk on the footpath to the
target Workplace, put it down there, walk back to the first Workplace, pick up the next part, and so on.
327
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
Compare the video Worker Carrying Parts between Workplaces under the Window ribbon tab >
Start Page > Getting Started > Videos.
328
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
• To make the Worker wait for the second part, type the Maximum dwell time into the station, which wants to trans-
fer the part. The dwell time has to be longer than the processing time, so we entered 2:00, i.e., two minutes.
• To show both parts in the simulation model, you have to add a second animation point to the icon of the worker
named MyWorker2Parts:
• Click the worker MyWorker2Parts on the tab Class Library with the right mouse button. Select Edit Icon.
329
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
• Click the button Move Animation Point . Move the animation points side by side so that they match the
screenshot below.
330
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
The Worker shows the percentages of the carrying operations and of the en-route-times of the statistics collection
time on the Tab Statistics next to Services > transporting and Services > en-route to job.
331
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
To show additional information in the statistics report, select the Worker and press the F6 key.
332
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
333
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
• Click into the background of the window with the right mouse button and select Edit 3D Properties. Click the
Tab MU Animation.
• Add two animation paths of type Lines and name them #0#0 and #1#0.
• Show the animation path named #0#0 and move it to the right by clicking Edit and by changing the Position. Click
OK in the dialog Edit Anchor Values. Click Apply in the dialog Path Anchor Points to show the position of the path
in the window of the Worker.
334
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
335
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
• The part on the right hand side is located at the correct height, but it is too big and too far to the left. To fix this,
we decrease the size of the part by selecting a uniform scaling factor of 0.6.
Click the Entity in the Class Library with the right mouse button and select Open in 3D.
336
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
Now the size and height of the part are correct, but it is located too far forward. To fix this, we have to move
the x-position towards the body of the Worker. We used the settings below.
• Repeat this for the animation path named #1#0. We selected the settings below:
• The complete model with the Worker carrying two parts in 2D and in 3D looks like this:
337
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
338
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
339
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
• The 3D Viewer opens the dialog Exchange Graphics. By default it opens the folder in which you installed Plant
Simulation, namely C:\Program Files\Siemens\Tecnomatix Plant Simulation XX. Change to the sub-folder 3D, select
the folder and file as shown in the screenshot below, and click Open.
The files whose name contains Jack are the male workers, the files whose name contains Jill are the female work-
ers. The suffix 6 designates a Worker that is animated with 6 graphics per double-step. The suffix 15 designates
a Worker that is animated with 15 graphics per double-step. More graphics naturally lead to a greater file size and
a smoother, more realistic animation.
Note: To replace existing graphics of the built-in objects in a model, which you created in a previous version of
the program, with the new graphics, select the respective graphic and select Exchange Graphics. Navigate
to the folder 3D > BasicObjects and select the new graphic of the object.
• Open the Frame containing your simulation model in 3D.
• Open the object WorkerPool and click Creation Table. Drag our worker Jack from the folder Resources in the Class
Library to the first cell of the worker creation table. Click OK. The WorkerPool now assigns Jack to do the jobs in
the factory.
340
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
• You can view Jack’s predefined postures for walking and carrying motions on the Tab Graphic Sequences.
341
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
• Run the simulation again. Remember to activate Real time x and enter a low number, for example 5, to achieve
a smooth animation in the 3D Viewer.
• The size of the part seems OK now, but the part is located at the wrong position. To fix this:
• Open the class of Jack in 3D.
• Click in the background of the Frame .Resources.Jack and select Edit 3D Properties.
• Change to the Tab MU Animation and click in the right-most cell to Show the path named Default. This shows
the red marker of the path. Click the marker, hold down Ctrl and move it up a bit with the Up arrow key. In-
stead, you can also click Edit and manipulate the Z position precisely in the dialog that opens.
342
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
• Run the simulation again. Now the part is located at the correct height.
343
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
Click Open Frame in 2D/3D on the Start ribbon tab or Activate 3D on the Window ribbon tab in an
existing 2D model without a 3D part.
To show the difference between a Worker walking on FootPaths and a Worker, who moves freely within the
plant, we use an existing model with FootPaths. In the screenshot below the Worker walks from the WorkerPool via
the inserted FootPaths to the Workplaces, which are assigned to the stations.
344
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
To make the Worker move freely within the model, proceed as follows:
• Double-click the WorkerPool in the 3D model and select Travel mode > Move freely within the area in the drop-
down list.
• Insert an obstacle around which the Worker has to walk when he walks to the Workplaces at which he performs
his job:
• Change to the ribbon tab Edit.
345
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
• Select the graphic group, the Form, the Dimensions and the Material of the barred area. We selected the follow-
ing settings:
• The inserted barred area, our obstacle for the worker, looks like this:
346
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
By default the barred area is an obstacle for the worker. Press the o key on the keyboard to show all obstacles
for the worker in the model. The Worker has to walk around these obstacles, he cannot cross them.
For most of the 3D objects you can select if they are an Obstacle for the Worker on the Tab Graphics or on the
Tab Graphic Settings in the dialog Edit 3D Settings. For the built-in material flow objects the bounding box of
the graphic is an obstacle for the worker.
• Change to the Start ribbon tab, run the simulation and watch how the Worker walks from the WorkerPool to the
Workplaces and how he ignores the FootPaths and walks around our barred area. In the figure below we marked
his route in black for clarification purposes.
347
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
If the Worker is to overcome obstacles in your model, you can model this with FootPaths. In the example below we
want the Worker to walk through the doors from the break room onto the actual shop floor. For displaying the shop
floor in our model we uses the layout file of the actual factory.
The layout file is a graphics file which we added to the scene in 3D as the background. Although the graphics file
contains all of the doors, the 3D Viewer treats the factory as a single unit, whose graphics is an obstacle for the work-
er, which the Worker cannot enter and cross.
When we display the barred areas, by pressing the o key, we can see this clearly by the continuous red border.
348
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
To allow the Worker to walk through the doors anyway, we laid FootPaths through the doorways. Note that the Foot-
Paths always have to be a little longer than the depth of the obstacle.
For the FootPaths not the length, which you enter on the tab Attributes is decisive, but the length of the FootPath in
the 3D scene. The distance covered of the Worker is determined by the starting point and the end point of the Foot-
Path as well by the anchor points.
When the FootPath includes an incline, the Worker moves slower on the incline than on a flat surface. Plant Simula-
tion achieves this by prolongating the imagined distance for the incline segments. When calculating the length of an
inclined segment, Plant Simulation triples the height difference.
Compare this example: A segment of a FootPath has a dimension of 1 m in the x-direction and 1 m in the z-direc-
tion, thus actually is 1.414 m long. The imagined dimension however is 1 m in the x-direction and 3 m in z-direction,
so that Plant Simulation calculates an effective length of 3.162 m.
The Worker always walks on the route, which has the shortest effective length and which the Worker can thus can
cover in the shortest time. This can cause the Worker to take an actually longer but flatter way to the destination
instead of a shorter way which contains inclines.
For calculating the effective route length Plant Simulation triples the height difference. The resulting speeds of the
Worker are realistic in general. The speed of the Worker decreases to a third, when the Worker moves vertically up
or down, for example when climbing a ladder. The speed decreases to about half, when the Worker negotiates an
incline of 38 degrees, for example a when walking on a stairway.
349
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
When we run the simulation, we can watch how the Workers walk through the doors of the break rooms into the
anteroom and on onto the shop floor.
Model and Record Times for Picking-up and for Depositing Parts
You can use the entrance control and the exit control of the Workplace to record the time values which the Worker
spends for picking-up and for depositing the parts.
You can then show these values in a number of ways:
350
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
• In a Display Panel
• In a TableFile
• In a Worker Chart
• In a Gantt Chart
The model demonstrates how to:
• Model the Stations Which Process and Transport the Parts
• Program Controls Recording Times for Picking-up and Depositing Parts
• Display the Times for Picking-up and for Depositing Parts
The finished simulation model looks like this:
351
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
• Configure the object Workplace1. This is the actual place attached to the station, where the Worker performs his
job.
• Click and select the station, i.e. the material flow object, to which you want to attach the Workplace. We
selected the SingleProc Processing1 in our example.
352
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
• Enter the loading time on the tab Times. We decided to use a uniformly distributed time with the values 0:20,
0:30.
• Enter the unloading time on the tab Times. We decided to use a normally distributed time with the values 2,
0:24, 0:10, 0:10, 0:50.
353
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
• Configure the first station in the sequence of the material flow objects, namely the SingleProc.
• Enter the processing time on the tab Times. We entered a minute and twenty seconds, i.e., 1:20.
• Enter the settings for failures on the tab Failures. We decided to use an availability of 90 percent and an MTTR
of five minutes, i.e., we entered 5:00.
• Configure the processing station, which we named Processing1 in our model, to which the object Workplace1 is
attached. The Worker picks the parts up at this station and carries it to the processing station named Processing2
in our model.
354
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
• Enter the processing time on the tab Times. We entered a normally distributed time with the values 0:32,
0:07, 0:18, 1:00.
• Enter the settings for failures on the tab Failures. We decided to use an availability of 90 percent and an MTTR
of five minutes, i.e., we entered 5:00.
• Select and enter the settings for the exit strategy on the tab Exit Strategy. As we want the Worker to carry the
part from the current station Processing1 to the station Processing2, we selected the Strategy > Carry part away.
We then selected the target station for the part, the MU target, namely the station Processing2.
355
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
• Configure the second processing station, which we named Processing2 in our model, to which the object Work-
place2 is attached. The Worker deposits the parts, which he/she picked up at the station Processing1 and carried
here.
• Enter the processing time on the tab Times. We entered a constant time of 45 seconds, i.e., 0:45.
• Enter the settings for failures on the tab Failures. We decided to use an availability of 90 percent and an MTTR
of five minutes, i.e., we entered 5:00.
356
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
We used all other material flow objects with their default settings.
• To create the control in which you program what is going to happen when the Workers arrive at Workplace1, insert
a Method object into the model. We named our method workerArrives1 to clearly show that it belongs to Work-
place1.
Then, enter the following source code in SimTalk 2.0 notation:
‐‐ start time of the loading operation
‐‐ 'OperationStart' is a user‐defined attribute of the Workers named John and Nellie
@.OperationStart := EventController.absSimTime
‐‐ increment the parts entering the 'Workplace' to be shown in the display panel
357
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
Workplace1.PartsIn := Workplace1.PartsIn + 1
Then, enter the following source code in SimTalk 1.0 notation:
is
do
‐‐ start time of the loading operation
‐‐ 'OperationStart' is a user‐defined attribute of the Workers named John and Nellie
@.OperationStart := EventController.absSimTime;
‐‐ increment the parts entering the 'Workplace' to be shown in the display panel
Workplace1.PartsIn := Workplace1.PartsIn + 1;
end;
• To create the control in which you program what is going to happen when the Workers leave Workplace1, insert
a Method object into the model. We named our method workerLeaves1, to clearly show that it belongs to Work-
place1.
Then, enter the following source code in SimTalk 2.0 notation:
‐‐ entry for the loading operation into the table 'WorkersTimes'
if @ /= void
writeWorkersTimes( ‐‐ name of the method
@.Name, ‐‐ resource
@.cont.Name + ":"+ to_str(@.cont.getNo), ‐‐ order
@.OperationStart, ‐‐ start date
EventController.absSimTime, ‐‐ end date
"Pick part up", ‐‐ operation
@.cont.getNo, ‐‐ part number
1, ‐‐ layer number
1.0) ‐‐ lot size
‐‐ start time for the carrying operation
‐‐ 'OperationStart' is a user‐defined attribute of the Workers John/Nellie
@.OperationStart := EventController.absSimTime
end
‐‐ increment the parts exiting 'Workplace1' to be shown in the display panel
Workplace1.PartsOut += 1
Then, enter the following source code in SimTalk 1.0 notation:
is
do
‐‐ entry for the loading operation into the table 'WorkersTimes'
if @ /= void then
writeWorkersTimes( ‐‐ name of the method
@.Name, ‐‐ resource
@.cont.Name + ":"+ to_str(@.cont.getNo), ‐‐ order
@.OperationStart, ‐‐ start date
EventController.absSimTime, ‐‐ end date
358
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
"Pick part up", ‐‐ operation
@.cont.getNo, ‐‐ part number
1, ‐‐ layer number
1.0); ‐‐ lot size
‐‐ start time for the carrying operation
‐‐ 'OperationStart' is a user‐defined attribute of the Workers John/Nellie
@.OperationStart := EventController.absSimTime;
end;
‐‐ increment the parts exiting 'Workplace1' to be shown in the display panel
Workplace1.PartsOut := Workplace1.PartsOut + 1;
end;
• Click and select the entrance control and the exit control of the object Workplace1. We selected the method wor-
kerArrives1, which we programmed above, as the entrance control and the method workerLeaves1 as the exit control
in our example.
• To create the control in which you program what is going to happen when the Workers arrive at Workplace2, insert
a Method object into the model. We named our method workerArrives2, to clearly show that it belongs to Work-
place2.
Then, enter the following source code in SimTalk 2.0 notation:
‐‐ entry for the carrying operation into the table 'WorkersTimes'
writeWorkersTimes(
@.Name, ‐‐ resource
@.cont.Name + ":"+ to_str(@.cont.getNo), ‐‐ order
@.OperationStart, ‐‐ start date
EventController.absSimTime, ‐‐ end date
"Pick part up", ‐‐ operation
@.cont.getNo, ‐‐ part number
2, ‐‐ layer number
1.0) ‐‐ lot size
‐‐ start time for depositing the part
‐‐ 'OperationStart' is a user‐defined attribute of the Workers John/Nellie
@.OperationStart := EventController.absSimTime
359
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
end
‐‐ increment the parts entering 'Workplace2' to be shown in the display panel
Workplace2.PartsIn += 1
Then, enter the following source code in SimTalk 1.0 notation:
is
do
‐‐ entry for the carrying operation into the table 'WorkersTimes'
writeWorkersTimes(
@.Name, ‐‐ resource
@.cont.Name + ":"+ to_str(@.cont.getNo), ‐‐ order
@.OperationStart, ‐‐ start date
EventController.absSimTime, ‐‐ end date
"Pick part up", ‐‐ operation
@.cont.getNo, ‐‐ part number
2, ‐‐ layer number
1.0); ‐‐ lot size
‐‐ start time for depositing the part
‐‐ 'OperationStart' is a user‐defined attribute of the Workers John/Nellie
@.OperationStart := EventController.absSimTime;
end;
‐‐ increment the parts entering 'Workplace2' to be shown in the display panel
Workplace2.PartsIn := Workplace2.PartsIn + 1;
end;
• To create the control in which you program what is going to happen when the Workers leave Workplace2, insert
a Method object into the model. We named our method workerLeaves2, to clearly show that it belongs to Work-
place2.
Then, enter the following source code in SimTalk 2.0 notation:
‐‐ entry for the depositing operation into the table 'WorkersTimes'
if @ /= void then
writeWorkersTimes(
@.Name, ‐‐ resource
Processing2.cont.Name + ":"+ to_str(Processing2.cont.getNo), ‐‐ order
@.OperationStart, ‐‐ start date
EventController.absSimTime, ‐‐ end date
"Deposit part", ‐‐ operation
Processing2.cont.getNo, ‐‐ part number
3, ‐‐ layer number
1.0) ‐‐ lot size
end;
‐‐ increment the parts exiting 'Workplace2' to be shown in the display panel
360
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
Workplace2.PartsOut += 1
Then, enter the following source code in SimTalk 1.0 notation:
is
do
‐‐ entry for the depositing operation into the table 'WorkersTimes'
if @ /= void then
writeWorkersTimes(
@.Name, ‐‐ resource
Processing2.cont.Name + ":"+ to_str(Processing2.cont.getNo), ‐‐ order
@.OperationStart, ‐‐ start date
EventController.absSimTime, ‐‐ end date
"Deposit part", ‐‐ operation
Processing2.cont.getNo, ‐‐ part number
3, ‐‐ layer number
1.0); ‐‐ lot size
end;
‐‐ increment the parts exiting 'Workplace2' to be shown in the display panel
Workplace2.PartsOut := Workplace2.PartsOut + 1;
end;
• Click and select the entrance control and the exit control of the object Workplace2. We selected the method wor-
kerArrives2, which we programmed above, as the entrance control and the method workerLeaves2 as the exit control
in our example.
• To create the control in which you program how the recorded values are written to the TableFile with the name
WorkersTimes, insert a Method object into the model. We named our method writeWorkersTimes.
The source code in SimTalk 2.0 notation looks like this:
param Resource,Order: string, Startdate,Enddate: datetime, Operation: string,
PartNo,LayerNo: integer, Lotsize: real
var row := WorkersTimes.ydim + 1
WorkersTimes["Resource", row] := Resource
WorkersTimes["Order", row] := Order
WorkersTimes["Start Date", row] := Startdate
361
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
WorkersTimes["End Date", row] := Enddate
WorkersTimes["Operation", row] := Operation
WorkersTimes["Part Number", row] := PartNo
WorkersTimes["Layer Number", row] := LayerNo
WorkersTimes["Lot Size", row] := Lotsize
The source code in SimTalk 1.0 notation looks like this:
(Resource, Order : string;
Startdate, Enddate : datetime;
Operation : string;
PartNo, LayerNo : integer;
Lotsize : real)
is
do
local row := WorkersTimes.ydim + 1;
WorkersTimes["Resource", row] := Resource;
WorkersTimes["Order", row] := Order;
WorkersTimes["Start Date", row] := Startdate;
WorkersTimes["End Date", row] := Enddate;
WorkersTimes["Operation", row] := Operation;
WorkersTimes["Part Number", row] := PartNo;
WorkersTimes["Layer Number", row] := LayerNo;
WorkersTimes["Lot Size", row] := Lotsize;
end;
• Insert the TableFile, which is going to store the recorded data, format the columns with the data types shown
below, and enter the respective column headers. We named our TableFile WorkersTimes.
• To delete the contents of the table WorkersTimes when you reset the model, program a reset method and enter the
following source code:
WorkersTimes.delete
362
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
363
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
• To reset the shown values to 0 when you reset the model, create a user-defined attribute of data type method,
name it reset, and enter the following source code:
self.~.PartsIn := 0
self.~.PartsOut := 0
• Repeat this for the object Workplace2.
• The code snippet below of our exit controls, workerLeaves1 and workerLeaves2, then increments the values for
each arriving and leaving part.
‐‐ increment the parts exiting the 'Workplace' to be shown in the display panel
Workplace1.PartsOut := Workplace1.PartsOut + 1
364
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
• How to write the values with the methods workerLeaves1, workerArrives2, workerLeaves2, and writeWorkersTimes into
a TableFile is described under Program Controls Recording Times for Picking-up and Depositing Parts. The result looks like
this:
• To show the values in a Worker Chart, insert the object WorkerChart into your simulation model.
• Drag the WorkerPool to the WorkerChart and drop it there. Then configure it so that it matches the screenshots
below.
365
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
366
Model a Worker Who Carries Parts Between Workplaces Modeling Workers and the Jobs They Do
• To show the values in a Gantt Chart insert the object GanttChart into your simulation model.
• Define or import an Options table. We used an options table with the settings shown below.
• Copy the contents of the filled WorkersTimes table and paste it into the Data table of the GanttChart.
367
Modeling Workers and the Jobs They Do Model a Worker Who Carries Parts Between Workplaces
• Click Show Chart to show the values for picking up and for depositing the part as a GanttChart.
368
Model Workers with Importer, Broker and Exporter Modeling Workers and the Jobs They Do
369
Modeling Workers and the Jobs They Do Model Workers with Importer, Broker and Exporter
370
Model Workers with Importer, Broker and Exporter Modeling Workers and the Jobs They Do
Click and select the Broker, which procures the services, MyBroker in our example.
• Open Station2 and click the tab Importer.
• Select the check box Active.
• Make sure that the check box on the is selected. Click on the Deactivate inheritance for the resources: Click
the toggle button to the right of Services, so that it looks like this .
Click Services and enter Job2 into the column Service of the service list.
Click and select the Broker, which procures the services, MyBroker in our example.
371
Modeling Workers and the Jobs They Do Model Workers with Importer, Broker and Exporter
• Next, we have tell the Exporters, which services they have to provide and which Broker procures the services.
Open ExporterJob1.
• Deactivate inheritance for the services: Click the toggle button to the right of Services, so that it looks like this
. Click Services and enter Job1 into the column Services of the service list.
The name of the service is not case-sensitive, just like the names of attributes and methods of the objects are not
case-sensitive.
To save memory and improve access speed, all places which are using such an case-insensitive string are point-
ing to the same string in main memory. The visible and unexpected result is that the first occurrence of the
string defines how the string is written in terms of upper- and lower-casing.
• Click and select the Broker, which procures the services, MyBroker in our example.
372
Model Workers with Importer, Broker and Exporter Modeling Workers and the Jobs They Do
Repeat this for ExporterJob2. Enter Job2 into the column Services of the service list.
Plant Simulation automatically enters the Exporters and the services into the Broker, which we specified. To view
them, open MyBroker and select View > Exporters and View > Offered Services.
373
Modeling Workers and the Jobs They Do Model Workers with Importer, Broker and Exporter
• Finally, open the EventController and click Start. As the Exporter can only work at one station at a time, and because
the stations Station1 and Station3 share the ExporterJob1, short standstills occur. Station1 has to wait until Station3
releases ExporterJob1, and thus is blocked. Station3 in turn has to wait until Station1 releases ExporterJob1, and thus
is Waiting.
You can also click the tab Statistics and view the most important data, which the object collected.
374
Model Workers with Importer, Broker and Exporter Modeling Workers and the Jobs They Do
• First we have to tell the Source which type of part and how many of them we want it to create. Open the Source
and select MU selection > Sequence Cyclical. Click next to Table and select the name of the table, which con-
tains the products. This is the table, which we inserted above.
Double-click the table, Products in our example, and enter the name of the MU class into the column MU. Enter
the amount of parts to be created into the column Number, and the name of the part into the column Name.
375
Modeling Workers and the Jobs They Do Model Workers with Importer, Broker and Exporter
• Click the toggle button to the right of Services, so that it looks like this .
• Click Services and enter Job1 into the column Service.
• Click and select the Broker, which procures the services, MyBroker in our example.
• Click the
• Clear the check box . Deactivate inheritance for the resources: Click the toggle button to the right of Services,
so that it looks like this .
Click Services and enter Setup into the column Service.
The name of the service is not case-sensitive, just like the names of attributes and methods of the objects are not
case-sensitive.
To save memory and improve access speed, all places which are using such an case-insensitive string are point-
ing to the same string in main memory. The visible and unexpected result is that the first occurrence of the
string defines how the string is written in terms of upper- and lower-casing.
Click and select the Broker, which procures the services, MyBroker in our example.
• Open Station2 and click the tab Importer.
• Select the check box Active on the .
376
Model Workers with Importer, Broker and Exporter Modeling Workers and the Jobs They Do
• Click the toggle button to the right of Services, so that it looks like this .
• Click Services and enter Job2 into the column Service.
• Click and select the Broker, which procures the services, MyBroker in our example.
• Click the
• Clear the check box . Deactivate inheritance for the resources: Click the toggle button to the right of Services,
so that it looks like this .
Click Services and enter Setup into the column Service.
The name of the service is not case-sensitive, just like the names of attributes and methods of the objects are not
case-sensitive.
To save memory and improve access speed, all places which are using such an case-insensitive string are point-
ing to the same string in main memory. The visible and unexpected result is that the first occurrence of the
string defines how the string is written in terms of upper- and lower-casing.
Click and select the Broker, which procures the services, MyBroker in our example.
• Open Station3 and click the tab Importer.
• Select the check box Active.
• Click the toggle button to the right of Services, so that it looks like this .
Click Services and enter Job3 into the column Service.
377
Modeling Workers and the Jobs They Do Model Workers with Importer, Broker and Exporter
• Click and select the Broker, which procures the services, MyBroker in our example.
• Click the
• Clear the check box . Deactivate inheritance for the resources: Click the toggle button to the right of Services,
so that it looks like this .
Click Services and enter Setup into the column Service.
The name of the service is not case-sensitive, just like the names of attributes and methods of the objects are not
case-sensitive.
To save memory and improve access speed, all places which are using such an case-insensitive string are point-
ing to the same string in main memory. The visible and unexpected result is that the first occurrence of the
string defines how the string is written in terms of upper- and lower-casing.
Click and select the Broker, which procures the services, MyBroker in our example.
• Next, we have tell the Exporters, which services they have to provide and which Broker procures the services.
Open Exporter1.
• Deactivate inheritance for the services: Click the toggle button to the right of Services, so that it looks like this
. Click Services and enter Job1 and Job3 into the column Services of the service list.
• Click and select the Broker, which procures the services, MyBroker in our example.
The name of the service is not case-sensitive, just like the names of attributes and methods of the objects are not
case-sensitive.
To save memory and improve access speed, all places which are using such an case-insensitive string are point-
ing to the same string in main memory. The visible and unexpected result is that the first occurrence of the
string defines how the string is written in terms of upper- and lower-casing.
378
Model Workers with Importer, Broker and Exporter Modeling Workers and the Jobs They Do
Repeat this for Exporter2. Enter Job2 into the column Services of the service list.
Repeat this for Exporter3. Enter Setup into the column Services of the service list.
379
Modeling a Shift System Model Workers with Importer, Broker and Exporter
• Finally, open the EventController and click Start. As the Exporter can only work at one station at a time, and because
the stations Station1 and Station3 share Exporter1, short standstills occur. Station1 has to wait until Station3 releases
ExporterJob1, and thus is blocked. Station3 in turn has to wait until Station1 releases Exporter1, and thus is Waiting.
All stations receive the service Setup from Exporter3, which does not cause a problem as it is needed once only
for each station.
You can also click the tab Statistics and view the most important data, which the object collected.
380
Defining Shifts with the ShiftCalendar Modeling a Shift System
You can define the settings for the entire shift system in the ShiftCalendar. You can:
• Enter the Names of the Shifts, the Corresponding Times and Days
• Enter Times During which the Plant Works Part of the Time
• Enter the Stations Which the ShiftCalendar Controls
• Schedule Date and Time to Start or to Finish the Production Process
381
Modeling a Shift System Defining Shifts with the ShiftCalendar
Once you have entered all the settings for the shifts, you have to select the check box Active, so that Plant Simulation
uses the shifts in your simulation model.
Enter the Names of the Shifts, the Corresponding Times and Days
Before you can enter data pertaining to the shift times, click the toggle button Inheritance, so that it looks like this .
Enter the data pertaining to one shift into the cells of one row.
• Enter the names of the different shifts into the cells below Shift. You might, for example, enter Morning shift,
Day shift, Evening shift, Graveyard shift, etc.
The ShiftCalendar displays this icon for the day shift, and this icon for the night shift. It displays this
382
Defining Shifts with the ShiftCalendar Modeling a Shift System
• Enter the times at which the shifts end into the cells below To. Enter a time between 0:00 o’clock and 24:00
o’clock. Note that you can only enter hours and minutes, not hours, minutes and seconds.
• To select the individual days on which the shift in the row is active, click in the cells below the days of the week.
You might, for example:
• Define a Morning shift that works from Monday up to and including Saturday.
• Define an Evening shift that works from Monday up to and including Friday.
• Enter the times of the breaks for each shift in the cells below Pauses. Enter the hour and the minute when the
break starts, a hyphen and the hour and minute the break ends. When you define several breaks during one work
day, separate them with a semicolon.
To define a coffee break from 9 o’clock to a quarter past 9 o’clock, and a lunch break from 12 o’clock to a quarter
till 1 o’clock, enter 9:00‐9:15;12:00‐12:45.
To make the ShiftCalendar check if the values you entered for the breaks are plausible or not and if you used the
correct format to enter the break times, click Apply.
You can also import the settings for the individual shifts, which you saved as a tab-delimited text file or which you
received from factory management. Enter data, so that it matches the screenshot below. Or you can export a shift,
which you defined, and then import it into another simulation model. To do so, right-click in the list field and select
Export or Import on the context menu.
Enter Times During which the Plant Works Part of the Time
Before you can enter data pertaining to public holidays, retooling periods and times the plant only works part of
the time, click the toggle button Inheritance, so that it looks like this .
383
Modeling a Shift System Defining Shifts with the ShiftCalendar
• To enter the date when your plant starts not working into the cells below Date From:
• Double-click into the cell and click the down arrow .
• Select a date in the calendar. Click the right or left buttons to move to another month.
To designate an entire day as a day-off, only enter a start date and no end date (Date To), and no Reduce Time To.
• To enter the date when your plant stops not working into the cells below Date To:
• Double-click into the cell and click the down arrow .
• Select a date in the calendar. Click the right or left buttons to move to another month.
• To designate a single day on which your plant only works part of the time, enter its date in the cell in the column
Date From. Enter the hour and the minute when the reduced working time starts, a hyphen and the hour and
minute the reduced time ends in the cells below Reduce Time To.
If your plant only works half a day on Christmas eve, for example the shifts from midnight to noon, you would
enter 0:00 ‐ 12:00 into the cell Reduce Time To.
Note: The ShiftCalendar combines the reduced time and the definition of the shifts for a day. If, for example, the
start time of a day with a reduced working time falls on a break, then this work day starts with a break.
• Enter why your plant does not work into the cells below Comment.
You can also import a calender, which you saved as a tab-delimited text file or which you received from factory
management. Enter data, so that it matches the screenshot below. Or you can export a calender you defined and
then import it into another simulation model. To do so, right-click in the list field and select Export or Import on
the context menu.
384
Defining Shifts with the ShiftCalendar Modeling a Shift System
385
Modeling a Shift System Defining Shifts with the ShiftCalendar
Forward scheduling
Simulation time
Backward scheduling
Start date End date
In our example below we programmed the method scheduleTest to compute the end date of two jobs taking into
account the shifts we defined in the ShiftCalendar.
The source code in SimTalk 2.0 notation looks like this:
var startTime := str_to_dateTime( "4.1.2013 0:00" )
var durationTime := str_to_time( "10:00:00.0" )
386
Pausing Material Flow Objects and Pausing Frames Modeling a Shift System
var EndTime := ShiftCalendar.schedule( startTime, durationTime, "forward" )
print "StartDate: ", startTime, " Duration: ", durationTime, " EndDate: ", EndTime
startTime := str_to_dateTime( "20.12.2013 0:00" )
durationTime := str_to_time( "19:00:00.0" )
EndTime := ShiftCalendar.schedule( startTime, durationTime, "forward" )
print "StartDate: ", startTime, " Duration: ", durationTime, " EndDate: ", EndTime
The source code in SimTalk 1.0 notation looks like this:
local startTime := str_to_dateTime( "4.1.2013 0:00" );
local durationTime := str_to_time( "10:00:00.0" );
local EndTime := ShiftCalendar.schedule( startTime, durationTime, "forward" );
print "StartDate: ", startTime, " Duration: ", durationTime, " EndDate: ", EndTime;
startTime := str_to_dateTime( "20.12.2013 0:00" );
durationTime := str_to_time( "19:00:00.0" );
EndTime := ShiftCalendar.schedule( startTime, durationTime, "forward" );
print "StartDate: ", startTime, " Duration: ", durationTime, " EndDate: ", EndTime;
The first job starts on January 4, 2013 at midnight and takes 10 hours to finish. The second job starts on December
12, 2013 and takes 19 hours. We want to know on what days and at which times the parts will be all processed,
considering the morning and day shifts we defined in the ShiftCalendar.
We also programmed the Method to print the results of its computations to the Console.
387
Modeling a Shift System Pausing Material Flow Objects and Pausing Frames
We distinguish between:
• Paused Material Flow Objects and
• Paused Frames
When it is paused, the material flow object does not receive any mobile parts. MUs can exit the object, when you
program a Method to make them do so. Plant Simulation stops set-up and processing until the end of the pause or of
the unplanned time.
The unplanned state is identical to the paused state. The only difference is how Plant Simulation counts the internal
statistics of the objects. When you define shifts that are active from 6 o’clock in the morning until 10 o’clock at
night, for example, the planned time lasts from 6 o’clock to 22 o’clock. The unplanned time lasts from 22 o’clock
to 6 o’clock the following morning.
When it is planned/scheduled to work, the object receives and processes MUs and moves them on to the succeed-
ing object in the material flow.
Paused Frames
As opposed to the material flow objects, which you can also pause manually, you can only change the paused and
the unplanned states of the Frame with its attributes Pause and Unplanned.
In addition, you can program a pause and/or an unplanned time control, both of which activate a Method on chang-
ing the value of the attribute.
388
Pausing Material Flow Objects and Pausing Frames Modeling a Shift System
if not current.unplanned
if current.pause
current.currIcon := "pause"
else
current.currIcon := "working"
end
end
The source code in SimTalk 1.0 notation looks like this:
is
do
print "Current pause ", current.pause;
389
Modeling a Shift System Pausing Material Flow Objects and Pausing Frames
MySingleProc.pause := current.pause;
local shift := root.ShiftCalendar.getCurrShift;
print "Current shift: ", shift;
if not current.unplanned then
if current.pause
then
current.currIcon := "pause";
else
current.currIcon := "working";
end;
end;
end;
if not current.unplanned then
if current.pause
then
390
Pausing Material Flow Objects and Pausing Frames Modeling a Shift System
current.currIcon := "pause";
else
current.currIcon := "working";
end;
end;
end;
391
Modeling a Shift System Pausing Material Flow Objects and Pausing Frames
392
Enter the Stations Which the LockoutZone Stops Modeling a Lockout Zone
You can:
• Enter the Stations Which the LockoutZone Stops
• Create a Failure Profile for One of the Stations
• Stop the Associated Stations Immediately After a Failure
• Stop the Associated Stations When the Repair Service Arrives
• Use a Stop Processing Control
• Use a Resume Processing Control
393
Modeling a Lockout Zone Enter the Stations Which the LockoutZone Stops
To clarify which objects are part of the lockout zone, you can draw a filled rectangle over the stations onto the
background of the Frame:
• Click the Vector Graphics ribbon tab.
• Then, click the filled rectangle button.
• Drag a rectangle over the lockout zone and the stations that are part of it.
394
Enter the Stations Which the LockoutZone Stops Modeling a Lockout Zone
• Double-click the black rectangle and select a color. We selected light blue and added a gradient from bottom to
top of our box.
395
Modeling a Lockout Zone Create a Failure Profile for One of the Stations
396
Stop the Associated Stations Immediately After a Failure Modeling a Lockout Zone
The LockoutZone then immediately stops the processing operations of Station2 and Station4 as soon as Station3 fails.
Note that only the stations that are part of the LockoutZone are stopped, but none of the other stations in the model!
Then, check the statistics values of the stations, which you assigned to the LockoutZone:
• Open the dialogs of Station2, Station3, and Station4 and change to the tab Statistics.
• You’ll notice that the stopped percentages of Station2 and Station4 match the failed percentage of Station3. This
means that the overall availability of Station2, Station3, and Station4 matches the availability of the failed station,
namely Station3.
397
Modeling a Lockout Zone Stop the Associated Stations Immediately After a Failure
398
Stop the Associated Stations Immediately After a Failure Modeling a Lockout Zone
The statistics report shows additional statistics data about the stopped and failed times. To open it, select the stations
in the Frame and press the F6 key.
399
Modeling a Lockout Zone Stop the Associated Stations When the Repair Service Arrives
In our example the LockoutZone stops the processing operations of the assigned stations, namely Station2, Station3,
and Station4, when the repair service, which the failed Station3 requested, is assigned.
400
Stop the Associated Stations When the Repair Service Arrives Modeling a Lockout Zone
• To make a service technician repair Station3 once it fails, insert a Broker into the model and assign it on the sub-
tab Failure. Then activate the failure importer. There is no need to change any other settings.
• Then, run the simulation by clicking on the Home ribbon tab. Once Station3 fails, the Worker walks from the
workerpool to the failed station on the footpath. Once our service technician has reached the Workplace attached to the
failed station Station2, the LockoutZone stops the associated stations, namely Station2 and Station4.
401
Modeling a Lockout Zone Use a Stop Processing Control
Within the control method the anonymous identifier @ designates the triggering station, while the anonymous
identifier ? designates the LockoutZone.
402
Use a Resume Processing Control Modeling a Lockout Zone
ReportStopping["First Failed Station",row] := @.name
ReportStopping["Start Stopping",row] := eventcontroller.simTime
The source code in SimTalk 1.0 notation looks like this:
is
do
local row:integer := ReportStopping.ydim + 1;
ReportStopping["First Failed Station",row] := @.name;
ReportStopping["Start Stopping",row] := eventcontroller.simTime;
end;
403
Modeling a Lockout Zone Stopped Material Flow Objects and Stopped Frames
The LockoutZone stops an assigned Frame by setting its attribute Stopped to true.
404
Stopped Material Flow Objects and Stopped Frames Assembling Parts with the Assembly Station
In this basic sample model we demonstrate how to produce two different types of tables and show how to attach
the table legs to the table tops.
The Source TableTopsIn produces two brown table tops and two white table tops. The Source TableLegsIn produces 4
table legs with different colors. The sources send the table tops and table legs on to the Assembly Station which in
turn attaches the respective legs to the matching table tops. It then sends the assembled tables on to shipping sta-
tion, which we modeled with a Drain.
To create the simulation model, insert the objects so that they match the screenshot below.
405
Assembling Parts with the Assembly Station Stopped Material Flow Objects and Stopped Frames
• Insert and configure the Sources, which are to produce the parts, the table tops and table legs in our case:
• Select the type of part which the source TableTopsIn is to produce. We selected the MU selection > Sequence
Cyclical and then selected the name of the sequence table, which we inserted before, namely the TableFile Ta-
bleTops. Selecting the table automatically applied the correct format.
406
Stopped Material Flow Objects and Stopped Frames Assembling Parts with the Assembly Station
407
Assembling Parts with the Assembly Station Stopped Material Flow Objects and Stopped Frames
• Select the type of part which the source TableLegsIn is to produce. We selected the MU selection > Sequence
Cyclical and then selected the name of the sequence table, which we inserted before, namely the TableFile Ta-
bleLegs. Selecting the table automatically applied the correct format.
408
Stopped Material Flow Objects and Stopped Frames Assembling Parts with the Assembly Station
We repeated this for the legs that go with our white table top.
• Insert and configure the Assembly Station, which is going to attach the matching table legs to the table tops.
• As we want to attach the table legs to the table tops, we selected assembly table > predecessors.
• We then clicked Open and entered the number of the predecessor from which the legs arrive, 2 in our case,
and the number of parts want to attach, 4 in our case.
409
Removing Parts with the Dismantle Station Stopped Material Flow Objects and Stopped Frames
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
In this sample model we demonstrate how to remove parts from a car in a junk yard with the DismantleStation.
In our example we will demonstrate how to:
• Configure the Source Where the Cars Enter the Junk Yard
• Configure the Dismantle Station that Removes the Parts
410
Configure the Source Where the Cars Enter the Junk Yard Removing Parts with the Dismantle Sta-
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
Configure the Source Where the Cars Enter the Junk Yard
The Source produces parts of type Car and moves them on a Line to the DismantleStation. It removes the trunk lid, the
outside mirrors, and the wheels and sends the stripped car on to the scrap press. The removed parts are sent on to the
station TestParts, which checks if they can be resold or not. It sends the good parts on to the respective Drain, which
removes them from the scrap yard proper. The bad parts, on the other hand, are moved to the scrap press.
Insert and configure the Source which produces the parts:
• Select how the Source CarsIn produces the parts. We selected an adjustable interval and the uniform distribution.
• Select the type of part which the Source is to produce. We selected Car in our example.
411
Removing Parts with the Dismantle Station Configure the Dismantle Station that Removes the Parts
With these settings the Source CarsIn creates cars whose interarrival time is uniformly distributed between 29 and 35
minutes.
412
Configure the Dismantle Station that Removes the Parts Removing Parts with the Dismantle Station
• Select the dismantle mode. We used the default setting Create MUs; the DismantleStation then creates a new part
for each successor and moves that part there.
• Select the successor to which the main MU, the stripped car in our case, moves. We used the default setting 1.
• Select if the DismantleStation moves the main MU or a new MU on to its successor. We used the default setting
Main MU.
As removing the parts also takes up some time, we entered 30 minutes as the processing time on the tab Times.
As we want to also show that the parts were removed from the car, we drew an icon of the car without these parts.
This icon has the number 1.
To make the successor line display the picture of the stripped car, we created an entrance control for this line and
programmed it to switch to the icon with the number 1 once the car moves onto it.
‐‐ SimTalk 2.0 notation
@.CurrIconNo := 1
413
Removing Parts with the Dismantle Station Configure the Station That Tests the Parts
‐‐ SimTalk 1.0 notation
is
do
@.CurrIconNo := 1;
end;
The result looks like this:
414
Configure the Station That Distributes the Removed PartsRemoving Parts with the Dismantle Station
415
Removing Parts with the Dismantle StationConfigure the Station That Distributes the Removed Parts
Start the simulation and watch how the DismantleStation removes the trunk lid, the outside mirrors, and the wheels from
our car. The stripped car is sent straight on to the scrap press, while the removed parts are sent to the test station which
checks if they are good or bad. The bad ones are sent to the scrap press, while the parts, which can be resold, are
distributed to the respective Drains.
416
Configure the Station That Distributes the Removed PartsRemoving Parts with the Dismantle Station
You can also view the summary report at the end of the simulation run and analyze the statistics report (F6) which con-
tains detailed statistics information.
417
Removing Parts with the Dismantle StationConfigure the Station That Distributes the Removed Parts
You can extend this model at will, for example to remove more parts, such as the engine, doors, bumpers, fenders,
etc. You can also add Workers, who carry parts from station to station and who test and sell parts as we did in the
scrap yard model in the examples collection.
418
Pick Up Parts and Place Them with the Robot Picking and Placing Parts with the Pick-And-Place Ro-
419
Picking and Placing Parts with the Pick-And-Place RobotPick Up Parts and Place Them with the Robot
To create the simulation model, insert the objects so that they match the screenshot above. You can use the objects
as you inserted them, i.e., without changing any of their settings.
Start the simulation and watch how the pick-and-place robot picks the part up at the station SingleProc, rotates to the
target station SingleProc1, and deposits the part there.
You can also move the position of the target station at will and make the pick-and-place robot recalculate the angle at
which it connects to the station SingleProc1.
With the stations at their original position, the angles table looks like this:
420
Pick Up Several Parts and Place Them with the Robot Picking and Placing Parts with the Pick-And-
Then, move the target station SingleProc1, right-click the pick-and-place robot and select Calculate Angles. Check the
new target angle.
421
Picking and Placing Parts with the Pick-And-Place Robot Pick Up Several Parts and Place Them with
delivers them to the Assembly station. After the Assembly station has loaded the parts onto the container, it moves the
loaded container onto the Line, which delivers it to the Drain.
In our examples we will demonstrate how to:
• Configure the Sources and the Containers and Parts to be Produced
• Configure the Robot to Pick Up Several Parts
• Configure the Assembly Station
The finished simulation model looks like this:
422
Pick Up Several Parts and Place Them with the Robot Picking and Placing Parts with the Pick-And-
• Select the type of part which the object SourceParts is to produce. We selected MyNewPart in our example. We also
want this Source to produce a part every second, so we entered 0:01 as the Interval.
• Configure the Container, which the SourceContainers is going to produce. We entered the settings shown in the
screenshot below. We want our parts to be placed in two rows of four each, so we entered 2 as the y-dimension
and 4 as the x-dimension.
423
Picking and Placing Parts with the Pick-And-Place Robot Pick Up Several Parts and Place Them with
We are going to use vector graphics for the animation of the mobile objects instead of the icons of the objects.
Plant Simulation then shows the graphics of the parts with the correct size and with the correct distance to each
other while animating your simulation model. We selected these settings:
• Configure the part which the SourceParts is going to produce. For this type of part we do not use its vector graph-
ics, but its icon. We did not change any of the settings of our part MyNewPart, we only changed its icon to fit
onto the graphic of our container. We just reduced its size to 4 by 4 pixels and assigned it a color that is easy to
recognize during the simulation.
424
Pick Up Several Parts and Place Them with the Robot Picking and Placing Parts with the Pick-And-
• Enter the number of parts which the pick-and-place robot is to move at the same time into the text box capacity.
We want it pick up eight parts, so we entered 8.
• Connect the pick-and-place robot with the SourceParts and with the Assembly station. Plant Simulation then computes
and enters the respective angles and times into the Angles Table and into the Times Table.
425
Picking and Placing Parts with the Pick-And-Place Robot Pick Up Several Parts and Place Them with
• As we want to see how the pick-and-place robot picks up eight parts, we have to add animation points to its icon
on which it shows the parts in the simulation model.
• Click the pick-and-place robot with the right mouse button in the simulation model and select Edit Icons.
• Click the Animation ribbon tab in the Icon Editor.
• Click on the Animation ribbon tab and insert the animation points on which the pick-and-place robot shows
the parts it transports. We moved the first animation point and inserted seven more animation points, as
shown in the screenshot.
426
Place Parts with a Target Control Picking and Placing Parts with the Pick-And-Place Robot
• Start the simulation and watch how the SourceParts produces parts and how it moves them to the pick-and-place
robot. It then picks up eight parts one after the other, rotates, and loads them one by one onto the container on
the Assembly station in the same order as it picked them up (FIFO). To better see how this is done, you can reduce
the simulation speed.
427
Picking and Placing Parts with the Pick-And-Place Robot Place Parts with a Target Control
428
Place Parts with a Target Control Picking and Placing Parts with the Pick-And-Place Robot
• Define the entrance control, which sets the last station on which the part is located. To do so, you can right-click
into the text box and select Create Control.
• Copy the following source code and paste it. The identifier @ designates the part, while the identifier ? designates
the station, i.e., the material flow object, on which the part is located.
@.LastStation := ?
• Select the type of part which the object Source1 is to produce. We selected Entity1 as well.
• Create an entrance control for the Source1 and enter the same source code as above.
Create the user-defined attribute LastStation for the part Entity1. This attribute is evaluated in the target control
of the pick-and-place robot to select the new target station.
• Double-click the object Entity1 and click the tab User-defined Attributes.
• Click New, enter the name of the user-defined attribute and select its data type. We entered LastStation and
selected the data type > object.
429
Picking and Placing Parts with the Pick-And-Place Robot Place Parts with a Target Control
430
Place Parts with a Target Control Picking and Placing Parts with the Pick-And-Place Robot
if @.LastStation = Source
?.setDestination(Drain)
elseif @.LastStation = Source1
?.setDestination(SingleProc, true)
else
?.setDestination(Drain1)
end
The source code in SimTalk 1.0 notation looks like this:
is
do
if ?.empty then
return;
end;
if @.LastStation = Source then
?.setDestination(Drain);
elseif @.LastStation = Source1 then
?.setDestination(SingleProc, true);
else
?.setDestination(Drain1);
end;
end;
431
Picking and Placing Parts with the Pick-And-Place Robot Place Parts with a Target Control
• Start the simulation and watch how the Source moves the part Entity1 directly on to the pick-and-place robot, which
picks it up, rotates, and delivers it to the Drain. The Source1 moves the part to the pick-and-place robot, which picks
it up, rotates, and delivers it to the processing station SingleProc. After the processing station has processed the
part, it feeds it back to the pick-and-place robot, which picks it up and delivers it to Drain1. To better see how this
is done, you can reduce the simulation speed.
432
Convey Parts Straight Through Conveying Parts Laterally with the Converter
433
Conveying Parts Laterally with the Converter Convey Parts Straight Through
To create the simulation model, insert the objects so that they match the screenshot above. You can use the Lines
and the Converter as you inserted them, i.e., without changing their settings.
434
Convey Parts Straight Through Conveying Parts Laterally with the Converter
To limit the number of parts in the plant, the Source produces 5 parts only.
Start the simulation and watch how the parts move on the Lines and how the Converter conveys them straight
through in the direction of motion, first from right to left and then from bottom to top.
435
Conveying Parts Laterally with the Converter Convey Parts Laterally According to Their Name
436
Convey Parts Laterally According to Their Name Conveying Parts Laterally with the Converter
437
Conveying Parts Laterally with the Converter Convey Parts Laterally According to Their Name
• Select the type of part and how the parts are to be produced.
• We selected a random frequency.
• We selected the name of the frequency table, which we inserted before, namely the TableFile MyParts. Selecting
the table automatically applied the correct format.
• We entered the required information, compare the screenshot below.
The Source then produces the parts with the settings above and the Converters convey them sideways to the stations
ProcessingA or ProcessingB respectively.
438
Convey Parts Laterally According to Their Name Conveying Parts Laterally with the Converter
• As we want to convey the parts arriving from ProcessingA straight on, we opened ConverterFromA and selected the
strategy > MU Name.
• We then clicked Open List and entered the names of the parts which we want to move on into the list. We want
the parts named A1, A2, and A3 to be conveyed straight on, so we entered their names and selected side 0 in the
attribute list.
439
Conveying Parts Laterally with the Converter Convey Parts Laterally According to Their Name
• Enter a processing time. We decided to use a normally distributed time with the settings below.
440
Convey Parts Laterally According to Their Name Conveying Parts Laterally with the Converter
• We then clicked Open List and entered the names of the parts which we want to move to the station ProcessingB
into the list. We want the parts named B1, B2, and B3 to be conveyed laterally to the left, so we entered their names
441
Conveying Parts Laterally with the Converter Convey Parts Laterally According to Their Name
and selected side 3 in the attribute list. As you remember, the numbers designate the side of the Converter at which
the part exits.
• As we want to convey the parts arriving from ProcessingB straight on, we opened ConverterFromB, and selected the
strategy > MU Name.
• We then clicked Open List and entered the names of the parts which we want to move on into the list. We want
the parts named B1, B2, and B3 to be conveyed straight on, so we entered their names and selected side 0 in the
attribute list.
• Start the simulation and watch how the Converters convert the parts laterally to the left and straight on depending
on their name. To better recognize that they do this correctly, we drew an icon with a red arrow pointing in the
direction of motion.
You will notice that the right hand side of the part points downwards after it has moved from ConverterToA onto
the processing station. This is because moving the part laterally to the left rotates it 90 degrees clockwise.
Once the part moves from the processing station to ConverterFromA, it is rotated another 90 degrees clockwise,
thus moving backwards towards the Drain, which removes it from the plant.
442
Convey Parts According to a Strategy Control Conveying Parts Laterally with the Converter
443
Conveying Parts Laterally with the Converter Convey Parts According to a Strategy Control
444
Convey Parts According to a Strategy Control Conveying Parts Laterally with the Converter
• We then selected the name of the delivery table, which we inserted before, namely the TableFile. Selecting it au-
tomatically applied the correct format.
• We entered the required information, compare the screenshot below.
The Source then produces the parts with the settings above and the Converter conveys them to the connected objects.
445
Conveying Parts Laterally with the Converter Convey Parts According to a Strategy Control
• To create the control, we right-clicked into the text box strategy method and selected Create Control. Plant Sim-
ulation then entered self.OnStrategy and opened the method.
We then entered the following source code. It conveys the parts named A laterally to the left, i.e., to exit 3 of the
Converter, the parts named B laterally to the right, i.e., to exit 1, and the parts named C straight on, i.e., to exit 0 of
the Converter.
The source code in SimTalk 2.0 notation looks like this:
param entranceNo: integer
if @.name = "C"
?.ExitForNextEnteringMU := 0 /* number of the exit of the converter*/
elseif @.name = "A"
if entranceNo = 2
?.ExitForNextEnteringMU := 3
else
?.ExitForNextEnteringMU := 0
end
else
if entranceNo = 2
?.ExitForNextEnteringMU := 1
else
?.ExitForNextEnteringMU := 0
end
end
The source code in SimTalk 1.0 notation looks like this:
(entranceNo : integer)
is
do
if @.name = "C" then
446
Send Parts to the Default Exit Conveying Parts Laterally with the Converter
?.ExitForNextEnteringMU := 0; /* number of the exit of the converter*/
elseif @.name = "A" then
if entranceNo = 2 then
?.ExitForNextEnteringMU := 3;
else
?.ExitForNextEnteringMU := 0;
end;
else
if entranceNo = 2 then
?.ExitForNextEnteringMU := 1;
else
?.ExitForNextEnteringMU := 0;
end;
end;
end;
• Start the simulation and watch how the Converter first moves the 10 parts named A laterally to the left, the 10 parts
named B laterally to the right, and the 10 parts named C straight on.
Lateral left Lateral right Straight through
447
Conveying Parts Laterally with the Converter Send Parts to the Default Exit
To make the Converter move the parts to the default exit on the respective succeeding Line, open the dialog of the
Converter.
• Select the Strategy > Default Exit.
• Select the number of the Default exit. We selected 3 as we want all parts to exit upwards. As you surely remember,
the exits are numbered like this:
448
Feed Parts from a Branch Line into the Main Line Conveying Parts Laterally with the Converter
Start the simulation and watch how the parts move on the Lines and how the Converter conveys them to the exit with
the number you selected, 3 in our case.
449
Conveying Parts Laterally with the Converter Feed Parts from a Branch Line into the Main Line
Insert and configure the Source which produces the parts moving on the main line:
• Select when parts are to be produced. We entered a constant interval of 30 seconds, meaning that the Source pro-
duces a part every 30 seconds.
• Select which part type is going to be produced. We selected the part MyPart, to which we added a direction arrow.
450
Feed Parts from a Branch Line into the Main Line Conveying Parts Laterally with the Converter
To make the Converter feed the parts from the branch line into the main line, provided the gap between the parts on
the main line is big enough, open the dialog of the Converter.
• Select the Strategy > Feed in.
• Enter the size of the gap between the parts. We entered a gap of 5 meters.
Start the simulation and watch how the Converter moves the parts from the branch line into the main line and con-
veys them with the orientation in which they were fed in.
451
Changing the Conveying Direction With the AngularConverterFeed Parts from a Branch Line into the
In the sample model the Source PartsIn produces parts of type MyCarbody and moves them to the AngularConverter. It
in turn changes their conveying direction. The length, which the part takes up on the AngularConverter, then changes
from MU length to MU width. This process uses up the moving time. Once the part has exited the AngularConverter,
it returns to its original position. It then is ready for the next MU.
The finished simulation model looks like this:
452
Feed Parts from a Branch Line into the Main Line Changing the Conveying Direction With the Angu-
453
Changing the Conveying Direction With the AngularConverterFeed Parts from a Branch Line into the
• Insert the Line that feeds the parts to the AngularConverter. You can make it as long as you like, but you do not
have to change any of the other settings. We made our feeder line 10 meters long. We also changed some curve
settings for display reasons to better accommodate the screenshot of our part MyCarbody on the Line.
• Insert the first AngularConverter and configure it. We entered an entry length and an exit length of 5 meters each.
454
Feed Parts from a Branch Line into the Main Line Changing the Conveying Direction With the Angu-
We also changed some curve settings for display reasons to better accommodate the screenshot of our part My-
Carbody on the AngularConverter.
• Insert the ProcessingLine onto which the AngularConverter moves the parts and configure it.
• We entered a length of 2.5 meters.
• We entered a speed of 0.001 meters per second to make the part stay on the processing line instead of being
moved on continually.
Note that Plant Simulation also recalculates the time when you click Apply and/or OK. In our case a time of
speed of 0.001 meters per second over a length of 2.5 meters corresponds to a time of 41 minutes and 40
seconds and vice versa.
455
Changing the Conveying Direction With the AngularConverterFeed Parts from a Branch Line into the
• We also changed some curve settings for display reasons to better accommodate the screenshot of our part My-
Carbody on the AngularConverter.
• To finish the simulation model, insert the second AngularConverter, another Line, and the Drain, which removes
the parts from the plant. For the AngularConverter and the Line you can use the same settings as for the Line and
the AngularConverter, which you inserted above. Finally, connect all objects with Connectors.
• To make the model visually more pleasing, move the objects closer to each other so that the Connectors are not
visible. Then, reduce the simulation speed by dragging the speed slider to the left, start the simulation, and watch
how the car bodies move over the stations.
456
Feed Parts from a Branch Line into the Main Line Changing the Conveying Direction With the Angu-
Double-click a part when it has reached the point at which the conveying direction changes on the AngularCon-
verter at the top. Up to this point the conveying direction is forward.
After this point the conveying direction is lateral right until the part reaches the point at which the conveying di-
rection changes again.
457
Changing the Conveying Direction With the AngularConverterFeed Parts from a Branch Line into the
After this point the conveying direction changes to backward until the part reaches the Drain.
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
458
Align Parts with the Turnplate Aligning and Shrink-Wrapping Parts with the Turnplate
459
Aligning and Shrink-Wrapping Parts with the Turnplate Align Parts with the Turnplate
460
Align Parts with the Turnplate Aligning and Shrink-Wrapping Parts with the Turnplate
• Insert the line that feeds the parts to the Turnplate. You can make it as long as you like, you do not have to change
any of the other settings though.
• Insert the Turnplate and the line that moves the parts on to the Drain.
• Configure the Turnplate. As we want it to rotate the part by an angle of 90 degrees, you can use the default setting,
namely the strategy >angle and a rotation angle of 90 degrees.
• To be able to see that the Turnplate actually rotates the part and moves it on rotated, mark the sides of the icon
of the part. We made the top of our part red and the bottom green.
461
Aligning and Shrink-Wrapping Parts with the Turnplate Model a Shrink Wrapper
Instead, you can also select Vector graphics active on the tab Graphics of the part.
• Start the simulation and watch how the Turnplate rotates the part. You will not be able to see anything with the
default simulation speed setting, as the simulation runs too fast.
• To remedy this, you can reduce the simulation speed in a reset method.
EventController.Speed := 60
• Start the simulation again and watch how the Turnplate rotates the part.
462
Model a Shrink Wrapper Aligning and Shrink-Wrapping Parts with the Turnplate
Next, insert the feeder line that moves the part on to the Turnplate. You can use the line with its default settings.
463
Aligning and Shrink-Wrapping Parts with the Turnplate Model a Shrink Wrapper
We decided to use a user-defined attribute of data type method. We right-clicked in the text box strategy method
and selected Create Control. Plant Simulation then entered self.OnStrategy and opened the method.
We then entered the following source code, which first sets the rotation angle of the part itself and then of the
pallet after the parts have been loaded onto it. The leading sign in the instruction ‐(4 * 360) designates the
direction in which the Turnplate rotates; + stands for clockwise, ‐ stands for counterclockwise. Our example ro-
tates the pallet four times by 360 degrees counterclockwise.
The source code in SimTalk 2.0 notation looks like this:
var rotAngle: integer
if @.typeOf(~.MyPart) ‐‐ rotates the part
rotAngle := 90
else
if @.typeOf(~.MyPallet) ‐‐ rotates the pallet
rotAngle := ‐(4 * 360) ‐‐ minus (‐) designates counterclockwise rotation
end
end
?.rotatePart(rotAngle)
The source code in SimTalk 1.0 notation looks like this:
is
464
Model a Shrink Wrapper Aligning and Shrink-Wrapping Parts with the Turnplate
rotAngle : integer;
do
if @.typeOf(~.MyPart) then ‐‐ rotates the part
rotAngle := 90;
else
if @.typeOf(~.MyPallet) then ‐‐ rotates the pallet
rotAngle := ‐(4 * 360); ‐‐ minus (‐) designates counterclockwise
end;
end;
?.rotatePart(rotAngle);
end;
465
Aligning and Shrink-Wrapping Parts with the Turnplate Model a Shrink Wrapper
466
Model a Shrink Wrapper Aligning and Shrink-Wrapping Parts with the Turnplate
• Start the simulation and watch how the Turnplate rotates the part. You will not be able to see anything with the
default simulation speed setting, as the simulation runs too fast.
• To remedy this, you can reduce the simulation speed in a reset method.
EventController.Speed := 60;
• Start the simulation again and watch how the parts are first rotated to the right, moved to the parallel station, and
moved on to the transfer station, which loads them onto the pallet. The loaded pallet is then fed back to the Turn-
plate, which rotates it four times around its center to the left and them moves it on to shipping.
467
Moving Parts On with the Turntable Model a Shrink Wrapper
468
Model a Shrink Wrapper Moving Parts On with the Turntable
469
Moving Parts On with the Turntable Model a Shrink Wrapper
• Insert the line that feeds the parts to the Turntable. You can make it as long as you like, but you do not have to
change any of the other settings.
• Insert the Turntable and its direct successors in the sequence of stations. The Turntable needs these to configure
its entry angle table and its exit angle table. In our model these successors are the feeder lines of the Drains.
• Our Turntable is 4 meters long and has its rotation point in the center, i.e., at 2 meters.
• To connect the Turntable with its successors, select the Connector in the Toolbox and click the end point of the
Turntable. Drag the mouse to the starting point of the Line and click the left mouse button. You’ll notice that
the starting point of the Connector jumps to the left on the rotation circle of the Turntable. This is because Plant
Simulation computes the angle at which the successor is located in the Frame in relation to the Turntable.
470
Model a Shrink Wrapper Moving Parts On with the Turntable
• Finally, configure the Drains and start the simulation. Watch how the part moves onto the Turntable. It first rotates
to the line FeederPartA, and moves the part onto it. It then returns to its original position, picks up the next part,
rotates to the line FeederPartA, and moves the part onto it, and so on.
• To make the Turntable turn the part around before moving it onto the top feeder line, open the Exit Angle Table
and select Which side > MU leaves backwards for the line FeederPartA. Start the simulation again and watch how
the Turntable turns the part around. To better see this, we colored the top part of our part red and the bottom
part blue.
471
Moving Parts On with the Turntable Model a Shrink Wrapper
Also compare the sample model: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
472
Model a Shrink Wrapper Modeling an Electrical Overhead Monorail
To add the Electrical Overhead Monorail objects to your simulation model, click Manage Class Library > Libraries
> Standard Libraries > Free on the Home ribbon tab.
In our examples we will demonstrate how you can switch between Plant Simulation 2D and 3D to utilize the mod-
eling strengths of both components of the program.
In our examples we will:
• Lift Hangers With the Lifter to a Different Level
473
Modeling an Electrical Overhead Monorail Lift Hangers With the Lifter to a Different Level
• Insert the second segment of the lower rail. Click the object Track on the tab EOM again. Type in the same anchor
point height as before. Connect the Tracks. Make sure that the Tracks all point in one direction. The result looks
like this in 2D:
474
Lift Hangers With the Lifter to a Different Level Modeling an Electrical Overhead Monorail
• Insert the Lifter with the same width as the placeholder and delete the placeholder. We used the default height of
15 meters, a width of 2.5 meters and a depth of 2 meters. Move the rails so that they connect flush to the Lifter.
Now we set the attached lines. Drag the connected Tracks/rails over the object Lifter and drop them there.
When you open the list of attached lines in the dialog of the Lifter, it looks like this.
Note that the Lifter automatically fills in the columns Type, Direction, and Stop Position when you run the simu-
lation.
• Click the object Track on the tab EOM of the Toolbox to create the upper rail. Type in the anchor point height. We
entered 9.
• Insert the second segment of the upper rail. Click the object Track on the tab EOM again. Type in the same anchor
point height as before. The result looks like this:
475
Modeling an Electrical Overhead Monorail Lift Hangers With the Lifter to a Different Level
Add the new attached lines to the Lifter by dragging them onto the Lifter and dropping them there.
• Insert a Source which produces the parts and connect it with one of the attached lines on the right-hand side. We
selected Time of Creation > Number Adjustable and Amount > 2. We select the object Hanger that is part of the
library as the MU that is to be produced.
• Finally we have to set the attribute Destination of the objects of type Hanger. To do so we use the two methods
setTrack and setTrack1 in which we set the attribute Destination of the current Hanger. As we want to use these
methods as a front-trigger exit control, we have to move the current Hanger. When you run the simulation, Plant
Simulation enters these methods as exit controls into the Tracks.
476
Load and Unload Hangers With the LoadStation Modeling an Electrical Overhead Monorail
Our finished simulation model looks like this after we reduced the height of the Lifter to 12 meters and changed the
background color of the model:
477
Modeling an Electrical Overhead Monorail Load and Unload Hangers With the LoadStation
• Insert an object of type VerticalCurve between the objects Track2 and Track. We entered the settings below into
the dialog of the VerticalCurve.
478
Load and Unload Hangers With the LoadStation Modeling an Electrical Overhead Monorail
The vertical curve compensates the difference in elevation from 9 meters of the object Track2 to 5 meters of the
object Track. The result looks like this:
• Insert two LoadStations above the placeholders with the same widths as these and delete the placeholders. We
entered these settings into the LoadStations.
479
Modeling an Electrical Overhead Monorail Load and Unload Hangers With the LoadStation
• Assign the rails/Tracks to the LoadStations by dragging them onto the LoadStations and dropping them there.
• Click Open List of Attached Lines to check if the attached rails were assigned correctly. The tables should look
like this:
• Insert the stations which are to be loaded and unloaded: Insert a Source, two SingleProcs, and a Drain. Connect the
four objects as shown in the figure below.
480
Load and Unload Hangers With the LoadStation Modeling an Electrical Overhead Monorail
481
Modeling an Electrical Overhead Monorail Load and Unload Hangers With the LoadStation
The parameter of the method unloadFinished of the object LoadStation1 is the destination to which the Lift drives.
• In addition we need an Init-Method which calls the method unload, and two methods which set the destination of
the Hangers.
Insert a Method and rename it to Init. Type in this source code:
&unload.methcall(10)
• We also need two methods to designate the target stations. Insert two Methods and rename them to setTarget‐
Station and setTargetStation1.
• Double-click the object Track1, change to the tab Controls and click Sensors. Click New to create a new sensor.
Select a relative position of 0.5. Select the method setTargetStation1 as the Control.
482
Load and Unload Hangers With the LoadStation Modeling an Electrical Overhead Monorail
Set the Hangers for the Transport and the Produced Part
In our last step we feed the Hangers for transporting our parts into the Electrical Overhead Monorail.
• Insert a Source next to the VerticalCurve. Connect the Source with the rail Track1.
• Double-click the icon of the Source and configure it. Click the tab Attributes, select the Time of creation > Number
Adjustable and type in an amount of 4.
• Select the MU Clampshell, which is part of the library Electrical Overhead Monorail, as the MU.
• Finally, we have to designate the part that is to be produced and transported. To do so, we double-clicked the
Source next to the SingleProc and selected the MU > Buggy, which we received from a colleague.
483
Modeling an Electrical Overhead Monorail Load and Unload Hangers With the LoadStation
• The finished model looks like this in 3D with the simulation running:
484
Load and Unload Hangers With the LoadStation Modeling an Electrical Overhead Monorail
485
Modeling a Kanban System Load and Unload Hangers With the LoadStation
To add the Kanban objects to your simulation model, click Manage Class Library > Libraries > Standard Li-
braries > Free > Kanban on the Home ribbon tab.
Note: We modeled the Kanban objects in Frames and with the object Dialog. For this reason they do not use the Sie-
mens PLM standard design, but the Windows design.
In our very basic simulation model a KanbanSingleProc at the end of a production line orders the parts, which the
Assembly station, located directly before the KanbanSingleProc in the sequence of stations in the plant, requires to
assemble cars. Two sub-lines feed wheels for two differing car models via a KanbanBuffer and two KanbanSources
into the plant.
In addition to the stations we inserted above, we need:
486
Create the Sequence of Stations within the Line Modeling a Kanban System
• A control, which orders the wheels to be attached to the car, when it is ready to be moved to the Assembly station.
We enter this control as an exit control into the SingleProc Processing on the bottom line.
• A bill of materials, i.e., a TableFile, which tells how many and which type of wheel the two car models need.
• An EventController to control the simulation.
487
Modeling a Kanban System Create the Sequence of Stations within the Line
• Insert another KanbanSource, which produces the cars to which the wheels from the other line are attached. Insert
a processing station, a SingleProc in our case, to the right of the KanbanSource.
• Insert an Assembly Station to the right of the two feeding lines. It attaches the wheels to the cars.
• Insert a KanbanSingleProc and a Drain . This KanbanSingleProc is the crucial station of the entire system as it orders
the parts to be produced and assembled.
488
Configure the Assembly Station Modeling a Kanban System
After inserting the required objects into our simulation model, we have to configure them.
• As the main part, the car, comes from predecessor 1, we can use the default setting 1 for Main MU from prede-
cessor.
• To put the wheels onto the car, select Attach MUs as the Assembly mode.
• To send the car on to the next station, select Main MU as the Exiting MU.
489
Modeling a Kanban System Configure the Kanban Station which Orders the Parts
• Click Insert New Part on the tab Part Information. Enter the types of parts you want to order and the supplier.
We entered MyCarA and the KanbanSource Cars as the station producing it.
Note: To delete an entry from this table, select Tools > Open Part Information Table and delete the respective
row from that TableFile. Instead, you can also double-click the entry on the tab, delete the EntityType and
then close the dialog.
• As we want to define a sequence of orders, we have to select the check box Sequence on the tab Advanced. We
also want the sequence of orders to be repeated, we have to make sure that the check box Cyclical is selected.
Then, click Open and enter the sequence into the table. We entered MyCarA, MyCarB and then MyCarA again.
490
Configure the Kanban Sources which Produce the Parts Modeling a Kanban System
491
Modeling a Kanban System Configure the Kanban Sources which Produce the Parts
• Click Insert New Part on the tab Part Information of the KanbanSource named Cars. Enter the types of parts you
want to order and which MU class you want to use. We entered MyCarA and the MU type Transporter.
492
Configure the Kanban Buffer which Manages Storing and Ordering of Parts Modeling a Kanban Sys-
493
Modeling a Kanban System Program a Control which Orders Parts from the Kanban Buffer
494
Program a Control which Orders Parts from the Kanban Buffer Modeling a Kanban System
To make the KanbanBuffer order the type of wheels, MyWheelA or MyWheelB, for the car models, MyCarA or MyCarB,
we entered this source code into the method MyExitControl. They instruct the buffer to get the correct type of
wheels according to the mapping you are going to enter into the TableFile BOM (bill of materials) in the next step.
It then moves the part on to the successor.
The source code in SimTalk 2.0 notation looks like this:
var requiredWheelType: string
requiredWheelType := BOM[1,@.EntityType]
KanbanBuffer.requestParts(requiredWheelType, 4)
@.move
The source code in SimTalk 1.0 notation looks like this:
is
requiredWheelType : string;
do
requiredWheelType := BOM[1,@.EntityType];
KanbanBuffer.requestParts(requiredWheelType, 4);
@.move;
end;
In the table, activate the column index and the row index.
Then, enter the Method as the exit control into the SingleProc Processing.
495
Modeling Transport Systems Program a Control which Orders Parts from the Kanban Buffer
496
Working with Curved Objects Modeling Transport Systems
The illustration shows the most important items of the curve which you can define in 2D:
Pen color Color
Curve width
Midline style
Pen width
497
Modeling Transport Systems Working with Curved Objects
• To turn the MU in the direction of motion of the flow of materials, when it turns a curve, select Rotate movables.
• To use the length of the curve in the layout within the Frame as the actual length of the Track, the Line or the
FootPath, select Transfer length . When the dialog is open, Plant Simulation enters this value into
the text box Length.
To be able to edit the length, clear the check box . Then you can type in a new length or make
slight adjustments to the length of the inserted object.
498
Working with Curved Objects Modeling Transport Systems
To create a class from a Line, Turntable, Track, TwoLaneTrack or FootPath, model this class in the Frame, and then drag
this object from the Frame to the Class Library. You can then insert this class into the active and into any other sim-
ulation model.
You can:
• Insert Curved and Straight Segments
• Draw Straight and Curved Segments with a 90° Angle (Fixed Values)
• Draw Straight and Curved Segments without Fixed Values
• Change the Shape of a Segment
• Create a Curved Object with SimTalk Commands
• Import Settings of a Curved Object from Another Simulation Model
499
Modeling Transport Systems Working with Curved Objects
To draw the next straight segment of the line, release Ctrl, drag the mouse to the end point of the line and click
the left mouse button once.
To draw a continuous sequence of straight and curved segments, for example for continuous conveyors, click
on an existing curved or straight end segment to start a new segment. Plant Simulation then uses the end coordi-
nate of the first sequence as the start coordinate of the second sequence and automatically connects the two. You
can prevent this by holding down the Alt key.
Click the right mouse button once or click Finish to exit Insert mode and to insert the curve you drew.
This also closes the dialog Edit Parameters of Curve.
Press Esc or click Abort to terminate curve mode without inserting the curve.
Click Delete Last Point to delete the most recently inserted anchor point.
When the grid is active , Plant Simulation places the points that make up the line onto grid points, provided this
is possible. For this fixed vales take precedence. When you enter a radius of 2.5 meters, for example, the end
point of the arc will not be placed onto a grid point. This results in a non-tangential transition between the end
of the arc and the end of the next straight segment, which will be placed onto a grid point again.
When you insert a straight segment after a curved segment, Plant Simulation now always enforces a tangential angle
of 0°.
500
Working with Curved Objects Modeling Transport Systems
To insert the curved Line, TwoLaneTrack, Track or FootPath with fixed values, enter them into the text boxes in
the dialog and select the check box fixed of the respective item to tell Plant Simulation that you want to use these
fixed values.
• For a line segment, you can enter the Line length in world coordinates and the Tangential angle as compared
to the previous segment.
For both segment types you can enter an anchor point height. It determines the height, i.e., the distance from
the floor, to the next anchor point. It is, for example, especially useful when you model a ramp for material
handling equipment.
501
Modeling Transport Systems Working with Curved Objects
• For a curved segment, you can enter the Arc length, its Radius, and its Curve angle in degrees as compared
to the previous segment.
The Curve angle is the angle that is formed by the radius between the start point A and the end point B of
the arc segment. A positive number designates a clockwise angle. A negative number a counterclockwise angle.
Angle
A B
Arc segment between A and B
Note: When you define a curve angle of 360°, Plant Simulation automatically connects the end point the curve
with its starting point.
• For a following straight segment you can enter the Tangential angle and the Line length.
The tangential angle designates the change in the tangential direction. Enter a positive number for a clock-
wise angle. Enter a negative number for a counterclockwise angle. Normally the tangential angle is relative to
502
Working with Curved Objects Modeling Transport Systems
the previous direction of the curved segment. For the first segment the tangential angle is the angle to the pos-
itive x direction.
When you insert a straight segment after a curved segment, Plant Simulation always enforces a tangential angle
of 0 degrees.
Direction of the previous segment
503
Modeling Transport Systems Working with Curved Objects
• The 3D Viewer will not insert a length-oriented object, if the curved object does not consist of at least two seg-
ments/points after you finished or terminated inserting the curved object.
In addition, you can insert vertical curve segments into polycurves with the mouse:
• Select the length-oriented object which you want to insert into the Frame. In our example we insert a Line.
• Press and hold down the Up arrow on the keyboard to insert a curve pointing upwards in the Z dimension. Click
the Down arrow to insert a curve pointing downwards in the Z dimension.
• Enter the radius and the angle of the segment into the dialog Edit Parameter of Curve.
504
Working with Curved Objects Modeling Transport Systems
• Click the mouse into the scene to insert the segment. The result looks like this:
Draw Straight and Curved Segments with a 90° Angle (Fixed Values)
To draw a Line/Track/TwoLaneTrack/Footpath with a straight segment, and a 90° curve followed by another straight
segment:
• Plant Simulation opens the dialog Edit Parameters of Curve. Here, we defined default settings for inserting a curve
with a 90° angle, i.e., a fixed tangential angle of 0°, a fixed curve angle of 90° and a fixed radius of 2 meters.
505
Modeling Transport Systems Working with Curved Objects
You can either apply these values or you can enter a different radius to make the curve wider. To do so, drag the
mouse to the dialog and enter another value into the text box.
Note: Plant Simulation saves the last set of settings in the dialog, so that you can re-use them the next time you
insert a curved object.
To draw the curve, drag the mouse back to the Frame window, hold down Ctrl, drag the mouse down to draw the
curve downward, and click the left mouse button once to set the curve.
To draw a curve pointing to the left: Drag the mouse back to the Frame window and hold down Ctrl. Then drag
the mouse down to draw the curve downward, and click the left mouse button once to set the curve.
506
Working with Curved Objects Modeling Transport Systems
• To draw the next straight segment of the line, release Ctrl, drag the mouse to the end point of the line and click
the left mouse button once.
• Click the right mouse button once to exit Insert mode. This also closes the dialog Edit Parameters of Curve.
When the grid is active , Plant Simulation places the points that make up the line onto grid points, provided this
is possible. For this fixed vales take precedence. When you enter a radius of 2.5 meters, for example, the end point
of the arc will not be placed onto a grid point. This results in a non-tangential transition between the end of the arc
and the end of the next straight segment, which will be placed onto a grid point again.
To get a tangential transition, you can deactivate Snap to Grid by holding down Alt, when you click the left mouse
button to set the end point of the second straight segment.
507
Modeling Transport Systems Working with Curved Objects
To draw a curved segment without using fixed values, you will have to click the left mouse button three times. To
activate curve mode, you have to hold down Ctrl, when you click the mouse button the first time!
• The first mouse click sets the starting point.
• The second mouse click sets the radius.
• The third mouse click sets the arc length or the curve angle respectively.
508
Working with Curved Objects Modeling Transport Systems
• To insert an anchor point between two existing anchor points, right-click at the location between those points
and select Insert Point on the context menu.
• To append anchor points to the end of the curve, right-click anywhere on the curve and select Append Segments
on the context menu. Add additional anchor point with the dialog Edit Parameters of Curve.
509
Modeling Transport Systems Working with Curved Objects
• To change the direction of motion of a curved object, i.e., to make the last point of the object the first point,
right-click the object and select Reverse Segments. This is especially handy if you want to mirror the layout of a
production line by copying it and then reversing the direction of motion of the mirrored line to ensure a circular
flow of materials.
• To flip the selected object on the y-axis, right-click it and select Mirror Vertically.
• To flip the selected object on the x-axis, right-click it and select Mirror Horizontally.
510
Working with Curved Objects Modeling Transport Systems
• To move the entire curved Track, TwoLaneTrack, Line or FootPath, click it once with the left mouse button and
drag the mouse up or down or left or right. You can also use the arrow keys to move the object one pixel at a
time or hold down Shift and press an arrow key to move the object one grid unit at a time.
• To delete the entire curved Track, TwoLaneTrack, Line or FootPath, click it once with the left mouse button and
press Delete.
• To extend an existing curved Track, TwoLaneTrack, Line or FootPath, without adding a new anchor point, grab the
handle with the left mouse button and drag the mouse to the new location.
• To link two or more existing curved Tracks, TwoLaneTracks, Lines or FootPaths, insert a Connector between them.
• To insert and connect another straight length-oriented object with an existing curved Track, TwoLaneTrack, Line
or FootPath, click with the left mouse button on the end of the first object, move the mouse to the beginning of
the second object and click the mouse button.
511
Modeling Transport Systems Working with Curved Objects
Clicking Open opens the segments table. Here you can also save the segments table as an object file and re-use
these settings in other simulation models.
512
Working with Curved Objects Modeling Transport Systems
To do this Press/click
Set the starting point of a straight segment. left mouse button
Set the starting point of a curved segment. Ctrl+left mouse button
Draw a straight segment horizontally or vertically and to deactivate Snap To Grid. Shift+left mouse button
513
Modeling Transport Systems Modeling a Transport System with Active Objects of Type Line
To do this Press/click
Terminate Insert mode and insert a new curved object of the same class without hav- Ctrl+right mouse button,
ing to select it in the Toolbox again. then left mouse button
Draw the last straight segment horizontally or vertically and to deactivate Snap To Shift+right mouse button
Grid. The right mouse button just refers to the last anchor point.
The Line moves the MUs from the station SP1 with the Final speed we enter to the station SP2. Plant Simulation
computes the transport Time using the final speed and the Length of the Line. Note that speed, length and transport
time depend on each other. When you change speed or length, Plant Simulation recalculates the transport time anew.
Changing the transport time also changes the speed.
514
Modeling a Transport System with Active Objects of Type Line Modeling Transport Systems
515
Modeling Transport Systems Modeling a Transport System with Active Objects of Type Line
When you do not decouple the stations, the Line behaves like a belt conveyor, meaning that the belt stops when an
MU blocks the exit of the Line and restarts as soon as the MU at the exit has moved on to the successor.
516
Modeling a Transport System with Active Objects of Type Line Modeling Transport Systems
Gap
• The default setting of the Line for the MU distance is -1, meaning that the feature MU distance is turned off and
that the parts can move onto the conveyor as soon as they arrive from the predecessor.
• A conveyor with no gap between the parts does not allow a space between them, when you enter an MU distance
of 0.
517
Modeling Transport Systems Modeling a Transport System with Active Objects of Type Line
• A conveyor with a fixed gap ensures that the space between the parts moving on it always is the same. The fixed
gap causes the conveyor to frequently stop though.
In the example below we typed in 0.5 as the MU distance, which ensures a space of 0.5 meters between the trans-
ported parts.
518
Modeling a Transport System with Active Objects of Type Line Modeling Transport Systems
• A conveyor with a minimum gap ensures that the space between the parts moving on it will not become less than
the minimum gap. It prevents the conveyor from stopping and ensures that all parts exit the conveyor if it trans-
ports a certain number of parts.
In our example we selected the MU distance type > Minimum Gap and typed in 1 as the MU distance, which ensures
a minimum space of 1 meter between the transported parts.
When running the simulation in our sample model, you’ll notice the continuous flow of parts on the minimum gap
conveyor and on the conveyor which does not use an MU distance, while the no gap conveyor and the fixed gap conveyor
stop quite often, denoted by the waiting parts.
519
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
520
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
• Use the SimTalk method create and enter this command into the init method of your simulation model:
.MUs.Transporter.create(Track)
This inserts a Transporter at the end of the Track. If you want to insert a Transporter anywhere else on the Track,
enter a position into the Method. This example creates the Transporter 5.5 meters along the length of the Track:
.MUs.Transporter.create(Track, 5.5)
As the Transporter is to move parts from station to station, SP1 and SP2 in our example, you first have to produce
those parts and then load them onto the Transporter at the station SP1 and unload them at the station SP2. For this
you will program a control in a Method and enter its name into the respective text box on the tab Controls.
521
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
Without entering a control, the Transporter just moves to the end of the Track and stops there. To make the Trans-
porter move back to the beginning of the Track, once it unloaded the parts, select the check box Front and enter these
statements into the exit control, FrontOutCtrl in our example:
if @.empty
@.backwards := true
Once the Transporter backed up to the beginning of the Track, Plant Simulation activates the rear backward exit con-
trol, when you select Rear and enter the name of the Method into the text box Backward exit. This control has to
accomplish these tasks:
• Wait until an MU is ready to exit the station, SP1 in our example.
• Load the MUs onto the Transporter.
• Move the Transporter to the end of the Track.
In our example we entered this source code in SimTalk 2.0 notation:
522
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
waituntil Sp1.occupied and SP1.cont.finished
SP1.cont.move( @ ) ‐‐ load the part
@.backwards := false
In our example we entered this source code in SimTalk 1.0 notation:
is
do
waituntil Sp1.occupied and SP1.cont.finished prio 1;
SP1.cont.move( @ ); ‐‐ load the part
@.backwards := false;
end;
Line 3 tells Plant Simulation to wait until an MU is located on the station SP1 and is processed all the way. Line 4
loads the MU onto the Transporter. Note that we use the anonymous identifier @ to address the Transporter. Line
5 tells the Transporter to move forward again to the end of the Track.
When the Transporter reaches the end of the Track you have to accomplish these tasks:
• Wait until the station, SP2 in our example, is Empty.
• Unload the Transporter.
• Move the Transporter back to the beginning of the Track.
As the Transporter initially moves to the end of the Track and then activates the following exit control while being
unloaded, we query if it is loaded or empty.
In our example we entered this source code in SimTalk 2.0 notation:
if @.empty
@.backwards := true
else
waituntil SP2.empty prio 1
@.cont.move(SP2)
@.backwards := true
end
In our example we entered this source code in SimTalk 1.0 notation:
is
do
if @.empty then
@.backwards := true;
else
waituntil SP2.empty prio 1;
@.cont.move(SP2);
@.backwards := true;
end;
end;
523
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
• Then, you have to make the Source produces parts that have the user-defined attribute Destination. This attri-
bute of data type string contains the target object to which the part is to be transported, in our example the Line
AA.
524
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
These sample applications show some possible fields of application of the cross-sliding car. You can:
• Model a Simple Cross-sliding Car
• Model a Cross-sliding Car that Distributes and Brings Together Parts
• Model a Cross-sliding Car with an Application-specific Strategy
525
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
526
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
• Finally, enter an exit control that selects the next transport order. In our sample model we named the control
partHere.
The source code in SimTalk 2.0 notation looks like this:
var part,caller,target: object
part := @
caller := ?
target := part.destination
CSC.transportOrder(caller, target, part, 1)
527
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
The cross-sliding car CSC receives driving orders from the two feeding conveyors Line and Line1. It then distributes
the parts onto the three Lines AA, BB, and CC. The method setNewTarget sets the destination for the products at the
sensor positions.
The source code of the Method setNewTarget looks like this:
‐‐ SimTalk 2.0 notation
param sensorID: integer
@.destination.DD
‐‐ SimTalk 1.0 notation
sensorID : integer
is
do
@.destination.DD;
end;
528
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
This strategy, which we programmed in the method myStrategy, ensures that the cross-sliding car CSC1 first unloads the
arriving parts from the Line AA, then from the Line BB and finally from the Line CC. To do so, we use the internal
order list of the cross-sliding car, which is shown below. The order list is a user-defined attribute of the object cross-
sliding car.
It contains the order date and time, the source, i.e., the Line at which the cross-sliding car picks up the part, the desti-
nation, i.e., the Line at which it is to deliver the part, the priority of the order, which we do not use yet, and the part
to be transported.
The method myStrategy sorts this table ascending according to column 2 (source) and returns the row with the num-
ber 1. Therefore the first order in the table will be executed.
529
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
530
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
• Click the tab Class Library, open the folder Models, and click our model CSC_Demo_3 with the right mouse but-
ton. Select Open in 3D Window.
• This opens the model in a new 3D window.
531
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
Automatically Place Parts into Stock and Remove Parts from Stock
Note: Your Plant Simulation license determines how you can use the StorageCrane.
To model a portal crane, which automatically places parts into stock and which automatically removes parts from
stock, proceed like this:
• Insert the StorageCrane into your simulation model. Connect it with its predecessor and with its successor.
• Double-click the StorageCrane to open its dialog window. Define its properties, such as its size, the number of
storage places, etc.
• Select the check box Remove after this time on the tab Removal. Then, enter the time after which the part is to
be removed from stock. Note that this check box activates automatic stocking! When you select it, the removal
orders have the highest priority (100).
532
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
• Make sure that the check box Define your own method for searching an available location is not selected. When
it is cleared, the internal mechanism of the crane automatically searches for an available storage location starting
at the largest coordinate on the y-axis and the x-axis on the bottom level of the storage area and places the part
onto it. It then proceeds to fill the free storage location toward the smaller coordinates on the y-axis. Then it goes
to the second but largest coordinate on the x-axis and the y-axis and fills the free storage places, and so on. When
the bottom level of the storage area is full, it starts filling the second level, i.e., the z-dimension (Stack height),
starting at the largest coordinate on the y-axis and the x-axis, and so on.
• Insert an EventController into the Frame, start the simulation and watch the crane place parts into stock and remove
them from stock without you having to interfere.
• Click the tab Statistics and check how many parts the portal crane placed into storage and how many it removed
from storage.
Automatically Place Parts into Stock, Remove Parts from Stock on Demand
To model a portal crane, which automatically places parts into stock and which removes parts from stock on de-
mand, proceed like this:
• Insert the StorageCrane into your simulation model. Connect it with its predecessor.
533
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
• Double-click the StorageCrane to open its dialog window. Define its properties, such as its size, the number of
storage places, etc.
• The successor has to ask the crane to remove parts from stock. For this you will employ the method getPart. In
our example the crane removes 4 parts of type Entity with the priority 20 from the store.
534
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
• Insert an EventController into the Frame, start the simulation and watch the crane place parts into stock and remove
them from stock.
• Click the tab Statistics and check how many parts the crane placed into storage and how many it removed from
storage.
Place Parts into Stock on Demand, Remove Parts from Stock Automatically
To model a portal crane, which places parts into stock on demand and which automatically removes parts from
stock, proceed like this:
• Insert the StorageCrane into your simulation model. Connect it with its successor.
• Double-click the StorageCrane to open its dialog window. Define its properties, such as its size, the number of
storage places, etc.
• The predecessor has to ask the crane to place the parts into stock. For this you will employ the method storePart.
The instruction below moves the part (@) onto the entry place of the crane. The entry place of the crane then
enters an order to move the part into its order list. It fulfills the order with the priority you enter, in our example
priority 1.
535
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
• Select the check box Remove after this time on the tab Removal. Then, enter the time after which the part is to
be removed from stock. Note that this check box activates automatic stocking! When you select it, the removal
orders have the highest priority (100).
• Insert an EventController into the Frame, start the simulation and watch the crane place parts into stock and remove
them from stock.
• Click the tab Statistics and check how many parts the crane placed into storage and how many it removed from
storage.
Place Parts into Stock on Demand, Remove Parts from Stock on Demand
To model a portal crane, which places parts into stock on demand and which removes parts from stock on demand,
proceed like this:
• Double-click the StorageCrane to open its dialog window. Define its properties, such as its size, the number of
storage places, etc.
• The predecessor has to ask the crane to place the parts into stock. For this you will employ the method storePart.
The instruction below moves the part (@) onto the entry place of the crane. The entry place of the crane then
enters an order to move the part into its order list. It fulfills the order with the priority you enter, in our example
priority 1.
536
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
• The successor has to ask the crane to remove parts from stock. For this you will employ the method getPart.
In our example the crane retrieves 4 parts of type Entity from the store. The crane enters this order with the
priority 20 into its order list.
537
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
@.move;
if self.~.empty then
PortalCrane.getPart("Entity", 4,20);
end;
end;
• Insert an EventController into the Frame, start the simulation and watch the crane place parts into stock and remove
them from stock.
• Click the tab Statistics and check how many parts the portal crane placed into storage and how many it removed
from storage.
Temporarily Store Parts, Put Together the Order, Remove the Parts From Stock
Suppose you have to combine parts within a production plant to corresponding orders. To facilitate this, each part
has an attribute called OrderNo, which designates the order number. The parts, which are to be combined into an
order, arrive in an unordered sequence. They have to be placed into intermediate storage until all parts of the order
are in stock. Then, the parts of the complete order can be retrieved from stock. Each order contains a different
number of parts. The attribute OrderQuantity, which each part has, tells how many parts belong to an order.
To solve this task, we will demonstrate how to:
• Define How the Source Creates Parts and Moves Them On
• Shuffle the Sequence of Orders
• Place Parts into Stock
• Remove Parts from Stock
538
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
The method ExitCtrl checks if the value of the Variable, which shows the number of parts which were created for
an order, is the same as the number of parts which was actually ordered. When this is the case, Plant Simulation in-
creases the order number by 1. It also determines the order size, between 1 and 10 parts, using a uniform distribu-
tion. The bounds of the distribution, 1 and 11, are never reached. The mathematical function floor computes the
next-lower value.
The source code in SimTalk 2.0 notation looks like this:
param App: object
App := self.~
if App.currNo=App.OrderQuantity
App.OrderNo := App.OrderNo+1
App.currNo := 1
App.OrderQuantity := floor( z_uniform( 3, 1, 11 ))
else
App.currNo := App.currNo+1
end
@.createAttr("OrderNo", "integer")
@.createAttr("Quantity", "integer")
@.OrderNo := App.OrderNo
@.Quantity := App.OrderQuantity
@.name := "Order_"+to_str(App.orderNo)
The source code in SimTalk 1.0 notation looks like this:
is
App : object;
do
App := self.~;
if App.currNo=App.OrderQuantity then
App.OrderNo := App.OrderNo+1;
App.currNo := 1;
App.OrderQuantity := floor( z_uniform( 3, 1, 11 ));
else
App.currNo := App.currNo+1;
539
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
end;
@.createAttr( "OrderNo", "integer" );
@.createAttr( "Quantity", "integer" );
@.OrderNo := App.OrderNo;
@.Quantity := App.OrderQuantity;
@.name := "Order_"+to_str(App.orderNo);
end;
The Method then creates the attributes OrderNo and OrderQuantity, which contain the number of the order and the
size of the order. Finally, the Method sets the name of the part to the order number.
Shuffle the Sequence of Orders
The second station in the sequence of stations, the ParallelProc, shuffles the sequence of orders. First, we define a
capacity of 100 parts by entering 10 for the x-dimension and 10 for the y-dimension.
Then, we select the Normal distribution for the processing time. We enter a mean value of 10 minutes, and a sigma
of 5 minutes. This way the processing time will be calculated anew for each incoming part and the parts will thus
be shuffled.
540
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
To format this Method, so that is has the correct format for our purpose, we can either click OK or Apply. The for
loops, together with the built-in method placeIsFree, first search for a free storage place for stocking the parts.
The source code in SimTalk 2.0 notation looks like this:
Example: param byref x1,y1,z1: integer, part: object ‐> boolean
‐‐ search a free storage place
for var k := 1 to crane.getStoreZDim
for var i := crane.getStoreXDim downto 1
for var j := crane.getStoreYDim downto 1
if crane.placeIsFree(i,j,k)
x1 := i
y1 := j
z1 := k
transferToStock(part, x1, y1, z1 )
return true
end
next
next
541
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
next
return false
end
The source code in SimTalk 1.0 notation looks like this:
As soon as a free place is available, the method transferToStock, which we programmed, places the part into stock.
The source code in SimTalk 2.0 notation looks like this:
param part: object, x1,y1,z1: integer
var order : string
var row : integer
var location :table
InventoryList.setCursor(1,1)
if InventoryList.find({1,1}..{*,*}, part.name)
row := InventoryList.CursorY
else
row := InventoryList.YDim+1
InventoryList["quantity", row] := part.quantity
InventoryList["OrderNo", row] := part.name
InventoryList["number", row] := 0
end
InventoryList["number", row] := InventoryList["number", row] + 1
if InventoryList["number", row] >= inventoryList["quantity", row]
542
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
&releaseFromStock.newCallChain(row)
end
The source code in SimTalk 1.0 notation looks like this:
The Method first checks the InventoryList if a part with this order number already exists in the store. When this is not
the case, the crane enters the order number and the order quantity into the InventoryList. As you remember, we de-
fined order number and order quantity as user-defined attributes for the part. The crane then increases the number
of parts in the store by 1. When the number of stored parts is the same as the number of ordered parts, the crane
removes the parts of this order from stock. As this Method call may only be activated after the part has been trans-
ferred to stock for good, we employ the method newCallChain.
543
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
param row: integer
crane.getPart(InventoryList["OrderNo", row ],InventoryList["Number", row ], 10)
InventoryList.cutRow(row)
The source code in SimTalk 1.0 notation looks like this:
This Method retrieves all parts of a certain type, identified by its name, employing the built-in method getPart. As we
chose the name of the part to be identical with the order number, we can directly retrieve the order number and
the order quantity. After this, the crane deletes the order number from the InventoryList.
544
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
Produce the Parts and Place them into the Storage Area of the Crane
The parts, in our example Containers, will be created in an object of type Source. The succeeding station SingleProc
delays the parts employing a normally distributed processing time. From the SingleProc the parts are directly moved
to the entry station of the storage crane, which then automatically places them into stock.
545
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
We distribute 20 times 10 storage places across the store. Each storage place is 1 meter by 1 meter.
546
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
We mark rows 9 and 10 as barred area on which the tracks of the train run. Other than that, we do not change any
of the default settings of the crane.
In a Frame of its own we combine the Source, the sequence table, the collision control hitch and a short piece of track.
547
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
• We configure the Source so that it creates a train every ten minutes according to the settings, which we enter into
the sequence table.
• In the sequence table we instruct the Source to produce one engine and seven boxcars per train.
• For the engine we set the attribute isTractor to true and the speed (in column 12) to 1 m/s.
548
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
• For the boxcars we set isTractor to false and the speed (in column 12) to 1.1 m/s. This way we cause a collision
event, which hitches the boxcars to each other and to the engine.
• We then program the control for the collision event in the method hitch.
The source code in SimTalk 2.0 notation looks like this:
var rear, front: object
rear := @
front := rear.frontMU
rear.hitchFront(front)
The source code in SimTalk 1.0 notation looks like this:
549
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
The method load is to be executed only, when the engine of the train triggered the sensor. Thus we first have to check
if the respective car of the train is the engine, i.e., if the attribute isTractor is true. If so, the train stops and we retrieve
the contents table of the crane. For safety purposes we wait until the store contains 10 containers at least.
The first boxcar is hitched directly to the rear of the engine (engine.rearMU). The loading position refers to the X-
Position of the crane at which the first boxcar is located.
Then we create the loading orders for the crane. For this we always take the last entry in its contents list. We utilize
the method getPartFromPositionToObject to instruct the crane to load the part from the specified position in the con-
tents list with the priority 20 to the X-Position loadPos, and the Y-Position 10 onto the boxcar. As the boxcar can only
hold a single container, we also enter the loading position (1,1). The priority 20 ensures that the loading orders have
a higher priority than the storage orders.
Then we proceed to the next boxcar and adjust its loading position accordingly. This we repeat until we have given
the loading orders for all boxcars. Note that until now we only have issued the orders, but that the boxcars have not
necessarily been loaded yet! To ensure this, we pass over all boxcars again and wait until all boxcars are loaded. Only
then can the engine start and pull the train away.
The complete source code of the method load in SimTalk 2.0 notation looks like this:
var content: table[integer, integer, integer, integer, object]
var i, row: integer
var boxcar: object
var engine: object
var loadPos: integer
var outcome: boolean
if @.isTractor
engine := @
engine.stop
content.create
repeat
‐‐ 10 containers at least need to be in the store
PortalCrane.getStoreTable(content)
if content.ydim < 10
wait( 300 )
end
550
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
until content.ydim >= 10
boxcar := engine.rearMu
loadPos := 18
‐‐ generate all loading orders for the crane
while boxcar /= void
row := content.ydim;
outcome := PortalCrane.getPartFromPositionToObject(content[1,row],
content[2,row], content[3,row], 20, loadPos, 10, boxcar, 1, 1 )
boxcar := boxcar.rearMU
loadPos ‐= 2
content.cutRow( row )
end
‐‐ wait until the train is completely loaded
boxcar := engine.rearMu
while boxcar /= void
waituntil boxcar.full
boxcar := boxcar.rearMU
end
engine.continue
end
The complete source code of the method load in SimTalk 1.0 notation looks like this:
551
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
552
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
The source code of the method unload in SimTalk 2.0 notation looks like this:
param sensorID: integer
var engine: object, boxcar: object
if @.isTractor
engine := @
engine.stop
boxcar := engine.rearMu
while boxcar /= void
if boxcar.cont/= void
waituntil MySingleProc.empty
boxcar.cont.move( SP )
end
boxcar := boxcar.rearMu
end
engine.continue
end
The source code of the method unload in SimTalk 1.0 notation looks like this:
553
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
Next we place several instances of the SingleProc within the storage area of the crane. In order to be able see them,
we set the icon of the StorageCrane to transparent by selecting View > Change Icon. Then, we connect two SingleProcs
each. Thus we created a processing machine and a removal station. For this removal station we enter an exit control
and the short processing time it takes the part to be moved from the machine to the removal station.
Within the exit control we first assign the current part. Then, we instruct the StorageCrane to transport the part with
the priority 2 from the position at the coordinates (13,6) to the position (10,3) and to there place it onto Single‐
Proc1. As the SingleProc only has a single processing station, we do not have to specify the station on the SingleProc
and enter ‐1 twice.
The source code in SimTalk 2.0 notation looks like this:
var part: object
part := @
PortalCrane.shiftPartFromToObject(part, 2, 13, 6, 10, 3, SingleProc, ‐1, ‐1)
The source code in SimTalk 1.0 notation looks like this:
554
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
is
part : object;
do
part := @;
PortalCrane.shiftPartFromToObject(part, 2, 13, 6, 10, 3, SingleProc, ‐1, ‐1);
end;
555
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
• Double-click the object Tractor. To designate it as the tractor of the tugger train, which pulls the trailer(s), select the
check box Is Tractor. This Transporter then shows the icon tractor instead of the icon Operational. As a vector
graphic the icon of the tractor looks like this .
To prevent the tractor from loading parts, enter 0 as the X-dimension and the Y-dimension. For the loading space
types Track and Line, enter 0 as the Capacity.
556
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
• A Method object, in which we program how the trailers are hitched up to the tractor, when they collide with the
transporter driving in front of them.
• An Interface object, which provides the connection to the other objects within the simulation model.
557
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
• Click and select the TableFile MySequenceTable, which we inserted above. To create a tractor object using the MU
class Tractor and four trailer objects using the MU class Transporter, we entered the values shown in the screen-
shot below.
• The characters, which we enter into the column Attributes, only serve as a placeholder for the sub-tables con-
tained in these cells. Within the sub-tables we set the attributes of the tractor and of the trailers.
To designate the tractor, we entered the attribute IsTractor and set it to true. To set its speed, we entered the
attribute Speed and entered 1.0 m/s.
Note: We already defined the attributes of the tractor in the class Tractor. We just entered them again to make
sure that the settings in the tractor are the correct ones, in case the settings of the class get changed.
558
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
To designate the trailers, we set the attribute IsTractor to false. As we want the trailers of drive faster than the
tractor and to collide with the object in front of them, we entered 1.1 m/s as their Speed. To designate the collision
control (CollisionCtrl), we entered the name of the Method, which we inserted above, hitchMethod in our case.
The collision control hitches the trailers to each other and the front trailer to the tractor.
These statements above translate into this source code in our Method in SimTalk 2.0 notation:
var Rear, Front: object, TractorSpeed: real
559
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
Rear := @
Front := @.frontMU
if Front.IsTractor
TractorSpeed := Front.Speed
Rear.hitchFront(Front)
else
Rear.hitchFront(Front)
end
These statements above translate into this source code in our Method in SimTalk 1.0 notation:
is
Rear, Front : object;
TractorSpeed : real;
do
Rear := @;
Front := @.frontMU;
if Front.IsTractor then
TractorSpeed := Front.Speed;
Rear.hitchFront(Front);
else
Rear.hitchFront(Front);
end;
end;
560
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
• An unloading station on the main line and the side line each, plus a Drain each, which removes the parts from
the lines. For the two Drains, which we named ShippingMain and ShippingSide, we use the default settings.
• An EventController for running the simulation.
Our finished model looks like this.
561
Modeling Transport Systems Modeling a Transport System with Passive Objects of Type Track
Enter the position of the sensor, which triggers loading the tugger trains with parts. We entered 7 (meters). The Trans-
ferStation then enters these settings into the dialog Sensor of the Track.
Next, configure the stations UnloadingMain and UnloadingSide as shown in the screenshots below.
562
Modeling a Transport System with Passive Objects of Type Track Modeling Transport Systems
When you are finished, insert an EventController, start the simulation and watch how the tugger trains are loaded with
parts, move on the main line, are unloaded, are loaded again and are unloaded on the side line on their second trip.
563
Preparing Data for the Simulation with DataFit Step 1: Define the Task and the Objectives
564
Step 3: Decide which Distribution to Use Preparing Data for the Simulation with DataFit
This takes up about 35 percent of the project time! Creating the model takes up 25 percent, validating and correcting
15 percent, running experiments 10 percent, analyzing and evaluating 15 percent of the project time.
You will use:
Static data, such as:
• Data extracted from the production program, which you collected by watching the machines in the plant or
which you received from the experts on the shop floor.
• Data extracted from the structure of the plant.
• Data from a shift model.
Stochastic data, such as:
• The failure behavior.
• The processing and set-up times.
• The amount of rejects.
For simulating the material flow of interlinked production and assembly facilities you need:
1. Data covering the entire production system (model data):
• The production program, such as the produced products, the lot sizes, etc.
• The layout of the plant, its structure, controls, and the points where parts are introduced into or discharged
from the system.
• Reworking, such as reworking times, the station that produces rejects, and the frequency of rejects.
2. Data covering the staff working in the plant (object data):
• The number of workers, and their qualifications.
• The shifts worked.
• The distances covered and the required times.
3. Data covering machines, transport systems and work stations (object data):
• Failures, including MTBF, MTTR, reference time, distribution, and variance.
• Cycle times, capacities and cycle variance.
• Set-up times.
• Supply with materials.
565
Preparing Data for the Simulation with DataFit Step 3: Decide which Distribution to Use
You can:
• Employ Distribution-Fitting with DataFit.
• Use Distributions with Bounds.
566
Step 3: Decide which Distribution to Use Preparing Data for the Simulation with DataFit
• Import the data you received—sample data observed on the shop floor, or the results of a previous simulation
run—into a column of an Plant Simulation table file. Then, drag this table over the object DataFit in the Frame that
contains your simulation model and drop it there.
• Select a column that contains the data you want to use in the dialog that opens and click Load.
Or
• Click Read to import data from the file whose name you enter into the text box Data file.
• When you import data from other programs, for example from Excel, you have to select the same Decimal sep-
arator in Plant Simulation as you used in the other application. You might also paste the sample data into the table
via the Windows-Clipboard. For this you have to click Open to open the input table.
• Select which type of data you want to investigate:
• Discrete numbers, i.e., any integer number greater than or equal to 0, this is 0, 1, 2, 3, etc.
• Continuous numbers, which include negative numbers, and floating point numbers, for example ‐10, 1.4, 5, ...
When you have entered all required data or selected the required settings, you can proceed to the tab Filter.
567
Preparing Data for the Simulation with DataFit Step 3: Decide which Distribution to Use
• Clicking Open filtered data opens a table with the sorted data to be used for data fitting, i.e., after eliminating
unwanted values.
When you have entered the required data or selected the required settings, you can proceed to the tab Fit.
• Click Select and select one, several or all distributions in the dialog that opens.
• Enter a Level of significance for the values. You can enter a number between 0 and 1. In most cases you will enter
a number between 0 and 0.2.
• Click Fit to estimate the parameters for the selected distribution or distributions using the sample.
• If you are investigating a large sample, you will have to use the Chi-Square Test as the Goodness-of-Fit Test. For
this you have to enter the Number of classes. The Goodness-of-Fit Test describes how good the distribution with
its parameters fits the given sample.
• Click Show to display a histogram of the sample in a chart.
When you have entered the required data or selected the required settings, you can proceed to the tab Evaluation.
568
Use Distributions with Bounds Preparing Data for the Simulation with DataFit
569
Preparing Data for the Simulation with DataFit Use Distributions with Bounds
When you enter the parameters µ = 2.0, and = 1 for the normal distribution, a real mean value of the distribution
with the lower bound 0 and the upper bound 3 will be 1.77.
570
Use Distributions with Bounds Executing Simulation Experiments
• On the tab Normal you compute the distribution parameter Sigma of the normal distribution with given quar-
tering parameter Mu µ and probability of a hit.
In addition, the TruncDistribution computes the real mean value and the real standard deviation of the normal dis-
tribution with bounds.
571
Executing Simulation Experiments Execute Experiments with the ExperimentManager
Note: We modeled the ExperimentManager in Frames and with the object Dialog. For this reason they do not use the
Siemens PLM standard design, but the Windows design.
Your Plant Simulation license determines how you can use the ExperimentManager.
• With a runtime license you can execute experiments with a simulation model. You can modify parameters in tables.
You cannot change the structure of the ExperimentManager model.
• With an application license, you can also change the structure of the model.
• With a professional license, you can, in addition, define the experiments in a Method.
• The standard license does not support the ExperimentManager at all.
• The runtime license and the student license cannot control distributed simulations.
You can use computers with the following license types as simulation machines:
572
Execute Experiments with the ExperimentManager Executing Simulation Experiments
Note: A simulation study contains several experiments. Each experiment executes several simulation runs,
each of which leads to an observation.
To open the table into which you enter the output values, click the button Define Output Values on the tab Defini-
tion. An output value can be a method or an attribute of an object in your model. You can enter a description for the
output values which the ExperimentManager shows in all evaluations. This makes the results of the simulation study
easier to understand.
When you drag an object onto the ExperimentManager, it offers all numerical attributes and methods which can be
used as output values.
573
Executing Simulation Experiments Execute Experiments with the ExperimentManager
If the results of a simulation run are provided in a Plant Simulation table, you can use the entire table as output value
of the study. To designate a table as the results table drag it onto the ExperimentManager.
To open the table into which you enter the input values, click the button Define Input Variables on the tab Definition.
An input value can be an attribute of an object or an entry in a table. Before executing an experiment, the Experi-
mentManager sets the input values in the simulation model. These input values are not changed in the simulations
runs of an experiment.
Hold down the Shift key and drag an object onto the ExperimentManager and drop it there. This shows all attributes
of the object in a dialog. To select one or more attributes, hold down Ctrl and click the attributes your are interested
in. This opens the table file of all input values. Then, add other values. You can also enter a description of the input
value which the ExperimentManager uses in all evaluations. The ExperimentManager checks the entries by closing this
table file.
Input values can also be parameters of probability distributions, which you have to type into the table.
To set the input values for the experiments, as shown in the figure below, click the button Define Experiments on
the tab Definition.
574
Execute Experiments with the ExperimentManager Executing Simulation Experiments
After you have finished creating your simulation model, you can start running experiments with it. Note that a sim-
ulation run always has to end. Many models might continue running after the processes, which interest you, have
been simulated, for example to simulate failures, etc. When you use the method stop of the EventController in your
simulation model, you have to call the method endSim of the ExperimentManager at the appropriate place. Instead,
you can also set the duration of the simulation, by either entering an End time in the EventController or setting it with
the attribute End.
575
Executing Simulation Experiments Execute Experiments with the ExperimentManager
Depending on the size of your simulation model, running the experiments can take a while. Plant Simulation shows
the currently running simulation in the dialog. At the end of the experiment run the ExperimentManager opens a
report.
When you defined several experiments with many simulation runs that take a long time to be executed, you can run
them overnight.
576
Execute Experiments with the ExperimentManager Executing Simulation Experiments
You can:
• View the Results as a Table.
• View the Results in a Chart.
• View the Results as a Report.
View the Results as a Table
To display the results of the simulation experiments in the result tables:
1. Click Results to show an overview for all simulation experiments. The table Results shows all input values and all
mean values of the output values. To show a results table in a sub-table, select the respective entry in a cell in the
table and press the F2 key.
Note: You can execute an experiment run without any input values. But each simulation study requires at least
one output value.
2. Click Detailed Results to show the values for all output values.
577
Executing Simulation Experiments Execute Experiments with the ExperimentManager
The observations of each experiment represent a sample for each output value. The ExperimentManager computes
these values for it. The:
• Mean value
• Standard deviation
• Minimum
• Maximum
• Left bound of the confidence interval
• Right bound of the confidence interval
The confidence intervals belong to the Confidence interval which you entered under Tools > Advanced Settings >
Settings.
If you defined a table as output value, the table DetailedResults provides sub-tables with the following statistical val-
ues of the numerical entries of this table:
• Mean value
• Standard deviation
• Minimum
• Maximum
The column Observations provides the results of all simulation runs for all output values.
View the Results in a Chart
The ExperimentManager can generate a chart of the selected output values.
578
Execute Experiments with the ExperimentManager Executing Simulation Experiments
You can select to show min-max intervals or confidence intervals for the output values. Under Tools > Advanced
Settings > Settings you can select if the ExperimentManager shows the 25 percent, the 50 per-
cent, and the 75 percent quartiles for the min-max intervals.
This type of display is called a box plot. It shows the distribution of the observations of an output value of an ex-
periment.
579
Executing Simulation Experiments Execute Experiments with the ExperimentManager
You can select what the report shows under Tools > Advanced Settings > Report. You can select to automatically
show the report at the end of the simulation study and to save the report. You can also select if the ExperimentMan-
ager saves the data of the table Results to an Excel file. This way you can publish the results of a study in a compact
format. If you want to save the report or the Excel file to a folder, click Folder and select the target folder.
To add a Chart which you inserted into your model to the Report, drag the Chart over the icon of the ExperimentMan-
ager and drop it there.
580
Execute Experiments with the ExperimentManager Executing Simulation Experiments
581
Executing Simulation Experiments Execute Experiments with the ExperimentManager
582
Execute Experiments with the ExperimentManager Executing Simulation Experiments
583
Executing Simulation Experiments Execute Experiments with the ExperimentManager
• Click into the cell and select the level of the Opening Parenthesis. Plant Simulation evaluates expressions in pa-
renthesis from the inside to the outside, i.e., it evaluates the contents of the innermost expression in paren-
thesis first and then proceeds towards the outside one by one.
• Enter the name of the Object whose attribute value you want to compare to another object.
• Enter the name of an Attribute of this object.
• Click into the cell and select an Operator that compares the attribute values: < (less than), > (greater than), =
(equal to), ~= (about equal), or /= (unequal to).
• Enter the Value that the operator compares.
• Enter the name of the Object whose attribute value is compared to the object you entered above.
• Enter the name of an Attribute of this object.
• Click into the cell and select the level of the Closing Parenthesis.
• Click into the cell Boolean Operation and select an operator, AND or OR that connects the boolean values
that result from evaluating the logical expression you defined in a row of the query table.
3. If you want to, you can also test a condition in a Method. For this, click Method Condition and enter your source
code into the Method that opens.
4. Click Table Action. Enter your values into the table that opens:
• Enter the name of the object whose attribute value you want to manipulate.
• Enter the name of an attribute of this object.
• Click into the cell and select an operator that manipulates the attribute value.
584
Optimize Models with Genetic Algorithms Executing Simulation Experiments
• Enter the value the operator adds, subtracts or equates to the value of the attribute you entered above.
5. If you want to, you can also program a Method that executes an action. To do so, click Method Action and enter
your source code into the Method that opens.
The GAWizard integrates genetic algorithms into an existing simulation model. You can use it for optimiza-
tions in which the evaluation is based on a simulation run as well as for optimizations in which the evaluation is
based on calculations in Methods.
Note: Your Plant Simulation license determines how you can use the GAWizard.
Genetic algorithms are stochastic optimization procedures that in most cases only produce an approximate solution.
For the most common practical applications these approximate solutions do suffice. Genetic algorithms manage sev-
eral solution proposals during the optimization. According to evolution in biology these solution proposals are
called individuals. The individuals managed in a single optimization step are combined into a generation. The
quality of a solution proposal is evaluated through a numerical value, the so-called fitness value.
Solutions generated by Genetic Algorithms are passed to the simulation model, which in turn will be configured ac-
cordingly. When you do not use the Batch-Mean method, Plant Simulation starts the simulation run with the settings
typical for this solution. At the end of the simulation run the simulation model is going to pass the resulting fitness
value back to the object GAWizard.
The Batch-Mean method starts a single simulation run for the entire optimization run. After a warm-up period, it
uses time sectors for evaluating the solution. At the beginning of a time sector the method configures the model
for a solution. At the end of the time sector the fitness value will be determined.
585
Packing a Model and Sending it to Another User Optimize Models with Genetic Algorithms
When your evaluation takes place via a model containing random components, such as failures of machines, then
you have to execute several simulation runs for each newly created individual. The fitness value is called observa-
tion. The genetic algorithm uses the mean value of all observations of the fitness values of an individual. Enter the
number of observations per individual on the tab Define of the GAWizard. For a deterministic simulation, you will
use a single observation per individual.
When the genetic algorithm creates individuals defining the same parameterization, the GAWizard recognizes this
and uses the fitness values of the already evaluated individuals. The optimization run thus does not waste additional
time for multiple evaluations of an individual.
• Click OK after Pack and Go successfully created the package. Then, distribute the file, for example by sending it
as an e-mail or by putting it in your Intranet, etc.
586
Optimize Models with Genetic Algorithms Packing a Model and Sending it to Another User
• The recipient can double-click the file you sent and start the simulation to view what you wanted to show.
Be aware that the Plant Simulation Viewer license only provides a restricted set of features, which are described under
the Window ribbon tab > Start Page > Getting Started > Example Models > Product Information.
587
Packing a Model and Sending it to Another User Optimize Models with Genetic Algorithms
588
Animating the Simulation Model and
Viewing the Results
Animating the simulation model and viewing the results provides information about these topics:
• Animating Your Simulation Model
• Viewing and Visualizing Statistics
• Toggling States and Executing Actions
• Working with Evaluation Tools
For this, you can modify any of the built-in icons or design new one icons in the Icon Editor. Here you can also create
and modify the animation structures, i.e., the animation points and animation lines, to define the route and the paths
which the mobile objects (MUs) take.
• Icon Animation , i.e., the animation of the icons of the material flow objects themselves. When it is active,
the objects show the state they are in. This way you can easily detect which object obstructs the flow of materials.
• MU Animation , i.e., the animation of mobile objects in your simulation model. During the simulation run
the animation shows the state of the objects and the positions and movements of the MUs.
• When you activate MU Animation, you immediately detect the flow of the mobile objects and can detect
blocked stations, where the MUs pile up.
• When you deactivate MU Animation while an object intends to change its state, Plant Simulation delays its display
on screen until you activate the animation again or until the object is selected.
To deactivate:
• Icon Animation, click Icon Animation on the Home ribbon tab. Icon Animation is activated by default.
• MU Animation, click MU Animation on the Home ribbon tab. MU Animation is activated by default.
To run the simulation with the setting you selected, click Start/Stop Simulation in the EventController.
Note: Clicking on the Home ribbon tab activates MU Animation and Icon Animation. To start the sim-
ulation without animating objects and MUs, click .
Plant Simulation uses the icon of an object to display it in the Class Library, in the Toolbox, and in the Frame. The icons
can also serve to display the state of operation of the object, such as failed, paused, unplanned, etc. You can modify the
built-in icons, including any of the animation paths, or design new ones in the Icon Editor.
At times you have to edit one of the existing icons of an object or you will want to add different icons to it.
Editing an Icon
To edit the icons of an object, do one of the following:
• Right-click the object in the Frame and select Edit Icons or press Ctrl+I.
• Select the object in the Frame and click Edit Icons on the Home ribbon tab or press Ctrl+I.
• Right-click the object in the Class Library and select Edit Icons.
• Click on the Home ribbon tab to edit the icons of the selected Frame.
• Click on the Home ribbon tab to edit the icons of the selected object.
• Then, use the functions on the Edit Ribbon Tab, the Animation Ribbon Tab, and the General Ribbon Tab of the
Icon Editor to actually edit the icon.
Previous/Next
Icon button
Color palette
Reference
point
Transparent
area
Transparency color
Creating an Icon
To create a new icon and to then open an existing drawing you would like to use, do one of the following:
• Click New Icon on the Edit ribbon tab. If the drawing you open is larger than the default icon size of 41
by 41 pixels, enter another width and/or height.
• Click Import > Import Bitmap File/Import Icon Resource, navigate to the folder that contains the drawing you
would like to use as an icon, select the file and click Open.
• Drag a graphics file (.gif, .bmp, .ppm, .ppm raw, .dxf or .dwg) from the Windows Explorer, etc. over the drawing
window and drop it there.
• Enter a meaningful Name for the icon.
• To draw a line or a shape, select a drawing color and one of the drawing tools
on the Edit ribbon tab, and draw the shape in the drawing window.
• To move the reference point, click and then click the position you would like to move the reference point to.
• To change the color
• of one or several pixels, select a color in the color palette and click the pixel(s) whose color you would like to
change with one of the drawing tools.
• of a contiguous color area, select a color in the color palette and click the area whose color you would like to
change with .
• To draw with two colors, you can assign a color each to the left mouse button and the right mouse button:
• Click a color in the color palette with the left mouse button to add this color to the top drawing color field. Or
• Double-click the color field and define a color of your choice in the dialog Colors.
• Then, click the respective mouse button to draw with that color.
• To make transparent
• one or several pixels, click the transparency field and click the pixel(s), which you would like to make trans-
parent with one of the drawing tools.
• a contiguous color area, click the transparency field and click the area, which you would like to make transpar-
ent with .
Note: The background of the Frame shines through any area you marked as transparent.
• When you use the default setting Rotate around Reference Point, Plant Simulation rotates and zooms the icon
around the reference point. You can compare this to pushing a pin through the center of a photograph and then
turning the photograph around this pin.
• When you deactivate Rotate around Reference Point, the upper left corner of the icon remains at the same loca-
tion when rotating and zooming the icon.
—
In addition to defining the rotation of the material flow object, you can define, if an MU that transfers onto a ma-
terial flow object uses the same orientation, i.e., the same rotation angle, as the icon of the material flow object it is
animated on.
Note: These settings only apply when Plant Simulation shows the object with its icon. They do not apply when you
selected Vector graphics active for the MU.
• When you use the default setting, Same as the Object, the front end of the MU points in the same direction as
the right border of the material flow object.
• When you deactivate Same as the Object, the front end of the MU points in the direction it had, when it trans-
ferred onto the material flow object.
• Click the color picker and click in the background of the icon. This makes that color the active drawing
color, which we want to replace.
• Select the transparency color that replaces the active drawing color with in the Color Palette proper, not in the
transparency color field!
If the transparency color is not part of the color palette proper, double-click any field in the Color Palette that con-
tains a color you do not need, and enter 0, 128, 128 into the dialog Colors > Custom and click OK.
• Make sure that Icon > Activate Transparency is active.
• Select one of the drawing tools on the Vector Graphics ribbon tab, click the
respective mouse button and change the color of a single pixel or draw a shape.
Frame
Objects located
in the Frame
Reference point of the MU
To insert an animation point or an animation line into the icon of the class of a material flow object or of a Frame:
• To open the Icon Editor, right-click the Frame into which you would like to insert an animation structure and select
Edit Icons.
• To activate Animation Mode, which allows you can insert animation points and animation lines, click the Anima-
tion Ribbon Tab.
To insert an animation point or an animation line into the icon of the class of an object, click Open Class on the
Home ribbon tab. You will notice that Plant Simulation opens the class object of the selected object. If you want
to insert an animation point into the icon of the active instance of the icon, do not click Open Class.
• To insert an animation point into the icon of a point-oriented object, click . Then, click into the drawing
area with the left mouse button at the location of your new animation point.
• To insert a straight animation line into the icon of a length-oriented object, click . Then, click into
the drawing area with the left mouse button, hold the mouse button down to insert the beginning of the line,
drag the mouse until the line is as long as you want it to be and release the mouse button. This inserts the end of
the line.
• To insert a non-straight animation line into the icon of a length-oriented object, click .Then, click
once into the drawing area with the left mouse button to set the starting point of the line, click again to set the
next anchor point. Plant Simulation connects the anchor points to create the line. Continue this until the polygonal
chain meets your needs.
• To move an animation point or an animation line to a different location, click on the Animation ribbon tab.
These colors represent the different states of an animation point:
• Blue: Is the standard color for all objects, except for the Frame. For a Frame Plant Simulation shows that the
animation point is linked to an object located within that Frame.
• Light blue: Is the same as blue. In addition, it shows that an animation point of a Frame is linked to this anima-
tion point.
• Red: The animation point in a Frame is not linked to an object located within that Frame. For this reason Plant
Simulation does not show an animation for this point.
• When you are done inserting, close the class object, and click Yes to save the changes to the icon of the class.
To link an animation point, which you inserted into the class of an object, with the animation point/line of a
Frame:
• Select the Frame in which you would like to link the animation structure with the right mouse button and select
Edit Icons.
• To activate Animation Mode, which allows you to link animation points and animation lines, click the Animation
ribbon tab.
• Click Link/unlink animation point and select the animation point/line in the icon of the Frame. Plant Simulation
shows the selected animation point or the animation line in red.
This opens the window of the Frame you selected above. Click the material flow object to which you want to
assign the animation point/line. You will notice that the color of the assigned animation point or the animation
line changes to blue. When an MU moves to this animation point/line during the simulation run, Plant
Simulation shows it on this animation point/line.
To delete all animation points/lines of an object, click or click the animation line with the right mouse button.
Note: You can delete an animation point and insert a new one immediately afterwards without the correlation get-
ting lost.
• When you reset your simulation model, by clicking Reset Simulation , Plant Simulation deletes statistics data
of all objects and resets the statistics values to 0. During a simulation run you can achieve the same effect using
the method initStat. This way you can restart the collection of statistical information after a warm-up period of a
machine, for example.
Covering Plant Simulation statistics in detail would go beyond the scope of the Plant Simulation Step-by-Step Help. It is
described under the topic Statistics of the Material Flow Objects in the Plant Simulation Reference.
You can view and visualize the statistics results of your simulation runs in a number of ways.
Go to Showing Statistics and Other Values in a Report
Note: Plant Simulation does not dynamically update the values during a simulation run when the dialog window
is open. To accomplish this, select Refresh on the View menu of the object or press F5.
Working Shows the portion of the statistics collection period during which the object was Working.
Setting-up Shows the portion of the statistics collection period during which the object was Setting-
Up.
Waiting Shows the portion of the statistics collection period during which the object was Waiting.
Blocked Shows the portion of the statistics collection period during which the object was Blocked.
Powering up/down Shows the portion of the statistics collection period during which the object was Power-
ing up/down.
Failed Shows the portion of the statistics collection period during which the object was Failed.
Stopped Shows the portion of the statistics collection period during which the object was Stopped
by a LockoutZone.
Paused Shows the portion of the statistics collection period during which the object was Paused.
Unplanned Shows the portion of the statistics collection period during which the object was Un-
planned, i.e., is not scheduled to work.
Relative occupation Shows the capacity-based portion of the time during which the object was occupied, not
paused and not failed to the time the object was not paused and not failed as a real num-
ber.
Relatively empty Shows the portion of the statistics collection period during which the object was Empty
in relation to the time during which the object was available.
Contents Shows the number of MUs, which are located on the object. The rules described under
Entries apply.
Minimum contents Shows the minimum number of MUs that was located on the object. The rules described
under Entries apply.
Maximum contents Shows the maximum number of MUs that was located on the object. The rules described
under Entries apply.
Entries Shows the number of MUs that entered the object as an integer. When an MU enters the
object, it only counts the MU itself, not its contents: When a Container holding several en-
tities enters the object, the number of entries increases by 1, not by the number of entities
located on the Container!
Exits Shows the number of MUs that exited the object as an integer. When an MU exits the ob-
ject, it only counts the MU itself, not its contents: When a Transporter holding several MUs
leaves the object, the number of exits increases by 1, not by the number of MUs the Trans-
porter transports!
To view the statistics values, which the object collected, click Show Statistics Report on the Home ribbon tab.
You can query most of these values with the Methods that are listed next to the name of the value in the descrip-
tion of the statistics table.
To view Energy Statistics values, click . Plant Simulation shows these values in a dialog of its own:
Note: The energy states of the material flow objects differ from the resource states with the same name. The
values for the resource states refer to the statistics collection period, while the values for the energy states
refer to the total energy consumption.
To view Energy Statistics - Energy Statistics in the Statistics Report, click the object in the Frame, and press F6.
• The mobile objects (MUs) show the most important statistical data they collect on the tab Product Statistics.
You will:
• Check How Many Parts Were Introduced into the Plant
• Check How Many Parts Left the Plant
• Check Statistics of the Individual Stations
• Check the Contents List of the Stations
• Check Product Statistics of Parts
• Check Statistics of Exporter and Worker
• To write all events for which the Source produced MUs during a simulation run to a table, select Creation table on
the tab Statistics.
Note: The Source records these events in addition to the resource statistics it collects in any case.
• To collect statistics data depending on the type of MU, select Type dependent statistics. Plant Simulation will show
this statistical data after the simulation run on the tab:
Working Shows the percentage of the sum of the times during which the MUs were located on a
Working object, in relation to the statistics collection periods of all MUs. In general, this
is the life time of the MUs.
Setting-up Shows the percentage of the times that the objects were setting-up for the MUs, in re-
lation to the statistics collection periods of all MUs. In general, this is the life time of the
MUs, compare Setting-Up.
Waiting Shows the percentage of the times during which the objects were waiting for the MUs,
in relation to the statistics collection periods of all MUs. In general, this is the life time
of the MUs, compare Waiting.
Stopped Shows the percentage of the sum of the times during which the MUs were located on
an object that was Stopped, in relation to the statistics collection periods of all MUs. In
general, this is the life time of the MUs.
Failed Shows the percentage of the sum of the times that the MUs were located on a Failed
object, in relation to the statistics collection periods of all MUs. In general, this is the
life time of the MUs.
Average lifespan Shows the average life-span of MUs, which were created and removed from the plant
during the statistics collection period. Only those MUs are counted whose product sta-
tistics was active.
Average exit interval Shows the average time interval between exits of the MUs, which the Drain removed
from the plant. It results from adding up the times of all intervals, and then dividing
them by the number of intervals. Statistics only starts counting from the time the first
MU arrived!
Total throughput Shows the number of MUs, which the Drain removed from the plant, starting at the
time, at which you activated Type dependent statistics.
Throughput her hour Shows the number of MUs, which the Drain removed from the plant in an hour on av-
erage, covering all observed times during which MUs arrived.
Throughput her day Shows the number of MUs, which the Drain removed from the plant in a day on aver-
age, covering all observed times during which MUs arrived.
To view the statistics, which the Drain collected, click Show Statistics Report on the Home ribbon tab. You can query
most of these values with the Methods that are listed next to the name of the value in the description of the statistics
table.
You can also use these techniques for working with the Forward Blocking List, the Exit Blocking List, and the Back-
ward Blocking List of the individual material flow objects.
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
Open the Contents List in the Dialog of the Material Flow Objects
To open the Contents list of the individual material flow objects in your simulation model during or after the sim-
ulation run, open the dialog of the respective object and select View > Contents.
• The point-oriented objects with a capacity of 1 part show the path in the list, i.e., the name and the number of
the current part.
• The point-oriented objects with a capacity of more than 1 part show the path in the list, i.e., the names and the
numbers of the parts that are located on it. The capacity or the number of parts located on the object determines
how many parts it shows.
• The length-oriented objects (Line, Track, TwoLaneTrack, and Transporter) show the path in the contents table, i.e.,
the name and the number of the parts, that are located on the object. In addition it shows the position of the
MUs on the object.
The column Object shows the path to the part, the column From shows the start position of the MU, and the
column To shows the end position in the length unit you selected under File > Model Settings/Preferences > Units
> Length. The number of rows matches the number of MU parts located on the object.
In our example, the line is 15 meters long, while each part is 2.5 meters long.
The line can thus accommodate 5 parts in their entirety, which the contents list shows.
To accomplish this, we entered the following source code in SimTalk 2.0 notation into an endSim method:
‐‐ Copies the contents lists into the table MyContentsList
‐‐ as an array with the method copyToTable
var x,y: real, row: integer
var a : any := Buffer.contentsList
MyContentsList[1,1] := "Buffer"
a.copyToTable(MyContentsList,2,1)
row := MyContentsList.yDim + 2 ‐‐ inserts an empty line
MyContentsList[1,row] := "Line"
print a ‐‐ prints the contents list as an array to the console
print "Number of items: ",a.yDim
var b := Line.contentsList ‐‐ local variable is of data type any
print b
print "Number of items: ",b.yDim
b.copyToTable(MyContentsList,2,row)
MyContentsList.opendialog
‐‐ Writes the contentsList into a table
‐‐ as previous versions of the program did
Buffer.contentsList(ContentsListBuffer)
Line.contentsList(ContentsListLine)
To accomplish this, we entered the following source code in SimTalk 1.0 notation into an endSim method:
‐‐ Copies the contents lists into the table MyContentsList
‐‐ as an array with the method copyToTable
is
x,y : real; row : integer;
do
local a : any := Buffer.contentsList;
MyContentsList[1,1] := "Buffer";
a.copyToTable(MyContentsList,2,1);
row := MyContentsList.yDim + 2; ‐‐ inserts an empty line
MyContentsList[1,row] := "Line";
print a; ‐‐ prints the contents list as an array to the console
print "Number of items: ",a.yDim;
local b := Line.contentsList; ‐‐ local variable is of data type any
print b;
print "Number of items: ",b.yDim;
b.copyToTable(MyContentsList,2,row);
MyContentsList.opendialog;
‐‐ Writes the contentsList into a table
‐‐ as previous versions of the program did
Buffer.contentsList(ContentsListBuffer);
Line.contentsList(ContentsListLine);
end;
Then, we manually formatted the table MyContentsList by selecting the correct data types for the columns and by
entering the column index items as shown below.
After running the simulation, the endSim method writes the contents lists to the table:
To delete the contents of the contents list, you can enter the following source code into a reset method.
MyContentsList.delete
In addition it writes the contents lists as an array each for the objects Buffer and Line to the Console.
Finally, the endSim method writes the contents lists of the Buffer and the Line into the tables ContentsListBuffer and
ContentsListLine, which we inserted into the Frame.
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
To view all product-related statistics data, which the MU collected, select View > Show Statistics Report. You can
query most of these values with the Methods that are listed next to the name of the value in the description of the
statistics table.
As the Container and Transporter can load and transport other parts, they provide resource statistics as well, compare
Viewing Statistics in the Dialogs of the Objects.
When you select the check box Fail services on the tab Attributes, the Exporter collects the failure times of the Services
and of the Exporter. When you deactivate it, the Exporter only collects the failure times of the Exporter.
The Exporter only collects failed times that take place during the processing and the set-up time, i.e., times that are
located outside of the paused time and of the unplanned time.
Waiting times only accumulate during the times, when the Exporter is available, i.e., when these times are located
outside of the paused, the unplanned and of the failed times.
Services setting-up Shows the portion of the set-up time for services of the statistics collection period of
the Exporter, weighted with the capacity.
Services processing Shows the portion of the working time of the services of the statistics collection pe-
riod of the Exporter, weighted with the capacity.
Services repairing Shows the portion of the statistics collection period, which the services spent for re-
pairs, weighted with the capacity.
Services waiting Shows the portion of the statistics collection period, which the services spent waiting
for an importer plus the time the services spent waiting for an MU at the importer, weight-
ed with the capacity.
Services failed Shows the portion of the statistics collection period during which the services were
failed.
Exporter operational Shows the portion of the statistics collection period during which the Exporter was
working, weighted with the capacity.
Exporter paused Shows the portion of the statistics collection period during which the Exporter was
paused.
Exporter unplanned Shows the portion of the statistics collection period during which the Exporter was
unplanned.
Exporter failed Shows the portion of the statistics collection period during which the Exporter was
failed.
Free capacity Shows the capacity that is available at the moment.
Mediated capacity Shows the capacity that is brokered at the moment.
Free capacity (sum) Shows the sum of the released capacity that the Exporter placed with any importer.
Mediated capacity Shows the sum of the brokered capacity.
(sum)
Minimum free capacity Shows the minimum capacity that is available. When the Exporter did not collect any
valid value yet, the tab shows -1.
Maximum free capacity Shows the maximum capacity that is available. When the Exporter did not collect any
valid value yet, the tab shows -1.
Minimum mediated ca- Shows the minimum brokered capacity. When the Exporter did not collect any valid
pacity value yet, the tab shows -1.
Maximum mediated ca- Shows the maximum brokered capacity. When the Exporter did not collect any valid
pacity value yet, the tab shows -1.
• The report adds the statistics of the objects, which you selected, to the drop-down list in the top left corner of
the display window. In our example these are the statistics values of the Stationary resources Source (Receiving),
SingleProc, SingleProc1, SingleProc2, and SingleProc3 as well as the Importer Statistics. To jump to any of the top-
ics, which interest you, select that topic from the drop-down list:
• One of the main topic shows the resource statistics of the material flow objects split up by the states these
objects were in, i.e., the working time, the waiting time, the blocked time, the powering up/down time, the failed
time, the stopped time, the paused time, and the unplanned time. Note that these times add up to 100 percent.
The set-up time and the empty time, which follow, may be part of the working time, waiting time or of the
blocked time. For details compare the Statistics Report.
The subtopics further down in the report show details about the working time, the waiting time, the blocked
time, the failed time, the stopped time, the paused time, the unplanned time, the set-up time and the empty time
in the order in which they appear here.
The bar chart on the right hand side shows the respective portions of the times.
A bar with this color Means that the object is Looks like this
green Working
brown Setting-Up
gray Waiting
yellow Blocked
red Failed
pink Stopped
blue Paused
• The subtopics show details of the working time, the waiting time, the blocked time, the failed time, the paused
time, the unplanned time, the set-up time and the empty time in the order in which they appear in the first table.
For details compare the Statistics Report.
• To add one or several objects in your model, which collect statistics to an open report, select it/them in the Frame
and press F6. In our example we added the Drain object.
You will notice that the report added the objects Drain and Drain1 to the list of stationary resources as well as
to the drop-down list of available topics.
• To jump to the statistics of this Drain, select Drain Statistics from the drop-down list. For details compare the
Statistics Report.
• You can add any of the objects, which collect statistics, to the report. It then adds these objects to the drop-down
list:
• To save the report as an HTML file (*.htm or *.html) or as a text file (*.txt) click Save. Enter a name for the file
and select the folder into which you want to save it.
• To update the report with the current values, click Refresh.
• To print the report, click Print.
When you deactivate Icon Animation Plant Simulation shows the display panel, but does not update its values and
continues showing the previous values. It does not update the values either, when no simulation is running. To still
show current values, it updates them:
• When the simulation stops, either because you stopped it or because the End time has been reached.
• When you click OK or Apply in the dialog of an object.
• When you select View > Update in the dialog of an object.
• When you press F5 in the Frame window.
• When you call the method redraw of an object.
You can:
• To activate and to show the Display Panel in the Frame, select the check box Active. To deactivate it, clear it.
• Enter the Width and the Height of the display panel in the Frame. If need be, adjust the X-position and the Y-position.
• Then, define the Border color around the display panel and its Background color to make the display panel stand out
in the Frame. Click the drop-down arrow in the color box and select a color in the dialog Colors. We selected black
as the border color and light gray as the background color.
• Click Apply to show the display panel with the item you defined so far in the Frame. As you’ll want to show the
value to the right of the label, increase the Width of the display panel.
• Next, select the value you want to display next to the label. Click New.
• In the dialog Display Panel Element click and select the Value you want to show. As we want to show the
working portion of our station, we select the statistics method statWorkingPortion.
• Select the display Type Text and select Display as percentage. Finally, adjust where Plant Simulation shows the
value on the display panel by moving the X-position to the right of the label Working:.
As we want to show several values aligned correctly one below the other, we align them right.
• Click the station for which you want to show the value with the right mouse button and select Edit Display Panel.
• Select the check box Active to show the Display Panel in the Frame.
• To display the bar above the icon, move the X-position and the Y-position to the top left corner of the icon.
• Enter the width and the height of the display panel in the Frame. In this case it matches the width and the height
of the bar itself.
Suppose you want to display the working, waiting, blocking, failed and paused portions of a station on a display panel
below the object.
• Click the station for which you want to show the values with the right mouse button and select Edit Display Panel.
• Select the check box Active to show the display panel in the Frame.
• Enter the position and the width and the height of the display panel in the Frame.
• In the dialog Display Panel Element click and select the Value you want to show. We selected the statistics
method statWorkingPortion.
• Select the display Type Bar.
• Select the Color of the bar and enter its Length and its Width.
• Select the Direction into which the bar deflects starting at the X-position of the item. We selected up.
• Click OK to add the item.
• Click OK again to finish defining the display panel. It then looks like this.
• Repeat the steps described above to add the values statWaitingPortion, statBlockingPortion, etc. to the display panel.
Select a different color for each value and to shift the X-position of each value to the right so that they do not
overlap. The result will then look like this.
• Click the station for which you want to show the LED with the right mouse button and select Edit Display Panel.
• Select the check box Active to show the Display Panel in the Frame. Enter the position and the width and the height
of the display panel in the Frame.
Note: The display window of the Chart does not use the standard Siemens PLM theme, but your Windows
theme.
Note: The dialog window of the Chart uses the standard Siemens PLM theme.
The Chart graphically displays the data sets that Plant Simulation recorded during a simulation run. You can select to
show:
• Data from a table, into which you saved the simulation results, for example.
• Data from input channels you define that dynamically record the values of attributes of interest of objects that
your are interested in.
To show statistics values of an object in the Chart, which you inserted into a Frame, you can use drag-and-drop:
To do this Drag a To a
Show the statistics of a material flow object material flow object Chart
Show the frequency distribution of the number of MUs PlaceBuffer, Buffer, Store Chart
Show the contents of a table TableFile, TimeSequence Chart
Show the value of the Variable you inserted into a Frame Variable Chart
• To apply the settings you selected in the dialog and to show the records, click Apply. When you resize the display
window, Plant Simulation also resizes the shown graph.
• To show the data the Chart collected in the display window, click Show Chart.
• To open the dialog of the Chart, double-click anywhere in the display window.
• To make a Chart of type Histogram or Plotter collect data during the simulation run, select Collect data in the di-
alog. To deactivate data collection, clear the check box.
• To delete all values that the Chart collected, select Tools > Reset Values.
The Chart lets you select settings in a number of ways. You can:
• Select Settings in the Statistics Wizard
• Select Where the Data Comes From
• Selecting How the Chart Shows the Data
• Select the class(es) of object(s) for which you would like to show statistical data in the Chart under the group box
Class. The Chart only adds material flow objects to the display for which you selected the check box Resource
statistics on the Tab Statistics.
• Select the type(s) of resource(s) for which you would like to show statistics of the selected object(s) in the Chart
from the drop-down list box Resource type: Production, Transport or Storage. Select the Resource type on the tab
Statistics of an object collecting statistical data. Use the check boxes in the Statistics Wizard to restrict which ob-
jects Plant Simulation shows.
• If you would like Plant Simulation to also show statistical data of objects within Frames that you inserted into the
Frame in which the Chart is located, select the check box Include subframes.
• Select the criterion which Plant Simulation uses when sorting statistical data from the drop-down list Sort criterion:
Either the Name of the object, or one of the states it is in: Working, Setting-Up, Waiting, Blocked, Failed, or Paused.
To sort the stations by their name in alphabetical order from A to Z, select Sort criterion > Name. To sort the
stations in the order that meets your needs, drag the stations onto the Chart in the order it is to show them. To
change the order at a later point in time, edit the table of the Input channels by cutting the respective columns
of the objects and pasting them in the desired order.
• Finally, click OK to open the display window of the Chart with the settings you selected in the dialog.
For the Statistics type > Resource we preconfigured the following entries in the Statistics Wizard:
Row index
Column index
• To show the contents of a table as a diagram, select Table File. This might, for example, be a table into which
you saved the results of a simulation run.
Enter the name and the path of the table file containing the data, or click the button and select the table in
the dialog Select Object.
Enter the Range of the table cells you want to show.
• To show all cells in all columns and rows, enter {*,*}..{*,*}.
• To show the first four cells of column one, enter {1,1}..{1,4}.
• To show all cells in column one, enter {1,1}..{1,*}.
You can also enter negative numbers:
• To show the one but last column of the table, enter {‐2,*}..{‐2,*}.
• To show the one but last and the last column, enter {‐2,*}..{*,*}.
• Select which mode the Chart uses to update the data it shows.
• Sample mode updates the Chart periodically and takes the next sample after the time span you enter into the
text box Interval.
• Watch mode updates the Chart, whenever the value of an observable Method, for example numMU, num-
MUParts, statMaxNumMU, statNumIn, statNumOut, etc. or of a observable attribute changes, for example Pause,
Speed, Unplanned, etc.
The column Watchable in the dialog Show Attributes and Methods of the individual objects shows all methods
and attributes Plant Simulation can observe.
• Plot mode updates the Chart, whenever a simulation event takes place.
Depending on the Category you selected (Chart, Histogram or Plotter), the Chart provides some or all of the follow-
ing chart types:
Columns shows each record as a column. When displaying several records, the Chart places the col-
umns next to each other. Use this to compare values across categories.
Stacked Columns shows each record as a column. When displaying several records, the Chart places the col-
umns of the individual records on top of each other. It stacks positive values upwards, neg-
ative values downwards.
100% Stacked Col- shows each record as a column, stacked one on top of the other, showing the respective
umns percentage of the entire set of 100 percent.
Bars shows each record as bars positioned horizontally on top of each other. When displaying
several records, the Chart places the bars of the individual records next to each other. Use
this to compare values across categories.
Stacked Bars shows each record as a set of bars stacked horizontally next to each other. Positive values
are stacked to the right, negative values are stacked to the left.
100% Stacked Bars shows each record as a set of bars, one stacked horizontally next to each other, showing
its respective percentage of the entire set of 100 percent.
Area shows each record as areas. When displaying several records, the Chart stacks the areas
from the individual records one behind the other. Use this to show the trend of the con-
tribution of each value over time or categories.
Stacked Area shows each record as areas. When displaying several records, the Chart stacks the areas
from the individual records one on top of the other.
100% Stacked Area shows each record as a set of areas, one stacked on top of the other, showing the respective
percentage of the entire set of 100 percent. Displays the trend of the percentage each value
contributes over time or categories.
Line shows each record as a line.
Line with Markers shows each record as a line with markers.
Spline shows each record as a curve.
Spline with Markers shows each record as a curve with markers.
Markers shows each record as a set of different markers.
Points and Best Fit shows each record as a set of data points, and fits the best straight line to them. The line
Line is calculated from least-squares-approximations of the data set.
Points and Best Fit shows each record as a set of data points, and fits the best curved line to them. The curve
Curve is calculated from least-squares-approximations of the data set.
Pie shows each record as a slice of a pie, depicting its percentage of the whole. Enter a negative
prefix, so that the Chart offsets this slice from the rest of the pie. Use the scrollbar to scroll
from record to record. Use this to show the contribution of each value to a total.
XY Points shows the x-y pairs as data points. The first record contains the x-coordinates. The Chart
interprets all additional records as the associated y-coordinates. Use this to compare pairs
of values.
Line shows the x-y pairs as data points and connects them with a line. The first record contains
the x-coordinates. The Chart interprets all additional records as the associated y-coordi-
nates.
Sticks shows a vertical bar for each x-y pair, starting from the zero line. The first record contains
the x-coordinates. The Chart interprets all additional records as the associated y-coordi-
nates.
Area connects the points belonging to the x-y pairs and fills the areas thus created. The first re-
cord contains the x-coordinates. The Chart interprets all additional records as the associat-
ed y-coordinates.
3D Columns shows each record as columns stacked in three-dimensional space. To turn the chart left
or right you can enter an angle of Rotation or you can also drag the horizontal slider in the
display window. To turn the chart up or down, you can enter the Height or you can drag
the vertical slider.
3D Wire Frame shows each record as wire-frames stacked in three-dimensional space. To turn the chart
left or right you can enter an angle of Rotation or you can also drag the horizontal slider in
the display window. To turn the chart up or down, you can enter and the Height or you can
drag the vertical slider.
3D Surface shows each record as solid areas stacked in three-dimensional space. To turn the chart left
or right you can enter an angle of Rotation or you can also drag the horizontal slider in the
display window. To turn the chart up or down, you can enter the Height or you can drag
the vertical slider.
• If you want to, you can also select a 3D effect for some of the Chart Types:
• None adds no 3D effect to the Chart Type you selected.
• Shadow adds a black shadow to the chart type you selected.
• 3D adds three-dimensional depth to the chart type you selected.
• Gradient bars adds an effect between a gradient and a 3D look to the chart type you selected.
• Contoured for the chart types 3D Columns and 3D Surface.
You can also enter the Rotation angle and the Height of the columns/surface. To turn the chart left or right,
drag the horizontal slider in the display window. To turn it up or down, drag the vertical slider.
• To change the background color of the Chart proper in the display window, click the tab Color. Double-click the
cell labeled Background and select another color. Click Apply to change the color.
• To change the color around the Chart proper in display window, click the tab Color. Double-click the color field
next to Desk and select another color. Click Apply to change the color.
• To display the Chart in the Frame, instead of the icon of the object, select Display in frame on the tab Display.
We advise to increase the size of the icon of the Chart in the Frame: Hold down Shift+Ctrl, grab one of the four
corners of the icon with the mouse and drag the icon to a convenient size.
• To interrupt the line the Chart draws for values that are not defined, select Gap when null on the tab Display. To
continue drawing the line, clear the check box.
• To show grid lines on the y-axis in the display window, select Y-axis . To hide the grid lines, clear
the check box.
• To set the range the Chart is to display scaled on the y-axis, enter the first value of into the left text box. The
default setting 0 … 0 means that Plant Simulation scales automatically.
Enter the last value of the range the Chart is to display scaled on the y-axis into the right text box.
Note: When you enter neither Title nor Subtitle, the Chart might, under certain circumstances, cut off the upper
part of the y Range. To prevent this, you can enter a blank space into the text box Subtitle.
• Enter any text that Plant Simulation shows as the title of the Chart in the display window into the text box Title. In
our example we entered Utilization of Stations.
Select a font, if you want to bold face or italicize the text and a relative font size on the tab Font.
Select a color for all text in the display window on the tab Color. Double-click the color field next to Font and
select another color. Click Apply to change the color.
• Enter any text that Plant Simulation shows as the subtitle of the Chart in the display window into the text box Sub-
title. In our example we entered Engine Plant Anytown.
• Enter any text that Plant Simulation shows in the display window on the x-axis. In our example we entered Station.
Select a font, if you want to bold face or italicize the text and a relative font size on the tab Font.
Note: This font applies to all labels, except for the Title, the Subtitle and data displayed in Table format in the
display window
• Enter any text that Plant Simulation shows in the display window on the y-axis. In our example we entered Percent
of 100.
• Select if and on which side of the display window Plant Simulation shows the legend for the values the Chart dis-
plays.
As you remember, you enter the text you want to show as the legend into the row index of the table when you
select Data source > Input Channels > Table File.
• If need be, you can also add additional lines and/or text to the display window. Click Annotations and fill in the
table that opens.
• Type: Enter 0 for displaying a vertical line or enter 1 for displaying a horizontal line. Enter 2 or 3 for labeling
the x-axis or the y-axis. Enter 4 for any text.
• Value: Enter the value where the Chart displays the line in the display window. For a vertical line this is the x-
value, for a horizontal line this is the Y-value.
• From: Enter the starting point of the line here. If you do not enter a value, the Chart extends an existing line.
This way you can not only create horizontal and vertical lines but also diagonal lines.
• To: Enter the end point of the line here. If you do not enter a value in the cells From and To, the Chart draws
the line from the left to right, or from the top to the bottom of the display window.
• Color: Enter the number of the color of the line here. This is the number of one of the lines you defined on
the tab Color.
• Style: Enter the style of the line here, such as dotted, dashed, etc.
• Click on the toolbar and enter the required settings into the dialog
Object Parameters. Note that the dialog offers different settings for the different objects.
To open the dialog Object Parameters for an object, which you added to the tab Content with drag and drop,
click the mouse between the name of the object and the closing bracket, and click .
Then, select the settings you need in the dialog Select Object.
• Enter the content, which the HtmlReport shows, in textual form on the Tab Content of the object. As you will see,
the syntax is easy to understand enabling you to quickly type in the required instructions.
In our example below, we’ll introduce the most important items which you can add to your report.
• To address an object, we entered its name within square brackets, for example [MySingleProc].
• To show the icon named Header of the object HtmlReport and to zoom the icon when zooming the report win-
dow, we entered an exclamation mark followed by the name of the icon enclosed in square brackets fol-
lowed by an asterisk. The asterisk denotes zooming.
[!self, Header, *]
To show the picture of your company, for example its logo, add it as an icon to the object HtmlReport and name
it Header.
• To show a heading of level 1, we entered a number sign # followed by the title of the heading:
# General Information
• To show body text, we entered:
Below we provide:
Instead, we can also directly type in the respective instructions, compare the example below:
# Statistics Tables
These **statistics values** are of general interest. Feel free to add more.
## Drain Statistics
Drain statistics shows the contents of the *summary report* table.
[.MaterialFlow.Drain*]
## Deliveries
Delivieries shows the contents of the table object *DeliveryList.*
[DeliveryList]
• To show the contents of objects of type Chart from our model as screenshots, proceed like this:
Instead, we can also directly type in the respective instructions, compare the example below:
# Resource Chart
The *resource chart* for the *Stations* look like this. Feel free to add more.
## Stations
The utilization of the processing *Stations* is as follows:
><[StationChart, 150, 100]
The numbers 150 and 100 designate the width and the height of the screenshot.
The greater than sign followed by a less-than sign >< centers the screenshot.
• To show a solid horizontal line between the contents of the Report proper and the footer, we entered:
‐‐‐
• To show a footer containing indented text, designated by the greater sign >, the current date and a signature, we
entered the following HTML tag:
> Cedar Rapids, [=day(sysdate)].[=month(sysdate)].[=year(sysdate)+1900]
Best regards,
<span style="font‐family: Segoe Script; font‐size:16pt">H. Thompson</span>
Our finished Report with the above settings looks like this:
• When you deactivate the Display, it shows its icon in the Frame, into which you inserted it.
• When you activate it by selecting , the Display shows a value in the Frame window, such as .
You can:
• Select which Data the Display Shows
• Select How the Display Shows the Data
• Click to enter the path to and the name of the object whose data you want to view. Then, enter the value of
a global variable (Variable), of an attribute or of a method of an object into the text box after the path. You might,
for example, enter buffer.numMU, .Models.Frame.ParallelProc.statNumOut, store.XDim, etc.
The Display supports the data types boolean, integer, real, string, object, time, money, length, weight, speed, date and datetime.
When the path you enter is invalid, the background of the text box changes to red.
• If you want to, you can also enter a brief description (Comment) of the displayed value. You might, for example
enter a description of the attribute that the Display displays, such as Fill Level Buffer. The Display shows this
text below the value in the Frame window.
Note: When you select to display the value as Text, we recommend to enter one or two spaces after the last
word, so that the value does not appear too close to the comment.
• Select which mode the Display uses to update the displayed data.
• Sample mode updates the Display periodically and takes the next sample after the time span you enter into the
text box Interval.
• Watch mode updates the Display, whenever the value of an observable Method changes, for example numMU,
numMUParts, statMaxNumMU, statNumIn, statNumOut, etc. or of an observable attribute, for example Pause,
Speed, Unplanned, etc.
The column Watchable in the dialog Show Attributes and Methods of the individual objects shows all methods
and attributes which Plant Simulation can observe.
• Select how you want the Display to show the value: As Text, as a Bar or as a slice of a Pie. The Display can only
show numerical values as a bar and as a slice of a pie. These are easy to comprehend, but not very well suited if
accuracy is important.
Text Bar Pie
• When you select Bar or Pie, the Display shows the value in relation to the Minimum and the Maximum value of
the range you enter. An empty bar/pie indicates values less than or equal to the lower bound of the range. A
full bar/pie represents values greater than or equal to the upper bound of the range. You can also change the
height and the width of the bar/pie graphic by dragging its outline with the left mouse button while holding
both the Shift and the Ctrl keys down.
The Display shows the actual minimal and maximal values as dashed lines in the Frame window, which is not
as accurate as you might need it to be. To view the current values, click the tab Data and look at the boxes
Minimum and Maximum.
To reset the values on the tab to 0, click Reset Values.
• When you select Text, the Display shows the value as a number or as text in the Frame window. Then, you can
select a Font size for displaying the value itself and for displaying the Comment you entered. Enter a blank after
the text you enter as so that the Comment value is not shown attached to the text.
• To make the background of the Display you inserted into a Frame transparent, select Transparent.
Then, the Display shows the space around the text in the color you selected as the Color for the background of
the Frame, i.e., the background color of the Frame shines through the hollow parts of the text.
Not transparent Transparent
• To select a color for the text the Display displays and for the outline of its display graphic, click in the field next
to Color and select a color in the dialog Colors.
You will:
• Set the Variable Up
• Set Excel Up
• Embed the Excel File into the Model Using the Object FileLink
• Select how to display the value, which the Variable records, in the Frame. We selected to show the Variable trans-
parent, in blue with a large font size on the background of the Frame .
• As we want to send the value of the Plant Simulation Variable to Excel, we select Support DDE hotlinks.
Set Excel Up
After you have inserted and set up the Variable whose value you want to show in Excel in Plant Simulation, you have
to set up Excel.
• Start Excel.
• Enter explanatory text into the cells of the first column.
• Enter ='eM‐Plant'|data!'.<absoute path to the Variable>' into the cell that is to show the value of the
Variable.
To show the Average throughput time for model 1 (cell A5) per minute, we entered ='eM‐Plant'|data!'.Mod‐
els.Model1.AverageThroughputTime'/60 into the cell B5.
• Then, add additional display options of the values, such as charts, etc. to the cells below. Consult the Microsoft
Excel Help for details of how to accomplish this. Save the file.
Embed the Excel File into the Model Using the Object FileLink
To be able to open the Excel file from within your Plant Simulation model, drag it from the Windows Explorer to
the Frame and drop it there.
To embed the Excel file into the simulation model, click Yes. Then, you can double-click the icon of the Excel file
to open it.
This connection between the Excel and the Plant Simulation Frame is established with a FileLink object. To open it,
click with the right mouse button and select Open.
To open the dialog of the object Checkbox, double-click the name Checkbox to the right of the icon in the Frame
.
You can use the check box to:
• Toggle the State by Clicking the Checkbox
• Switch Modes Using a Control
• Click New Icon on the Edit ribbon tab of the Icon Editor and draw a new icon for the state/value true. Name it
true3 for example. Make true3 the current icon.
When you now click the check box in the Frame, it changes its icon from green , meaning on, to red ,
meaning off.
The button executes the action, which you programmed in the control, when you click it. The button shows the
label you type in as text on the button in the Frame.
By default Plant Simulation does not show a tooltip for the button in the Frame when you roll the mouse over it. To
display a your own tooltip, create a user-defined attribute and name it Tooltip.
Plant Simulation can show the button in the Frame in a number of ways:
• With the built-in icon and the label you type in, for example . You might have to adjust the width
and the height so that the label fits the button without being cut off. You can do this by holding down Ctrl+Shift
and dragging a corner of the icon. Or you can enter exact values into the text boxes. Or you can combine both
methods by first dragging to roughly resize the button and then by fine-tuning the values in the text boxes.
Then, you can show the text you enter as the label on this user-defined icon of the button, for example.
To be able to tell that you clicked the button, we recommend to draw two pictures for the button, one for the
unclicked state , and one for the clicked state . In our example above the name of the unclicked
icon is icon3, the name of the clicked icon consequently has to be icon3_down. Note that the button does not
stay depressed, but returns to its unclicked, raised state when you release the mouse button.
• With a picture you paste into a new icon in the icon editor, and for example.
Then, program the action in the button control that the button executes when it is clicked.
To open the dialog of the button, click it with the right mouse button and select Open on the context menu.
You can also select the button by dragging a marquee around it.
In our sample model we show how to combine the user-defined controls Button, Check Box, and Drop-down List to
make meaningful use of them and how to access a number of settings in your simulation model quickly and easily.
• The check box turns moving the parts on to a dedicated tray in the plant on or off.
• The drop-down list sets the dedicated destination tray of the parts if you click the check box to on.
• The button opens the table according to which the Source produces the parts.
The button opens the sensor control of the feeder line that sends the parts on to their destination
trays according to the settings of the check box and of the drop-down list .
Compare the topic Produce Parts in a Fixed Sequence One Time Only on how to work with the production table.
Enter the attribute, which sets the tray to which the part is going to be moved, into the sub-table that double-clicking
into the respective cell in the column Attributes of the production table opens.
We entered the attribute Destination and the respective Tray.
If is turned off, the source produces the part Board in a cyclical sequence and moves the boards
across the materials handling equipment to the destination trays.
For moving the part, the callback method, which we enter as a sensor control into the feeder line, uses the attribute
Destination of the part.
If the check box is turned on, we access the drop-down list within the callback meth-
od PartDestination with the attribute Items. It then moves the part on to the tray according to the value, which you
selected in the drop-down list.
The source code in SimTalk 2.0 notation looks like this:
‐‐ Apply the destination selected in the drop‐down list
‐‐ named/labeled 'SelectDestination/Dedicated Destination'.
if DestinationActive.Value ‐‐ destination is active
‐‐ set new destination of the part
@.Destination := SelectDestination.Items[SelectDestination.Value]
The source code in SimTalk 1.0 notation looks like this:
‐‐ Apply the destination selected in the drop‐down list
‐‐ named/labeled 'SelectDestination/Dedicated Destination'.
if DestinationActive.Value then ‐‐ destination is active
‐‐ set new destination of the part
@.Destination := SelectDestination.Items[SelectDestination.Value];
end;
We entered the attribute Destination, the names of the destination trays, Tray1 to Tray4, and the angle around
which the board will be rotated. 90 stands for 90 degrees clockwise, -90 stands for 90 degrees counterclockwise.
• The check box turns moving the parts on to a dedicated tray on or off.
• The drop-down list sets the dedicated destination of the parts once you click the check box to set
it to on.
To configure the drop-down list, proceed as follows:
• Enter the width and the height with which the drop-down list will be shown in the Frame. We entered a width of
120 pixels and the height of 20 pixels.
• Click the button Items and enter the items which the drop-down list shows in the Frame.
• Enter the number of the item in the list which the drop-down list will show in the Frame by default into the text
box Value. We entered 1 to make the drop-down list show Tray1 when it is closed.
To open the dialog of the drop-down list, click it with the right mouse button and select Open on the context menu.
If the check box is turned on, we access the drop-down list within the callback meth-
od of the sensor with the attribute Items. It then moves the part on to the tray according to the value you selected.
The source code in SimTalk 2.0 notation looks like this:
‐‐ Apply the destination selected in the drop‐down list
‐‐ named/labeled 'SelectDestination/Dedicated Destination'
var l: list
l.create
SelectDestination.getItems(l)
if DestinationActive.Value then ‐‐ destination is active
‐‐ set new destination of the part
@.Destination := l[SelectDestination.Value]
end
The source code in SimTalk 1.0 notation looks like this:
Configure the Buttons to Open the Parts Table and the Callback Method
We finally thought it to be helpful if we could open the parts table and the callback method with one click instead
of having to navigate to them in the Frame and double-clicking their icon.
To do so, we configured two buttons:
• The button opens the table according to which the Source Parts In produces the parts.
• Enter the width and the height with which the button will be shown in the Frame. We entered a width of 120
pixels and the height of 20 pixels.
• Enter the control, which will be called, when you click the button. We decided to use a control that is part of
the object. So we right-clicked into the text box Control and select Create Control.
We then entered the following source code into the control that opened. It opens the parts table in the Frame
with the name TableFile and the label Open Parts Table.
The source code in SimTalk 2.0 notation looks like this:
self.~.~.TableFile.openDialog
The source code in SimTalk 2.0 notation looks like this:
is
do
self.~.~.TableFile.openDialog;
end;
• The button opens the sensor control of the feeder line that sends the parts on to their destinations
according to the settings of the check box and of the drop-down list .
• Enter the width and the height with which the button will be shown in the Frame. We entered a width of 120
and the height of 20 pixels.
• Enter the control, which will be called, when you click the button. We decided to use a control that is part of
the object. So we right-clicked into the text box Control and select Create Control.
We then entered the following source code into the control that opened. It opens the callback method of the
sensor control in the Frame with the name PartDestination and the label Callback.
As we want to open the window of the method, not to execute its source code, we have to enter the reference
operator in front of the method openDialog.
self.~.~.&PartDestination.openDialog ‐‐ SimTalk 2.0
ref(self.~.~.PartDestination).openDialog; ‐‐ SimTalk 1.0
Note: We modeled the dialogs of the objects with the object Dialog. The windows of the objects do not use the
standard Siemens PLM theme, but your Windows theme.
BottleneckAnalyzer
The BottleneckAnalyzer visualizes the standard statistics of the material flow objects and sorts the data into a table.
It displays the statistics of the material flow objects that are located in the same Frame as the BottleneckAnalyzer or in
sub-frames. The bottleneck analyzer works statically, i.e., it does not collect data during the simulation run. For this
reason that you can insert it even after the simulation run is finished.
You can Analyze the model, Remove the statistics charts, and Open the ranking table. You can also configure the
BottleneckAnalyzer: you can select the type of Resources and select Display options.
You can insert the BottleneckAnalyzer into your simulation model from the folder Tools in the Class Library or from
the toolbar Tools in the Toolbox.
Analyze
To visualize the statistics, click the Analyze button. For a Frame, the BottleneckAnalyzer shows the statistics of the
critical resource, which is the material flow object processing the highest number of parts.
Note: The BottleneckAnalyzer only shows the statistics of a material flow object when the statistics is activated and
for the type of resource you selected in the dialog Configure.
This color Designates this state
green Working
brown Setting-Up
gray Waiting
yellow Blocked
red Failed
blue Paused or Unplanned
Remove
To delete the displayed values, click the Remove button.
Open
To select the sorting criteria of the statistical values, which the BottleneckAnalyzer shows and which it then writes to
a table file, click the Open button.
When you click OK, the BottleneckAnalyzer opens a table file that lists all material flow objects, showing the statistical
values for the states you selected.
Resources
Select if the BottleneckAnalyzer displays statistical data for a resource of type Production, Transport and Storage on
the tab Configure.
Display
Select how the BottleneckAnalyzer displays the statistics values from the drop-down list:
As Only Bars, as Plus Scale, or Plus Background.
Navigate Menu
The menu command Open Location opens the Frame window in which the object is located.
Help Menu
The Help menu provides these menu commands:
Contents
The menu command Contents opens the table of contents of the Tecnomatix Plant Simulation help.
Index
The menu command Index opens the index of the Tecnomatix Plant Simulation help.
Help on BottleneckAnalyzer
The menu command Help on BottleneckAnalyzer opens the help topic pertaining to the BottleneckAnalyzer.
EnergyAnalyzer
The EnergyAnalyzer analyzes the energy consumption of the selected machines in your plant.
You can insert the EnergyAnalyzer into your simulation model from the folder Tools in the Class Library or from the
toolbar Tools in the Toolbox.
You can:
• Add the objects for which the EnergyAnalyzer collects energy consumption data on the Tab Objects.
• Show the collected energy consumption data in a table or in a chart on the Tab Evaluate. In addition you can vi-
sualize the values of the individual machines. Show a plot the collected values during the simulation run.
• Select settings for displaying the values on the Tab Settings.
The context menu of the EnergyAnalyzer also provides commands for some of the features described above.
Tab Evaluate
On the tab Evaluate you can:
• Open the table that shows the collected energy consumption data.
• Show the collected energy consumption data in a chart.
• Display a Visualization of the values of the individual machines in the Frame.
• Plot the collected values continuously during the simulation run.
Open
To open the table that shows the names and the collected energy values of the selected objects, click Open.
• The values in the first three cells are values that the EnergyAnalyzer computes.
The Value shows the Method
Energy sum of the entire energy consumption of statEnergyTotalConsumption
the station.
Show
To show a chart of the energy consumption of the selected objects, click Show.
Note that the chart of the EnergyAnalyzer shows the energy consumption in kilowatt hours (kWH). The built-in En-
ergy Statistics chart, on the other hand, shows the energy consumption in percent of 100.
The colors for the energy states are identical in both charts.
Visualization
To visualize energy consumption of the selected objects with a colored circle around the respective object, click
Show.
To hide energy consumption of the selected objects, click Hide.
Red means that this object has the highest energy consumption. The red circle automatically has the greatest line
width.
For comparing the energy consumptions of the resources, the EnergyAnalyzer shows colored bars above the objects
in the Frame. To be able to compare them, the graphics must not obscure the bars. For this reason you can set the
common z-coordinate of the base area of all bars with the attribute z3D_lowerSurface. The default value of 2 makes
sure that the built-in graphics are visible. This height corresponds to a consumption of 0.
The EnergyAnalyzer assigns a bar to the maximum value, whose top surface has the height z3D_upperSurface hat. Its
default value is 12, so that the bar of the resource with the maximum consumption has a height of 10.
For identifying the energy consumption, the EnergyAnalyzer divides the consumption values of the selected resourc-
es into four categories. For categorizing the resources it considers their maximum consumption. When this maxi-
mum consumption is the value max, the categorizes correspond to these consumption intervals between
1. 0 to 0.4 max
2. 0.4 max to 0.7 max
3. 0.7 max to 0.9 max and
4. 0.9 max to max
A resource of the fourth category, i.e., with the highest consumption, is surrounded by a thick red circle. A resource
of the first category, i.e., with low consumption, is surrounded by a thin blue circle.
Above the circles the EnergyAnalyzer shows a bar chart which displays the portions of the consumption values
during the energy states working, setting-up, operational, failed, on standby, and off.
You can enter the radius of the circle on the tab Settings.
Plot
To continuously show the plotted values of the power input of the selected objects during the simulation run, click
Show.
This only works if you select the check box Monitor energy consumption on the tab Settings.
Tab Objects
On the tab Objects you can add the objects for which the EnergyAnalyzer collects energy consumption data. To do
so, click Add All. The EnergyAnalyzer then inserts all object for which you selected the check box Active on the tab
Energy into the list on the tab.
Instead, you can also select the objects in the Frame, drag them onto the EnergyAnalyzer, and drop them there.
To delete one or several of the objects, double-click in the list. Then, delete the contents of the respective cell in
the dialog that opens and click OK.
Tab Settings
On the tab Settings you can:
• Select to Monitor energy consumption of the objects or to not monitor it.
• Enter the Graphics layer of the objects.
• Enter the Radius of the energy consumption graphic of the objects.
• Select to show a Display panel of cumulated energy values the objects or to not show it.
Graphics layer
Enter a sufficiently great negative number to ensure that the energy data is always displayed in front of all objects
and vector graphics in the Frame that contains your model.
Radius
Enter the radius of the circle that the EnergyAnalyzer draws around the objects to show their energy consumption.
The EnergyAnalyzer uses the radius when you click Visualization on the tab Evaluate.
Display panel
To show a display panel with these values, select the check box.
• The cumulated energy consumption of all selected machines.
• The cumulated energy consumption of all selected machines while they were in the energy state operational.
• The current power consumption of all selected machines.
• The former maximum power consumption of all selected machines.
Navigate Menu
The menu command Open Location opens the Frame window in which the object is located.
Tools Menu
The Tools menu provides these menu commands:
Set Colors
The menu command Set Colors opens the table in which you can customize the default colors for showing the en-
ergy states the objects can be in. To restore the default colors, which the energy states in the Chart show as well,
select Set Default Colors.
Help Menu
The Help menu provides these menu commands:
Contents
The menu command Contents opens the table of contents of the Tecnomatix Plant Simulation help.
Index
The menu command Index opens the index of the Tecnomatix Plant Simulation help.
Help on EnergyAnalyzer
The menu command Help on EnergyAnalyzer opens the help topic pertaining to the EnergyAnalyzer.
SankeyDiagram
The SankeyDiagram watches and displays instantiated MUs of MU classes.
You can insert the SankeyDiagram into your simulation model from the folder Tools in the Class Library or from the
toolbar Tools in the Toolbox.
You can:
• Select if the SankeyDiagram is Active or not and Display the Sankey flows.
• Select the MUs to be watched by clicking Open.
• Select the Color of the Sankey flows.
• Enter the Maximum width of the flows.
• Enter the number with which to Graphics in layer.
The context menu of the SankeyDiagram also provides commands for some of the above actions.
Active
To activate the SankeyDiagram, select this. The icon in the Frame looks different for an activated or a deactivated
SankeyDiagram. To deactivate it, clear the check box.
SankeyDiagram SankeyDiagram
Display
To display the Sankey flows, click Display.
Note: Plant Simulation only displays Sankey flows, when you activate the menu command View > Options > Show
Connections in the Frames.
The SankeyDiagram uses the Constructor and the Destructor interaction controls of the mobile objects (MUs).
You cannot use it in models in which you programmed your own Constructor and the Destructor controls
for mobile objects.
MUs to be watched
To designate the classes of MUs, which the SankeyDiagram watches, click Open and enter the MU classes, whose
instances Plant Simulation watches, into the table that opens.
You might, for example, enter .MUs.part, .MUs.Entity, .MUs.Transporter, etc.
Color
Select one of the predefined colors for the Connectors in the Sankey diagram: Red, Cyan, Blue, Magenta, Green, Yellow,
Black or White. Clicking Select opens the dialog Colors in which you can select another color of your liking.
Graphics in layer
Enter a sufficiently great negative number to ensure that the Sankey flows are always displayed in front of all objects
and vector graphics in the Frame that contains your model.
Navigate Menu
The menu command Open Location opens the Frame window in which the object is located.
Help Menu
The Help menu provides these menu commands:
Contents
The menu command Contents opens the table of contents of the Tecnomatix Plant Simulation help.
Index
The menu command Index opens the index of the Tecnomatix Plant Simulation help.
Help on SankeyDiagram
The menu command Help on SankeyDiagram opens the help topic pertaining to the SankeyDiagram.
• Before you open a text file, we advise to select the correct data type that fits the data you are going to import into
the individual columns of the TableFile. If the text file has a column header, which you want to also use in your
Plant Simulation list, activate and show the column index in the Plant Simulation list.
• To open a text file or an Plant Simulation object file in a list, click on the List ribbon tab.
• Navigate to the folder where you stored the file. Select the type of file you would like to open and click Open.
Text file opened in MS Word, sample Opened Plant Simulation object file, sample
Note that Plant Simulation opened the object file with the formatting, which the original file had. For the text file
we had to manually select the correct data types.
• To export the contents of an Plant Simulation list or table, click Export to File or Export Object File on the List rib-
bon tab.
• For our example we used the file MyTestData.xls, which looks like this in Excel.
• To open the Excel file in an Plant Simulation table, click Import File on the List ribbon tab.
Navigate to the folder where you stored the file. Select the file you would like to open and click Open. Select the
Excel worksheet you want to import and click OK.
• The imported Excel worksheet looks like this in our Plant Simulation table.
Check the file for correct data types, data you do not need, etc. You can also pre-process or post-process the data
by programming a Method.
• To export the contents of an Plant Simulation list or table as an Excel file, click Export Excel File on the List ribbon
tab.
• Click the inheritance button to the right of Services on the sub-tab Processing so that it looks like this . Click
Services for.
• Right-click in the list and click Import. Navigate to the folder where you saved the text file and click OK.
If need be, you can then manipulate the contents of the list with the commands on the Context Menu of Em-
bedded Lists. You might, for example, add rows or sort the list in ascending or descending order.
• To export the contents of an embedded list as a tab-delimited text file, right-click in the list and select Export.
You can:
• Select the File Name, the Context and the Import Method
• Read and Write Data Sequentially
• Read and Access Data Randomly
• Access and Traverse Data Randomly
Select the File Name, the Context and the Import Method
When you work with the XMLInterface, you will make extensive use of XPath (XML Path Language) instructions
and of the Plant Simulation methods and attributes of the XMLInterface itself.
Into the dialog of the XMLInterface you:
• Enter the File Name of the XML file, which the XMLInterface opens, when you want to import data. When you
export data, it specifies the name of the file, which it saves.
• Enter the context of the data you want to import. The context designates the node of the structure of the XML
document at which the XMLInterface starts reading data. You might, for example, enter the names of certain data,
or of certain objects that you are interested in, for example Data/Objects. This way you can restrict the data to
be read, i.e., if you do not need to work with all of the data contained in the XML file, you will enter a context.
If you do not enter a context, the XMLInterface imports the entire file, which may contain a large amount of data,
some of which you do not need. This might take some time to import and use up a large amount of your com-
puter’s RAM.
• Click to enter the path to and the name of the Method into the text box in which you programmed how to
extract and to sequentially process the imported data.
XMLInterface.writeElement("genre","Computer");
XMLInterface.writeElement("price","44.95");
XMLInterface.writeElement("publish_date","2000‐10‐01");
XMLInterface.writeElement("description","An in‐depth ...");
‐‐ terminates the item 'book'
XMLInterface.endElement;
‐‐ terminates the element 'catalog'
XMLInterface.endElement;
XMLInterface.close;
tbl[4,1][1,1] := "xmlns:aa"
tbl[4,1][2,1] := "specAth"
‐‐ additional attributes
tbl[4,1][1,2] := "id"
tbl[4,1][2,2] := "bk113"
‐‐ child nodes
tbl.createNestedList(5,1)
tbl[5,1][1,1] := "aa:author"
tbl[5,1][2,1] := "specAth"
tbl[5,1][3,1] := "XYZ"
tbl[5,1][1,2] := "title"
tbl[5,1][3,2] := "UNKNOWN"
tbl[5,1][1,3] := "genre"
tbl[5,1][3,3] := "also"
tbl[5,1][1,4] := "price"
tbl[5,1][3,4] := "12,45"
tbl[5,1][1,5] := "publish_date"
tbl[5,1][3,5] := "12.1.02"
tbl[5,1][1,6] := "description"
tbl[5,1][3,6] := "xx0011"
XMLInterface.insertNodes(tbl)
‐‐ save the changed document
XMLInterface.FileName := "D:\MSXML 4.0\tmp.xml"
XMLInterface.write
‐‐ close the document
XMLInterface.close
‐‐ additional attributes
tbl[4,1][1,2] := "id";
tbl[4,1][2,2] := "bk113";
‐‐ child nodes
tbl.createNestedList(5,1);
tbl[5,1][1,1] := "aa:author";
tbl[5,1][2,1] := "specAth";
tbl[5,1][3,1] := "XYZ";
tbl[5,1][1,2] := "title";
tbl[5,1][3,2] := "UNKNOWN";
tbl[5,1][1,3] := "genre";
tbl[5,1][3,3] := "also";
tbl[5,1][1,4] := "price";
tbl[5,1][3,4] := "12,45";
tbl[5,1][1,5] := "publish_date";
tbl[5,1][3,5] := "12.1.02";
tbl[5,1][1,6] := "description";
tbl[5,1][3,6] := "xx0011";
XMLInterface.insertNodes(tbl);
‐‐ save the changed document
XMLInterface.FileName := "D:\MSXML 4.0\tmp.xml";
XMLInterface.write;
‐‐ close the document
XMLInterface.close;
• Update the XML document.
The source code in SimTalk 2.0 notation looks like this:
‐‐ updates the selected nodes of the document
var tbl:table;
XMLInterface.FileName := "D:\MSXML 4.0\books.xml"
XMLInterface.openDocument;
‐‐ select the nodes to be changed
tbl := XMLInterface.getNodes("/catalog/book[title='Midnight Rain']", 1)
‐‐ update the values
tbl[5,1][3,3] := "TEST"
‐‐ write the changed values
XMLInterface.updateNodes(tbl)
XMLInterface.FileName := "D:\MSXML 4.0\tmp.xml"
XMLInterface.write
XMLInterface.close
XMLInterface.openDocument;
‐‐ select the nodes to be changed
tbl := XMLInterface.getNodes("/catalog/book[title='Midnight Rain']", 1);
‐‐ update the values
tbl[5,1][3,3] := "TEST";
‐‐ write the changed values
XMLInterface.updateNodes(tbl);
XMLInterface.FileName := "D:\MSXML 4.0\tmp.xml";
XMLInterface.write;
XMLInterface.close;
• Create a new XML document.
The source code in SimTalk 2.0 notation looks like this:
‐‐ creates a new document by calling the method newDocument
var tbl:table;
XMLInterface.newDocument("catalog")
tbl := XMLInterface.getContainer(1)
XMLInterface.setContext("/catalog")
‐‐ parent node
tbl[1,1] := "book"
‐‐ default namespace
tbl[2,1] := "MyBooks"
‐‐ attributes
tbl.createNestedList(4,1)
‐‐ explicit namespace
tbl[4,1][1,1] := "xmlns:aa"
tbl[4,1][2,1] := "specAth"
‐‐ additional attributes
tbl[4,1][1,2] := "id"
tbl[4,1][2,2] := "bk113"
‐‐ child nodes
tbl.createNestedList(5,1)
tbl[5,1][1,1] := "aa:author"
tbl[5,1][2,1] := "specAth"
tbl[5,1][3,1] := "XYZ"
tbl[5,1][1,2] := "title"
tbl[5,1][3,2] := "UNKNOWN"
tbl[5,1][1,3] := "genre"
tbl[5,1][3,3] := "also"
tbl[5,1][1,4] := "price"
tbl[5,1][3,4] := "12,45"
tbl[5,1][1,5] := "publish_date"
tbl[5,1][3,5] := "12.1.02"
tbl[5,1][1,6] := "description"
tbl[5,1][3,6] := "xx0011"
XMLInterface.insertNodes(tbl)
XMLInterface.FileName := "D:\MSXML 4.0\tmp.xml"
XMLInterface.write
for i := 0 to numberAttributes‐1 loop
‐‐ print the data of the attributes
print XMLInterface.getAttributeName(i)+":" +XMLInterface.getAttributeValue(i);
next;
‐‐ check the children of the current node
VisitChildren;
end;
‐‐ remove the XML document from RAM
XMLInterface.close;
• In the dialog Create New Data Source select the ODBC driver for the data source you would like to use. In
our example we selected the Microsoft Access Driver. Click Finish.
• Click Select in the dialog ODBC Microsoft Access Setup and select the database in the dialog Select Database.
Type in the Data Source Name. If you want to, you can also add a Description of the database. As Plant Simu-
lation addresses the database with this name, mind the Plant Simulation conventions for the Name!
• Click Select and select the database to which you want to connect. Our database is called orders.mdb.
After successfully concluding this action, the dialog ODBC Data Source Administrator shows the User Data
Source, which we added.
• To add the object ODBC to the toolbar Information Flow of your simulation model, click Manage Class
Library > Basic Objects > InformationFlow on the Home ribbon tab.
Click the object on the toolbar Information Flow and insert it into your simulation model.
In our example we inserted the following objects into our simulation model:
• An ODBC object, which controls the communication with the database.
• A Method for reading data from the database.
• A Method for writing data to the database.
• A Plant Simulation Table into which we import the data, and from which we export it back to the database.
• Double-click the object ODBC and type the name of the database into the text box Database. In our example we
entered TestDB. Note that this is the same name that we entered into the dialog ODBC Microsoft Access Setup
above.
When you use a database with user management, such as SQL-Server, Oracle, etc., you also have to enter a User
name and a Password. To apply your changes, click Apply.
To log on to the database, click Login.
When all your settings worked out, Plant Simulation grays out the box with the name of the database and shows
Ok in the box Message. When Plant Simulation encountered problems, it shows an error message describing the
problem.
• Then, insert a Method into your simulation model. Within this Method you program, which data will be imported
and what happens to this data.
Reading and writing data only works, when Plant Simulation is connected to the database. For this reason the
methods login and logout frame the database operation proper.
The source code in SimTalk 2.0 notation looks like this:
ODBC.login("TestDB","","")
‐‐ database operation
ODBC.logout
The source code in SimTalk 1.0 notation looks like this:
is
ODBC.login("TestDB","","");
‐‐ database operation
ODBC.logout;
end;
• Then you can read data from the database and write the results of the database query into an Plant Simulation table.
Instead, you could also write the data into a local variable.
You’ll always start the query with the command .sql. Then, define the target, in our example this is the Plant
Simulation table Orders. Next, you’ll enter SQL standard queries within quotes. The syntax you have to use de-
pends on your database system, consult the documentation that came with your database. The ODBC driver of
the database determines the range of commands you can enter.
In our example we will read the entire contents of the table Orders2 from our Access database and write it into
the Plant Simulation table Orders.
• You can then use and manipulate this data in Plant Simulation in a number of ways. When working with large
amounts of data, we recommend to use SQL queries with filters, as these are oftentimes considerably faster than
searching large Plant Simulation tables.
In our example the query for DeliveryTime and Amount of all parts of type panel yields this result in our Plant
Simulation table.
The source code in SimTalk 2.0 notation looks like this:
ODBC.login("TestDB","","")
ODBC.sql(Orders, "select DeliveryTime, Amount from Orders2 where MU = '.MUs.panel'")
ODBC.logout
The source code in SimTalk 1.0 notation looks like this:
is
do
ODBC.login("TestDB","","");
ODBC.sql(Orders, "select DeliveryTime, Amount from Orders2 where MU = '.MUs.panel'");
ODBC.logout;
end;
'abc')")
ODBC.logout
The source code in SimTalk 1.0 notation looks like this:
is
do
ODBC.login("TestDB","","");
ODBC.sql("insert into Orders2 values ('15:00:00.0000', '.MUs.NewPart', '150',
'NewPart', 'abc')");
ODBC.logout;
end;
Note: As SQL does not provide a single statement for adding the contents of a row or of the entire table to the
database, you have to type the contents of each cell into the Method.
To add data to an existing data set, thus updating the database, we use the SQL instruction update:
The source code in SimTalk 2.0 notation looks like this:
ODBC.login("TestDB","","")
ODBC.sql("update Orders2 set Attribute = 'xyz' where Name = 'rod'")
ODBC.logout
The source code in SimTalk 1.0 notation looks like this:
is
do
ODBC.login("TestDB","","");
ODBC.sql("update Orders2 set Attribute = 'xyz' where Name = 'rod'");
ODBC.logout;
end;
To add Oracle11g to the toolbar Information Flow of your simulation model, click Manage Class Library >
Basic Objects > InformationFlow on the Home ribbon tab.
Click the object on the toolbar Information Flow and insert it into your simulation model.
Note: You can also use ODBC together with Oracle! Then, you do not have to install an Oracle Client. Be aware
that the SQL instructions, which you use, are not necessarily compatible with the ODBC version. This may
cause problems if, for example, you want to switch between an Oracle database and an Access-database for
test purposes. In this case, we recommend to use ODBC for all databases.
To add the object SQLite to the toolbar Information Flow of your simulation model, click Manage Class
Library > Basic Objects > InformationFlow on the Home ribbon tab.
Click the object on the toolbar Information Flow and insert it into your simulation model.
This sample model demonstrates how to use the object SQLite to establish a connection between Plant Simulation
and an SQL database.
• The object SQLite uses a database which is stored in main memory instead of in a file on your computer’s hard
disk.
• The method openDatabase opens the database and creates a table in the database using SQL statements.
• The objects SourceEntity and SourcePallet produce different parts that pass through the plant. When the parts leave
the respective Source objects, the method enterCreationTime records the part type and the creation time in the da-
tabase.
• Once the parts reach the Drain, the method enterDeletionTime records the time at which the parts leave the plant.
• The simulation runs for 6 days. At the end of the simulation run the endSim method computes the average lifetime
of the parts and the method fillTable writes these results into a Plant Simulation table.
• The method closeDatabase, which is called by the endSim method, closes the database.
To create the model, you will:
• Configure the Connection with the SQL Database
• Configure the Material Flow Through the Plant in Plant Simulation
• Import the Simulation Results From the Database and Show Them
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
Note: The following code examples work for SimTalk 2.0 and for SimTalk 1.0.
• Program the method to open the database. We named our method openDatabase and entered the following source
code:
‐‐ called by the init method
MySQLite.open; ‐‐ opens the database
MySQLite.exec("CREATE TABLE MUTrace (MUName TEXT PRIMARY KEY, MUType TEXT, StartTime REAL,
EndTime REAL)");
‐‐ creates the table MUTrace in the database with four columns containing the
‐‐ name of the part, the type of the part, the start time, and the end time
• Program the method to close the database. We named our method closeDatabase and entered the following source
code:
‐‐ called by the endsim method
MySQLite.close; ‐‐ closes the data base
• We programmed the reset, which is called when you click the Reset Simulation button in the EventController, to
delete the contents of the TableFile and the result numbers from the Comment:
Tablefile.delete;
Tablefile.closeDialog;
Comment.Text := "MU Type, Lifetime"+chr(13)+chr(10)+"‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐";
• We programmed the method init to show Processing... in the Comment object and to open the database:
Comment.Text := "Processing...";
openDatabase;
• Inserted two Source objects into the model and configure them so that they produce two different types of parts.
In our model the SourceEntity produces parts of type Entity. The SourcePallet produces parts of type Container.
Next, we selected the same rear-triggered exit control for both Sources.
We entered the following source code into the method enterCreationTime. It inserts the times at which the parts
were created, their type, and the start time into the internal database table named MUTrace. It then binds the string
values and real values to the SQL-statement and executes the SQL-statement, thus writing the values to the da-
tabase.
MySQLite.prepare("INSERT INTO MUTrace (MUName, MUType, StartTime) VALUES (?1, ?2, ?3)");
MySQLite.bindString(1, obj_to_str(@));
MySQLite.bindString(2, @.name);
MySQLite.bindReal(3, EventController.simTime);
MySQLite.step;
• Insert the stations which process the parts. We inserted four SingleProcs with these settings:
• Insert the Drain, which removes the parts from the plant.
We entered the method enterDeletionTime as the entrance control and left all other settings unchanged.
We entered the following source code into the method. It updates the database table MUTrace with the time at
which the parts were deleted.
MySQLite.prepare("UPDATE MUTrace set EndTime = ?1 WHERE MUName = ?2");
MySQLite.bindReal(1, EventController.simTime);
MySQLite.bindString(2, obj_to_str(@));
MySQLite.step;
Import the Simulation Results From the Database and Show Them
To show the simulation results in our simulation model after the simulation run is finished, you can import data of
interest from the database. In our sample model we calculated the average lifetime of the parts and wrote these
results into a Plant Simulation table and into an object of type Comment:
To do so, we inserted a TableFile into our simulation model and assigned the data type string to column 1 and 2 and
the data type time to column 3 and 4. We also inserted an object of type Comment.
We then inserted an endSim method and entered the following source code. It computes the average lifetime of the
part types Entity and Container and writes that result into the Comment object. It then calls the method fillTable, which
in turn writes the lifetime of the individual parts into the TableFile:
The source code in SimTalk 2.0 notation looks like this:
var str := "MU Type, Lifetime"+chr(13)+chr(10)+"‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"
MySQLite.prepare("SELECT MUType, avg(EndTime‐StartTime) FROM MUTrace GROUP BY MUType")
while MySQLite.step
str := str+chr(13)+chr(10)+
MySQLite.getColumnString(0)+", "+to_str(MySQLite.getColumnReal(1))
Comment.Text := str
fillTable ‐‐ name of the method that writes data to the TableFile
closeDatabase
The source code in SimTalk 1.0 notation looks like this:
local str := "MU Type, Lifetime"+chr(13)+chr(10)+"‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐";
MySQLite.prepare("SELECT MUType, avg(EndTime‐StartTime) FROM MUTrace GROUP BY MUType");
while MySQLite.step loop
str := str+chr(13)+chr(10)+
MySQLite.getColumnString(0)+", "+to_str(MySQLite.getColumnReal(1));
end;
Comment.Text := str;
fillTable; ‐‐ name of the method that writes data to the TableFile
closeDatabase;
To write the lifetime of the individual parts into the TableFile, we programmed the method fillTable.
The source code in SimTalk 2.0 notation looks like this:
‐‐ called by the endSim method
MySQLite.prepare("SELECT * FROM MUTrace")
for var column := 1 to MySQLite.getcolumnCount
var row := 1
while MySQLite.step
switch column
case 1,2 ‐‐ column 1 and 2 of data type string
TableFile[column,row] := MySQLite.getColumnString(column ‐ 1)
else ‐‐ column 3 and 4 of data type time
TableFile[column,row] := MySQLite.getColumnReal(column ‐ 1)
end
row += 1
end
next
TableFile.opendialog
The source code in SimTalk 1.0 notation looks like this:
‐‐ called by the endSim method
MySQLite.prepare("SELECT * FROM MUTrace");
for local column := 1 to MySQLite.getcolumnCount loop
local row := 1;
while MySQLite.step loop
inspect column
when 1,2 then ‐‐ column 1 and 2 of data type string
TableFile[column,row] := MySQLite.getColumnString(column ‐ 1);
else ‐‐ column 3 and 4 of data type time
TableFile[column,row] := MySQLite.getColumnReal(column ‐ 1);
end;
row := row + 1;
end;
next;
TableFile.opendialog;
Enter the File Name of the text file, which the FileInterface opens, when you want to import data. When you export
data, it specifies the name of the file, which it saves.
The method readLn opens the file and reads a single line from it. It then increases the internal line counter by one
and closes the file again.
The FileInterface transforms the contents of the line it read into a string. You can manipulate these strings with the
Functions for Manipulating Strings, such as copy, omit, strlen and with the Functions for Converting Data Types, such as str_to_-
num, str_to_time etc.
Calling the method readLn again and again moves to the respective next line in the text file. The method gotoLine
moves to the line within the text file, which you pass as an integer. You can then import that line with the method
readLn. If you would like to access the same file several times in a row, we advise to open the file beforehand, as
that will increase access speed. If you do not need a file any longer, close it.
Note: The FileInterface can keep ten text files open at any one time.
When writing data, for example with the method write, the FileInterface opens the file and sets its internal line counter
to the end of the file by calling the method goBottom. Then, the FileInterface saves the data to the file and closes it.
The FileInterface always adds new data to the end of the file, it does not overwrite any existing data.
If you would like to access the same file several times in a row, we advise to open it beforehand, as it buffers the
data before saving it. The FileInterface saves data before the next reading access of the file or when closing it.
The FileLink places a link, i.e., a shortcut to a file into a Frame. When you drag a file from the Desktop or the Windows
Explorer into a Plant Simulation Frame and drop it there, the FileLink creates a link to the file in that Frame and places
the icon of the application, which is assigned to the specific file type, in the Frame. By default Plant Simulation enters
the entire path to the file into the text boxes Label and File name of the FileLink.
Plant Simulation opens a dialog asking if you would like to embed the file into the Plant Simulation model or not. When
you click Yes, it copies the file into your Plant Simulation model file when you save the model file. When you open
the model file the next time, Plant Simulation creates a temporary file, which is a copy of the original file. When you
are still editing an embedded file in its originating application while you save the Plant Simulation model file, Plant
Simulation shows a message.
When you click No, the program creates a link to the file in the file system of your computer. If you move or delete
the file, the link will become invalid and Plant Simulation will not be able to find the file and open it.
Double-click the icon in the Frame to open the application, which is assigned to the file type, and the file for editing,
provided the that application is installed on the computer. If the link is invalid, Plant Simulation opens the dialog
FileLink and shows the path and name of the invalid link in the text box File Name. You can open the dialog of the
FileLink by right-clicking its icon and selecting Open on the context menu.
You can:
• Open Formatted Text from within the Model
• Open a Picture From Within the Model
• Open Documents From Office Applications and PDF Files
• Play a Video in Your Simulation Model
• Drag the RTF file from the Windows Explorer to the Frame. If you want to embed the file into your simulation
model, click Yes.
For demonstration purposes, we changed the Label so that it does not show the path of the file but Formatted
Text.
When you then pass the model on to another person, and he double-clicks the icon of the object FileLink, it
opens in WordPad.
For demonstration purposes, we changed the Label so that it does not show the path of the file but Picture.
When you then pass the model on to another person, and he double-clicks the icon of FileLink1, it opens the
picture in Paint.
• Save the Microsoft Office document in the native format of the respective application. We saved our presenta-
tion with the name MyPresentation in PowerPoint first as a Microsoft Office PowerPoint Presentation. Then we also
saved it as a PDF file.
• Drag the presentation, i.e., the PPTX file, from the Windows Explorer to the Frame. Click Yes in the dialog to em-
bed the presentation into the model.
For demonstration purposes, we changed the Label so that it does not show the path of the file but Presenta‐
tion.
When you then pass the model on to another person, and he double-clicks the icon of FileLink2, it opens the
presentation in PowerPoint.
• Drag the PDF file created from the presentation file from the Windows Explorer to the Frame. Click Yes in the
dialog to embed the PDF file of the presentation into the model.
For demonstration purposes, we changed the Label so that it does not show the path of the file but Presenta‐
tion PDF.
When you then pass the model on to another person, and he double-clicks the icon of FileLink2, it opens the
presentation in the PDF Viewer that is installed on the computer.
To add the ActiveX interface to the Class Library, click Manage Class Library > Basic Objects > InformationFlow
on the Home ribbon tab.
You can insert the object ActiveX into your simulation model from the folder InformationFlow in the Class Library
or from the toolbar Information Flow in the Toolbox.
To embed a video into the simulation model and to then play it, proceed as follows:
• Record the video in a video recording tool and save it as an .avi file.
We recorded a worker who places parts into a work cell and then removes the processed parts from it. We named
our video file MyVideo.
• Drag the video, i.e., the AVI file, from the Windows Explorer to the Frame. Click Yes in the dialog to embed the
video into the model.
For demonstration purposes, we changed the Label so that it does not show the path of the file but Video.
• Insert the object ActiveX into the simulation model.
We named our object MyActiveX. We then entered the class name of the required ActiveX control, namely WMPlay‐
er.OCX.7, to play the video.
• Program the method to check if Windows Media Player is installed on the computer. If this is the case it will play
the video. If this is not the case, it will show a message saying so. Within the method we use a number of func-
tions for the object ActiveX. We named our method openVideo.
The source code in SimTalk 2.0 notation looks like this:
var ClassName: string, description: list[string], t: table
current.openDialog
‐‐ instantiates a local variable of data type list
description.create
‐‐ writes the description of all registered COM class names of your computer into the list
description.insertlist(1,MyActiveX.overview.copy({2,1}..{2,*}))
‐‐ initializes the cursor
description.setCursor(1)
‐‐ searches for the program Windows Media Player
if description.find("Windows Media Player")
‐‐ reads the class name of the COM object
ClassName := MyActiveX.overview[1, description.cursor]
else
‐‐ shows a language dependent message if the Media Player is not found
if userInterfaceLanguage = 1 ‐‐ English
promptMessage("The Windows Media Player is not installed on your computer.")
else
promptMessage("Der Windows Media Player ist auf Ihrem Computer nicht
installiert.")
end
end
‐‐ assigns the class name to the attribute of the object MyActiveX
MyActiveX.ClassName := ClassName
‐‐ and activates it
MyActiveX.Active := true
t := MyActiveX.TypeInfo
if t.yDim = 0
if userInterfaceLanguage=1 ‐‐ English
promptMessage("This example is not available on your computer.");
else
promptMessage("Dieses Beispiel steht auf Ihrem Computer nicht zur Verfügung.")
end
return
end
‐‐ different versions have different attributes, ’View > Type Info’ shows this
if ClassName = "WMPlayer.OCX.7"
MyActiveX.url := FileLink4.FileName
else
MyActiveX.FileName := FileLink4.FileName
end
The source code in SimTalk 1.0 notation looks like this:
is
do
local description:table := MyActiveX.overview; ‐‐ description of all registered COM
classnames
description.setcursor(2,1);
‐‐ we search for "Windows Media Player"
if description.find({2,1}..{2,*},"Windows Media Player") then
‐‐ we read the classname of the COM object
local classname:string := description[1, description.cursorY];
else
if userInterfaceLanguage = 0 then
promptmessage("Schade, auf Ihrem Rechner ist kein Windows Media Player
installiert");
else
promptmessage("Sorry, there is no Windows Media Player installed on your
computer");
end;
return;
end;
MyActiveX.className := classname;
MyActiveX.active := true;
MyActiveX.URL := FileLink4.filename;
end;
• Program the method to close the video when it is not needed any longer. We named our method closeVideo.
The source code in SimTalk 2.0 notation looks like this:
if MyActiveX.Active
MyActiveX.Active := false
end
The source code in SimTalk 1.0 notation looks like this:
if MyActiveX.Active then
MyActiveX.Active := false;
end;
• The model looks like this once you have inserted all objects which are required for playing the video.
To play the video, click the method openVideo with the right mouse button and select Run on the context menu.
You will notice that the video obviously plays but that you cannot see anything because the icon is too small to
show the video as we selected Display in Frame in the dialog of the object ActiveX.
To close the video, click the method closeVideo with the right mouse button and select Run on the context menu.
To fix this, hold down the Shift and Ctrl keys and drag a corner point of the icon to make it larger. Now the video
plays within the icon of the object ActiveX, but the background of the icon shows through, which is distracting.
To fix this, we created a new icon and made it transparent, compare Activate Transparency. Now it looks OK.
To use any of the video controls of the Windows Media Player, click the video with the right mouse button and
select the command of your choice.
• To make using the model easier, you can insert two objects of type Button into your model and use the methods
openVideo and closeVideo as the controls of the buttons instead of directly executing the methods.
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
• The CardFile has one column. It accesses the cells randomly by their position. You can add new cells at any
position within the CardFile. When you remove a cell, all cells with a higher number move up one position.
• The StackFile , compare QueueFile and StackFile, has one column. It accesses the cell you added last. The
contents of the last cell you added is the first to be processed. When you add a cell to the top of the stack, all
existing cells move one position down. When you remove a cell, the remaining cells each move up one cell.
• The QueueFile , compare QueueFile and StackFile, has one column. It accesses the cell you added first: The
contents of the first cell you added is the first one to be processed. It adds new cells after the last existing cell.
• The TableFile has several columns. It accesses the cells by their column number and their row number. New
data you type in overwrites and replaces the existing contents of the cell.
• The TimeSequence has two columns. It accesses all pairs of cells randomly by their column number and their
row number. It adds new entries in ascending order according to the time. Entries with a higher position move
up by one position when you remove a previous entry.
The procedures described below are the same for all types of Plant Simulation lists, which you insert into your sim-
ulation model. Before you can select your own settings, you have to deactivate inheritance: Click on the List
ribbon tab so that it is not selected, i.e., not orange. You can now change settings.
You can:
• Set the Data Type of a Column
• Set the Dimension of a List
• Set Alignment and Colors of Cells
• Insert, Cut and Delete Rows and Columns
• Work with Data in a List
• Work with Data in the TableFile
• Accessing Data in Lists
• Search Lists with Methods
• Search Manually within Lists
• Create Lists within Lists and Tables
• Sort CardFile, TableFile and TimeSequence
• Make Calculations with a Formula
• Import or Export the Contents of a List
• Open a List as a Dialog Window in the Foreground
• Deactivate inheritance of the format: Click on the List ribbon tab so that the button is not selected.
• To show the tabs Dimension and Data Type, click in the column header of a column.
Acceleration applies for the objects Line, Track, TwoLaneTrack, and Transporter; the value depends on
the unit you selected for the Acceleration
• Deactivate inheritance of the format: Click on the List ribbon tab so that the button on the left is not se-
lected.
• To set the standard width of a single column, click in the column header. This shows the tabs Dimension and
Data Type. Enter the column width in character widths of a non-proportional font that fit in a cell into the text
box Column width.
To simultaneously change the width of several columns, mark the range of columns before you enter the width.
To do so, click in the first column, hold down the mouse button and drag the mouse to the last column. The box
Range shows which columns you have selected.
• To limit the size of a table, click Select All in the top left corner of the table area. Or
• Click the Select All button on the toolbar of the context menu.
For all lists you can enter the Number of rows.
For the TableFile you can, in addition, enter the Number of columns. If you do not enter a Number of columns
and/or a Number of rows, the size of the list is not limited, which might be memory consuming.
• To insert a blank column to the left of the selected column, right-click it and select Insert Column. Plant Simulation
assigns the data type string to this new column. You can change it afterwards as described above.
• To insert a blank row above the selected row, right-click it and select Insert Row.
• To delete the selected column or row, right-click it and select Cut.
• Deactivate inheritance: Click on the List ribbon tab so that the button on the left is not selected.
• Click in the column header and select the columns to which you want to apply the settings. Or
Click in the row header and select the rows to which you want to apply the settings. The box Range shows which
columns or rows you have selected.
• Select the Alignment, the Font size, the Font color and the Background color of the selected columns and rows.
• Right-click into any cell in a column to the left of which you would like to insert a column. If you select the first
column, Plant Simulation inserts the new column to the right of it! In our example, we clicked a cell in column 1
to insert a new column to the left of column 1.
• Select Insert Column.
To clear the contents of the selected cell, double-click, right-click it and select Delete on the context menu.
To delete the contents of an entire row or of an entire column of cells but to leave the empty row or column in
the list, right-click it and select Delete on the mini toolbar.
To delete an entire row or an entire column of cells with its contents from the table, right-click in the row
header/column header and select Cut on the mini toolbar.
• Click the cell once and drag the mouse over a border of the cell until the cursor changes into crosshairs
.
• Press the mouse button, and drag the contents of the cell to move it to another location. The move cursor
looks like this .
• Hold down the Ctrl key, press the mouse button, and drag the contents of the cell to copy it to another cell.
The copy cursor looks like this .
• To paste data, which you copied to the clipboard with Home > Copy into other applications, select Home > Paste.
• To scroll up or down in a column, roll the mouse wheel or use the scrollbars.
• To select an entire column or row, their visible and invisible areas, click the column header or the row header.
• To select several contiguous columns of a TableFile, click in the column header of the first column, hold down
the mouse button and drag the mouse in the column header until you have selected the range you want.
• To select all columns and rows of the list, click Select All , i.e., the button in the top left corner of the
list file, where column and row headers meet. Or click the Select All button on the toolbar of the context
menu. Or press Ctrl+A.
• To show blank cells in a different color in a list, click Highlight Empty Cells on the List ribbon tab.
• To create a sub-list in a cell of type Table, List, Stack or Queue, you can either type in its name and path or employ
drag-and-drop to enter it.
• To open the sub-list or an object, which is contained in a cell of type Table, List, Stack, Queue or Object hold down
Shift and double-click the cell. Instead, you can also right-click the cell and select Open Object or press F2.
• To set the standard column width, select List > Format > Dimension > Column width and enter a value. Or you
can change it by dragging the cursor:
• Place the cursor into the topmost row of the column. The cursor changes into a double-headed arrow .
• Drag the mouse to the left or to the right until the width of the column meets your needs.
system index is located, i.e., the numbering of the columns and rows. When you select Home > Cut, Plant Simu-
lation removes the entire column or row. It then shifts the remaining columns to the left, and the remaining rows
up. When you select an entire column or row by clicking in the column or row index, Plant Simulation pastes a
column you cut, to the right of the current column and pastes a row you cut below the current row.
• Working with Drag-and-Drop in TableFiles
Note that Accelerator designates the listed key on the keyboard.
To do this Drag from To Accelerator
Move the selected text table window table window
Copy the selected text table window table window Ctrl
In the example we hid columns 2 through 14 . You recognize hidden columns by the symbol
that appears at the end of column 1.
To show hidden columns again, drag the cursor over the symbol. The cursor changes into an arrow pointing
to the right . To expand the columns to their original width, click the left mouse button once.
The advantage of a user-defined index over the standard system index is that assigning names to columns and rows
is more meaningful than the numbers, which Plant Simulation assigns by default. The user-defined index Vehi‐
cles["Truck",#1] may tell you and your co-modelers more than the system index Vehicles[3,1] when debug-
ging your model. Both expressions access the same cell. As a user-defined index you might, for example, enter:
Switch["Light","220 Volts"]
Vehicles["Truck",#1]
Plant["Chicago",.building1.drill]
In addition, the user-defined index is not as error-prone as the system index: When you add an additional column
or a row to the table, Plant Simulation increases the system index of the succeeding columns or rows by one. This
naturally make any assignment in a Method to the previous system index invalid. The identifier of the user-defined
index, on the other hand, remains the same and is still valid. Be aware that accessing a user-defined index is slightly
slower than accessing the system index.
You can:
• Set the Column Index.
• Set the Row Index.
• Create a User-defined Column Index and a User-defined Row Index.
• Set and Get the Upper Bound of a List.
• Address Columns and Rows with Methods.
• To allow for quickly accessing the user-defined column index, select the check box Fast index access.
• To only allow unique entries in user-defined indexes, depending on the data type, select the check box Unique
index key.
• To allow for quickly accessing the user-defined column index, select the check box Fast index access.
• To only allow unique entries in user-defined indexes, depending on the data type, select the check box Unique
index key.
• Deactivate inheritance: Click on the List ribbon tab so that the button on the left is not selected.
• To activate and to show the column index, click Activate Column Index. Enter a meaningful term into the first
row of cells to the right of string.
In most cases, you will select the data type String for the user-defined column index. When you select Integer,
you have to enter a number sign # in front of the term you enter as your user-defined index to distinguish it from
the system index.
• To activate and to show the row index, click Index Active. Enter a meaningful expression into the first column
of cells below string 0.
In most cases, you will select the data type String for the user-defined row index. When you select Integer, you
have to enter a number sign # in front of the expression, which you enter as your user-defined index, to distin-
guish it from the system index.
Note: When both column and row index are active, the cell [0,0], i.e., the cell at which column and row index in-
tersect, counts as part of the column index, not as part of the row index.
• Deactivate inheritance: Click on the List ribbon tab so that the button on the left is not selected.
• To select the entire list or table, click Select All , i.e., the button in the top left corner of the list file, where
column and row headers meet. Or click the Select All button on the toolbar of the context menu. Or press
Ctrl+A.
• Select Format > Format.
• Click the Tab Dimension. Enter the Number of columns and the Number of rows. Plant Simulation automatically
sets the lower bound to 1. When you use a user-defined index the lower bound is 0.
For lists with one column, you can also set the upper bound with the attribute MaxDim. For lists with two columns
you can set it with the attributes MaxXDim and MaxYDim. For tables the methods xDim and yDim return the di-
mension of the current occupancy.
The method indexXDim returns the last cell of the column index, which contains an entry. The method indexYDim
returns the last cell of the row index, which contains an entry.
The dialog Go To also shows the number of occupied columns and rows.
To move to a certain cell within a list or table, click Go To on the List ribbon tab and type in the location of the cell.
{3,*}..{4,*} designates the range, all cells in columns 3 and 4 in this case
6 designates the system index of a column
"column1" designates a column index
"real" designates a value
is located in the middle of the range you entered, Plant Simulation does not search for entries before of the cursor
position! The search goes on until Plant Simulation finds the value or reaches the end of the list. When Plant Simulation
finds the value you searched for, it places the cursor into the cell, which contains the value. A new search begins at
the next cell. If the search does not find the value, the internal cursor remains in the cell it had before the search.
The same principle applies to tables. As a table has rows and columns, it naturally has two cursors: CursorX desig-
nates the column and CursorY designates the row, which identifies the cell.
Note: Set the cursor anew after inserting or deleting rows, to determine its position.
• Enter the expression you would like to find into the text box Find what.
• Select Match entire cell contents to only find the characters in cells, which exactly and completely match the ex-
pression you entered into the text box Find what.
• Select Match case to only find text that has the same pattern of upper and lower case as the expression you en-
tered into the text box Find what.
• Select if you want to Search in Rows, i.e., to the right across rows, or down through Columns.
• Select the Search criterion from the drop-down list:
Find: Finds the expression you entered into the text box Find what, compare the method find.
Find ceil(ing): Finds a value greater than or equal to the expression you entered into the text box Find what, com-
pare the method findCeil.
Find floor: Finds a value less than or equal to the expression you entered into the text box Find what, compare
the method findFloor.
• Click Find Next, so that Plant Simulation finds the next instance of the expression, which you enter into the text
box Find what.
• Click Replace, so that Plant Simulation shows the text box Replace with. Enter the expression into the text box
Replace with that is to replace the expression you entered into the text box Find what.
• Click Replace to replace the expression.
• Click on the List ribbon tab so that the button is not selected.
• Right-click the column header of the column to which you want to add a sub-list and select Format.
• Select the data type of the sub-list you want to insert: Table, List, Stack or Queue. You will choose the data type
depending on how you want to access the entries of the sub-list.
If you want all sub-lists in that column to have the same formatting, select Common format.
• Enter a name of your choice, which identifies the sub-list, into the cells of the changed column. This name iden-
tifies the subtable.
• Hold down the Shift key and double-click the subtable, MySubtable in our case, to open it. Edit the subtable accord-
ing to your needs.
To insert a list object from a Frame or the Class Library into a cell of the list objects CardFile, StackFile, QueueFile,
or TableFile:
• Open the list object to which you want to add a sub-list/sub-table.
• Click on the List ribbon tab so that the button on the left is not selected.
• Right-click the column header of the column to which you want to add a sub-list and select Format.
• Select the data type Object.
• Drag the table to a cell of the list and drop it there. This inserts the absolute path of the inserted list.
Type the name of the list you want to insert into the cell, when this list is located in the same Frame. This way
Plant Simulation uses the relative path.
To open the sub-list or a list object, which is contained in a cell of type Table, List, Stack or Queue, hold down the
Shift key and double-click into the cell. Instead, you can also right-click the cell and select Open Object or press F2.
For linking the operands within a formula, you can use the same arithmetic operators and mathematical functions
as you use in methods, compare Operators and Expressions.
1. To activate Formula mode, click Formula on the List ribbon tab so that it is selected .
2. To enter a formula into a cell, click in it and type the expression in. Instead, you can also type it into the text box
above the list. In our example we add the value of cell 2 in column 1 to the value of cell 3 in column 2. To do
so, we entered [1,2]+[2,3].
3. To show the result of the calculation of the formula, i.e., its value, in the cell, press Enter.
4. To show the formula itself in the text box, double-click in the cell that contains the formula. Then, you can
change the formula. You can also access the values in a column via the column index.
The list shows cells containing a formula in color. Turquoise designates a formula with a correct syntax, red a for-
mula with syntax errors.
Within a formula you can access the value of another cell of the same list with the anonymous identifier @:
Formula Executes
@[1,1]+@[1,2] adds the contents of the cell [1,1] to the contents of the cell [1,2].
@[1,1]*track.length multiplies the contents of cell [1,1] with the length of the object track.
@[1,@.ydim]+5 adds 5 to the value of the last cell in the first column.
@[xSelf+1,ySelf]‐7 subtracts 7 from the value of the neighboring cell to the right
@.sum({3,*}) computes the sum of the third column.
@.min({1,2}..{1,*}) determines the smallest value of the first column, starting from cell 2.
Note: The data type of the result of a formula has to have the same data type as the cell or the column in which
the cell containing the formula is located.
In sub-lists, you can access the list, into which you inserted the sub-list, with the anonymous identifier ?. Note that
for user-defined attributes of lists, the anonymous identifier ? accesses the object for which you defined the user-
defined attribute.
xSelf and ySelf contain the number of the column or the number of the row respectively, which contains the
formula. This way you can easily access neighboring cells.
• To only save the contents of the list, without any of its formatting, click Export Text File on the List ribbon tab.
To change the settings with which Plant Simulation exports ASCII data, click Export > Text File Format on the List
ribbon tab. Then, you can select which sign you want to use for separating columns, etc., depending on the pro-
gram into which you want to import the data.
Select the encoding with which the text file will be exported in the dialog Save As.
The sample table shown below, which we exported with the default settings, looks like this when we open it in
a word processing program. We chose Microsoft Word to show the tabs, which Plant Simulation exported.
• To save the contents of the Plant Simulation list as an Excel worksheet, click Export Excel File on the List ribbon
tab.
Enter the name of the worksheet, on which Excel opens the data, into the dialog Worksheets.
When Plant Simulation reads an Excel table, it attempts to adapt the data types of the individual columns to the
available Plant Simulation data types. This only works, when you created the columns on the Excel worksheets, so
that they only contain a single data type, meaning that, when you, for example, assign the data type String to a
cell of a column, the entire column may only be of data type String.
Row 0 (zero) is an exception to this rule: When the table, which Plant Simulation reads, has a column index, it inter-
prets row 0 as the column index and it will not be part of the data type designation of the columns.
To prevent this, you can also open the CardFile, the QueueFile, the StackFile, and the TableFile in the foreground as
a dialog window with the method openDialogBox.
To open our table SteeringTypes as a dialog window in the foreground, we typed in the instructions below into our
method openTableAsDialog.
SteeringTypes.openDialogBox
Be aware that the dialog window of a list does not provide all of the functions which the normal list windows offers
on the List ribbon tab.
It also offers a reduced set of functions on the context menu.
Another important difference is that the list window applies entries as you type them in, while the list opened as a
dialog window only applies them when you click Apply or OK.
To add the object Socket to the Class Library, click Manage Class Library > Basic Objects > InformationFlow on
the Home ribbon tab.
You can insert the object Socket into your simulation model from the folder InformationFlow in the Class Library
or from the toolbar Information Flow in the Toolbox.
Compare the sample models: Click the Window ribbon tab, click Start Page > Getting Started > Example Models,
and click Small Examples. Then, select the respective Category, the Topic, and the Example in the dialog Examples
Collection and click Open Model.
In our sample model a server Socket, located in a Frame of its own in Plant Simulation, communicates with a client Socket,
also located in a Frame of its own, and vice versa.
To exchange data with the Socket interface, proceed as follows:
• Model the Frame ServerSocket.
• Insert the objects required for the ServerSocket communicating with the ClientSocket: The Socket object, a callback
method for the ServerSocket, a Variable each for recording the sent message and the received message, and a
Method in which you program how to send messages.
• We named our server Socket object MyServerSocket. We used the default settings and selected our callback meth-
od, which we called MyCallbackMethod.
Make sure to only select the check boxes On and Server Socket in the object MyServerSocket!
When you select TCP as the protocol for transmitting the data, Plant Simulation establishes a connection across
which the data will be exchanged. The TCP protocol ensures that the data packages arrive at the destination.
When you select UDP, Plant Simulation can exchange data without a connection having to be established. This
creates less overhead, but does not guarantee that the data actually does arrive at the destination.
• Insert the Variables for recording the sent message and the received message.
We named our Variables MessageReceived and MessageSent and selected the following settings:
• Program the method with the message which you would like to send.
We entered the following source code to create a random number between 0 and 100, write this value to the
Variable, which we named MessageSent, and send the value. We named our method sendMessages.
The source code in SimTalk 2.0 notation looks like this:
var str: string
‐‐ generates a random number between 0 and 100
str := to_str(round(z_uniform(1,0,100),1))
‐‐ writes the value of the random number to the variable ’MessageSent’
MessageSent := str
‐‐ sends the message using channel 0
MyServerSocket.write(0,str)
The source code in SimTalk 1.0 notation looks like this:
is
str : string;
do
‐‐ generates a random number between 0 and 100
str := to_str(round(z_uniform(1,0,100),1));
‐‐ writes the value of the random number to the variable ’MessageSent’
MessageSent := str;
‐‐ sends the message using channel 0
MyServerSocket.write(0,str);
end;
• Program the callback method which the ServerSocket calls when it receives data. We named our callback method
MyCallbackMethod and entered the following source code.
The source code in SimTalk 2.0 notation looks like this:
param SocketChannelNo: integer, SocketMessage: string
‐‐ writes the value to the global variable ’MessageReceived’
if strLen(SocketMessage) = 1
MessageReceived := to_str(ascii(SocketMessage)) ‐‐ byte received
else
MessageReceived := to_str(SocketMessage) ‐‐ string received
end
‐‐ writes the message to the Plant Simulation Console
print "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐";
print self
print "Message: The number ", MessageReceived, " was received at ", sysdate
The source code in SimTalk 1.0 notation looks like this:
(SocketChannelNo : integer; SocketMessage : string)
is
do
‐‐ writes the value to the global variable ’MessageReceived’
if strLen(SocketMessage) = 1 then
MessageReceived := to_str(ascii(SocketMessage)); ‐‐ byte received
else
MessageReceived := to_str(SocketMessage); ‐‐ string received
end;
‐‐ writes the message to the Plant Simulation Console
print "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐";
print self;
print "Message: The number ", MessageReceived, " was received at ", sysdate;
end;
• The finished Frame ServerSocket looks like this:
• Insert the Variables for recording the sent message and the received message.
We named our Variables MessageReceived and MessageSent and selected the same settings as above.
• Program the method with the message which you would like to send.
We entered the following source code to create a random number between 0 and 100, write this value to the
Variable, which we named MessageSent, and send the value. We named our method sendMessages.
The source code in SimTalk 2.0 notation looks like this:
var str: string
‐‐ generates a random number between 0 and 100
str := to_str(round(z_uniform(1,0,100),1))
‐‐ writes the value of the random number to the variable ’MessageSent’
MessageSent := str
‐‐ sends the message using channel 0
MyClientSocket.write(0,str)
The source code in SimTalk 1.0 notation looks like this:
is
str : string;
do
‐‐ generates a random number between 0 and 100
str := to_str(round(z_uniform(1,0,100),1));
‐‐ writes the value of the random number to the variable ’MessageSent’
MessageSent := str;
‐‐ sends the message using channel 0
MyClientSocket.write(0,str);
end;
• Program the callback method which the ClientSocket calls when it receives data. We named our callback method
MyCallbackMethod and entered the following source code.
The source code in SimTalk 2.0 notation looks like this:
param SocketChannelNo: integer, SocketMessage: string
‐‐ writes the value to the global variable ’MessageReceived’
if strLen(SocketMessage) = 1
MessageReceived := to_str(ascii(SocketMessage)); ‐‐ byte received
else
MessageReceived := to_str(SocketMessage); ‐‐ string received
end
‐‐ writes the message to the Plant Simulation Console
print "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"
print self
print "Message: The number ", MessageReceived, " was received at ", sysdate;
The source code in SimTalk 1.0 notation looks like this:
(SocketChannelNo : integer; SocketMessage : string)
is
do
‐‐ writes the value to the global variable ’MessageReceived’
if strLen(SocketMessage) = 1 then
MessageReceived := to_str(ascii(SocketMessage)); ‐‐ byte received
else
MessageReceived := to_str(SocketMessage); ‐‐ string received
end;
‐‐ writes the message to the Plant Simulation Console
print "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐";
print self;
print "Message: The number ", MessageReceived, " was received at ", sysdate;
end;
• The finished Frame ClientSocket looks like this:
• To transmit data, click the method sendMessages in the Frame ServerSocket with the right mouse button and select
Run on the context menu. Watch what the variables show. The variable MessageSent in the Frame ServerSocket
shows that the method calculated the number 1.8 and sent it to the variable MessageReceived in the Frame Client-
Socket, which naturally also shows the number 1.8. Also check what the Console shows.
• Then, click the method sendMessages in the Frame ClientSocket with the right mouse button and select Run on the
context menu. Watch what the variables show. MessageSent in the Frame ClientSocket shows that the method cal-
culated the number 72.878 and sent it to the variable MessageReceived in the Frame ServerSocket, which naturally also
shows the number 72.878. Also check what the Console shows.
Each Dialog object manages a single dialog window. If you need more than one user-defined dialog window in your
simulation model, insert as many Dialog objects as you need Dialogs.
You will:
The dialog window of the object Dialog uses the standard Siemens PLM theme.
Button
Group Box
Check Box
Radio Button
List Box
Image
List View
Tab Control
Tab Page
Menu/menu command
Note: Plant Simulation shows the dialog with the settings you select in Control Panel > Display under Display Prop-
erties > Appearance > Font size as well as with the Font and the Size you can select, when you click Advanced.
When you change these settings, the dialog scales text, while the images always retain their size in pixels. For
this reason it can happen that text overlaps the image. We recommend to test your dialogs with different
display settings to make sure that everything works as you expect it.
Label No label
• To insert a dialog item, right-click in the tab Elements and select the respective dialog item on the context menu.
• To show the dialog you are creating with the dialog items you already created, click Show Dialog.
• To modify an existing dialog item, right-click it and select Open on the context menu. This opens the dialog of
the Dialog Item where you can change it.
• To delete a dialog item, right-click it and select Delete on the context menu.
• To change the position of a dialog item in the dialog you are creating, first click Show Dialog and then click Edit
Dialog. Select the dialog item you want to move and drag the mouse to a new location. This way you can,
for example, roughly re-position an existing dialog item and then enter the exact coordinates to place it exactly
where you want it to be.
Note: The Dialog applies the changed coordinates immediately. Once you have moved an item, you cannot undo
the move action. To restore the previous settings, you have to re-enter them into the respective dialog.
• To show the standard buttons in the dialog you are creating, select the check box.
To hide these buttons, clear the check box.
If you do not show this button combination, you have to define your own buttons to provide the user with a
way to apply or to discard settings he chose!
• To open the dialog window you are creating modal, select Open modal. Then the user cannot open any other
Plant Simulation windows until he has completed interacting with the user-defined dialog and closed it.
To allow the user to open other dialog windows, in addition to the user-defined dialog you are creating, clear the
check box.
• To set the position at which the Dialog opens on your computer’s screen, click the tab Position and enter the X-
position and the Y-position in pixels into the text boxes. The default setting ‐1 for both X-position and for Y-
position centers the Dialog on screen. The zero point is located in the left top corner of the screen.
• So that the dialog opens the Chart or the Report, when the user selects Show > Chart or Show > Report, you have
to program it to do so. For this you have to enter the Callback argument, which will be passed to the callback
method. In our examples we entered CallbackChart and CallbackReport.
• Then, enter the code for actually opening the Chart or the Report into the callback method. As the callback method is
a user-defined attribute of data type method, click the tab User-defined Attributes.
Double-click callback and click Open in the dialog User-defined Attributes. To be able to enter commands into
the Method, click Inherit Source Code on the Edit ribbon tab of the method so that it is not selected .
The source code in SimTalk 2.0 notation looks like this:
param action: string
switch action
case "Open"
‐‐ TODO: add code for the "Open" action here
‐‐ for example ?.setCaption("TextBox", "Test")
‐‐ for example ?.setCheckBox("CheckBox", true)
case "Apply"
‐‐ TODO: add code for the "Apply" action here
‐‐ for example print ?.getValue("TextBox")
‐‐ for example print ?.GetCheckBox("CheckBox")
case "Close"
‐‐ TODO: add code for the "Close" action here
end
Double-click callback and click Open in the dialog User-defined Attributes.
To open the object MyChart, we entered:
case "CallbackChart"
MyChart.active := true
To open the object MyReport, we entered:
case "CallbackReport"
MyReport.show
• To change the order of the menu commands on a menu, select a menu command on the tab Elements, hold down
the Shift key and press the Up arrow to move this menu command up or press the Down arrow to move this menu
command down.
• To add a submenu to the selected menu command, right click that menu command and select New Menu/New
Menu Command again. Repeat the steps described above. A submenu looks like this.
• Enter the Callback argument, which will be passed to the callback method.
• Select what kind of data the user can enter from the drop-down list Data type.
Selection The user can enter
Any Character any character, which includes special characters, lower and upper case
letters and numbers.
Alphanumeric Characters a blank space, lower and upper case letters, and numbers.
Letters lower and upper case letters.
Decimal Numbers 0123456789
Signed Decimal Numbers decimal numbers with a negative or a positive sign:
-0123456789 or +0123456789, for example.
Hexadecimal Numbers ADbf09, for example.
Octal Numbers 01234567, but not 18 for example.
Binary Numbers 0 or 1
Floating Point Numbers 12.3E-43, for example.
• Enter the X-coordinate and the Y-coordinate of the text box in the Dialog.
• Enter the width of the text box in the average width of characters of your system font. The default value of 0 sets
the width to the values defined by us.
• Select if you want to Enable the text box or not. The user can only enter text, when the text box is enabled.
• To show text that the user enters into the text box with superscripted lower case x-es , instead of as clear
text , select Password.
• To insert the dialog item into your dialog, click OK.
• To change the order of the items within a group, select an item within the group on the tab Elements, hold down
the Shift key and press the Up arrow to move this item up or press the Down arrow to move this item down.
If you want to model like this, do not place the radio buttons loosely onto the dialog, but group them within
group boxes.
• To modify an existing dialog item, right-click it and select Open on the context menu. This opens the dialog of
the Dialog Item where you can change it.
• To delete a dialog item, right-click it and select Delete on the context menu.
• To show the dialog you are creating, click Show Dialog.
• To change the position of a dialog item in the dialog you are creating, first click Show Dialog and then click Edit
Dialog. Select the dialog item you want to move and drag the mouse to a new location. This way you can,
for example, roughly re-position an existing dialog item and then enter the exact coordinates to place it exactly
where you want it to be.
Note: The Dialog applies the changed coordinates immediately. Once you have moved an item, you cannot undo
the move action. To restore the previous settings, you have to re-enter them into the respective dialog.
• To show the standard buttons in the dialog you are creating, select the check box.
To hide these buttons, clear the check box.
If you do not show this button combination, you have to define your own buttons to provide the user with a
way to apply or to discard settings he chose.
• To open the dialog window you are creating modal, select Open modal. Then the user cannot open any other
Plant Simulation windows until he has completed interacting with the user-defined dialog and closed it.
To allow the user to open other dialog windows, in addition to the user-defined dialog you are creating, clear the
check box.
• To set the position at which the Dialog opens on your computer’s screen, click the tab Position and enter the X-
position and the Y-position in pixels into the text boxes. The default setting ‐1 for both X-position and for Y-
position centers the Dialog on screen. The zero point is located in the left top corner of the screen.
• To add one tab at the time to the tab control, click it with the right mouse button on the tab Elements and select
on the context menu.
• To change the order of the tabs in the dialog, select a tab on the tab Elements, hold down the Shift key and
press the Up arrow to move this tab to the left or press the Down arrow to move this tab to the right. The dialog
shows the first tab in the structure as the leftmost tab.
• To change the order of the tabs in the dialog, select a tab on the tab Elements, hold down the Shift key and press
the Up arrow or the Down arrow to move this tab to the left or to the right. The dialog shows the first tab in the
structure as the leftmost tab.
• Enter the width and the height of the list box in the Dialog. If you do not enter values, the Dialog sets the width
and height to the values defined by us. When you enter a value for the height, it adds a vertical scrollbar to the
list, when the list contains more items than the height.
• Click Items and enter the items the list box displays in the dialog Items.
• To add an item to the list field, enter its name into the text box and click Insert or press the Enter key.
• Repeat this for all the items you want to add.
• To delete an item from the list, select it in the list field and click Delete.
• To move an item up one position in the list, select it in the list field and click Move Up.
• To change the name of an item in the list, select it in the list field, type another name into the text box, and
click Rename.
• To apply the items you entered and to close the dialog, click OK.
• To discard what you have done so far, click Cancel.
• Enter the name of a table or click the button and select a table in the dialog Select Object.
• Activate the column index in the TableFile and enter the column headings the list view shows into the header
cells.
• Enter the items the list view shows into the cells of the columns.
• Enter the X-coordinate and the Y-coordinate of the list view in the Dialog.
• Enter the width and the height of the list view in the Dialog.
• Select if you want to Enable the list view or not.
• To insert the dialog item into your dialog, click OK.
Add a Button
When the user clicks a button, it calls the Callback method with the parameter you entered into the text box Callback
argument. It in turn executes the actions you programmed. To add it to your dialog:
• Right-click in the tab Elements and select New Edit Text Box.
• Enter the Name of the button. A Method object can call this dialog item using the Name you entered.
• Enter the Caption, which the button displays. A caption is especially handy if you develop application object li-
braries in several languages and want the user to be able to switch languages. In addition you can enter special
characters and blanks.
• Enter the X-coordinate and the Y-coordinate of the button in the Dialog.
• Enter the width of the button in the Dialog. The default value of 0 automatically sets the width of the button to
the width of the OK button.
• Select if you want to Enable the button or not .
• To insert the dialog item into your dialog, click OK.
Add an Image
An image is a picture, i.e., an icon you defined for the object Dialog. You can enter a number, or a name, such as
Icon1. To add it to your dialog:
• Right-click in the tab Elements and select New Image.
• Enter the Name of the image. A Method object can call this dialog item using the Name you entered.
• Enter the X-coordinate and the Y-coordinate of the image in the Dialog.
Note:
• Enter the width and the height of the image in the Dialog.
• Enter an Image ID, i.e., the number of the icon, or an image name. This image is an icon of the Dialog.
• To insert the dialog item into your dialog, click OK.
Note: Plant Simulation shows the dialog with the settings you select under Display Properties > Appearance > Font
size as well as with the Font and the Size you can select, when you click Advanced. When you change these
settings, the dialog scales text, while the images always retain their size in pixels. For this reason it can hap-
pen that text overlaps the image. We recommend to test your dialogs with different display settings to make
sure that everything works as you expect it.
• On the tab User-defined Attributes, double-click callback and then click Open in the dialog User-defined Attri-
butes.
• If your modeling needs warrant it, you can also use a Method, which you inserted into a Frame or into a folder in
the Class Library. This will be the case, when several of your dialogs, which do not inherit items, can use the same
callback method and, for this reason, have to store the method at a single location.
Enter the Callback argument for each of the dialog items into this method and type in the statements (source code)
you want it execute. This parameter is the same parameter that you entered into the dialogs of the individual dialog
items. Be aware that the parameters are case-sensitive! The methods and the attributes of the Dialog enable you to pro-
gram callback actions with as much complexity as you need.
The callback method executes the callback parameter when the user:
• Closes a drop-down list box.
• Selects and double-clicks an item in a list box.
• Changes the contents of a text box and selects another dialog item afterwards, clicks in another text box, or clicks
OK, Apply or Cancel.
• Clicks a button.
• Selects or clears a check box.
• Selects a radio button.
• Selects a row in a list view and double-clicks it.
• Selects a tab in a tab control.
• Selects a menu or a menu command.
Compare this example:
• The Dialog executes the Open section of the callback method when the user opens the dialog. It initializes the con-
tents of the dialog window or sets the dialog items to values of your choice.
• The Dialog executes the Apply section of the callback method, when the user clicks OK or Apply in the Dialog. The
statements you enter may evaluate new or changed values.
Note: When the user clicks OK, the Dialog executes the callback method twice. The first time it calls the Apply sec-
tion. The second time it calls the Close section. When the user clicks Apply, the Dialog only executes the
Apply section of the callback method.
• The Dialog executes the Close section of the callback method, when the user clicks Cancel in the Dialog or when he
closes it with Close on the title bar.
For our sample dialog we started defining the settings shown below. When the user opens the dialog, Plant Simulation
sets the variant of the car to the number of the user-defined attribute VariantNo. It selects the check box for the
sun roof and it prompts the user to enter vanity text he wants added to his paint job. Naturally, you can preallocate
as many values as you want.
The source code in SimTalk 2.0 notation looks like this:
param action: string
switch action
case "Open"
@.setIndex("VariantType", @.VariantNo)
@.setCheckbox("SunRoof", true)
@.setValue("Vanity text", "Enter your text")
case "Apply"
@.VariantNo := @.getIndex("VariantType")
case "Close"
‐‐ no action is required
case "CallbackChart"
MyChart.active := true
case "CallbackReport"
MyReport.show
end
The source code in SimTalk 1.0 notation looks like this:
(action : string)
is
do
inspect action
when "Open" then
@.setIndex("VariantType", @.VariantNo);
@.setCheckbox("SunRoof", true);
@.setValue("Vanity text", "Enter your text");
when "Apply" then
@.VariantNo := @.getIndex("VariantType");
when "Close" then ;
‐‐ no action is required
when "CallbackChart" then MyChart.active := true;
when "CallbackReport" then MyReport.show;
end;
end;
• To view or to edit the attributes of all objects of one class, click the tab Query and enter internalclassname
as the Attribute and the actual internal class name of the object as the Value of the object there.
Note: For the built-in objects, the method internalClassName returns the unique name that describes the type of
the object.
• Select a single, or several contiguous attributes (Shift+click), and click this to add these attributes to the at-
tributes to be shown in the right hand pane.
• Click OK to add these attributes to the list, which the AttributeExplorer displays, on the tab Attributes.
If the predefined name of an attribute is not meaningful enough for your purposes, you can enter a descriptive term
for that attribute that suits your modeling situation into the corresponding cell in the column Alias.
If you want an attribute to be read only, click into the cell Read. Then, you can just view, but not edit that value in
the list that the button Show Explorer opens.
Plant Simulation displays the background of the cells in different colors to show if the attribute is observable or not.
To manipulate the contents of the list, use the commands on the Context Menu of Embedded Lists.
Select what you want to do with the attributes you added to the AttributeExplorer:
• To allow you to edit the values of the attributes of any one of the stations you entered, select Edit . Then,
click Show Explorer, click in any of the cells that are not grayed out, and enter another value. Plant Simulation writes
the values you changed back to the dialogs of the objects, when you click Apply/OK.
• To display the values of the observable attributes of any of the stations you entered, select Watch . Then,
click Show Explorer. You will notice that you can only view the values, but not edit them. Plant Simulation displays
the background of the cells in different colors to show if the attribute is observable or not.
• To just show the values of the attributes of the stations you entered, select Read only . Then, click Show
Explorer. You will notice that you can only view the values, but not edit them.
• Select how you want to show the objects in the Explorer window in the leftmost column:
• With their entire Path:
Note: We dragged the Source from the Frame window over tab Data in the open dialog of the AttributeExplorer
and dropped it there. This entered its absolute path. We dragged the Drain from the Frame window over
the icon of the AttributeExplorer and dropped it there. This entered its name only.
• With their Name only:
• Select how you want to show the attributes in the Explorer window:
• With their Name.
• With their Alias. Note that you enter the alias on the tab Attributes.
• If you want to, you can enter an explanation for the objects and values you defined into the text box. To create
a line break, press Shift+Enter.
To display the text you entered above the list field in the Explorer window, select Show comment and click Apply.
If you also want to change the attributes, enter their names on the tab Attributes. Then, click Show Explorer. Next
to the objects the Explorer window now also shows the attribute, which you can also change, when you selected Edit
on the tab Data.
You can:
• Select the number of opening Parentheses of the query.
• Enter the name of any of the attributes of the object, which the dialog Show Attributes and Methods displays.
• Click in the cell once with the left mouse button and select a Condition from the drop-down list. The value of the
attribute can be:
• < (less than)
• <= (less than or equal to)
• > (greater than)
• >= (greater than or equal to)
• = (equal to), compares attributes of data type real, length, weight, speed, and time for the exact value
• == (equal to, case-insensitive) compares if strings are equal not considering lower and upper casing, or com-
pares if the values of attributes are about equal
• /= (not equal to)
• Expression, which is a regular expression, compare Show Structure. You might, for example, enter ^Inf, which
finds any word beginning with Inf.
• Exists, checks if the object has the designated attribute or not.
Then enter the value into the corresponding cell in the column Value.
• Enter the Value of the attribute which the AttributeExplorer is to find.
• Select the number of closing Parentheses of the query.
• Click in the cell once with the left mouse button and select a boolean Operator from the drop-down list. This
operator connects the boolean values of the active row with the next row. The boolean values result from eval-
uating the logical expression you defined in a row of the query table.
• and
• or
• Enter a Comment.
• Select the Frame in the dialog Select Object where you want to start finding the attributes of the objects.
To also include any Frames that are located within the Frame you selected, select the check box Include subframes.
Note: Select to show the objects with their path on the tab Data for this setting.
State groups are generated groups of state graphics that visualize all the states that are predefined for a simulation
object. You can create, delete, or replace the state group and the underlying state graphics on the Tab Graphics in
the dialog Edit 3D Properties.
State graphics correspond to the LEDs in Plant Simulation 2D. Every state graphic is a child of the state group
that visualizes the object state it names and has the same color as the corresponding LED in 2D. Plant Simulation
shows them whenever it displays the corresponding LED in 2D. Note that several state graphics can be displayed
at the same time.
Graphics are all visual/geometric elements and groups of geometric elements in a graphic group, a
state group or state graphic, which describe the entire shape of this group.
Create a Model in 3D
Tecnomatix Plant Simulation 2D and the 3D Viewer are fully integrated. Both store data pertinent to their part of the
model in the spp model file saved on disk, employing Microsoft’s structured storage technology.
To create a model in the 3D Viewer, you will basically proceed as follows:
• To open a new Plant Simulation model, click Create New Model on the Start Page and select to create a model
containing a 2D part and a 3D part or to create the model only in 3D.
• To show the built-in 3D material flow objects and their graphics, you can, for example, click the folder Materi-
alFlow in the Class Library with the right mouse button and select Open in 3D.
Using this technique, you can also show the contents of the other folders.
To rotate the scene, hold down the left and the right mouse buttons and drag the mouse or hold down Ctrl and
the right mouse button and drag the mouse. The rotate mouse pointer looks like this .
To pan the scene, hold down the right mouse button and drag the mouse. The pan mouse pointer looks like this
.
To move the camera forwards and backwards, roll the mouse wheel.
To zoom the scene in or out, roll the mouse wheel or hold down Shift and the right mouse button and drag the
mouse.
Note: If you have a three-button mouse, click the middle mouse button where the description calls for clicking
the mouse wheel.
If manipulating the scene with the mouse does not work, check the Mouse Properties for the Wheel in the
Mouse Control Panel under Start > Control Panel.
• To open a new 3D scene window, change to the Class Library. Then, click the corresponding folder with the right
mouse button and select Open in 3D.
• To insert an object into the 3D scene window:
• Make sure that Show Grid on the View ribbon tab is active, compare Show and Hide the Grid.
We recommend to show the grid before you insert an object into the scene window. This way you can place
the object at the exact location, where you want it to be.
When you insert an object without displaying the grid, you have little control over where the 3D Viewer places
the object. By default it uses the same coordinates that the source object had, an effect you might not want.
• Select the object you want to insert in the Toolbox or in its folder in the Class Library. Drag the mouse pointer
to the location of your choice and click the left mouse button once to insert it there.
• Drag the mouse to the destination object at which the connection will end, and click once with the left mouse
button to establish the connection.
The 3D Viewer shows the Connector it inserted as a line between the connected Interfaces of the source and des-
tination objects.
• To terminate connect mode before you click the destination object, click the right mouse button or press Esc.
To connect several objects one after the other, without interrupting the connecting process, hold down Ctrl.
• Attach the outgoing connection to the first object.
• Drag the mouse to the succeeding object.
• Click the left mouse button to attach the incoming Connector to the successor.
• You can also connect the objects in the 2D part of your model, which will simultaneously insert the connec-
tions into the 3D part, when you opened the 3D Viewer.
• To show or hide connections in the scene window, click on the View ribbon tab. By default the 3D Viewer
does not show Connectors, when you create a model in 2D, and then update it in 3D. To display them, click
on the View ribbon tab.
Connect the Source, the Line, the SingleProc and the Drain you inserted above.
• Next, insert an EventController, either from the Toolbox or from the Class Library.
• Finally, start the simulation:
• Control the simulation by clicking the buttons on the Home ribbon tab or
• Double-click the icon of the EventController and click its buttons.
Modeling Hierarchically
Using hierarchical modeling techniques you can add any level of detail to the areas and machines you insert into
your simulation model. Hierarchical modeling means that you create a machine, a production area, etc. in a Frame
using the built-in object classes or classes you yourself designed. You can then insert this Frame, Machine for exam-
ple, into another Frame in which you modeled a production area, and then insert the production area Frame into the
Frame that contains your entire factory.
To move the scene on the plane, hold down the right mouse button and drag the mouse.
To zoom the scene, roll the mouse wheel or hold down the Shift key and the right mouse button and drag the
mouse.
• To view the entire scene from top looking down, click . on the View ribbon tab.
• To fit the entire scene into the scene window and to show all objects in the scene if you moved part of the scene
out of view, click View All .
To save the current position and orientation of the camera with the model file, click Camera Marks on the View
ribbon tab in 3D.
• Enter a Name for the current camera setting into the dialog Mark Current Camera Settings.
• The 3D Viewer shows the path of the scene in the field Scene path.
• Click OK to set the name. This saves this setting together with the active root object of the scene in the model
file. Then, you can easily return to this saved view after you changed the scene or reopened the model.
To return to a view you saved later on, or to navigate to the different predefined folders:
• Click the down arrow on the Camera Marks button.
Select the camera mark, i.e., the view for which you defined it, on the list.
Or
Note: If you do not define a background color, the 3D Viewer uses the background color of the parent object of
the selected object.
• Click on the View ribbon tab to open the dialog Fly on Path.
• Select one of the camera paths to move your view point along that path.
You can also define camera paths of your own or edit any existing path in the dialog 3D Properties > Tab Camera
Animation to meet your needs.
Z-axis Y-axis
X-axis
origin
Y-axis X-axis
The Horizontal grid spacing shows the distance between two grid points on the x-axis using the Scaling Factor
you entered.
The Vertical grid spacing shows the distance between two grid points on the y-axis.
The default settings Frame grid spacing 20 x 20 pixels, Length units m (meters) and a Scaling factor of 0.05 result
in a horizontal and vertical grid spacing of 1 meter each.
When you change the scaling factor, the program shows the new horizontal and vertical grid spacing in the dialog.
The settings Frame grid spacing 20 x 20 pixels, Length unit m (meters) and a Scaling factor of 0.5 result in a hor-
izontal and vertical grid spacing of 10 meters each.
The 3D Viewer adjusts the dimensions and the borders of the grid to the position of the objects shown in the scene.
Note that the following constraints apply:
• The origin of the grid, i. e. the lines, which by default are red, are always part of the grid. In the figure above the
origin of the grid is designated by the red lines at the bottom and the right border.
• The 3D Viewer also considers graphics that are invisible when calculating the borders.
• The grid size always is a multiple of the smallest visible grid distance.
The 3D Viewer re-creates the grid after each change you make in the model when it redraws the scene.
So, when you insert and move an object towards the borders of the grid, it automatically extends in that direction.
The grid always expands or shrinks to show all objects in the scene.
• To change the color of the base plate, click the down arrow of the drop-down list Color and
select a different color in the color selector.
• To show this grid line in the grid in the scene, select Visible.
• Then, select if objects you insert snap to this grid line. Making objects snap to grid points allows you to precisely
place objects with the mouse.
• To edit an existing grid line, select it in the list and edit the interval between the grid lines, their color, what objects,
which you insert, snap to, and if this grid line is visible or not.
X-axis
• To position the grid on the planes defined by the axes, click Transform on the View ribbon tab and select
the respective check box in the dialog Grid Position and Orientation.
Note: The 3D Viewer does not save the settings you select in this dialog. They only apply as long as the dialog
is open.
To move the origin of the grid, click Transform on the View ribbon tab and click the spin buttons and
the buttons below Position in the dialog Grid Position and Orientation.
Note: The 3D Viewer does not save the settings you select in this dialog. They only apply as long as the dialog is
open.
• To move the position of the Origin of the grid on the x-axis to the right, click the up arrow of the spin button.
To move the Origin of the grid on the x-axis to the left, click the down arrow.
• To move the position of the Origin of the grid on the y-axis to the back, click the up arrow.
To move the Origin of the grid on the y-axis to the front, click the down arrow.
• To move the position of the Origin of the grid on the z-axis up, click the up arrow.
To move the Origin of the grid on the z-axis down, click the down arrow.
• To reset the values for the x-axis, the y-axis and the z-axis to their predefined default values of 0, 0, 0, click Scene
Origin.
• To set the values for the x-axis, the y-axis and the z-axis to the values of the position of a single object you se-
lected, click Object Origin.
Press Delete on the keyboard to delete the object from the scene.
Insert an Object
You can insert a material flow object and a mobile object into the 3D scene from the:
• Class Library
The Class Library is the repository for all objects you can insert into your Plant Simulation 2D model. It also con-
tains a number of objects which the 3D model does not use.
• Toolbox
This is handy, when you hid the Class Library from view, by clicking on the Window ribbon tab to preserve
space.
The Toolbox also contains a number of objects the 3D model does not use.
• You can also paste an object you copied to the clipboard.
To insert an object from the Toolbox:
• Make sure that Show Grid on the View ribbon tab is active, compare Show and Hide the Grid.
• If you want the object to snap to the closest intersection of two grid lines of where you click the mouse button,
• If need be, you can fine-tune the location of the object in the dialog 3D Properties that clicking on the Home
ribbon tab opens.
• To open the dialog of the Plant Simulation 2D object, click 2D in the dialog 3D Properties or double-click the ob-
ject in the 3D scene. Modify settings here.
• To open the 3D object, select Open on the context menu.
• To select a single object in the scene window, click it with the left mouse button.
• To select two or more objects in the scene window, hold down the Shift or Ctrl key and click the objects with the
left mouse button.
• To select a large number of objects in the scene window, drag a marquee around them:
• Without holding down the Shift or Ctrl key, the selection with the marquee cancels any existing selection.
• When you hold down the Shift or Ctrl key, the new selection will be added to the existing selection.
• To select all objects in the scene window, press Ctrl+A.
Note: Inserting an object into the 3D scene also inserts the corresponding object into the corresponding Plant Sim-
ulation 2D Frame!
Select Objects
When you click an object with the left mouse button in selection mode:
• You can select child graphic nodes of the object displayed in the view.
• You can select simulation objects which are directly located in the object displayed in the view.
• You can select animatable objects which are directly located in the object displayed in the view and animatable
objects which are located within those objects.
• When you hold down the Alt/AltGr key, you can also select simulation objects located within other simulation
objects.
• You can select MUs, which are loaded onto the selected object.
• You can select markers of anchor points of animation or extrusion paths.
A number of copies of 4 and an offset of 2.0 meters on the z-axis pastes 4 copies of all selected SingleProcs on top
of the original SingleProc that you pasted.
Click Paste. Move the pasted copies to where you need them.
You can also use the dialog Multiple Paste to insert more than one objects of the same class:
• Click Paste > Multiple Paste on the Home ribbon tab.
• Enter the number of objects you would like to insert into the combo box Count.
• Enter the distance of the objects from each other.
• Select the object class you want to insert in the Toolbox, drag it into the 3D scene, and drop it there. This inserts
the number of instances you entered next to each other, provided the dialog is open.
Connect Objects
To connect material flow objects, which you inserted into your model, with the object Connector :
• Click on the View ribbon tab to display the grid. Click on the View ribbon tab to show connectors in the
window of the 3D scene.
• Click the Connector in the Toolbox on the tab MaterialFlow.
• Click the source object, where the connection will start, once with the left mouse button. Plant Simulation attaches
a black line symbolizing the Connector to the mouse pointer.
• Drag the mouse to the destination object at which the connection will end, and click once with the left mouse
button to establish the connection.
• To terminate connect mode before you click the destination object, click the right mouse button or press Esc.
To connect several objects one after the other, without interrupting the connecting process, hold down Ctrl.
• Attach the outgoing connection to the first object.
• Drag the mouse to the succeeding object.
• Click the left mouse button to attach the incoming Connector to the successor.
• You can also connect the objects in the 2D part of your model, which will simultaneously insert the connections
into the 3D part, when you opened the 3D Viewer.
To show or hide connections in the scene window, click on the View ribbon tab.
Note: By default the 3D Viewer does not show Connectors, when you create a model in 2D and then update it in 3D.
• Hold down Ctrl and press the left arrow to rotate the object to the left by 1°.
Hold down Shift and Ctrl and press the left arrow to rotate the object to the left by 15°.
• Hold down Ctrl and press the right arrow to rotate the object to the right by 1°.
Hold down Shift and Ctrl and press the right arrow to rotate the object to the right by 15°.
• Click on the Home ribbon tab and click the tab Transformation.
• Edit the values for the position, the rotation and the scale and click Preview Changes to preview your changes.
• Click Apply to apply your changes once you’re satisfied with the results.
• To preview your changes of the settings in the scene window containing the object without having to click Apply,
click Preview Changes.
• Click on the Home ribbon tab and click the tab Transformation.
• To move the object to the right on the x-axis, click the up arrow of the spin button.
To move the object to the left on the x-axis, click the down arrow.
• To move the object to the back on the y-axis, click the up arrow.
To move the object to the front on the y-axis, click the down arrow.
• To move the object up on the z-axis, click the up arrow.
To move the object down on the z-axis, click the down arrow.
• To preview your changes of the settings in the scene window containing the object without having to click Apply,
click Preview Changes.
• Click Apply to apply your changes once you’re satisfied with the results.
Note: Transformations of an object, such as moving, rotating or scaling it, in one 3D window are not immedi-
ately updated in all other 3D windows, but only after you deselect the changed object in its 3D window.
• Click Group Graphics on the Edit ribbon tab of the 3D Viewer or press Ctrl+G. The 3D Viewer creates a single
new group.
• Then, move, rotate, scale, or zoom the group as you do a single graphic.
• Naturally you can also move, rotate, scale, or zoom the group on the Tab Transformation in the dialog Edit 3D
Properties.
Note: When you change any graphic or the graphic structure of a class object, this also changes all inherited ob-
jects. When you change the graphics of a derived object, this only changes the object in which you make the
changes because the 3D Viewer turns off graphic inheritance if it has not been turned off already. As deac-
tivating graphic inheritance causes graphics to be duplicated, we strongly advise you to make changes in the
class object as far as possible.
To restore the previous structure of the graphics:
• Select the newly created group.
• Click Ungroup Group of Graphics on the Edit ribbon tab of the 3D Viewer or press Ctrl+U to replace this group
with the contained graphics again.
Rotate an Object
The 3D Viewer provides several ways of rotating an object in the scene window.
You can:
• Rotate an Object Manually
• Rotate an Object Precisely
• Define the settings how the 3D Viewer rotates the object in the text boxes below Axis.
• To rotate the object around an arbitrary axis, defined by the x-component, y-component and z-component of
this axis:
Enter a value for the x-component of the rotation axis.
Enter a value for the y-component of the rotation axis.
Enter a value for the z-component of the rotation axis.
• Then, click Apply to apply these settings, so that they are active when you rotate the object.
Note: Transformations of an object, such as moving, rotating or scaling it, in one 3D window are not immedi-
ately updated in all other 3D windows, but only after you deselect the changed object in its 3D window.
• To apply your changes if your satisfied with the results of your changes, click Apply.
Note: Transformations of an object, such as moving, rotating or scaling it, in one 3D window are not immedi-
ately updated in all other 3D windows, but only after you deselect the changed object in its 3D window.
• Select Uniform, so that the 3D Viewer scales the object with the same factor for all three dimensions and does not
distort it while scaling it. This automatically enters the value you enter into one text box into the remaining two
text boxes. This way you do not have to manually enter the same value into each text box again and again.
• Enter a value into the text boxes for the x-axis, the y-axis and the z-axis to scale the object on the respective axis
with that factor. Entering 0.5, for example, halves the size of the object on the axis for which you entered it,
entering 2 doubles its size on that axis.
Note: You can only enter non-zero values.
• When you clear Uniform, the 3D Viewer scales the object with the factors you enter for the different dimensions.
When you enter different values, it does distort the object, for example prolongates or compresses it.
• Enter a value into the text boxes for the x-axis, the y-axis and the z-axis to scale the object with that factor on
the respective axis.
• To preview your changes of the settings in the scene window without having to click Apply, click Preview Chang-
es.
Note: Transformations of an object, such as moving, rotating or scaling it, in one 3D window are not immedi-
ately updated in all other 3D windows, but only after you deselect the changed object in its 3D window.
Note: When you change any graphic or the graphic structure of a class object, this also changes all inherited ob-
jects. When you change the graphics of a derived object, this only changes the object in which you make the
changes because the 3D Viewer turns off graphic inheritance if it has not been turned off already. As deac-
tivating graphic inheritance causes graphics to be duplicated, we strongly advise you to make changes in the
class object as far as possible.
To define properties of the material of a graphic:
• Select the graphic and click 3D Properties on the Home ribbon tab.
• Click the Tab Material and edit the material of the graphic.
The emissive color is the color emitted by the object. A lamp shade might have a base color of yellow. When you
turn the lamp on, though, the emissive color might be white.
• To apply a Transparency, drag the slider or enter a value between 0.0, for opaque, and 1.0, for completely trans-
parent, into the text box.
The transparency sets how opaque or clear the graphic is. Water, for example, might be more clear than opaque.
• To apply a Shininess, drag the slider or enter a value between 0.0, for a very dull surface, and 1.0, for a highly
polished surface, into the text box.
The shininess sets how sharp light is reflected by the object. A billiard ball, for example, has a large shininess,
making for small and sharp highlights.
• To apply the material you selected to the graphic, click Apply.
You also can:
• Select the graphic, and click Exchange Graphics on the Edit ribbon tab of the 3D Viewer or select
the command on the context menu.
This command replaces all graphic and animation data of the selected object with data from the selected .s3d-
file. This means that all graphic groups, the state group, and the animation attributes will be removed from the
selected object and graphics and animation attributes of the saved object will be added instead.
The 3D Viewer opens the dialog Exchange Graphics. By default it opens to the folder where you installed Plant
Simulation, namely C:\Program Files\Siemens\Tecnomatix Plant Simulation XX\3D\s3D-graphics.
Select the .s3D graphic that you want to use.
Note: Make sure that Preview is selected, so that you can see what the graphic looks like.
To exchange graphics, you can also drag an .s3d-file from a File Explorer window and drop it onto a 3D Viewer
window.
• Select the graphic, and click Import Graphics on the Edit ribbon tab of the 3D Viewer.
The 3D Viewer opens the dialog Open. By default it opens to the folder where you installed Plant Simulation, name-
ly C:\Program Files\Siemens\Tecnomatix Plant Simulation XX\3D\jt-graphics.
Select the .jt graphic that you want to use.
Instead, you can also import a graphic which you created in the 3D Viewer with the command Export Scene >
Export Graphics. Or you can import a graphic file that you exported from another 3D modeling program in a
format that Plant Simulation can import.
After the 3D Viewer inserted the imported graphics, it will add them to the selected graphic group while keeping
any already existing graphics. Delete any graphics that you do not need any longer.
To import graphics you can also drag a file of a supported graphic format from a File Explorer window and drop
it onto a 3D Viewer window.
• Create a graphic in the 3D Viewer. Select the shape that you want to create on the
Edit ribbon tab (Insert Shape) of the 3D Viewer.
After the 3D Viewer inserted the shape it created, it will add them to the selected graphic group while keeping
any already existing graphics. Delete any graphics that you do not need any longer.
You can also create a complex graphic by inserting multiple shapes or imported graphics and position, rotate,
scale, or color them.
Or you can use the icons of the Plant Simulation 2D objects and map them to a Textured Plate in 3D.
Note: After modifying graphics by importing, creating, or transforming them, you might have to adjust the an-
imation paths or the animation points of the 3D object to the new overall graphic. You do not have to
do this when you used the command Exchange Graphics.
Note: When you change any graphic or the graphic structure of a class object, this also changes all inherited ob-
jects. When you change the graphics of a derived object, this only changes the object in which you make the
changes because the 3D Viewer turns off graphic inheritance if it has not been turned off already. As deac-
tivating graphic inheritance causes graphics to be duplicated, we strongly advise you to make changes in the
class object as far as possible.
• Drag the mouse to the upper left corner of the Frame to the coordinates 0, 0 and click the left mouse button to
place and insert the graphic. The model should look like this now:
You can now continue working with your model, by inserting objects and components and by manipulating them
in a number of ways.
Instead of using a JT-layout file you can also use a point cloud as the background of your simulation model.
• Create several positions on the object by clicking 3D Properties > MU Animations > Create Locations on the Home
ribbon tab.
Plant Simulation 2D places the MUs onto the animation points you defined in the icon of the class of the object.
To view and to set animation points in the icon of a built-in object, click the Animation ribbon tab of the Icon Editor,
compare Set and Link Animation Points and Animation Lines.
Z-axis
X-axis
Y-axis
X-axis
Y-axis
Note: The number of locations may not be identical with the Capacity of the corresponding object you enter under
Attributes > X-dimension and Y-dimension in Plant Simulation. The number of locations defines the maximum
capacity of your three-dimensional object. Every time you edit the capacity in Plant Simulation to values less
than or equal to the corresponding number of locations in the 3D Viewer, the 3D Viewer computes these
locations on the object. A Store, for example, with its locations set to 3 x 3, places every incoming Entity it
receives onto one of its nine (3x3) locations, even though you can have set its capacity in Plant Simulation to
2 x 2, or 3 x 1, or some other number. When the capacity you set in Plant Simulation is larger than the number
of locations in the 3D Viewer, the 3D Viewer distributes all mobile objects evenly on the loading space or
within the bounding box.
• By default, the loading space is the bounding box of the selected 3D Viewer object.
The bounding box is the smallest possible cuboid that encloses the entire 3D object graphic.
• If you do not want to distribute the storage places within the Bounding Box, but within another 3D volume, enter
an appropriate value into the text boxes Length and Height. This way, you might, for example, limit the loading
space of the station.
In addition you can show or hide all Connectors and Interfaces in the active 3D window with the button Show Connec-
tions.
The following sample model demonstrates the different ways of representing objects in 3D:
In addition to a number of material flow objects, our model MyPlant contains the Frame named WashingMachine and
two instances of the Frame named WorkerCell.
The 3D window of the Frame MyPlant shows the WashingMachine as a green box. The green box is the outside rep-
resentation of the WashingMachine.
When you open the WashingMachine in a 3D window of its own, it shows its contents, namely a SingleProc displaying
its states, an Entity, and Interfaces and Connectors. This is the inside representation of the WashingMachine. You can
right-click into the background of the 3D window and select Show Structure to show its structure.
When you click Show External Graphics, the 3D Viewer also shows external graphic groups in the internal represen-
tation, allowing you to edit them. In our WashingMachine the graphic group named Default is the only graphic group
that is not internal but external. You can right-click into the background of the 3D window and select Show Graphic
Structure to show its graphic structure.
In the outside representation external graphics are always visible, provided you selected the check box Visible .
The contents of an object is, on the other hand, only visible, when you activated Show content for this
object, which is not the case for the WashingMachine.
As we selected Show content for the WorkerCell, its contents is visible in its outside representation.
Comparing the outside representation of the WorkerCell in the window MyPlant with the inside representation in its
own 3D window, namely with the window WorkerCell, you’ll notice that the outside representation shows the safety
fence and the floor plate, while the inside representation does not show them. This is because these graphics belong
to the external graphic group named Default and that Show External Graphics is deactivated by default in the window
of the WorkerCell.
The work tables and the cabinets of the internal graphic group named Deco are, on the other hand, also visible in
the outside representation because by definition Deco belongs to the contents of the WorkerCell.
The objects Broker and WorkerPool in the WorkerCell however are visible in the inside representation, but not in the
outside representation. This is because the check box is activated by default for
these objects.
The following figure provides an overview over the outside and the inside representation:
Import a 3D Graphic
To create your own 3D objects, you can import graphics into your 3D simulation model:
• To import JT Files:
• To import a graphic that contains animation structures which you, or a colleague, defined:
Click Import Graphics on the Edit ribbon tab. Select the respective file type, navigate to the folder that contains
the graphic, select it and click Open.
These graphic files can either be files that are part of your program package or files you yourself created with
the command Export Graphics.
• To replace the graphic of an object with another graphic that contains animation structures:
Click the object with the right mouse button and select Exchange Graphic. Select 3D Files, navigate to the folder
that contains the graphic, select it and click Open.
• To import VRML Files.
Click Import Graphics on the Edit ribbon tab. Select , navigate to the folder that contains the
graphic, select it, and click Open.
or
Activating Graphic Inheritance restores the graphic to the graphic of the origin of the object, while deactivating In-
heritance retains the graphic you modified in the instance.
The 3D shapes are graphics. You can, for example, replace the standard graphic of a station with one of the shapes
you created.
• Click the shape you want to create. In our example we create a cuboid . In the dialog Create Cuboid:
• Select the Graphic group to which you want to add the cuboid.
• Enter the Width, the Depth, and the Height of the cuboid.
• To create the cuboid, click Create. The 3D Viewer attaches the cuboid to the mouse pointer. Drag the mouse to
the position at which you would like to insert it and click the left mouse button. To cancel inserting, you can click
the right mouse button or press the Esc key.
• To change the position, the rotation, or the scale of the shape after you inserted it, select it and click 3D Properties
> Tab Transformation on the Home ribbon tab. Then change the settings according to you needs.
• To set if the cube is an Obstacle for the Worker, select it and then click Edit 3D Properties on the Home ribbon
tab. Then, click the Tab Graphic Settings.
• To assign a color and a material, select the cuboid and click 3D Properties on the Home ribbon tab. Then, click
the Tab Material.
• To delete the shape from the scene window, click it with the right mouse button and click on the mini toolbar
or select Show Graphic Structure.
If the graphic group to which you added the shape, Deco in our case, is not expanded already, expand it. Click
the node of the shape you want to delete, Cube in our case, with the right mouse button. Select Delete.
Note: When you start to insert a newly created shape into an external graphic group, the 3D Viewer automatically
activates Show External Graphics until you click the destination position so that you can align the new
graphic which is attached to the mouse pointer with all other graphics of the destination graphic group.
For our example we use the rectangular image with the logo. We selected these settings:
• Click Create. The 3D Viewer attaches the textured plate to the mouse pointer. Drag the mouse to the position at
which you would like to insert it and click the left mouse button. To cancel inserting, you can click the right
mouse button or press the Esc key.
The inserted plate looks like this with the settings orientation > floor and fit texture to plate.
Front wall
Side wall
• When you select Show on both sides, the 3D Viewer shows the image on the top/front and on the bottom/back
of the inserted plate.
• When you select fit image size, and enter 2 tiles for the x-dimension and the y-dimension, the 3D Viewer inserts
two tiles of the image in each dimension.
• To move the textured plate to another location of your choice, click it with the left mouse button and drag the
mouse.
• To change the size of the textured plate, select it and then click Edit 3D Properties on the Home ribbon tab. Then,
click the Tab Transformation. Change the size under Scale.
• To set if the textured plate is an Obstacle for the Worker, select it and then click Edit 3D Properties on the Home
ribbon tab. Then, click the Tab Graphic Settings.
• To assign a material to the textured plate, select it and then click Edit 3D Properties > Tab Material on the Home
ribbon tab.
Note: When you start to insert a newly created shape into an external graphic group, the 3D Viewer automatically
activates Show External Graphics until you click the destination position so that you can align the new
graphic at the mouse pointer with all other graphics of the destination graphic group.
• Click on the Edit ribbon tab of the 3D Viewer to display graphics and select the graphic of the object.
• Cut, copy, paste, group, ungroup, or move the existing graphic.
Or
• Import or create a new graphic.
When you import graphics you downloaded from the Internet or created in a 3D modeling program, you will
most likely have to scale these graphics.
You can accurately scale the entire object, i.e., the object and the graphic, in the dialog Home > 3D Properties
> Tab Transformation.
Note: When you scale the graphic, this does not apply.
The permanent visibility of the graphic groups is an object property which can be inherited as well as the entire
graphic structure. You can create, delete, or replace graphic groups on the Tab Graphics in the dialog Edit 3D Prop-
erties and in the dialog Show 3D Graphic Structure.
The state group is named States and consists of a set of state graphics which correspond to the LEDs in Plant Sim-
ulation 2D. You can create, replace, or delete the state group on the Tab Graphics in the dialog Edit 3D Properties by
selecting the orientation of the states for the state group: Horizontal, Vertical, or None. When you change this setting,
the 3D Viewer always deletes all state graphics and creates new state graphics afterwards, which are arranged accord-
ing to your selection.
You can delete and edit each graphic of a graphic group, a state group, or a state graphic individually. To modify a
graphic you can either change it with the mouse in a 3D window or you can specify the new position, the rotation,
the scaling, or the material in the dialog Edit 3D Properties of the selected graphic.
Note: When you change any graphic or the graphic structure of a class object, this also changes all inherited ob-
jects. When you change the graphics of a derived object, this only changes the object in which you make the
changes because the 3D Viewer turns off graphic inheritance if it has not been turned off already. As deac-
tivating graphic inheritance causes graphics to be duplicated, we strongly advise you to make changes in the
class object as far as possible.
In this sample model we demonstrate how to model a greatly simplified airplane and how to display the assembly
process by successively showing selected graphic groups representing a finished component.
We will demonstrate how to:
• Create a New MU Class Representing the Airplane
• Create the Graphics of the Components in 3D
• Show the Progress of the Airplane Assembly
Compare Import JT Graphics Representing an Object
While you’re at it, you can also rename the Frame named Frame in the folder Models to MyAirplaneAssembly.
• Start the 3D Viewer by clicking on the Home ribbon tab. This opens the Frame containing our simulation
model in the 3D Viewer, MyAirplaneAssembly in our case.
• Now we can edit the MU class Airplane in the 3D Viewer. Click it in the Class Library with the right mouse button
and select Open in 3D. Click into the background of the Frame .MUs.Airplane with the right mouse button and
select Edit 3D Properties.
Note: As we do not need the default graphic of our airplane, the pallet with the name default, we delete this
graphic by selecting it in the 3D window .MU.Airplane and pressing the Del key.
• Click Add to add a new graphic group. We first want to add the graphic group for the fuselage of the airplane.
Type Fuselage into the text box Name.
Once you clicked OK in the dialog above and Apply in the dialog Edit 3D Properties, the dialog Show Graphic Struc-
ture shows our new graphic group as well.
• Now we can create the actual graphic that represents the fuselage. Change to the Edit ribbon tab and select
Insert Cylinder.
• Select the graphic group to which you want to add the newly created graphic, Fuselage in our case. Enter the
dimension of the cylinder and click Create.
Plant Simulation attaches the cylinder to the cursor in the 3D window .MUs.Airplane. Drag it to the position of
your choice and click the left mouse button to insert it into the scene window.
• The 3D Viewer inserts the cylinder in the upright position. This is not what we want though. We need our fu-
selage to be in the horizontal position. To rotate it by 90 degrees, click it with the right mouse button and select
Edit 3D Properties.
• Enter the settings from the screenshot below and click Apply to rotate the fuselage by an angle of 90 degrees.
• To preview your changes of the settings in the scene window without having to click Apply, click Preview Chang-
es.
• In the next step, we are going to add the graphic group for the cockpit of our airplane. Click with the right
mouse button in the Frame .MUs.Airplane and select Edit 3D Properties. Change to the tab Graphics and click Add.
Type Cockpit into the text box Name and click OK in the dialog. Then click Apply in the dialog Edit 3D Properties.
• Then, create the actual graphic that represents the cockpit. Change to the Edit ribbon tab and select Insert
Cone .
• Select the graphic group to which you want to add the newly created graphic, Cockpit in our case. Enter the
dimension of the cone and click Create. Plant Simulation attaches the cone to the cursor in the 3D window
.MUs.Airplane. Drag it to the position of your choice and click the left mouse button to insert it into the scene
window.
• Rotate the cockpit by 90 degrees and place it at the right-hand side of the fuselage. We used the settings shown
the screenshot below.
While you’re at it, you might also assign the cockpit a color on the tab Material.
• As our airplane also needs a right wing and a left wing, we create these next. Repeat the steps described above.
• Add the graphic group for the right wing.
• Select the graphic group RightWing to which the graphic will be added. Create the actual graphic for the right
wing.
• Place the right wing at the appropriate position on the fuselage. We used the settings below.
• Repeat these steps for the left wing. We used the settings below to place the left wing at the appropriate po-
sition on the fuselage.
• In our last step we are going to create the tail assembly (empennage) consisting of the vertical stabilizer and
the horizontal stabilizer (tail plane). Repeat the steps described above.
• Add the graphic group for the tail assembly.
• Select the graphic group TailAssembly to which the graphic will be added. Create the actual graphics repre-
senting the tail assembly. We used a Cone for the vertical stabilizer and a Sphere for the horizontal stabi-
lizer.
• Place the horizontal stabilizer at the appropriate position on the fuselage. We used the settings below. Note
that we also scaled the sphere in all three dimensions to stretch and to flatten it.
• Select the graphic group TailAssembly to which the graphic will be added. Create the graphic representing the
vertical stabilizer.
• Place the vertical stabilizer at the appropriate position on the fuselage. We used the settings below. Note that
we also scaled the cone in the y-dimension.
The dialog Graphic Structure also shows that our tail assembly consists of two graphics.
Instead of using shapes which we create in the 3D Viewer itself, we can also Import JT Graphics Representing an
Object.
• Insert and configure the Source so that it matches the screenshots below. Make sure that it produces an MU of
type Airplane. Select the method hidePlane as the exit control on the tab Controls.
• Insert and configure the SingleProc. Enter a processing time of 10 seconds (0:10). Select the method showFuselage
as the entrance control on the tab Controls.
• Insert and configure next station, called SingleProc1. Enter a processing time of 10 seconds. Select the method
showTailAssembly as the entrance control on the tab Controls.
• Insert and configure final station, called SingleProc2. Enter a processing time of 10 seconds. Select the method
showWings as the entrance control on the tab Controls.
@._3D.showGraphicGroup("Cockpit");
• Program the method showTailAssembly, which we use as the entrance control of the station SingleProc1, so that it
shows the tail assembly of the airplane. We entered the following source code:
@._3D.showGraphicGroup("TailAssembly");
• Program the method showWings, which we use as the entrance control of the station SingleProc2, so that it shows
the wings of the airplane. We entered the following source code:
@._3D.showGraphicGroup("LeftWing");
@._3D.showGraphicGroup("RightWing");
• As we are running the simulation in the 3D Viewer and we want to see a smooth animation, we activate real time
mode in the dialog of the EventController in our simulation model by selecting the check box Real-time.
• Let’s run the simulation to check if everything works as intended, which indeed it does.
Change the Orientation and the Position of the Airplane on the Stations
If you want to, you can also adjust the orientation and the position the airplane on the stations. The default orien-
tation of the airplane looks realistic on a conveyor, modeled for example with a Line, it does not look good on the
SingleProcs that we used.
• First, let’s rotate the airplane by 90 degrees to the right. To do so, click the class of the airplane with the right
mouse button, and select Open in 3D. Click the right mouse button into the background of the window and select
Edit 3D Properties. Enter 90 into the textbox Angle on the tab Transformation.
• Now let’s change the position of the airplane on the stations. This is necessary, because by default the 3D Viewer
places the MUs at the origin of its scene, i.e., the point where the two red lines intersect. This is why the tail of
our airplane is placed on the reference point of the stations.
To change the position of the airplane on the stations, open the class of the airplane in a new 3D window. Press
Ctrl+A to select all graphic groups of the airplane. Move them to the left with the left arrow key until the center
of the wings is located on the y axis.
Run the simulation again to show the result of centering the airplane on the processing stations.
• Import the JT graphics into the graphic groups with the respective name. Import the files Body.jt and Seats.jt into
all graphic groups whose name starts with Body or Seats.
• Change to the 3D ribbon tab Edit and click Import Graphics, navigate to the folder containing the JT graphics,
and click Open in the dialog Open.
• Drag the JT graphic, the Frame of the dune buggy in the example below, roughly to the position in the Frame
named .MUs.DuneBuggy, where you want it to be, and click the left mouse button. Select the graphic group to
which you want to add the graphic, Frame in our case.
• Click the JT button and look for the node with a -M at the end of the name. This designates that this node
defines a material.
• Click that node with the right mouse button, (1-JtGroup-M) in our case, and select Edit 3D Properties. Experi-
ment with the different material colors to create the look that you want. Using the color combinations, you
can fine-tune glossy effects etc.
• To show the state graphics, click the machine with the right mouse button and select Show Graphic Structure.
Click the node States with the right mouse button and select Show All. Rotate the machine to show the state
graphics. You’ll notice that the default setting is not helpful as all state graphics are hidden by the machine when
we look at it from the front and as some of them disappear inside of the machine.
• To remedy that, let’s move the horizontal states to the front of the machine. You can either
• Move the state graphics with the arrow keys. Select the state graphics bar. Press the Up or Down arrow key
to move it in the Y direction. Press the Left or Right arrow key to move it in the X direction. Hold down the
Ctrl key and press the Up or Down arrow key to move it in the Z direction. Or you can
• Move the state graphics with the mouse. Select the state graphics bar. Drag the mouse left and right to
move it in the Y direction. Drag the mouse back and forth to move it in the X direction. Hold down the Ctrl
key and drag the mouse up and down to move it in the Z direction.
You’ll notice that moving objects with the arrow keys and/or the mouse might not be accurate enough. Instead,
you can also enter precise values into the dialog Edit 3D Properties. If you want to, you can also combine the three
methods by first moving the object with the arrow keys, or the mouse, to roughly the position where you want
the object to be and by then entering precise values into the dialog.
• Click the machine with the right mouse button ans select Show Graphic Structure. Then select Edit 3D Proper-
ties in the window Show Graphic Structure.
• Change the position on the tab Transformation so that X reads ‐1.07, so that Y reads ‐0.2, and that Z reads
0.25.
• Click Preview Changes to check if the result looks like we expected it to be. The state graphics bar moved to
the front of the machine, but it is too high. To fix that, we scale it in the Z direction. Clear the check box Uni-
form and enter 0.9 into the text box Z. Now it looks good.
You’ll notice that the pole as such is too long and that the cylinder showing the individual states is too long as well.
Besides, the pole is positioned too far away from the graphic. To fix this, we adjust the position and the scaling of
the state graphics by clicking Transformation.
• Create a new Frame and open it in 3D. Open the dialog Edit 3D Properties. Change to the tab Graphics. Select the
check box Show content to show the objects contained within it.
• Click Show External Graphics on the View ribbon tab to show the default graphic of the Frame. Delete the
graphic named default.
• Click Import Graphics on the Edit ribbon tab to import an appropriate JT file into the graphic of the Frame. Our
file is called Screwdriver.jt. We received it from a colleague.
• Extract the first simulation object: Click the floor plate of the station by pressing the + key on your keyboard
until only the floor plate, and nothing else, is marked as selected. The 3D Viewer then shows the floor plate in a
yellowish green.
• Click the graphic with the right mouse button and select Make Simulation Object.
• Select .MaterialFlow.SingleProc as the class. Name the object PartCarrierStation and select the following co-
ordinates as the object position: X is to be 0.01, Y is to be 0, and Z is to be 0 as well. Watch how the white cross
lines change their position in the scene window as you change the position of the object in the dialog.
• Select the trestle that holds the actual screwdriver of our screwdriver station. Notice that when you select Part-
CarrierStation, the 3D Viewer shows it in a darker green while it shows the other graphics in a light yellowish
green. Dark green denotes that an object is selected. Yellowish green denotes that a graphic is selected,
meaning that you can use the + key to step into the graphic.
Create a second simulation object. Select .MaterialFlow.SingleProc as the class. Name the object Trestle and se-
lect the following coordinates as the object position: X is to be 0, Y it to be 0, and Z is to be 0.1.
• Insert three Interface objects that enable our station to connect to other objects when we insert it into a simulation
model. Name them InPalette, InScrew and Out. Connect InScrew with Trestle, InPalette with PartCarrierStation,
and PartCarrierStation with Out. Move the Interfaces as far as possible to the inside of the SingleProcs and hide their
default graphic on the tab Graphics, as we probably won’t need their graphics anymore. If you have trouble dis-
cerning the individual parts of the station, move them around a bit and then move them back to their original
position after you moved the Interfaces. Also hide the Connectors by clicking Show Connections on the View
ribbon tab.
• Click the graphic with the right mouse button and select the command Make Animatable Object. Name the object
Arm and select the following coordinates as the object position: X is to be 0, Y is to be 0, and Z is to be 0.8.
• Click the newly created animatable object with the right mouse button and select Use as Animation Object. This
means that our trestle forwards the animation of the MUs to the animatable object named Arm.
• Open the Trestle in a new 3D window. Click the Arm with the right mouse button and change to the Tab Self
Animation.
• Add four animation paths of type Lines. We named our paths Setup, DownAdvance, Reset, and DownFinal.
• Select the respective path and click Edit to define two anchor points for each path. Click Add in the dialog Path
Anchor Points, then select the new anchor point, and click Edit Values. Enter these values into the dialog that
opens:
(0, 0, 0) to (0, 0, 0.9) for Setup, (0, 0, 0.9) to (0, 0, -0.1) for DownAdvance, (0, 0, -0.1) to (0, 0, -0.22) for Down-
Final, (0, 0, -0.22) to (0, 0, 0) for Reset.
With these settings, the animation paths of the arm resemble components of a continuous smooth up and
down movement.
• Change to the Tab MU Animation, add a new path, name it Default, and add a single animation point with the
settings (0, 0, -0.38).
• Finally, we are going to configure the simulation side of the stations, i.e. the 2D stations we created as simulation
objects above. To do so:
• Double-click the PartCarrierStation and configure it. We entered a processing time of 10 seconds (0:10).
We also created the exit control called self.OnExit and entered this source code.
The source code in SimTalk 2.0 notation looks like this:
if ?.ExitCtrlFront
self.~.~.Trestle.EntranceLocked := false
@.move
end
The source code in SimTalk 1.0 notation looks like this:
if ?.ExitCtrlFront then
self.~.~.Trestle.EntranceLocked := false;
@.move;
end;
In addition we added a user-defined attribute of dat type method, named it init, and entered this source code:
self.~.EntranceLocked := true;
• Double-click the Trestle and configure it. We entered a set-up time of 6 seconds (0:06) and selected these set-
tings on the tab Set-Up.
We also created the entrance control called self.OnEntrance, the exit control named self.OnExit, and the setup
control called self.OnSetup.
We entered this source code into the entrance control:
The source code in SimTalk 2.0 notation looks like this:
var animations : any := self.~._3D.getObject("Arm").SelfAnimations
animations.resetAnimation
animations.DownAdvance.schedule
animations.startNextAnimationBlock
animations.DownFinal.schedule
animations.scheduleRotation(0, 360, 90)
@.outIn(animations.EstimatedTotalAnimationTime)
animations.playAnimation
The source code in SimTalk 1.0 notation looks like this:
local animations : any := self.~._3D.getObject("Arm").SelfAnimations;
animations.resetAnimation;
animations.DownAdvance.schedule;
animations.startNextAnimationBlock;
animations.DownFinal.schedule;
animations.scheduleRotation(0, 360, 90);
@.outIn(animations.EstimatedTotalAnimationTime);
animations.playAnimation;
We entered this source code into the exit control:
The source code in SimTalk 2.0 notation looks like this:
if ?.ExitCtrlFront
@.deleteObject
local animations : any := self.~._3D.getObject("Arm").SelfAnimations
animations.resetAnimation
animations.Reset.schedule
animations.playAnimation
self.~.EntranceLocked := true
end
The source code in SimTalk 1.0 notation looks like this:
if ?.ExitCtrlFront then
@.deleteObject;
local animations : any := self.~._3D.getObject("Arm").SelfAnimations;
animations.resetAnimation;
animations.Reset.schedule;
animations.playAnimation;
self.~.EntranceLocked := true;
end;
We entered this source code into the setup control:
The source code in SimTalk 2.0 notation looks like this:
param setupStart: boolean
if setupStart
var animations : any := self.~._3D.getObject("Arm").SelfAnimations
animations.resetAnimation
animations.Setup.schedule
animations.playAnimation
else
self.~.~.PartCarrierStation.EntranceLocked := false
end
The source code in SimTalk 1.0 notation looks like this:
(setupStart : boolean)
is
do
if setupStart then
local animations : any := self.~._3D.getObject("Arm").SelfAnimations;
animations.resetAnimation;
animations.Setup.schedule;
animations.playAnimation;
else
self.~.~.PartCarrierStation.EntranceLocked := false;
end;
end;
In addition we added a user-defined attribute of data type method, named it init, and entered this source code:
self.~.EntranceLocked := false;
Insert a second Source, which feeds the screws required for screwing together the pallets. We named it Source‐
Screws. We received the screw, including the JT file, from a colleague.
• Insert a Drain, which removes the finished pallets from the plant.
• Insert our Screwdriver station.
• Insert three Lines between the Sources, the Drain, and the Screwdriver station.
• Connect all objects with Connectors. Connect the SourcePallets, that produces the MU > PartsCarrier, with the
LinePallets, and with the Interface InPalette of the Screwdriver. Connect the SourceScrews that produces the MU > Screw,
with the LineScrews, and with the Interface InScrew. Connect the LineOut with the Interface Out and then with the
Drain. The simulation model should now look like this:
You might be wondering how we inserted the Lines with an inclination to smoothly connect to the Screwdriver
station. We proceeded as follows:
• For the LinePallets we entered an anchor point height of 1 meter for the first anchor point and an anchor point
height of 0.15 meters for the second anchor point. This is the height of the object SourcePallets to which we
connect it on the left-hand side.
• For the LineOut we edited values in the dialog Edit 3D Properties > Extrusion. We entered a base height of 0.15
meters, which means that the left-hand side of the LineOut is placed 15 centimeters above the floor. We then
clicked Segments and entered 1 meter as the Z dimension so that the right-hand side connects smoothly to the
Drain.
• When you run the simulation, you might want to run it with a low real-time factor to be able to watch how the
screwdriver actually screws the screws in.
You’ll also notice that the screw is not attached to the tip of the arm. Proceed as follows to fix this:
• Open the class of the Screwdriver in a new 3D window.
• Open the Trestle of the Screwdriver in a new 3D window.
• Open the dialog Edit 3D Properties of the Arm, change to the tab MU Animation, and visualize the Default path.
• Select the path marker, hold down the Ctrl key, and move it down with the down arrow key until it was located
flush at the tip of the Arm.
You’ll finally notice that the wrong side of the screw is attached to the tip of the Screwdriver arm. Proceed as follows
to fix this:
• Open the class of the Screwdriver in a new 3D window.
• Open the Trestle of the Screwdriver in a new 3D window.
• Open the dialog Edit 3D Properties of the Trestle, change to the tab MU Animation, and visualize the Default path.
• Select Top as the side to which the MU is to be attached.
Run the simulation again. Now our Screwdriver station does exactly what we designed it to do.
Note: As the Assembly station is connected to two stations, the order in which you connect it with the predeces-
sors is important. If the assembly process does not work as expected, check the numbering of the prede-
cessors by activating More View Options > Show Predecessors on the General ribbon
tab of the Frame. Then, enter the correct the number of the predecessor into the text box Main MU from
predecessor of the Assembly station.
• To create the MU representing the brick carrier, duplicate the class .MUs.Container and rename it to BricksCar‐
rier. We deleted its graphic and imported the JT file BricksCarrier.jt. We changed its size to 1.1 by 1.1 by 0.15
meters and gave it a capacity of 50 parts (X-dimension of 5 times Y-dimension of 10).
• To create the MU representing the normal brick and the glass brick, duplicate the class .MUs.Entity twice. We re-
named them to Brick and GlassBrick respectively. Both have a size of 0.2 by 0.1 by 0.05 meters.
For the bricks we are going to use automatically generated graphics instead of importing JT files.
• Open their class in a new 3D window and open the dialog Edit 3D Properties.
• Change to the Tab Appearance of the MUs and activate the check box Auto graphics active.
• For the GlassBrick, also activate Material active, select a blueish gray as the Diffuse color, and select a transpar-
ency factor of 0.6 to make the glass brick semi-transparent.
Then, we are going to configure the other objects in our Receiving department.
• Start with the Sources producing the Brick, the GlassBrick, and the BricksCarrier. Select the respective MU according
to the name of the Source. We did not change any other settings. Compare the example below.
Note: Make sure that you use the absolute path for the MUs, denoted by an asterisk * at the beginning of the
path. The relative path starts with a tilde ~.
• Configure the Assembly stations to attach the MUs and to make the Main MU exit the station. We also want them
to load 50 parts, namely the bricks or glass bricks, onto the brick carrier. Click Open next to Assembly table and enter
50 into the column Number.
Note: As the Assembly station is connected to two stations, the order in which you connect it with the predeces-
sors is important. If the assembly process does not work as expected, check the numbering of the prede-
cessors by activating More View Options > Show Predecessors on the General ribbon tab of the Frame.
Then, enter the correct the number of the predecessor into the text box Main MU from predecessor of the
Assembly station.
• Drag the ParallelProc onto the TransferStation to load parts and to use it as part source. We use the default settings
of the ParallelProc.
Drag the Track onto the TransferStation to use it as the target station. Accept 0 as the sensor position.
To make the Truck stop and wait for parts until it is fully loaded, select the check box Always stop container on
the tab Advanced Attributes.
• Open the dialog Edit 3D Properties of the Frame MySourceTruckLoadedWithBricks. Change to the tab Graphics and
make sure that Show contents is cleared.
Now we are ready to test our receiving station MySourceTruckLoadedWithBricks. Insert it into our simulation model,
connect it with a Track and a Drain, and run the simulation. You’ll notice that it creates trucks that transport two
types of carriers, one loaded with normal bricks and one loaded with glass bricks each.
Optimizing a Graphic
Optimizing the graphic, i.e., flattening the hierarchy of an object, deletes unnecessary information from the object,
allowing for faster rendering, and a quicker display of the object.
Whenever you import graphics, it is useful to optimize them. This is not because the graphics you import are badly
designed, but because they are typically designed for another kind of use in the originating program. The engineer
who designs a component, such as an engine, will naturally include every detail of that engine in the graphic that he
creates, because it is imperative to provide these details for producing the engine.
For us as Plant Simulation 3D Viewer users these details of the engine are of no interest at all. Our main concern is
that the simulation runs fast and that the animation looks good and runs smoothly.
We therefore advise to optimize every graphic you import. Do this as soon as possible, but not before you extracted
all the structural information from the graphic that you need, compare Creating an Animatable Object.
Before you can do this, you have to make an animatable object from the graphic, compare Make Animatable Object.
Note: As you cannot restore discarded data, only flatten the structure after you are done with modeling the object!
You will not detect any difference in the appearance of the object, as the 3D Viewer only adjusts its structure
for better performance.
Use this feature with caution, as too much optimizing might ruin your graphic/animatable object.
To optimize a 3D graphic, click the animatable object, whose graphic you would like to optimize, in the scene win-
dow, and click Optimize Selected Graphic on the Edit ribbon tab of the 3D Viewer. Experiment with the settings de-
scribed under Step 1: Prune tiny graphics, Step 2: Visibility filter, and Step 3: Flatten structure.
The 3D Viewer shows two characteristics of the graphic under graphic complexity, namely the number of nodes and
the number of polygons. The optimization strategies mainly affect the number of nodes and the number of polygons.
Watch the effects of optimizing the hierarchy of the animatable object in the dialog Show 3D Graphic Structure.
Animation Paths
Animation paths are a set of points in space that describe the route an animated mobile object takes when it moves
across the objects or through the scene.
The objects provide these animation paths:
• MU animation paths.
You can create and edit paths on which the parts are animated under 3D Properties > Tab MU Animation on the
Home ribbon tab.
The anchor points of the MU animation paths are the vertices of the line, polycurve, or spline on which incoming
MUs are animated. When an MU transfers onto a material flow object, it usually moves on the animation path.
For numbered 2D animation points you can define corresponding 3D animation paths that use the same name.
In addition, 2D capacities (x,y) are mapped to 3D locations as animation paths named #x#y. For the ParallelProc,
we predefined paths from the locations #0#0 to #1#1. For the Store, we predefined paths from the locations
#0#0 to #2#2.
The polycurve animation anchor points are the vertices of a curved object, i.e., a sequence of curved and straight
lines, on which MUs are animated, when they are transferred onto a material flow object.
Note: As opposed to 2D, you can define polycurve paths for all 3D objects.
The spline animation anchor points are the vertices of a spline curve.
• Self animation paths.
You can create and edit paths on which the object itself is animated by clicking 3D Properties > Tab Self Animation
on the Home ribbon tab.
The anchor points are the vertices of the line, polycurve, or spline on which the selected object itself moves. You
can, for example, use it a self animation path to simulate the movement of a robot.
The polycurve animation anchor points are the vertices of a curved path, i.e., a sequence of curved and straight
lines, on which the material flow object itself moves.
The spline animation anchor points are the vertices of a spline curve.
• Camera animation paths.
You can create and edit paths on which the camera moves through the 3D scene in the Frame by clicking 3D
Properties > Tab Camera Animation on the Home ribbon tab.
The anchor points are the vertices of the line, polycurve, or spline on which the camera moves through the scene.
The polycurve animation anchor points are the vertices of a curved path, i.e., a sequence of curved and straight
lines, on which the camera moves.
The spline animation anchor points are the vertices of a spline curve.
Editing a Path
To work with animation paths of parts on an object, do one of the following:
• Select the object and click 3D Properties on the Home ribbon tab.
• This opens the dialog 3D Properties. Click the Tab MU Animation and create a new animation path or edit an ex-
isting animation path.
To work with animation paths on which the object itself is animated in the scene, do one of the following:
• Select the object and click Edit 3D Properties on the Home ribbon tab.
• This opens the dialog 3D Properties. Click the Tab Self Animation and create a new animation path or edit an ex-
isting animation path.
• Select the Frame, and click Edit 3D Properties on the Home ribbon tab.
• This opens the dialog 3D Properties. Click the Tab Camera Animation and create a new camera animation path or
edit an existing camera animation path.
You can:
• Create a Path.
• Edit a Path With the Mouse.
• Edit a Path by Entering Values into the Dialog Anchor Points.
• Create an Animation Path that Rotates Objects.
• Test an Animation Path.
• Rename an animation path.
• Delete an animation path.
Create a Path
When you create a new, initial path, you will follow these basic procedures.
• Open the dialog 3D Properties. Click the Tab MU Animation, on the Tab Self Animation, or on the Tab Camera
Animation depending on the path you want to create.
• Click Add.
• Select the type of path (Path type) you would like to create.
• Enter a unique name for the path, if you are creating an animation path.
When objects, such as the Store, have several defined locations for receiving incoming mobile objects, you will
define additional animation paths for each location. In Plant Simulation you can move an MU to the position de-
fined by the x-coordinate and the y-coordinate of the object. In the 3D Viewer this corresponds to a child anima-
tion path named #x#y. For the ParallelProc, we predefined paths from the locations #0#0 to #1#1. For the Store,
we predefined paths from the locations #0#0 to #2#2. If you do not define such child animation paths, the
3D Viewer uses the Default animation path to place an MU that transfers to the object.
A spline path creates the impression of a path with rounded corners; the curved segments of a polycurve path
consist of rounded corners also. The smaller the distance between the points of the curve, the better the approx-
imation will be. Be aware that this creates a greater amount of data, and might thus decrease performance.
• Then, click OK to create the path you just defined. Initially this path consists of a single anchor point located at
the origin of the selected object.
• Extend and/or edit the new initial path by clicking 3D Properties > MU Animation/Self Animation/Camera Anima-
tion > Edit > Path Anchor Points on the Home ribbon tab.
• To show the selected path in the scene window, click the cell Show under animation paths. Then, the 3D Viewer
shows one or several graphics for the anchor points (node graphics), connected by a line that symbolizes the path
positions, in the scene. Note that you can display several paths at once, but that only one path is active at any
one time. Select any one of the anchor points of the path to activate it.
The 3D Viewer also shows the grid whenever you display a path in the scene window. When you hide the grid
• To rotate an anchor point, click it, hold down the left mouse button, and drag the mouse, and/or click 3D Prop-
erties > Transformation.
Note: When you rotate a anchor point describing an animation path, this also rotates any MU moving along that
path.
• To delete a part of the path, select an anchor point and press Delete. This removes the selected anchor point
from the path, thus modifying its shape.
• To hide all paths, click on the View ribbon tab in the 3D Viewer. This deletes all anchor points and lines rep-
resenting paths in the scene.
• Click the mouse into the scene to insert the segment. The result looks like this:
• Select the anchor point you would like to edit and in the dialog Path Anchor Points and then click the button Edit
Values.
• Enter or select the new settings for the position and for the rotation of this anchor point into the dialog Edit An-
chor Values.
• To add new anchor points to the end of the selected path, click Add. The list adds the settings of the new anchor
point you added to its bottom. Once you have added an anchor point, you can manipulate its settings on the tabs
to the right.
• To insert new anchor points the selected anchor point, click Insert Before.
• To delete a anchor point, select it in the list, and click Delete.
To delete contiguous anchor points, hold down Shift and click the first anchor point in the range and then the
last anchor point.
To delete non-contiguous anchor points, hold down Ctrl and click the anchor points you want to delete one after
the other.
• To move the selected anchor point up one position in the list, click Move Up.
• To move the selected anchor point down one position in the list, click Move Down.
• To duplicate the settings of the selected anchor point and to insert the duplicated anchor point below the original,
click Duplicate.
• Enter the Start position where the rotation starts in the coordinate system of the selected object. You can select
two predefine positions by clicking one of these buttons:
• Origin of the selected object, i.e., (0,0,0). This is useful for the Self Animation paths, where you want the select-
ed object to rotate around its center axis. In that case the start, end and center positions have to be identical.
• Center of Top of the graphic of the selected object. This is useful for the MU Animation paths where, for exam-
ple, you want the incoming MUs to rotate on a table top.
• Enter the values for the Axis around which you want to rotate the object or the MUs.
• Normally, you will use the Z-Axis (0,0,1) to rotate the object on the XY plane.
• You also can define the Y-Axis (0,1,0) to rotate the object on the XZ plane or the
• X-Axis (1,0,0) to rotate the object on the YZ plane.
Naturally you can also define any other axis to rotate the object diagonally in 3D space.
To tilt the rotation axis, and thus the way the MU rotates, you would enter a value into at least two text boxes.
You can change one, two or three settings to tilt the axis the MU rotates around on the surface of the object.
• Enter the Center point of the rotation in the coordinate system of the selected object. If the center is not the
same as the start position, the rotated object moves on a circular arc and stops at a different position than its
starting point, except after a 360 degree rotation.
To rotate an object around its own center, you can click one of the following:
• Origin, which rotates the selected object itself. This applies to Self Animation paths.
• Start position, which rotates MUs that are transferred to the object. This applies to MU Animation paths.
• Enter the Angle in degrees where the rotation starts and ends. The values may not be identical, otherwise the
3D Viewer does not execute any rotation at all. They can be greater than 360 degrees and less than -360 degrees
to cause more than one total revolution.
The Start and the End angle define the direction of the rotation, depending on which value is the greater one:
• An end angle greater than the start angle results in a clockwise rotation.
• An end angle less than the start angle results in a counterclockwise rotation.
• Enter the number of rotation Steps. Every step the rotation proceeds is defined by End angle minus Start angle
divided by the number of Steps. The more steps you define, the smoother the rotation will be, but also the more
RAM-intensive.
• Enter the Duration in seconds you want the entire rotation to last and enter the Realtime scaling factor into the
dialog 3D Preferences. A small number slows down the animation, a large number speeds it up.
• Click Apply to compute the animation path. This path is the trace on which the animated object moves. The
movement on this path is the rotation.
Note: You can use the method _3D.<Type>Animations.scheduleRotation to run self-rotations or camera-rotations
without having to create a path.
• To test the rotation path you defined, select an object and start the test animation.
• If the rotation movement does not meet your expectations, open the dialog Create Rotation Path again, and edit
the parameters there. Then, click Apply and test the settings again until the rotation meets your needs.
• To change the duration of one or more individual rotation steps:
• Select the path in the list, and click Edit.
• Select the anchor point in the dialog in the dialog Path Anchor Points, and click Edit Values. Anchor Points to
open the dialog Edit Anchor Points.
On the tab Time you can edit the Cycle time of every anchor point, which matches the rotation steps.
• Select the test object, i.e., an MU whose graphic the 3D Viewer copies and uses as the test object.
• Enter the Velocity with which the test object moves on the path.
• Select if the test object moves in the forward direction or if it moves Backwards.
The 3D Viewer automatically enters a negative Velocity, when you select Backwards.
Note: Initially, your 3D window might only show small parts of the point cloud. When you start rotating the
view, the 3D Viewer shows additional parts of the graphic.
• To show or hide the point cloud, click Show Point Clouds on the View ribbon tab.
• To adjust the position and the orientation of your point cloud, click into the background of the Frame containing
the point cloud and select Edit 3D Properties. Change to the tab Point Cloud and modify its Position and its Rotation
angle.
the point cloud when you reopen the model at a later point in time. Click Show Point Clouds to display it.
• Select Backwards if you want the camera to move backwards towards the starting point of the animation path.
Note that the 3D Viewer automatically enters a negative velocity into the text box when you select the check box.
• To start the animation, click Play . The 3D Viewer now shows the scene through the lens of the animation cam-
era, which moves on the path you designated with a lens offset of (0, 0, 0.1).
• To pause the animation of the camera, independent of the simulation, click Pause .
• To stop the animation of the camera, independent of the simulation, click Stop .
At the end of the animation the viewer sets the main camera to the last point where the animation camera was lo-
cated and deletes the animation camera.
To test the camera animation path you defined, you can click the tab Test in the dialog Edit Path, select an Animated
graphic and start the test animation.
Recording a Video
You can record a video of the crucial parts of your simulation model. This way, you can pass the video on to any-
body or publish it on the Intranet or the Internet, without the person viewing the video having to install Plant Sim-
ulation on his computer. The recorder creates an AVI file that any multimedia player can play.
The Video ribbon tab provides all tools for recording and playing the video.
• Decide from which position and which angle you want to view and record the scene. Then, rotate and zoom the
scene accordingly before starting the simulation. Be aware that when you manipulate the scene, the 3D Viewer
might react sluggishly while recording.
After you prepared the scene, select settings for recording it. Click on the Video ribbon tab.
• Depending on what you want to show, you can enter a different number of frames per second as the Playback
rate.
When the Playback rate is twice the Recording rate the playback will be half as long.
• Select the check box Record client area only to only record the contents of the actual scene window. This not
only reduces the physical size of the play back window but also the size of the recorded file.
• Enter the location and the name of the recorded AVI file into the text box. Instead, you can also click Browse,
select a location and enter a file name into the dialog Save As.
Note: To prevent the 3D Viewer from overwriting the last AVI it recorded, rename it before recording another
video.
Microsoft Video 1
To save your AVI file with 8 bit color or 16 bit color, select this.
Cinepak
Cinepak provides the fastest playback of compressed video files. While Intel IYUV provides similar or slightly su-
perior image quality for same compression, Indeo decompression is much more CPU intensive than Cinepak.
Cinepak is asymmetric, i.e., it takes much longer to compress the video than it does to decompress and display it.
Unlike other codecs, Cinepak handles video containing a lot of motion quite well. In more static video, such as tak-
ing head shots, there is noticeable temporal aliasing, or pixel crawl.
Intel IYUV
Just like Cinepak Intel IYUV is an asymmetric codec, but it compresses the AVI faster.
Intel IYUV produces a sharper, more color correct, image with low motion video, while Cinepak produces better
results for video with a lot of motion.
Note: Be aware that the recorder records the contents of the currently active window. If you click into another
window during the recording session, or roll the mouse over a button to display a tooltip, these will show
up in your recorded video. This might ruin your recorded video.
• To cancel recording, click .
• To pause recording, click . This deactivates the Pause button .
You might pause recording if you do not want to show a certain section of the animation, and start recording
the next section of interest by clicking again.
• To stop recording the video, click .
The 3D Viewer shows a dialog telling you that it saved the AVI file to the location and with the name you entered.
Click OK to close the dialog and to continue working.
• To stop the simulation, click on the Home ribbon tab.
Note: If you want to view the video after you recorded it, we recommend to stop the simulation, as it uses a
considerable amount of your computer’s resources.
Index-1
AND operator Attach 3D shape 876
AttributeExplorer 817 Attribute table
ExperimentManager 584 Source, using 135
Anderson-Darling 569 Attribute Viewer, button 811
AngularConverter AttributeExplorer
model with 452 find objects with 816
Animatable object parameterize your model with 809
creating 900 use 809
Animate Auto graphics
simulation model 589 example 916
Animating Your Simulation Model 589 Auto graphics active
Animation example 286
activate and deactivate 590 Auto Hide
add to simulation object 903 button 38
Animation camera 938 Autodesk 101
Animation lines 594 Automatically generated graphics 916
defining 594 AV, DataFit 564
Animation path
of parts on an object 923
of the object itself 924
B
working with 922 Background
Animation points 594 image of Frame 101
colors 596 Background color 101
defining 594 set in 2D Frame 101
link, unlink 596 setting in 3D viewer 827
move 596 Background image, add to frame 101
Application objects Backward scheduling 386
create with Dialog 781 Bar chart
Apply argument Chart 642
example 807 Batch-Mean method 585
Arc length 502 Boolean operation 584
Areas chart 642 BottleneckAnalyzer
Array how to use 681
contents list 608 Bottom-up strategy 63
in drag-and-drop control 128 Bounds for distributions 569
write contents list to 611 Breaks, modeling 381
Assembly station Broker
example 918 model with 369
how to use 405 Buffer
Assembly table example 202
change in entrance control 240 example for relative full/empty 205
Button
Index-2
examples to open table and callback method 678 create your own 84
how to add to Dialog 804 create your own that inherits values 84
resize icon 669 described 70
work with 668 Class Library
modeling with objects in 2D 100
move object in 85
C update 93
CAD file as background for frame 101 Classes 69
Calculations, with formula 765 creating your own 84
Camera described 69
animation 938 working with in class library 75
main 938 Close argument
object 938 example 807
toggle 939 Closing parenthesis 584
Camera animation path 924 Codec 942
Camera Marks Collect data
save, return to 826 check box 638
Capacity Collecting and preparing data 564
define in 3D viewer 855 Color
Carry Part Away grid line, Chart, using 649
select strategy 158 Sankey diagram 693
Carry parts Column
Worker in 2D 324 cut 751
Worker in 3D 338 delete 751
Cells hide in TableFile 755
changing width of 754 Column header
set alignment and color 749 enter in dialog 758
Center angle Column index
in 2D 502 enter in dialog 758
Change order of tabs in Dialog 800 Column width
Change size of icon, with Shift+Ctrl 646 changing 754
Chart Columns, data displayed in chart in 642
Chart type, selecting 636 commit 713
select settings for showing data 631 Confidence intervals
show statistics with 630 in ExperimentManager 579
Check Box Confidence level
how to add to Dialog 796 defined for data fit 566
Checkbox Configure
work with 666 BottleneckAnalyzer 682
Chi-Square 569 Connect 113
Cinepak 942 Frames with the Interface 117
Class
Index-3
objects with the Connector 113 Create
two curved objects 511 3D model 820
Connect mode, terminate 841 3D shape 870
Connecting objects a new object in 3D viewer 838
in 2D 66 animatable object 900
in 3D viewer 841 first, simple simulation model 64
in the Frame 66 icon 592
Connections, establishing 841 model in 2D 61
Connector simulation object 900
connect objects with 113 Creating Parts with the Source 132
create non-straight connection 114 Crosshairs 66
create right-angled connection 114 Cross-sliding car
work with 113 working with library 524
Contents CSC
working with list 607 cross sliding car, model with 524
write list as an array 611 Cuboid
Contents list, working with 607 delete 872
Continuous sequence of straight and curved segments Current time plus simulation time 119
500 Curve
Control change shape of 508
the simulation 66 continuous 500
Control view, in 3D Viewer 830 create with SimTalk commands 511
Controlling the Simulation with the EventController draw without fixed values 508
119 insert pointing to the left 506
Controls insert with 90° angle 505
define for different types of stations 231 insert with fixed values 505
for length-oriented objects 248 keyboard shortcuts for inserting 513
for point-oriented objects 231 work with 499
Unplanned, example 390 Curve mode, terminate 500
Converter Curved objects
model with 433 work with in 2D 497
Conveyor work with in 3D 497
accumulating, non-accumulating 515 Curved segment
modeling a simple 514 insert in 2D 499
Coordinates insert in 3D 928
map in 2D/3D 829 Custom attribute, how to define 269
Copy Custom Attributes
object in Class Library 85 how to define 269
pointer 85 Custom column index
Copy pointer 85 how to define 758
Copy/Paste to Windows Clipboard 754 Custom context menu 105
Index-4
Custom menu create user-defined 781
create 105 design a simple 785
Custom row index design and layout considerations 783
how to define 758 design with tabs 797
Cyclic open list/table as 771
select strategy 159 Dialog windows
Cyclic sequence described 40
select strategy 160 DismantleStation
how to use 410
Display
D BottleneckAnalyzer 682
Dark green, selected object in 3D 902 Sankey diagram 693
Data Source show statistics with 657
set up for database 714 Display options, for the chart 643
Data type Display Panel
for column index 756 EnergyAnalyzer 690
Database example of using with Workplace 363
import data from with ODBC 713 examples of how to use 621
import data from with Oracle 722 Distance
DataFit control, example 258
how to use 566 Distance control
Daylight saving time create and work with 258
select options 47 Distribution
use in Europe 47 select the right one 565
use in the US 47 Distributions with bounds, use 569
DDE DivX 942
link to Microsoft Excel, example 661 Docking window
Defining Processing Times 187 described 38
Del Drag-and-drop
delete graphic 879 control, example 211
Delete in table 755
Cuboid 872 show statistics in Chart 631
shape 872 work with 127
Delete key Drain
in 3D Viewer 839 remove parts from the model 154
Delete Last Point 500 Drop-down list
Delete MUs work with 669
different ways of 126 Drop-Down List Box
Delivery list, produce part with 133 how to add to Dialog 793
Delivery Table dwg file 101
using to create parts 133 dxf file 101
Dialog
Index-5
Dynamic parameters 582 Worker 338
Executing simulation experiments 571
Exists, attribute in AttributeExplorer 817
E Exit control
Edit distribute parts with 245
lists and tables 753 example for workplan 153
Elektrohängebahn how to create 229
Beispiel 473 Exit Strategy
Energy use 302 setting the different 157
EnergyAnalyzer Exit, Interface 117
example 683 Experiment run 575
Enter data into cell in lists 753 ExperimentManager
Enter times 189 how to use 572
Entrance control Exporter
change assembly list 240 check statistics 613
change importer services 236 model with 369
change processing time 233 Expression 817
how to create 229
Entrance, Interface 117
Equal to F
AttributeExplorer 817 F key
case sensitive, AttributeExplorer 817 example 823
ExperimentManager 584 Fail
Esc object manually 195
restore contents of cell 753 object with failure generator 197
terminate connect mode 841 Failures 195
undo modifications 843 defining 196
Evaluate modeling 195
data in DataFit 568 Familiarize yourself with the program 5
tab of EnergyAnalyzer 684 Feed machines with portal crane 554
EventController FileLink
controlling simulation with 119 example 663
run simulation 66 work with 734
select settings 121 Filter
EventDebugger data in DataFit 567
working with 122 Find
Excel any source code 58
export data to 769 any text within a table 60
import data from 698 attribute of an object 58
show statistics with 659 condition of an object 57
Exchange Graphics name of an object 54
how to 850 objects and attributes with AttributeExplorer 816
Index-6
objects and text in the class library 53 Frames per second 824
using regular expressions 57 From, Chart 649
Find Object Front
described 53 activated control, how to use 249
Finding Objects and Text 53 show state graphics 896
Fine-tune location of objects in 3D 843
Finish, exit insert curve mode 500
Fit, data in DataFit 568
G
Fixed gap conveyor 516 Gantt Chart
FlowControl example of using with Workplace 367
example for MU attribute 168 General options 43
Fluid Objects Getting the format of columns and rows 761
example 276 Goodness-of-fit test 568
Fly Through 938 Graph and Table 643
Folder Graphic
R for root folder 83 exchange of 3D object 850
save as library 87 optimize 920
Folder structure 82 selected in 3D 902
Folders, work with in class library 85 use a different one for 3D object 850
Foreground, open list as dialog window 771 Graphic groups
Format Table working with 876
ODBC example 719 Graphic inheritance, using 869
Formula Graphic, import in 3D 868
access table in column, xself 767 Graphics
access table in row, ySelf 767 create in 3D 878
define processing time in, example 147 of objects 592
define set-up time in, example 147 Graphics layer, EnergyAnalyzer 690
how to use 765 Greater than
in table 767 AttributeExplorer 817
Forward scheduling 386 ExperimentManager 584
FPS 824 Greater than or equal to 817
Frame Grid
add background color 101 add grid lines 833
add background graphic 101 move 836
align objects in 66 position, example 834
draw graphic onto background 103 properties 833
insert object into 65 settings 833
move objects in 65 show, hide 833
select options 97 working with in 3D viewer 831
working with 97 Grid lines
working with objects 110 add 833
show in scene 834
Index-7
Group Image
objects in 3D viewer 845 how to add to Dialog 805
Group Box Implement simulation project 4
how to add to Dialog 794 Import
Jt graphics 892
Importer
H model with 369
Handle Incline 349
for moving connector 114 Inclined objects 910
of Connector 111 Index Limits 759
Height Information about the scene in 3D 823
Chart, dialog element 643 Inherit
Hide Class Library, auto hide 38 user menu, example 106
Hide Console, auto hide 38 Inheritance
Hide Toolbox, auto hide 38 active 73
Hiding columns 755 example in Tutorial 19
Hierarchical modeling not active 73
described 95 show in class library 73
overview 823 use 73
Histogram Init control
show statistics with 637 manipulate the worker creation table 321
Holidays, model 383 init method
HTML Report change failure settings 200
using with ExperimentManager 580 create transporter on track 521
HtmlReport open database 726
example 650 restart transporter after it stopped 265
Hubstation Input, data into DataFit 566
Beispiel 474 Insert
curved and straight segments, in 2D 499
I curved and straight segments, in 3D 928
Icon 592 length-oriented object between existing objects
create 592 511
edit 591 object in 3D 839
setting transparency 594 object into Frame 65
work with 590 several instances/objects at once 841
Icon Editor Insert Graphic
work with 590 example 853
ID Insert object 100
Sensor, example 252 different ways of 100
if ... elseif ... end 246 from the class library 100
if ... then ... elseif 246 from the toolbox 101
Index-8
into the Frame 65 Length-oriented objects 132
Inserting a Range into a Table 755 described 132
Instance, described 70 Lengths, use identical 857
Intel IYUV 942 Less than
Interarrival time 412 AttributeExplorer 817
Interface ExperimentManager 584
example in Tutorial 20 Less than or equal to 817
model transitions between Frames 116 Level of significance 566
work with 117 Library, save folder as 87
Internal cursors 761 Lifter
Interval adjustable Beispiel 474
produce parts 136 Line
model with 514
Line chart 642
J Line with Markers 642
Jack 340 Linear sequence
Jill 340 select strategy 161
JT graphics, import 892 List Box
how to add to Dialog 801
K List Editor 753
Kanban system, modeling 486 List View
Kolmogorov-Smirnov test how to add to Dialog 803
example 569 List, open as dialog in foreground 771
Lists
cursors 761
L Index Limits 759
Labels, add to chart 647 navigate in 753
Ladestation search interactively 762
Beispiel 477 search manually 762
Layout file search with methods 761
import dwg file into 2D 101 using 755
import into 3D model 852 Load
Least Recent Demand folder into folder 92
select strategy 161 object into another model 87
Left-handed coordinate system 834 object into folder 92
Left-pointing curve 506 parts 175
Legend 647 Load Object
add to chart 647 when to use 91
Length with drag-and-drop 92
sensor 252 Load Object into Folder
Length-oriented object, add new segments to 927 how to 92
Index-9
Load parts 175 how to add to Dialog 788
LoadStation Merge Report, when updating libraries 81
Beispiel 477 Method Action 585
Location-oriented material flow objects 131 Method Condition 584
LockoutZone Middle mouse button 821
model 393 Min. Contents
select strategy 163
Min. Num. In
M select strategy 164
Main camera 938 Min. Proc. Time
Manipulate select strategy 164
objects precisely 843 Min. Rel. Occu.
objects with the mouse 843 select strategy 164
scene with mouse 824 Minimum Set-up Time, strategy 164
Map coordinates 829 Mode
Mapping sample, Chart 636
locations, select how to 855 watch, Chart 636
Marker, move of path 911 Model
Markers 642 accumulating conveyor 515
Marquee, to select several objects 110 conveyor 514
Mast, show state graphics 899 create in 3D viewer 820
Material active hierarchically, example 95
example 917 hierarchically, overview 823
Material flow interfaces between Frames 117
model advanced 229 portal crane 531
model basic 131 transitions between Frames 116
Materials handling equipment transport system with active elements 514
cross sliding car, example 524 transport system with passive elements 520
Matrix(type) distribution transport systems 496
example 186 with classes and instances 69
Max. Contents Modeling concepts 1
select strategy 162 Modeling Failures 195
Max. Num. In Modeling Options for the Frame 45
select strategy 162 Monitor the energy consumption 689
Max. Proc. Time Most Recent Demand
select strategy 162 select strategy 165
Max. Rel. Occu. Move
select strategy 163 object in 3D 843
Maximum set-up time, strategy 163 object in Class Library 85
Menu object on the gird plane with the mouse 843
how to add to Dialog 788 object precisely 844
Menu Item
Index-10
object vertically up or down with the mouse 843 in 3D Viewer 823
object vertically up/down with the keyboard 842 with mouse in 3D scene 824
object with the keyboard 842 Nested list
on predefined path 828 open 754
parts from station to station 155 New
parts using an observer 254 class, create 877
pointer 85 New class, create 877
Move folder 85 New Rule 583
Move object No gap conveyor 516
in 3D 843 Nodes 824
Move object in Class Library 85 Nudge objects by pixels/grid units 110
Move objects Number Adjustable
by pixels/grid units 110 produce parts with 142
in Frame 65 Number of nodes 824
in tree window 85 Number of polygons 824
Move path marker 911 Number of storage places 856
Move pointer 85
Move Up
object in list, example 793
O
MPEG-4 942 Object
MS Excel copy in Class Library 85
export data to 769 define rotation of 592
import data from 698 Inserting 65
show statistics 659 move in Class Library 85
MTBF select 110
ExperimentManager 564 selected in 3D 902
MTTR Object camera 938
ExperimentManager 564 Object classes 69
MU Attribute Object properties, ways of changing 48
select strategy 165 Object selection in 3D 840
Multiple drag-and-drop Object settings, ways of changing 48
create classes 84 Object values, ways of changing 48
in drag-and-drop control 128 Object windows
toolbar 94 bring to front 41
Multiple Paste described 40
described 840 Objects
MUs to be watched 693 active 131
change values of 48
passive 131
N select in 3D 840
Navigate in lists 753 tab of EnergyAnalyzer 689
Navigating work with in class library 85
Index-11
Observer Origin
example in 2D 254 show in class library 74
ODBC ows 276
import data from a database 713
odbcad32.exe 714
Open
P
nested list 754 Pack and Go
ranking table 682 how to proceed 586
Open a List as a Dialog Window in the Foreground 771 Pan scene, with the mouse 824
Open argument Parameterize your model
example 807 with AttributeExplorer 809
Open as dialog 771 with Dialog 781
Open Class Parenthesis 584
insert animation point 595 Passive objects 131
Open Location Paste
example 111 multiple copies 840
Open Origin Path
example 95 animation in 3D 922
for Frame 111 delete in 3D scene 928
OpenGL Version delete nodes 928
of current scene 824 modify shape 927
Opening parenthesis 584 Path marker, move 911
Operating plan 145 Pause
Operations plan 145 control, example 389
Operator Frame, how to 387
ExperimentManager 584 material flow objects, how to 387
Optimize Graphic Pausing frames 387
how to 920 Pausing material flow objects 387
Optimize simulation model, genetic algorithms 585 Percentage
Options select exit strategy of material flow object 165
for Frame 45 PickAndPlace robot
general 43 model with 419
setting, described 42 Pie chart 643
OR operator Place-oriented object 131
AttributeExplorer 817 Plot mode, Chart 636
ExperimentManager 584 Plotter
Oracle Chart, example 638
import data from database 722 show statistics with 638
Orientation Point cloud
change of objects 891 working with 935
of scene in 3D viewer 825 Point-oriented material flow objects 131
Points and Best Fit Curve 642
Index-12
Points and Best Fit Line 642 program in 3D 889
Pole, show state graphics 899 Properties
Polycurve change of objects 48
continuous 500 Pseudo random numbers 227
edit 928
work with in 2D 497
work with in 3D 497
R
Polygons 824 R, for root folder on icon of folder 83
Portal crane Radio Button
feed machines 554 how to add to Dialog 795
load train 544 Radius
model with 531 EnergyAnalyzer 690
Position RAM 824
change of objects 891 Ramp, model a 501
change of part in 3D 342 Random
Positions, use identical 857 select exit strategy of material flow object 166
Predecessor 118 Random numbers, described 226
defined 118 Random processes
Predefined path 828 modeling 226
Preparing data for the simulation 564 Range
Priority Chart 635
ExperimentManager 582 Rear
removal order, crane 532 activated control, how to use 249
Probability density function Receiving Department, model complex 914
how to use 227 Regular expression
Probability distributions AttributeExplorer 817
using 228 Find Object 56
Processing time Relative
change in entrance control 233 sensor 252
define 187 Relative sensor 252
define for stations of ParallelProc 193 Relative time 119
define in formula, example 1 147 Reload parts 175
define in formula, example 2 191 Remove
depending on type of MU 190 BottleneckAnalyzer 682
Produce parts parts from the model 154
different ways to 132 Rename
during an interval you define 136 class 91
the number you need 142 object, in tree window 85
using a trigger 143 toolbar in Toolbox 94
using delivery table 133 Rename object, in tree window 85
Production sheet 145 Replace
class 91
Index-13
Replace instance with class Sample models, view 7
described 72 SankeyDiagram
Replace or Rename Class evaluation tool 691
how to use 91 Save
Representation object 87
example in 3D 858 Scale
Resize button 669 object in 3D 843
Right mouse button, terminate connect mode in 3D object precisely 848
841 uniformly 848
rootFolder Scale .dwg file 101
set for your simulation model 83 Scaling factor
use 83 for .dwg file 101
Rotate Scene
object by a minute angle 842 pan 824
object in 3D 846 rotate 824
object with the keyboard 842 zoom 824
objects during animation 932 schedule
snap to an angle 846 example 386
Rotate scene, with the mouse 824 Schedule, production process 386
Rotation Search
Chart, text box 643 lists interactively 762
define for object in 2D 592 lists manually 762
Rotation Animation, accomplish 932 lists with methods 761
Rotation of an Object 592 object in Frame by typing its name 111
Routing plan 145 Segments
Row change shape of 508
cut 751 Select All
delete 751 button for lists 754
Row header button in table 748
enter in dialog 758 button on context menu 748
Row index Select all objects in the Frame window 110
enter in dialog 758 Select object 110
Rule-based settings in Frame by typing its name 111
using 582 Select Objects, in 3D 840
Run Select rule 582
the simulation 66 Sensor
open dialog of 254
Sensor control
S work with 673
s3d graphic 850 Sensors
Sample mode modeling 250
Chart 636
Index-14
Set Colors 691 Simulation concepts 1
Set Default Colors 690 Simulation experiment, execute 571
Setting a station up 183 Simulation model
Setting the format of columns and rows 760 animate 589
Settings creating 61
tab of EnergyAnalyzer 689 Simulation object
Set-Up add animations to 903
matrix type distribution 186 how to create 900
select options 183 Simulation project, implement 4
select time 186 Simulation run
station 183 view results of 67
Set-up a station according to user-defined attribute 148 Simulation study
Set-up time execute simple with ExperimentManager 573
define in formula 147 how to define 2
Shape 870 implement 4
attach in 3D viewer 876 Size
create in 3D viewer 870 change part of in 3D 341
delete 872 Sloped objects 910
Shift Snap to Grid, deactivate with Alt 503
enter name, days and time 382 Socket
Shift System, modeling 380 work with 773
Shift+Ctrl, change size of icon 646 Source
ShiftCalendar create parts with 132
use to model shift system 380 example of complex in 3D 914
Shifts produce parts with a sequence table 150
model non-working times 383 Space Navigator 824
stations controlled by ShiftCalendar 385 Sphere
Show scale, example 885
contents of Frame in class library 86 Spline chart 642
Show Class Library 38 Spline with Markers 642
Show Console 38 SQL database, exchange data with 723
Show Toolbox 38 SQLite
Shrink wrapper, model a 462 work with 723
Simple simulation model 64 Stacked Areas 642
Simulation 1 Stacked Bars 642
defined 1 Stacked Columns 642
event-oriented 2 Standard transfer behavior
prepare data for 564 use 155
run 66 Start
time-oriented 2 experiment run 575
why use 3 Start at successor 1
Index-15
select strategy 167 Switch cameras 939
Start-Tangentialwinkel 503
State graphics
illustrated 895
T
show at front of machine 896 Tab
show on pole 899 how to add to Tab Control in Dialog 800
Static data 565 Tab Control, how to add to Dialog 799
Static parameters 581 Table
Static Text Box navigate in 753
how to add to Dialog 791 TableFile
Statistics open as dialog window in foreground 771
different ways of showing 636 Tables
plot data 638 cursors 761
show as chart 636 Tabs
show as histogram 637 change order in Dialog 800
show as XY Graph 639 Tangential angle
show values with Display 657 in 2D 502
show values with report 650 Tangentialwinkel, Start 503
showing in MS Excel 659 Target Control
showing with the Chart 630 pick-and-place robot, example 427
view 597 Terminate curve mode 500
Statistics Wizard 632 Text
DataFit 565 add to background of Frame 103
described 632 Chart 650
Step-by-Step Help 7 Text box, how to add to Dialog 791
Stochastic data 565 Textured Plate
Store how to create 873
model a warehouse 213 Three-button mouse 821
Straight segment Tilted objects 910
insert in 2D 499 Times
insert in 3D 928 how to enter 189
Structure your simulation model 82 To
Subclass Chart 649
create your own 84 Toolbar
described 70 add to Toolbox 93
Sublist copy objects to another 94
create in list 763 Toolbox
Subtable add objects to 94
create in table 763 change order of buttons 94
Successor 118 working with 93
defined 118 Tooltip
showing sensor information 178
Index-16
stacking order of parts in Frame 112 using 848
Top-down strategy 63 Unload parts 175
Track Unplanned
model with 520 control, example 390
Tractor Update Class Library
example of how to define 555 how to use 93
Train, load with portal crane 544 when to use 91
Transfer update, SQL instruction 721
parts from station to station 155 User-defined attribute
parts using an observer 254 create during the simulation 271
TransferStation User-defined attributes
example 175 how to define 269
Transitions 116 User-defined context menu
Transparent how to create 105
make icon 594 User-defined index
Transport system column, example 755
model 496 User-defined menu
model with Track and Transporter 520 how to create 105
Trigger User-defined objects 867
use to create parts 143 User-defined ribbon tab
Tugger trains how to create 105
model 555 Using
Turnplate EventDebugger 122
model a shrink wrapper 462 lists 755
model with 459
Turntable
model with 468
V
Tutorial 8 Value
work through exercises 8 grid lines 649
work with online 6 Vector graphics
Type draw onto background of Frame 103
grid lines 649 Video
Types of objects 61 play 943
record 942
recording 940
U set up scene 940
Unequal to Video compressor 942
AttributeExplorer 817 Video Settings
ExperimentManager 584 how to select 941
Ungroup View
objects in 3D viewer 845 control in 3D Viewer 830
Uniform scaling scene from different sides 825
Index-17
Viewer windows XY Arrows chart 643
described 38 XY Graph
work with 39 Chart type, using 639
Viewing and visualizing statistics 597 show statistics with 639
Viewing the results of the simulation run 67 XY Line chart 643
Visibility 889 XY Points chart 643
VRML graphic 850
VRML, use graphic 850
Y
Yellowish green, selected graphic in 3D 902
W ySelf, access row in table in formula 767
Warehouse, model with a Store 213
Watch mode
Chart 636
Z
Watchable Z
Chart 636 dimension in 3D 910
Width of sankey streams 694 z3D_lowerSurface 687
Window types 37 Zoom
Windows, types of in 2D 37 object in 3D 843
Work plan 145 Zoom scene with the mouse 824
Work schedule 145
Worker
check statistics 613
how to model 312
incline 349
model with 312
Worker Chart
example of using with Workplace 365
Worker who carries parts
in 3D, model 338
model in 2D 324
Working with
lists and tables 753
tables 754
Working with objects in the Frame window 110
Workplace
model picking up and depositing times 350
X
xSelf, access column in table in formula 767
XY Area 643
Index-18