Professional Documents
Culture Documents
Contact: www.automationml.org
Related documents
[1]
[2]
[3]
[4]
11
Introduction
1.1
Intelligent devices with both behaviour and sequencing, e.g. robots or conveyors.
AutomationML provides a rich selection of typical logic description models for important phases of the
engineering process and data. These models are:
Sequence Funktion Charts (SFCs) for executable PLC programs including a mapping to real
control hardware
1.2
AutomationML uses one common data model to describe both types of logic information, namely
Sequential Function Charts (SFC) as one of the PLC programming languages defined in IEC 61131-3
[IEC61131-3]. Thus, transformation rules to and from SFCs out of various input formats are essential
parts of the AutomationML logic concept.
Complete logic representations are stored in external documents, while the top-level format contains
selected published information only. Target data format for logic information is PLCopen XML.
To store a given logic description in AutomationML it has to be translated to SFCs described by a
PLCopen XML representation strictly following the rules defined in this document.
12
Gantt chart
PERT chart
Impulse diagram
Intermediate
Modeling Layer
PLCopen XML
...
Specific models and charts
(Propriety data format)
Set of model
elements
XML
1.3
The second part of logic information covered by AutomationML is the interlocking description in
different level of detail belonging to an industrial plant or to single components.
AutomationML distinguishes between two different types of interlocking information. It reflects the two
main concepts:
Hereby, the cause represents the situation resulting in the need to interlock something. This case is
covered by the definition and description of signal groups. The effect to other groups of objects is
expressed by the definition, description, and association of component groups.
These relations between signal group and component group will express the relation between cause
and effect within an interlocking. In AutomationML different levels of detail are used to exchange these
logical interlocking conditions. Therefore, AutomationML provides common rules and mechanisms to
store different interlocking models for important phases of the engineering process.
AutomationML uses two concepts to store interlocking description. To describe signal group and
component group the basic AutomationML group concept is used. This concept exploits fundamental
CAEX capabilities and enables an integration of the necessary information within the AutomationML
top level documents. To express the relation between both types of groups and to express the internal
logical relation within the groups Function Block Diagrams (FBD) of the IEC 61131-3 are used. They
are stored in PLCopen XML documents similar to behaviour descriptions.
For the import of an interlocking description, a tool has to interpret according to its use case the signal
and component groups within the top level description or the FBD description within the refrenced
PLCopen XML documents. Of course it is possible to use both concepts in combination.
13
This document gives an introduction to the handling of logic information in AutomationML and
describes basic concepts and application rules for storing and reading different kinds of logic
information using AutomationML.
After a brief introduction chapter one presents the problem of storing logic information out of different
input models and charts within one common AutomationML logic description.
Chapter 2 describes the logic concepts with the corresponding logic models and charts considered in
AutomationML.
The Intermediate Modelling Layer (IML) as basement for a transparent mapping of logic models to the
target logic data format - PLCopen XML- is introduced in chapter 3.
In the following chapter 4 the detailed transformation rules necessary to transform IML described logic
models to the target format PLCopen XML are specified.
The complex transformation rules for the logic input formats Gantt chart, PERT chart, Impulse
diagrams and State charts to IML are defined in chapter 5.
Chapter 6 starts with a short overview about the AutomationML Top Level Architecture. This is used
for as basis for the detailed description of the mechanisms to link AutomationML logic description into
the top level format.
Finally the document closes with the AutomationML specification of the AutomationML interlocking
description in chapter 7.
1.5
The AutomationML top-level architecture provides the ability to store all the different facets of the plant
engineering information including plant topology, geometry, kinematics, behaviour, references and
relations [1].
The international standard CAEX (Computer Aided Engineering Exchange) according to IEC 62424 is
a neutral data exchange format for storing hierarchical object information and properties [IEC62424].
PLCopen XML is a vendor-neutral data exchange format for the storage of PLC program information
according to IEC 61131-3 [PLCopen2010].
The international standard IEC 61131-3 specifies five programming languages for the implementation
of programs for programmable logic controllers (PLC) [IEC61131].
The COLLADA standard has been developed for the vendor-neutral data exchange for 3D graphical
assets [Collada2010].
Unified Modeling Language (UML) is a standardized general-purpose modeling language in the field of
software engineering. It is created by, the Object Management Group [UML2010].
14
2.1
Overview
For logic descriptions, AutomationML covers data of different tools and disciplines, and supports
different phases in engineering with different levels of detail. AutomationML simplifies the engineering
of production systems from the first engineering steps such as plant design to final commissioning of
complete systems. Thus, different types of logic information belonging to a production system or to
single parts have to be stored. This variety of information can be differentiated into two main concepts,
namely sequencing and behaviour, but may overlap depending on the point of view and utilization of
elements in AutomationML:
The two concepts are typically used within AutomationML in the following contexts:
1. Uncontrolled behaviour of a single mechatronical unit:
An example of this type is the behaviour of a gripper. The interfaces of this element are
required for triggering the behaviour or signaling its states. In most cases, they represent the
same signals as the ones of the real physical element.
2. Sequences of cells or plants:
Sequences of cells or plants typically are descriptions of subsequent actions as high-level
input for PLC programming, e.g. in form of Gantt charts. They are normally bound to
compound elements such as a cell or controller. Interfaces are required for interaction with
other elements of the logic description, and consist of real signals or simplifications of these
signals. The evolution of sequences starts with a high level of abstract description of required
operations of a larger scale unit (cell, line, plant etc.), and ends with executable programs,
typically with several refinements in between.
3. Behaviour and sequencing of intelligent devices:
Intelligent devices can have both behaviour and sequencing. From an external view device
programs can be controlled by means of behaviour. From an internal view single programs
could be described as sequences. An example of this combined type is the behaviour of a
robot realized by programs interacting with a PLC as overall cell controller. It is important to
note that this example can be interpreted as both behaviour or sequencing, depending on the
point of view.
Mechatronical Units with:
Project
sequencing
AutomationML Objects with Logic Description
Station
Reference
behavior
Sequencing
sequencing/behavior
Sequencing
Robot
Behavior
Gripper
Behavior
Device
15
Gantt charts are typically used to define sequences of operations during the first planning phases.
PERT charts are used in a similar way, but can additionally express complex timing conditions of
processes.
Impulse diagrams allow to describe sequences in detail and to introduce real signals and additional
conditions.
SFCs can be used to describe complex sequences with loops and conditional execution; in later
engineering phases SFCs can describe executable PLC programs including mapping to real
control hardware.
The logic description within AutomationML is designed to be extensible for further models.
2.2
Gantt Charts
Gantt charts are a graphical representation of discrete event models typically used to describe the
order and execution time of activities, which are represented as bars, on a high level of abstraction.
They are used within early plant engineering phases to represent the timing of manufacturing
processes.
The main information stored within Gantt charts are start and end times of bars and
predecessor/successor relations among bars. Hence, the main modeling means of Gantt charts are:
Usually Gantt charts enable the modeling of half ordered sets of sequential and concurrent running
activities. Thereby, Gantt charts enable the modeling of an AND divergence and convergence of
control flows. They do not provide modeling means for the modeling of alternatives or cycles.
Gantt charts have no fixed time scale, i.e. it is possible to represent the start and end points of bars
with respect to a global clock but also with respect to several local clocks started by end dates of bars.
Nevertheless, the most used version is the global clock which is also supported by AutomationML.
An example of a Gantt chart is given in Figure 3. It describes the processes of transport of a work
piece and its machining by a robot within a cell.
Sequence 2
Id
1
Handover to HTR002
2
Move to Lift Position
3
Lift skid
4
Lower skid
5
Move to end of 110HTR002
6
Initialise Robot 1
7 Execute Manufacturing Robot 1
8
Postprocess Robot 1
9
Initialise Robot 2
10 Execute Manufacturing Robot 2
11
Postprocess Robot 2
1
2
7
4
3, 6
7
6
7, 9
10
0
4
7
23
27
0
9
18
6
18
23
4
3
2
4
7
6
9
4
4
5
3
10
15
20
25
30
35
40
4
7
9
27
34
6
18
22
10
23
26
2.3
PERT Charts
PERT charts belong to the group of network plans. They are used to describe and analyze temporal
relations of the execution of a set of interdependent nodes. Network plans are applied within early
16
45
50
Nodes with earliest and latest start time point, earliest and latest end time point, duration, as well
as delay
Generally, the ordering relations of network plans permit the following rules for two nodes to be
defined:
1. End-start relation: Node 2 starts after the end of node 1.
2. Start-start relation: Node 2 starts after the start of node 1.
3. Start-end relation: Node 2 ends after the start of node 1.
4. End-end relation: Node 2 ends after the end of node 1.
Since only end-start relations are commonly used in PERT charts, AutomationML supports only this
type of ordering relation.
Usually, PERT charts enable the modeling of concurrent nodes, i.e. the modeling of an AND
divergence and convergence of control flows. As Gantt charts, they do not provide means for the
modeling of alternatives or cycles.
The following figure shows an example of a PERT chart.
0
Handover to HTR002
1
23
12
18
31
18
24
24
30
10
18
23
23
26
Execute Manufacturing
Robot 2
24
31
27
36
36
Postprocess Robot 2
31
34
22
12
24
26
Postprocess Robot 1
12
4
Lower skid
Initialse Robot 2
18
2
Lift Skid
Execute Manufacturing
Robot 1
Initialse Robot 1
4
35
17
45
Impulse Diagrams
Impulse diagrams are used to describe the temporal course of states of system components together
with signals among them to activate state changes. To describe the value sequences and relations of
signals over time, a global timescale or internal clocks of the components can be used.
Some conventions are made for the naming of modeling elements of Impulse diagrams as illustrated
in Figure 5:
An object within the diagram representing a signal or state of an mechatronical unit with different
possible values will be named a resource. In the Impulse diagram each resource will be
represented by a set of rows indicating possible states of the resource.
A resource can attain resource states, e.g. indicating different discrete values of an associated real
I/O signal or variable. Changes of the state of resource are named resource state changes.
A sequence of resource states and resource state changes in the diagram is named a resource
state flow. Remaining in a resource state is indicated by horizontal line; resource state changes are
visualized by lines connecting the predecessing and successing resource state.
Signals in the Impulse diagram are links between resource state flows representing
dependencies. When entering a new resource state, signals can trigger state changes of another
resource (internal signal). Resources can also fire internal signals when leaving states after a given
duration.
The timeline within an Impulse diagram represents a time scale with discrete points in time that is
used globally within the system. At any point in time, signals can be fired from the timeline (external
signal).
Timeline
State
Resource
Resource
Pos1
Device 1
10
Pos2
Pos3
High
Device 2
Signal
Low
Resource
State Change
State
Pos1
Resource 1
A
B
10
15
E
E
Pos2
B
Pos3
Pos1
Resource 2
Pos2
Pos1
Resource 3
Pos2
Pos1
Resource 4
&
Pos2
Pos1
Resource 5
Pos2
External signals have an origin outside of resource state flows in the diagram; thus, they are not
bound to resource state changes, but may occur at any point in time. They are fired by the timeline.
A special case is a start signal occurring at time point zero (A in Figure 6).
Internal signals result from the end of a resource state change or from leaving a resource state
after a pre-defined duration and may trigger other resource state changes (B in Figure 6).
One signal can trigger several resource state changes of different resources (C in Figure 6).
Resource state changes can depend on more than one signal. These signals are in a logical
relation, but need not occur at the same point in time (D in Figure 6).
Signals resulting of the end of a resource state change can be consumed by the corresponding
resource internally, e.g. to trigger a subsequent resource state change (E in Figure 6).
Resource state changes can also be triggered by the resource internally without signals, e.g. by an
internal clock (F in Figure 6).
The delay between two subsequent external signals is defined as signal time delay (std)
The duration of a resource state change or a predefined duration within a resource state is defined
as time delay (td)
std
Resource
State
t
Pos1
Device 1
Pos2
td1
td2
td3
tdn
2.5
Sequential Function Charts (SFC) are one of the programming languages of IEC 61131-3. They have
been developed to provide means for easy implementation of sequences of operations within a
controlled system.
Therefore, SFCs serve for the representation of state based operation sequences with a variety of
temporal conditions to control the operation execution timing and provide basic rules for the
development of control programs.
The main but not exhaustive modeling means of SFCs are:
Steps represent stable situations within the system enabling the execution of operations.
19
Actions represent the execution of operations. They can be associated to one or more than one
step grouped within action blocks. Actions may have timing conditions controlling the time point
and duration of execution of the covered operations.
Convergences and divergences represent the selective or parallel threading of the control flow
within a SFC.
Timing conditions represent temporal conditions of actions related to the activity of steps. Thereby
it is possible to execute an activity:
o
20
A1
T1
S2
Step
D
17
D
20
A2
A3
Activity
T2
Simultaneous Divergence
S3
L
25
A4
S4
SL
15
SL
10
SD
5
SD
0
LatestEnd._A5
EarliestEnd._A5
LatestStart._A5
A5
Selection Divergence
T3
S5
T4
L
10
A6
S6
T5
T6
D
5
L
15
Delay._A7
A7
Selection Convergence
S7
A8
Simultaneous Convergence
T7
S1
Transition
2.6
State Charts
S1
A State chart is a discrete event model based on the work of Harel [Harel1988]. They are widely
known as part of the Unified Modeling Language (UML). Usually they are used to describe the
behaviour of a system in terms of its reachable state space. Hence, within the engineering chain of
manufacturing systems they are mostly applied during the design of system components to represent
their uncontrolled behaviour. Within the simulation and verification of controlled systems they typically
serve as counterpart of the controller to close the control loop.
The main modeling elements of State charts are states, transitions, activities, guards and events as
trigger conditions. In addition State charts enable the design of hierarchical and concurrent acting
systems by providing means for the modeling of concurrent sub-states.
21
States representing stable situations within the system enabling or requiring the execution of
operations. Initial state and terminal state are special states.
Actions associated to states representing operations which are executed at the moment of the
state entry, during the duration of the state, or at the moment of state exit.
State transitions representing the control flow over states. Associated guards and events are used
as trigger conditions.
Actions associated to state transitions representing operations made during the state transition.
Note: The AutomationML concept for logic description implements a mechanism for the modelling
of run to completion. This allows to store State charts into the target format PLCopen XML.
Events representing external signals and driving the control flow within the modeled system.
States may contain sub states; these are organized in one or more concurrent State charts. Thus,
State charts can have a state hierarchy.
State transitions may connect states of different levels of the state hierarchy.
History connectors represent the last recent state valid within a State chart. They replace all states
of a State chart region and can be the end point of a state transition but not its beginning.
Condition connectors represent a state transition split expressing a decision between two or more
states depending on its attached events and guards.
State 1
Event 4 / [Guard 5]
H
Event 4 / [Guard 4]
State 2
State 1.1
State 1.3
Event 2
[Guard 6.1]
Event 2
Event 1 / [Guard 1]
State 1.2
C
Event 5
Event 3 / [Guard 3]
Guard 2 / Activity 1
State 1.3
[Guard 6.2]
Event 6
[Guard 6]
State 3
Entrance Activity 2
Activity 3
Exit Activity 4
State internal charts can be distinguished with respect to its level of execution completeness at the
moment of chart drop out. It is possible to define that a chart can be left only if its execution has
reached a terminal state.
22
3.1
Overview
The purpose of the Intermediate Modeling Layer (IML) is to decouple the target format PLCopen XML
from various input and output data formats. It is quite comparable to SFCs of the IEC 61131-3, but
extended to support further models and diagrams. The IML shall be used for the description of
sequencing and behaviour of different elements and not for further information like interlocking
information.
An IML system consists of elements with their properties and relations, and rules for the definition of
valid IML models as depicted in Figure 10.
Jump j
j.Pre
j.ID
j.Pre
j.State
SimultaneousDivergence simDiv
j.Pre
simDiv.ID
State s
Activity a
a.ID
a.Name
a.Init
a.Current
a.Terminal
a.Time
a.Formula
a.Pre
s.Pre
s.ID
s.Name
s.Init
s.Current
s.Terminal
simDiv.Pre
SelectionConvergence selCon
s.Pre
selCon.ID
simCon.Pre
selDiv.Pre
SelectionDivergence selDiv
s.Pre
a.FiredEvents
st.Pre
st.Guard. StateTransition st
ConsumedEvents
st.ID
st.Name
st.Guard
st.Pre
st.Pre
simCon.Pre
simDiv.ID
SimultaneousConvergence simCon
simCon.ID
st.Guard.Boolean
Variable var
Event ev
ev.Name
var.ID
var.Name
var.Type
Var.Content
var.SIUnit
var.InitialValue
var.Address
Comment com
com.Content
All entities
com.Pre
h.Members
Header h
h.ID
h.Name
ad.Pre
addData ad
ad.ID
ad.Type
ad.Name
23
InitialInitial
StateState
ID= ISID_20090303_001,
Init=TRUE, Current=FALSE,
Terminal =FALSE
Transition 1
ID= ISID_20090303_002,
Guard.Var=a,[2;17],
Event
Variable
ID=ISID_20090303_013
Name=e
ID= ISID_20090303_011,
Name=b, Type=Boolean,
InitialValue=FALSE
Variable
Variable
ID= ISID_20090303_010,
Name=a, Type=Int,
InitialValue=9
ID= ISID_20090303_012,
Name=c, Type=Boolean,
InitialValue=TRUE
Intermediate State
Action 1
ID= ISID_20090303_003,
Init=FALSE, Current=TRUE,
Terminal =FALSE
SelectionDivergence
Transition 2
ID= ISID_20090303_004,
Guard.Boolean=b,
ConsumedEvents={e}
ID= ISID_20090303_009
Transition 3
ID=
ISID_20090303_006,
Guard.Boolean=c,
ConsumedEvents={e}
Terminal State
JumpInitialState
ID= ISID_20090303_007,
State=InitialState
3.2
24
3.3
The IML elements own properties and relations to other elements which are described in this chapter.
3.3.1
conditions.
Each state transition can have the following relations:
4. st.Pre is the set of predecessors of st covering the references to predecessor states,
simultaneous convergences and selection divergences.
3.3.4
26
27
ad.Pre represents the unique predecessor of ad of any type of element of an IML system.
28
4.1.1
Overview
The XML data format PLCopen XML [PLCopen2010] specified by the PLCopen association has the
purpose to store and exchange all relevant programming information for IEC 61131-3 PLC
programming projects. Thereby, it covers the exchange of the five IEC 61131-3 programming
languages, graphical information for the graphic based programming languages and the structure of
programming projects as well as supplier specific information. These information can be integrated
into PLCopen XML documents via an own XML schema for the definition of the additional data.
AutomationML uses the programming language Sequence Function Charts (SFC) and its
representation in PLCopen XML to store all relevant logic information. Therefore, the following
sections provide the specification of the AutomationML additional data schema and mapping rules for
the IML systems to PLCopen XML documents.
4.2
4.2.1
Additional Data
PLCopen XML addData
One principal of the integration of logic data into AutomationML with PLCopen XML is the definition of
AutomationML specific information and its integration in the data format.
PLCopen XML implements such a mechanism to integrate vendor specific data by introducing new
schema elements addData and addDataInfo.
The element addDataInfo is used to specify the vendor specific data with a name and an URI (uniform
resource identifier) for the corresponding addData schema in a unique way to identify the additional
data element content. It enables tools to interpret and process the vendor specific data. From version
2.0, PLCopen XML allows to integrate multiple vendor specific schemas. For each schema one
instance of addDataInfo is used within the <contentHeader> element to specify this necessary
information globally for the PLCopen XML document.
Then vendor specific information can be stored in <addData> elements at any place in the document,
following the schema as determined in the <addDataInfo> element.
4.2.2
As indicated AutomationML exploits the additional data mechanisms of PLCopen XML to integrate
vendor specific data for storing information required by AutomationML but not covered by the
PLCopen XML specification. Within IML systems these information are expressed by single properties
of different IML elements and the addData element. Hence, AutomationML specifies a schema
covering the structure to store the content of these IML addData elements. Within the following section
this schema is defined.
29
properties
children
content
complex
30
type
properties
children
aml:TimeInfoType
isRef
minOcc
maxOcc
content
complex
aml:Duration
aml:Delay
aml:EarliestStart
aml:LatestStart
aml:EarliestEnd
aml:LatestEnd
xs:decimal
isRef
minOcc
maxOcc
content
simple
xs:decimal
isRef
minOcc
maxOcc
content
simple
31
xs:decimal
isRef
minOcc
maxOcc
content
simple
xs:decimal
isRef
minOcc
maxOcc
content
simple
xs:decimal
isRef
minOcc
maxOcc
content
simple
xs:decimal
isRef
minOcc
maxOcc
content
simple
32
facets
restriction of xs:string
isRef
minOcc
maxOcc
content
simple
enumeration
stateChart
enumeration
impulseDiagram
enumeration
ganttChart
enumeration
pertChart
enumeration
sequentialFunctionChart
properties
children
isRef
minOcc
maxOcc
unbounded
content
complex
aml:DefinitionName aml:Duration
xs:string
isRef
content
simple
xs:decimal
isRef
content
simple
xs:boolean
isRef
minOcc
maxOcc
content
simple
properties
children
isRef
minOcc
maxOcc
content
complex
aml:POURef
properties
isRef
minOcc
maxOcc
unbounded
34
facets
restriction of xs:string
isRef
minOcc
maxOcc
content
simple
enumeration
higherLevelState
enumeration
historyConnector
enumeration
conditionConnector
enumeration
stateForActivity
facets
restriction of xs:string
isRef
minOcc
maxOcc
content
simple
enumeration
entryAction
enumeration
doAction
enumeration
extitAction
xs:string
isRef
minOcc
maxOcc
content
simple
35
properties
children
isRef
minOcc
maxOcc
content
complex
isRef
isRef
minOcc
maxOcc
isRef
minOcc
maxOcc
36
type
restriction of xs:string
properties
facets
isRef
minOcc
maxOcc
content
simple
enumeration
initial
enumeration
current
enumeration
terminal
type
restriction of xs:string
properties
facets
isRef
minOcc
maxOcc
content
simple
enumeration
initial
enumeration
current
enumeration
terminal
To make use of the AutomationML additional data schema, it has to be declared within the PLCopen
XML document according to the definition of PLCopen XML 2.0. This declaration is depicted in Figure
12.
37
Figure 12: Declaration of the AutomationML additional data schema within PLCopen XML
The following example depicts the usage of additional data within a PLCopen XML document. The
additional information is attached to an action, whether this action is interruptible.
Figure 13 shows how this additional information is attached to the action element.
4.3
4.3.1
The translation of IML to PLCopen XML is based on the similarity of IML and SFC following the IEC
61131-3 and the capability of PLCopen XML to store SFCs. Within this translation process the
different IML elements and their parameters and relations are, if possible, translated one by one to
SFC elements and stored as such with PLCopen XML. Information required by PLCopen XML but not
given in IML is generated in a unique way. Information given in IML but not directly expressible by
PLCopen XML is mapped to additional data as given in section 4.2.
38
Each IML system, i.e. its header and its elements, is mapped to one POU and corresponding sub
elements.
Each activity element of IML is mapped to one action element within an action block element.
Each selection divergence element of IML is mapped to one selection divergence element.
Each selection convergence element of IML is mapped to one selection convergence element.
Each simultaneous divergence element of IML is mapped to one simultaneous divergence element.
Each addData element of IML is mapped to one element of the AutomationML addData schema
according to the PLCopen XML 2.0 specification. However, this is an extension to IEC 61131-3
SFCs.
39
An IML header h with its relations shall be mapped to PLCopen XML <pou> element.
The mapping of properties is straightforward and formally described in Table 26.
<pou pouType=program>
h.ID
<pou globalID=h.ID>
h.Name
<pou name=h.Name>
40
</pou>
An IML state s with its relations shall be mapped to PLCopen <step> element.
The mapping of properties is straightforward and formally described in Table 27.
The s.Pre relation is mapped to <connectionPointIn> sub objects of <step>.
<step>
s.ID
s.Name
s.Init
<step InitialStep=s.Init>
If the value of s.Current is true, the mapping shall be done as
follows
s.Current
<step>
<addData>
<data name=http://www.automationML.org/AML_addData.xsd>
<AutomationML>
<StateStatus>
current
</StateStatus>
</AutomationML>
</data>
</addData>
</step>
If the value of s.Current is false, no mapping shall be done.
If the value of s.Terminal is true then the mapping shall be done
as follows
s.Terminal
<step>
<addData>
<data name=http://www.automationML.org/AML_addData.xsd>
<AutomationML>
<StateStatus>
terminal
</StateStatus>
</AutomationML>
</data>
</addData>
</step>
If the value of s.Terminal is false, no mapping shall be done.
41
s.Pre
IML Example
s
s.ID = ISID_20090303_003
s.Name =
IntermediateState
s.Init = false
s.Current = true
s.Terminal = false
s.Pre =
{ISID_20090303_002}
An IML state transition st is mapped to PLCopen XML <transition> element in the corresponding
SFC.
If st.Guard is not empty, st is addtionally mapped to a <transition> within the transitions part of the
same <pou>.
The properties and relations are mapped as follows:
st.ID is mapped to
the globalId parameter of <transition> within the <SFC> element of the <pou>
element
st.Name is mapped to
the name attribute of the <reference> element within the conditions part of
<transition> of the <SFC> part of the <pou> element.
42
st.Guard is mapped to a <body> element with its specific structure within the <transition>
element in the <transitions> element of the <pou> element.
st
<transitions>
<transition>
</transitions>
<SFC>
<transition>
<SFC>
st.ID
<transitions>
<transition globalId=st.ID>
</transitions>
<SFC>
<transition localId= someIDValue globalId=st.ID>
<SFC>
where someIDValue is a valid value for a local ID.
st.Name
<transitions>
<transition name=st.Name>
</transitions>
<SFC>
<condition>
<reference name="st.Name" />
</condition>
<SFC>
the Guard element contains st.Guard.Boolean
st.Guard.ConsumedEvent is the set {e1, , en} then
IF
st.Guard
<transitions>
<transition>
<body>
<ST>
<html xmlns="http:// www.w3.org/1999/xhtml">
<div xmlns="http:// www.w3.org/1999/xhtml"
xml:space="preserve" wsName="st.ID ">
IF (st.Guard.Boolean AND e1 AND en)
<br />
THEN st.Name:=TRUE;
<br />
e1:=False;
<br />
<br />
en:=False;
<br />
43
and
and
<transitions>
<transition>
<body>
<ST>
<html xmlns="http:// www.w3.org/1999/xhtml">
<div xmlns="http:// www.w3.org/1999/xhtml"
xml:space="preserve" wsName="st.ID ">
IF (st.Guard.Value.low <= st.Guard.Value.var AND
st.Guard.Value.var<= st.Guard.Value.high AND e1 AND
en)
<br />
THEN st.Name:=TRUE;
<br />
e1:=False;
<br />
<br />
en:=False;
<br />
ELSE st.Name:=FALSE;
<br />
END_IF;
<br />
</div>
</html>
</ST>
</body>
</transition>
the Guard element contains st.Guard.Formula
st.Guard.ConsumedEvent is the set {e1, , en} then
If
<transitions>
<transition>
<body>
<ST>
<html xmlns="http:// www.w3.org/1999/xhtml">
<div xmlns="http:// www.w3.org/1999/xhtml"
xml:space="preserve" wsName="st.ID ">
IF (st.Guard.Formula AND e1 AND en)
<br />
THEN st.Name:=TRUE;
<br />
e1:=False;
<br />
44
and
st.Pre
IML Example
st
st.ID =
ISID_20090303_006
st.Name = Transition3
st.Guard.Boolean = c
st.Guard.ConsumedEvents
= e
st.Pre
{ISID_20090303_009}
second an <action> element within the <actions> part of the <pou> element resulting from the
IML system where a is a member.
a.ID is mapped to the globalId parameter of <action> within the <actions> part of the POU,
and the globalId parameter an <action> within the action block of the <SFC> part.
a.Name is mapped to the name parameter of <action> within the <actions> part of the POU, and
to a reference name of an <action> within the action block of the <SFC> part.
a.Formula and a.FiredEvents are mapped either to a body with a specific structure of an
<action> object within the <actions> part or to a Boolean variable depending on the existence of
All other timing information is directly mapped to corresponding timings of action elements. As
PLCopen SFC actions only have one qualifier that can be used for timing information, addData
information are necessary to support more complex timing information and used to express these.
Zero time values shall not be integrated in the PLCopen XML representation.
The a.Pre relation is mapped to <connectionPointIn> sub objects of <actionBlock> with the
element IDs given in a.Pre within the localRefID parameter of connection objects.
46
<actions>
<action>
</actions>
<SFC>
<actionBlock>
<action>
</actionblock>
</SFC>
a.ID
<actions>
<action globalId=a.ID>
</actions>
<SFC>
<actionBlock>
<action localId= someIDValue globalId=a.ID/>
</actionBlock>
<SFC>
Where someIDValue is a valid value for a local ID.
a.name
<actions>
<action name="a.Name">
</actions>
<SFC>
<actionBlock>
<action>
<reference name="a.Name"/>
</action >
</actionBlock>
<SFC>
If the value of a.Init is true then the mapping is done as follows
a.Init
<SFC>
<actionBlock>
<action>
<addData>
<data name=http://www.automationML.org/AML_addData.xsd>
<AutomationML>
<ActionStatus>
init
</ActionStatus>
</AutomationML>
</data>
</addData>
<action>
</actionBlock>
</SFC>
If the value of a.Init is false, no mapping shall be done.
Recommendation: Multiple vendor specific information can merged
into one addData element.
47
a.Current
<SFC>
<actionBlock>
<action>
<addData>
<data name=http://www.automationML.org/AML_addData.xsd>
<AutomationML>
<ActionStatus>
current
</ActionStatus>
</AutomationML>
</data>
</addData>
<action>
</actionBlock>
</SFC>
If the value of a.Current is false then no mapping is done
Recommendation: Multiple vendor specific information can merged
into one addData element.
If the value of a.Terminal is true then the mapping is done as
follows
a.Terminal
<SFC>
<actionBlock>
<action>
<addData>
<data name=http://www.automationML.org/AML_addData.xsd>
<AutomationML>
<ActionStatus>
terminal
</ActionStatus>
</AutomationML>
</data>
</addData>
<action>
</actionBlock>
</SFC>
If the value of a.Terminal is false, no mapping shall be done.
Note: If there is more than one reason to integrate an addData
element the information mapped to it is integrated in one addData
element following the AutomationML addData schema.
Recommendation: Multiple vendor specific information can merged
into one addData element.
48
a.Formula
<variable name="a.Name">
<type>
<Bool/>
</type>
</variable>
If a.formula or the set {e1,en} of a.firedEvents are NOT empty
the mapping is done as follows:
a.FiredEvent
<actions>
<action name="a.Name">
<body>
<ST>
<html xmlns="http://www.w3.org/1999/xhtml">
<div xmlns="http://www.w3.org/1999/xhtml"
xml:space="preserve" WsName=" a.Name ">
(*FiredEvent*)
<br />
e1:=true;
<br />
<br />
en:=true;
<br />
(*ChangedVariables*)
<br />
a.Formula
</div>
</html>
</ST>
</body>
</action>
</actions>
Note: Within action body the representing variable of a.FiredEvents
has to be set to True.
If the a.Time.Duration element is NOT empty then the mapping is
made as follows
<actionBlock>
<action qualifier="SD" duration=a.Time.Duration>
<addData>
<data name=http://www.automationML.org/AML_addData.xsd>
<AutomationML>
<Time>
<earliestStart>
a.Time
a.Time.Start.earliestStart
</earliestStart>
<latestStart>
a.Time.Start.latestStart
</latestStart>
<earliestEnd>
a.Time.End.earliestEnd
</earliestEnd>
<latestEnd>
a.Time.End.latestEnd
</latestEnd>
49
</delay>
</Time>
</AutomationML>
</data>
</addData>
</action>
</actionBlock>
If the a.Time.Duration element is empty then the mapping is
made as follows
<actionBlock>
<action qualifier="D" duration=a.Time.Delay>
<addData>
<data name=http://www.automationML.org/AML_addData.xsd>
<AutomationML>
<Time>
<earliestStart>
a.Time.Start.earliestStart
</earliestStart>
<latestStart>
a.Time.Start.latestStart
</latestStart>
<earliestEnd>
a.Time.End.earliestEnd
</earliestEnd>
<latestEnd>
a.Time.End.latestEnd
</latestEnd>
</Time>
</AutomationML>
</data>
</addData>
</action>
</actionBlock>
Note:
If
one
of
the
elements
a.Time.EarliestStart,
a.Time.EarliestEnd, and a.Time.Delay is empty, the corresponding
parts of the addData element will NOT be used.
Recommendation: Multiple vendor specific information can merged
into one addData element.
For each element el with local ID el.x of a.Pre one
connectionPointIn element will be created as follows:
a.Pre
<SFC>
<actionBlock>
<connectionPointIn>
<connection refLocalId="el.x" />
</connectionPointIn>
</actionBlock>
</SFC>
Note: For each element of a.Pre one connectionPointIn element
will be created.
50
IML Example
a
a.ID = ISID_20090303_008
a.name = Action1
a.Init = false
a.Current = true
a.Terminal = false
a.Formula = a:=true
a.FiredEvent = {e}
a.Time.Delay = 6
a.Pre={ISID_20090303_003
}
51
<jumpStep>
<jumpStep localId= someIDValue globalId=j.ID >
j.ID
<jumpStep targetName=j.State>
For each element el with local ID el.x of j.Pre one
connectionPointIn element will be created as follows:
<SFC>
<jumpStep>
<connectionPointIn>
<connection refLocalId="el.x " />
</connectionPointIn>
</jumpStep >
</SFC>
j.Pre
IML Example
j
j.ID = ISID_20090303_007
j.State = InitialState
j.Pre =
{ISID_20090303_006}
The
is
mapped
to
<connectionPointIn>
sub
objects
The element IDs in selDiv.Pre are stored within the localRefID parameter of connection objects.
The mapping is formally described in Table 35.
52
of
selDiv
<selectionDivergence>
selDiv.ID
<selectionDivergence
globalId=selDiv.ID>
someIDValue
localId=
selDiv.Pre
<SFC>
<selectionDivergence>
<connectionPointIn>
<connection refLocalId="el.x" />
</connectionPointIn>
</selectionDivergence>
</SFC>
Note: For each element of selDiv.Pre one connectionPointIn
element will be created.
IML Example
selDiv
selDiv.ID =
ISID_20090303_009
selDiv.Pre =
{ISID_20090303_003}
The
is
mapped
to
<connectionPointIn>
sub
objects
The element IDs in simDiv.Pre are stored within the localRefID parameter of connection objects.
The mapping is formally described in Table 37.
53
of
simDiv
<simultaneousDivergence>
simDiv.ID
simDiv.Pre
<SFC>
<simultaneousDivergence>
<connectionPointIn>
<connection refLocalId="el.x " />
</connectionPointIn>
</simultaneousDivergence>
</SFC>
Note: For each element of simDiv.Pre one connectionPointIn
element will be created.
IML Example
simDiv
simDiv.ID =
ISID_20090303_019
simDiv.Pre =
{ISID_20090303018}
The
is
mapped
to
<connectionPointIn>
sub
objects
The element IDs in selCon.Pre are stored within the localRefID parameter of connection objects.
The mapping is formally described in Table 39.
54
of
selCon
<selectionConvergence>
selCon.ID
<selectionConvergence
globalId=selCon.ID>
someIDValue
localId=
selCon.Pre
<SFC>
<selectionConvergence>
<connectionPointIn>
<connection refLocalId="el.x " />
</connectionPointIn>
</selectionConvergence>
</SFC>
Note: For each element of selCon.Pre one connectionPointIn
element will be created.
IML Example
selCon
selCon.ID =
ISID_20090303_20
selCon.Pre =
{ISID_200903030_57;
ISID_200903030_84}
The
is
mapped
to
<connectionPointIn>
sub
objects
The element IDs in simCon.Pre are stored within the localRefID parameter of connection objects.
The mapping is formally described in Table 41.
55
of
simCon
<simultaneousConvergence>
simCon.ID
simCon.Pre
<SFC>
<simultaneousConvergence>
<connectionPointIn>
<connection refLocalId="el.x " />
</connectionPointIn>
</simultaneousConvergence>
</SFC>
Note: For each element of simCon.Pre one connectionPointIn
element will be created.
ev
<variable>
<type>
<derivied name=event/>
</type>
</variable>
ev.ID
<variable globalId="ev.ID">
ev.Name
<variable name="ev.Name"/>
56
IML Example
ev
ev.ID =
ISID_20090303_013
ev.Name = e
var
<variable/>
var.ID
<variable globalId=var.ID>
var.Name
var.Type
var.Type
</type>
</variable>
var.initialValue
<variable >
<initialValue>
<simpleValue value="var.InitialValue" />
</initialValue>
</variable>
var.Address
<variable address="var.Address"/>
57
</variable>
</localVars>
</interface>
If the var.Content element has the value input the mapping is
made as follows:
<interface>
<inputVars>
<variable>
</variable>
</inputVars>
</interface>
var.Content
</variable>
</outputVars>
</interface>
If the var.Content element has the value inout the mapping is
made as follows:
<interface>
<inOutVars>
<variable>
</variable>
</inOutVars>
</interface>
Note: The default value for of var.Content is local. If the no value
is specified the mapping for the default value shall be done.
58
IML Example
var
var.ID =
ISID_20090303_010
var.Name = a
var.Type = INT
var.initialValue = 9
var.Address = empty
com
<documentation>
com.Content
<documentation>
<html xmlns="http://www.w3.org/1999/xhtml">
<p xmlns="http://www.w3.org/1999/
xhtml" xml:space="preserve">
com.Content
<br/>
</p>
</html>
</documentation>
Within each element el with local ID el.x of com.Pre one
<documentation> element will be created within the PLCopen XML
representation of el ows:
com.Pre
<SFC>
<el globalId=ID>
<documentation>
</documentation>
</el>
</SFC>
59
IML Example
com
com.Content = This is a
test IML system.
com.Pre ={
ISID_20090303_001}
add.Value
add.Pre
<SFC>
<el>
<addData>
</addData>
</el>
</SFC>
Note: For each element of add.Pre one <addData> element will be
created within the relevant elements represented by ID within
add.Pre.
60
IML Example
add
add.ID = n.a.
add.Type =
ActionStatus
add.Value = current
add.Pre=
{ISID_20090303_008}
61
5.1
Gantt Charts
5.1.1
Overview
Gantt charts are typically used to describe the order, i.e. sequence and concurrency, and execution
time of activities, which are named as bars in the following, on a high level of abstraction in early plant
engineering stages. The main stored information is: start time, end time, and duration of bars as well
as predecessor and successor relations between bars.
This section describes the basic concepts for representation of Gantt charts with IML elements. The
structure of the resulting IML model is derived from the Gantt chart according to the following
principles:
1. Gantt charts are mapped to IML Systems to support parallel bars, see chapter Start of a Gantt
Chart5.1.2..
2. Bars in Gantt diagrams shall be mapped to activities see chapter Start of a Gantt Chart5.1.3.
3. These activities shall be associated to states see chapter 5.1.3.
4. If there are no explicit relations between Gantt bars defined, i.e. they are concurrent, the order
of associated IML states is parallel, i.e. they have no ordering relation based on state-state
transition sequences see chapters 5.1.6 and 5.1.7.
5. If predecessor/successor relations between Gantt bars are described the resulting structure is
a sequence of IML states and state transitions see chapter 5.1.6 and 5.1.7.
6. For each SFC representing a Gantt chart, an initial state shall be created, followed by a state
transition with condition true as link to all further elements see chapter 5.1.2.
7. Each Gantt bar is represented by a state with two associated activities and a successor state
transition see chapter 5.1.35.1.3.
a. The first activity directly represents the time behaviour of the related Gantt bar and
may be delayed in execution in order to start synchronously to the appropriate Gantt
bar (see red line in Figure 15). Hence the activity will have a definition for its earliest
startpoint. The naming convention for this action is: DA_ + name of the Gantt bar.
b. The second activity is responsible for enabling the transition to synchronously
deactivate the state according to the end of the Gantt bar. Hence the activity will
contain a definition for the duration in order to delay the start of the activity and to
store it for synchronization reasons. The naming convention for this activity is: TA_ +
name of the Gantt bar.
Bar 1
t0
t1
t2
S_Bar 1
DA_Bar 1
TA_Bar
62
9 10
18
22 23
26 27
34
63
TRUE
D0
DA_Handover to HTR002
SD 4
TA_Handover to HTR002
S_Handover to HTR002
D0
DA_InitialiseRobot1
SD 6
TA_InitialiseRobot1
S_InitialiseRobot1
TA_Handover to HTR002
TA_InitialiseRobot1
D0
SD 3
D0
DA_InitialiseRobot2
SD 4
TA_InitialiseRobot2
S_InitialiseRobot2
TA_InitialiseRobot2
D0
DA_Lift skid
SD 2
TA_Lift skid
S_Lift skid
TA_Lift skid
SyS_ExecuteManufacturing
Robot1_1
SyS_ExecuteManufacturing
Robot1_2
True
S_ExecuteManufacturing
Robot1
D0
SD 9
DA_ExecuteManufacturing
Robot1
TA_ExecuteManufacturing
Robot1
TA_ExecuteManufacturingRobot1
D0
DA_PostProcessRobot1
SD 4
TA_PostProcessRobot1
S_PostProcessRobot1
SyS_ExecuteManufacturing
Robot2_1
SyS_ExecuteManufacturing
Robot2_2
TA_PostProcessRobot1
SyS_Terminal_1
True
S_ExecuteManufacturing
Robot2
D0
SD 5
DA_ExecuteManufacturing
Robot2
TA_ExecuteManufacturing
Robot2
TA_ExecuteManufacturingRobot 2
D0
DA_PostprocessRobot2
SD 3
TA_PostprocessRobot2
DA_LowerSkid
TA_LowerSkid
TA_LowerSkid
TA_PostprocessRobot2
SyS_Terminal_2
D0
SD 4
S_LowerSkid
S_PostprocessRobot2
D0
S_Move to end of 110HTR002
SD 7
DA_Move to end of
110HTR002
TA_Move to end of
110HTR002
TA_Move to end of
110HTR002
SyS_Terminal_3
True
TerminalStep
64
Initial
Step
true
Initial
Step
true
Initial
Step
true
Bar
Bar
IML Element
state s with
s.ID = <some ID>
s.Name = S_ + bar name
s.Init = false
activity a1 with
a1.ID = <some ID>
a1.Name = DA_ + bar name
a1.Pre = s.ID
activity a2 with
a2.ID = <some ID>
a2.Name = TA_ + bar name
a2.Pre = s.ID
state transition st with
st.ID = <some ID>
st.Name = T_ + bar name
st.Guard.Formular = a2.name
st.Pre = s.ID
S_ bar
name
DA_bar name
TA_bar name
T_bar name
65
Bar Startpoint
Bar Startpoint
IML Element
activity a with:
Case A:
(no predecessor bar)
a.Time.Start.Earliest = Bar.startpoint
Case B:
(one predecessor bar)
a.Time.Start.Earliest = Bar.startpoint predecessorBar.endpoint
Case C:
(more than one predecessor bar)
a.Time.Start.Earliest = Bar.startpoint maxpredecessorActivity
predecessorBar.endpoint
S_ bar
Dt
name
DA_bar name
TA_bar name
TA_bar name= 1
Case A: t=0
Case B: t= Bar.startpoint - predecessorBar.endpoint
Case C: t= Bar.startpoint maxpredecessorBar predecessorBar.endpoint
Table 53: Transformation of Gantt chart bar start point to IML elements
5.1.5
Bar Endpoint
Bar Endpoint
IML Element
activity a with:
Case A:
(no predecessor bar)
a.Time.Duration = Bar.endpoint
Case B:
(one predecessorBar)
a.Time.Duration = Bar.endpoint predecessorBar.endpoint
Case C:
(more than one predecessor bar)
a.Time.Duration = Bar.endpoint
maxpredecessorActivity
predecessorBar.endpoint
S_ bar
D tx
DA_bar name
SD t
TA_bar name
name
TA_bar name= 1
Case A: t= Bar.endpoint
Case B: t= Bar.endpoint - predecessorBar.endpoint
Case C: t= Bar.endpoint maxpredecessorBar predecessorBar.endpoint
Successor Bar
Successor Bar
IML Element
Case A:
(no or only one successor bar)
Do nothing
D tx
DA_bar name
SD ty
TA_bar name
name
TA_bar name= 1
66
Case B:
S_ bar
D tx
DA_bar name
SD ty
TA_bar name
name
TA_bar name= 1
Predecessor Bar
Predecessor Bar
IML Element
Case A:
(the only bar in diagram with no
predecessorBars)
state s with:
s.Pre = st.ID of the initial state transition
true
S_ bar
D t1
DA_bar name
name
SD t2
TA_bar name
TA_bar name = 1
Case B:
Initial
Step
Case B:
(no predecessor bar and at least one
other bar in the Gantt diagram with no
predecessor)
state s with:
s.Pre = simDiv.ID of
simultaneous divergence
the
initial
true
S_ bar
D t1
DA_bar name
name
SD t2
TA_bar name
TA_bar name = 1
Case C:
(only one predecessor bar and no other
bar with the same predecessor bar)
s.Pre = st.ID of the predecessor state
transition generated for the predecessor
bar
Case C:
D tx
DA_xx
S_xx
SD ty
TA_xx
TA_xx = 1
S_ bar
name
D t1
SD t2
DA_bar name
TA_bar name
TA_bar name = 1
67
Case D:
D tx
S_xx
SD ty
DA_xx
TA_xx
TA_xx = 1
S_ bar
D t1
name
SD t2
DA_bar name
TA_bar name
TA_bar name = 1
Case E:
(more than one predecessor bar, the
predecessor bar has only one successor)
state s with
s.ID = <some ID>
s.Init = false
s.Name = SyS_ + bar name + _+ i
s.Pre = st.ID of the predecessor state
transition generated for the predecessor
bar
Case E:
S_xx
D tx
DA_xx
SD ty
TA_xx
TA_xx = 1
SyS_
bar
name_i
TRUE
S_ bar
D t1
DA_bar name
name
SD t2
TA_bar name
Case F:
D tx
S_xx
SD ty
DA_xx
TA_xx
TA_xx = 1
SyS_
bar
name_i
TRUE
S_ bar
D t1
DA_bar name
name
SD t2
TA_bar name
TA_bar name = 1
D tx
S_xx
SD ty
DA_xx
TA_xx
TA_xx = 1
SyS_
Terminal
_i
step s with
s.ID = <some ID>
s.Init = false
s.Name = SyS_Terminal+_ + i
s.Pre = st.ID of the predecessor state
transition generated for the predecessor
bar
simCon.Pre = {, s.ID }
TRUE
Terminal
Step
69
The following examples show the usage of the mapping rules to transform Gantt diagrams and parts
of Gantt diagrams to SFC.
Example transformation of activities without predecessor and successor relation
The following Gantt chart example has no predecessor and successor relations among the bars. It will
be translated to a set of activities all being parallel within the resulting SFC. The temporal conditions
will represent its sequence based on global timing.
Handover to HTR002
Move to Lift Position
Lift skid
InitialStep_Gantt
TRUE
D0
DA_Handover to HTR002
SD 4
TA_Handover to HTR002
S_Handover to HTR002
TA_Handover to HTR002
SyS_Terminal_1
D4
SD 7
SyS_Terminal_2
D7
DA_Lift skid
SD 9
TA_Lift skid
S_Lift skid
TA_Lift skid
SyS_Terminal_3
True
TerminalStep
Figure 18: Gantt translation example - activities without predecessor and successor relations
70
Handover to HTR002
Move to Lift Position
Lift skid
0
InitialStep_Gantt
TRUE
D0
DA_Handover to HTR002
SD 4
TA_Handover to HTR002
S_Handover to HTR002
TA_Handover to HTR002
D4
SD 7
DA_Lift skid
SD 9
TA_Lift skid
S_Lift skid
TA_Lift skid
TerminalStep
71
Initialise Robot 1
Execute Manufacturing Robot 1
Initialise Robot 2
0
9 10
18
InitialStep_Gantt
TRUE
D0
DA_InitialiseRobot1
SD 6
TA_InitialiseRobot1
S_InitialiseRobot1
TA_InitialiseRobot1
S_ExecuteManufacturing
Robot1
D3
SD 12
DA_ExecuteManufacturing
Robot1
TA_ExecuteManufacturing
Robot1
D0
DA_InitialiseRobot2
SD 4
TA_InitialiseRobot2
S_InitialiseRobot2
TA_InitialiseRobot2
TA_ExecuteManufacturingRobot1
SyS_Terminal_2
SyS_Terminal_1
True
TerminalStep
72
Lift skid
Initialise Robot 1
Execute Manufacturing Robot 1
0
6 7
9 10
18
InitialStep_Gantt
TRUE
D0
DA_InitialiseRobot1
D7
DA_Lift skid
SD 9
TA_Lift skid
S_Lift skid
S_InitialiseRobot1
SD 6
TA_InitialiseRobot1
TA_Lift skid
TA_InitialiseRobot1
SyS_ExecuteManufacturing
Robot1_1
SyS_ExecuteManufacturing
Robot1_1
TRUE
S_ExecuteManufacturing
Robot1
D0
SD 9
DA_ExecuteManufacturing
Robot1
TA_ExecuteManufacturing
Robot1
TA_ExecuteManufacturingRobot1
TerminalStep
73
PERT Charts
5.2.1
Overview
Net plan techniques enable the description and analysis of time behaviour of activities and tasks
based on graph theory. Out of the various net plans, AutomationML uses only PERT charts, because
they are widely used and can describe a set of different time relations between nodes. Following the
usual application of PERT charts, only end-start-relations between nodes are used, i.e.
predecessor/successor relations.
Nodes in PERT charts can have the following time information:
duration
earliest start
latest start
earliest end
latest end
buffer times
For PERT charts, different buffer types are defined. Overall and free buffers are the ones mostly used.
In the following, only one buffer time is considered in a generic way; if needed additional buffer times
can be handled in the same way. In addition, AutomationML assumes a reasonable application of the
timing information duration, earliest start, and earliest end.
Earliest
start
Duration
Earliest
end
Earliest
start
Node name
Latest
start
Buffer
Duration
Earliest
end
Node name
Latest
end
Latest
start
Buffer
Latest
end
The subsequent state transition shall have the condition: name of this activity + =
TRUE
8. PERT charts use global time values. Hence, for timing values of IML activities these timing
values have to be converted to local relative time related to the activation time of the current
state.
9. Within PERT charts, various timing conditions are used. They can be stored in AutomationML
specific additional data related to the first activity (DA_ + name of the PERT node) according
to the additional data structure defined by PLCopen XML 2.0.
10. If a PERT node has two or more successor nodes, it is connected to them by a simultaneous
divergence.
11. If a PERT node has two or more predecessor nodes, it is connected to them by a
simultaneous convergence. Between this simultaneous convergence and the predecessor
states, synchronization states with no activities and successor state transitions with TRUE
condition are used.
12. Each PERT chart will have a unique start and a unique termination state.
t1
t2
t3
Node 1
t4
t5
t6
S_Note 1
DA_Note 1
TA_Note 1
t0
t1
t1+t2
Condition for transition true:
step is deactivated
75
Initial
Step
true
Initial
Step
Initialtrue
Step
ad.Pre = s.ID
true
Initial
Step
true
Node
Node
IML element
state s with
s.ID = <some ID>
s.Name = S_ + node name
s.Init = false
activity a with
a1.ID = <some ID>
a1.Name = DA_ + node name
a1.Pre = s1.ID
activity a with
a2.ID = <some ID>
a2.Name = TA_ + node name
a2.Pre = s1.ID
state transition st with
st.ID = <some ID>
st.Name = T_ + node name
st.Guard.Formular = a2.name
st.Pre = s1.ID
S_ node
name
DA_node name
TA_node name
T_node name
76
S_
node
name
Dt
DA_node name
TA_node name
TA_node name= 1
Case A: t=0
Case B: t= Node.earlieststart - predecessorNode.earliestend
Case C: t= Node.earlieststart maxpredecessorNode predecessorNode.earliestend
Table 60: Transformation of PERT chart node earliest startpoint to IML elements
5.2.5
Node Duration
Node Duration
IML Element
a.Time.Duration = Node.duration
SFC Representation
S_
node
name
D tx
DA_node name
SD t
TA_node name
TA_node name= 1
t= Node.endpoint
Table 61: Transformation of PERT chart node duration to IML elements
5.2.6
Dt
DA_node name
TA_node name
TA_node name= 1
77
Successor Nodes
Successor Node
IML element
Case A:
(no or only one successor node)
Do nothing
S_
node
name
D tx
DA_node name
SD ty
TA_node name
TA_node name= 1
Case B:
(more than one successor node)
simultaneous divergence simDiv with
simDiv.ID = <some ID>
simDiv.Pre = st1.ID
Case B:
S_
node
name
D tx
DA_node name
SD ty
TA_node name
TA_node name= 1
Predecessor Nodes
Predecessor Node
IML Element
Initial
Step
Case A:
(the only node in diagram with no
predecessor node)
s.Pre = st.ID of the initial state transition
true
S_
node
name
D t1
DA_node name
SD t2
TA_node name
TA_node name = 1
Case B:
(no predecessor node and at least one
other node in the PERT diagram with no
predecessor)
s.Pre = simDiv.ID of the initial
simultaneous divergence
Case B:
Initial
Step
true
S_
node
name
D t1
SD t2
DA_node name
TA_node name
TA_node name = 1
78
Case C:
D tx
S_xx
DA_xx
SD ty
TA_xx
TA_xx = 1
S_
node
name
DA_node name
D t1
TA_node name
SD t2
TA_node name = 1
Case D:
(only one predecessorNode and this
predecessorNode has more than one
successorNodes)
s.Pre = simDiv.ID of the predecessor
simultaneous divergence generated for
the predecessor node
Case D:
D tx
S_xx
SD ty
DA_xx
TA_xx
TA_xx = 1
S_
node
name
D t1
SD t2
DA_node name
TA_node name
TA_node name = 1
Case E:
(more than one predecessor node, the
predecessorNode
has
only
one
successorNode)
state s with
s.ID = <some ID>
s.Init = false
s.Name = SyS_ + node name +_+i
s.Pre = st.ID of the predecessor state
transition generated for the predecessor
mode
Note: If there are more than one
predecessor states for each one
synchronization state is created. They
shall be numbered to ensure unique
naming.
simultaneous convergence simCon with
simCon.ID = <some ID>
simCon.Pre = s.ID
Case E:
S_xx
D tx
DA_xx
SD ty
TA_xx
TA_xx = 1
SyS_
node
name_i
TRUE
S_
node
name
D t1
DA_node name
SD t2
TA_node name
TA_node name = 1
79
Case F:
D tx
S_xx
TA_xx
TA_xx = 1
SyS_
node
name_i
TRUE
S_
DA_xx
SD ty
node
name
D t1
DA_node name
SD t2
TA_node name
TA_node name = 1
80
S_xx
D tx
DA_xx
SD ty
TA_xx
TA_xx = 1
SyS_
Terminal
_i
TRUE
Terminal
Step
81
Handover to HTR002
1
23
Lift Skid
9
12
18
31
18
24
24
30
10
18
23
23
26
Execute Manufacturing
Robot 2
24
31
27
34
36
45
22
12
24
26
Postprocess Robot 1
12
4
Lower skid
Initialse Robot 2
18
Execute Manufacturing
Robot 1
Initialse Robot 1
4
Postprocess Robot 2
31
35
82
TRUE
D0
DA_Handover to HTR002
SD 4
TA_Handover to HTR002
S_Handover to HTR002
D0
DA_InitialiseRobot1
SD 6
TA_InitialiseRobot1
S_InitialiseRobot1
TA_Handover to HTR002
TA_InitialiseRobot1
D0
SD 3
D0
DA_InitialiseRobot2
SD 4
TA_InitialiseRobot2
S_InitialiseRobot2
TA_InitialiseRobot2
D0
DA_Lift skid
SD 2
TA_Lift skid
S_Lift skid
TA_Lift skid
SyS_ExecuteManufacturing
Robot1_1
SyS_ExecuteManufacturing
Robot1_2
True
S_ExecuteManufacturing
Robot1
D0
SD 9
DA_ExecuteManufacturing
Robot1
TA_ExecuteManufacturing
Robot1
TA_ExecuteManufacturingRobot1
D0
DA_PostProcessRobot1
SD 4
TA_PostProcessRobot1
S_PostProcessRobot1
SyS_ExecuteManufacturing
Robot2_1
SyS_ExecuteManufacturing
Robot2_2
TA_PostProcessRobot1
SyS_Terminal_1
True
S_ExecuteManufacturing
Robot2
D0
SD 5
DA_ExecuteManufacturing
Robot2
TA_ExecuteManufacturing
Robot2
TA_ExecuteManufacturingRobot 2
D0
DA_PostprocessRobot2
SD 3
TA_PostprocessRobot2
DA_LowerSkid
TA_LowerSkid
TA_LowerSkid
TA_PostprocessRobot2
SyS_Terminal_2
D0
SD 4
S_LowerSkid
S_PostprocessRobot2
D0
S_Move to end of 110HTR002
SD 7
DA_Move to end of
110HTR002
TA_Move to end of
110HTR002
TA_Move to end of
110HTR002
SyS_Terminal_3
True
TerminalStep
Figure 25: Timing behaviour of the SFC derived from a PERT chart node
In addition the comparison of the Gantt example given in section 4.1 with the PERT example shown in
this figure depicts the equivalent of the transformation rules given above.
83
Impulse Diagrams
Overview
The mapping of Impulse Diagrams to IML elements follows similar rules as the mapping of Gantt and
PERT diagrams. In general the resource state and resource state changes are represented by
sequences of states with activities and transitions while they are interconnected by signals
representing activities.
As a frame each Impulse Diagram representation as SFC shall contain:
an initial state,
a terminal state.
Resource
State
0
Signal_Time _0
10
Uses Signal_Device1_1
Signal_Time _1
Pos1
Device1
Signal_
Device1_2
Pos2
Pos3
Uses Signal_Device1_4
Signal_
Device1_1
Uses Signal_Device1_3
Device2
PosA
PosB
Signal_
Device2_1
Uses Signal_Device2_1
84
Time_Step_0
Device1_0
D0
Device1_Pos2
D0
Device2_0
Device2_PosA
SD0 Signal_Time_0
[Signal_Time_0 = TRUE]
[Signal_Time_0 = TRUE]
Device1_1
D0
Device1_Pos2_to_Pos1
SD1 Signal_Device1_1
[Signal_Device1_1 = TRUE]
Device1_2
D0
Device1_Pos1
[Signal_Device1_1 = TRUE]
[Signal_Device2_1 = TRUE]
Device1_3
D0
SD1
Device1_Pos1_to_Pos2
Signal_Device1_2
[Signal_Device1_2 = TRUE]
Device1_4
D0
D0
Device2_1
Device2_PosA_to_PosB
SD2 Signal_Device2_1
[Signal_Device2_1 = TRUE]
Device2_2
D0
Device2_PosB
[TRUE]
Device1_Pos2_to_Pos3
SD2 Signal_Device1_3
[Signal_Device1_3 = TRUE]
Time_Step_1
SD8 Signal_Time_1
Device1_5
[Signal_Time_1 = TRUE]
D0
Device1_Pos3
[Signal_Time_1 = TRUE]
Device1_6
D0
Device1_Pos3_to_Pos2
SD1 Signal_Device1_4
[Signal_Device1_4 = TRUE]
Time_Step_
END
Device1_7
D0
Device1_Pos2
SD2 Signal_Time_END
[Signal_Time_END = TRUE]
Terminal
Step
85
86
TRUE
addData ad with
ad.ID = <some ID>
ad.Type = ChartType
ad.Value = ImpulseDiagram
ad.Pre = s.ID
simultaneous divergence simDiv with
simDiv.ID = <some ID>
simDiv.Pre = st.ID
Table 66: Transformation of the start of Impulse Diagrams to IML elements
5.3.3
Timeline
Timeline
IML element
state s with
s.ID = <some ID>
s.Name = Time_Step_0
s.Init = false
s.Pre = simDiv.ID of simultaneous
divergence resulting form the
start of Impulse Diagrams
activity a with
a.ID = <some ID>
a.Name = Signal_Time_0
a.Pre = s1.ID
a.Time.Delay = 0
state transition st with
st.ID = <some ID>
st.Name = T_ + a1.Name
st.Guard.Boolean = a1.Name
st.Pre = s1.ID
INIT
TRUE
D0
Signal_Time_0
Time_Step_0
[ Signal_Time_0 = TRUE]
Time_Step_ +
SN
D td
Signal_Time_+ SN
[ Signal_Time_ + SN = TRUE]
Resource
Resource
IML element
For each resource one parallel branch is
created in the SFC. This branch contains:
INIT
TRUE
D0
Resource
Name + _0
Resource State
Resource State
IML element
activity a with
a.ID = <some ID>
a.Name = RN + _ + RSN
a.Time.Delay = 0
a.Pre = s.ID of associated state
within the resource state flow
D0
SD td
88
SD td
D0
SD td
89
D0
Resource
Name + _
+SN
SD td
Signals
Signals
IML element
Time Signals
activity a with
a.ID = <some ID>
a.Name = Signal_Time + SN
a.Time.Duration = std
a.Pre = actual state within
Timeline
the
SD std
Signal_Time_ +SN
Resource
Name + _
+ SN
D0
..
[ Signal_Time_ + SN = TRUE]
90
..
Resource
Name m +
_
+ SN
D0
..
..
SD td
.
Signal_+ Ressource Name n _ + SN
D0
..
91
SD ..
...
_n
[...]
Time_Step_
END
SD std
activity a with
a.ID = <some ID>
a.Name =Signal_Time_END
a.Time.Duration = std
a.Pre = s1.ID
Signal_Time_END
...
[Signal_Time_END = TRUE]
Terminal
Step
92
Group = some_group/some_subgroup
addData.id = <some ID>
addData.Type = ImpluseChartResorceGroup
addData.value = some_group/some_subgroup
addData.Pre = ID of the first step within the parallel branch
belonging to the resource
PLCopenVariable = Variablename
addData.ID = <some ID>
addData.Type = ImpulseDiagramPLCVariable.Name
addData.Value = Variablename
addData.Pre = ID of associated action
PLCopenVariable = Variablename
addData.ID = <some ID>
addData.Type = ImpulseDiagramPLCVariable.Name
addData.Value = Variablename
addData.Pre = ID of associated action
93
Resource
State
Uses
Time_Signal_1
Signal_Motor1_1
Fast_run
Motor1
Motor1_1
Slow_run
Motor1_2
Motor1_0
Init
Time_Step_0
SD 0
Signal_Time_0
[Signal_Time_0 = TRUE]
Time_Step_1
SD1
Signal_Time_1
D0
Motor1_Slow_run
Motor1_0
[Signal_Time_1= TRUE]
Motor1_
1
D0
Motor1_Slow_run_to_Fast_run
SD1 Signal_Motor1_1
[Signal_Motor1_1 = TRUE]
Motor1_
2
D0
Motor1_Fast_run
One activity representing the additional signal with the name Signal_Motor1_n. This action has got
a delay of 1 for the duration of the state change from Slow_run to Fast_run.
One transition that is activated by the signal as successor for the state representing the resource
state change from Slow_run to Fast_run, i.e. when Signal_Motor1_1 becomes TRUE.
One new SFC state with an associated action, indicating the new status of the resource. In this
case the resource has entered its resource state Fast_run.
94
State
Resource
Fast_run
Uses Signal_Motor1_1
Signal_Time_0
Signal_Time_1
Motor1
Slow_run
Motor1_0
Motor1_1
Motor1_2
Motor1_3
Init
Time_Step_0
SD 0
Signal_Time_0
D0
[Signal_Time_0= TRUE]
[Signal_Time_0 = TRUE]
TimeStep_1
SD3
Signal_Time_1
Motor1_Slow_run
Motor1_0
D0
Motor1_Fast_run_to_Slow_run
Motor1_1
SD1 Signal_Motor1_1
[Signal_Motor1_1 = TRUE]
[Signal_Time_1 = TRUE]
D0
Motor1_Fast_run
Motor1_2
[Signal_Time_1= TRUE]
D0
Motor1_3
..
Motor1_Fast_run_to_Slow_run
.
One activity for each external signal within the timeline representing the signal with the names
Signal_Time_0 and Signal_Time_1. The first action has got a delay of 1 and the second of 3
representing the delay between both signals.
A transition after each of the two states associated to the signals within the timeline. These
transitions are activated by the corresponding time signal.
One transition as predecessor for each state representing the state change within a resource state
flow that is triggered by the time signals. These transitions are activated by the corresponding time
signal.
95
One new SFC state for each signal within the resource state flow with the names Motor1_2 and
Motor1_3.
The associated actions that represent the new status of the resource, in this example the state
change from Slow_run to Fast_run for the first signal and the state change form Fast_run to
Slow_run for the second signal with the names Motor1_Fast_run_to_Slow_run and
Motor1_Slow_run_to_Fast_run.
State
...
Motor1_2
Motor1_1
Fast_run
Motor1
Motor1_0
Slow_run
Signal_Motor1_1
Gripper1_0
Gripper1
Open
Gripper1_1
Close
Init
Time_Step
_0
SD0
Signal_Time_0
[Signal_Motor1_0 = TRUE]
Motor1_
0
D0
Mortor1_Slow_run
[Signal_Time_0 = TRUE]
Motor1_
1
D0
Mortor1_Slow_run_to_Fast_run
SD1 Signal_Motor1_2
Gripper1
_0
D0
Gripper1_Open
[Signal_Motor1_1 = TRUE]
Gripper1
_1
D0
..
Gripper1_Open_to_Close
.
[Signal_Motor1_1 = TRUE]
Motor1_
2
D0
Mortor1_Fast_run
[...]
One activity for the signal within the firing resource state flow for Motor1 with the name
Signal_Motor_1.
A transition after the state associated to the signal within the resource state flow for Motor1. This
transitions activated by the signal Signal_Motor_1.
One transition as predecessor for the state representing the state change from Open to Close
within a resource state flow for Gripper1. The transition is activated by the signal Signal_Motor1_1.
One new SFC state within the resource state flow of Gripper1 with the name Gripper1_1.
The associated action that represent the new status of the resource, that represents the new status
of resource, in this example the state change from Open to Close with the name
Gripper1_Open_to_Close.
96
State Charts
Overview
In general, the mapping of State charts is done according to a simple principle: states are mapped to
IML states, transitions to IML transitions, and activities to IML activities.
In addition, hierarchies within State charts are expressed by sets of IML systems with cross
referencing. Within the translation to SFCs the different IML systems will result in different POUs of the
PLCopen XML structure.
Facing these basic decisions, the mapping of State charts to IML systems is made by the following
rules. These rules can be divided into those for flat State charts and State chart hierarchies.
The example depicted in Figure 31 and Figure 32 shall illustrate the basic transformation rules
explained below.
State 1
Event 4 / [Guard 5]
H
Event 4 / [Guard 4]
State 2
State 1.1
State 1.3
Event 2
[Guard 6.1]
Event 2
Event 1 / [Guard 1]
State 1.2
C
Event 5
Event 3 / [Guard 3]
Guard 2 / Activity 1
State 1.4
[Guard 6.2]
Event 6
[Guard 6]
State 3
Entrance Activity 2
Activity 3
Exit Activity 4
97
InitialStep_StateChart
TRUE
State 1
Event 6
Event 5
State 3
Guard 2
Guard 6
State 2
TransitionActivity1
N
Event 4
Guard 5
Event 4
Guard 4
Activity 1
End of Activity 1
Connector1
State 1.3
InitialStep_State1_Region1
Event 3
Guard 3
TRUE
Guard 6.1
Guard 6.2
State 1.4
State 1.1
Event 2
Event 1
Guard 1
Event 5
State 2
Event 4
Guard 4
State 1.2
Event 2
History1
98
5.5
5.5.1
InitialStep_noName
[TRUE]
State 1
State_State1
[Event 2]
[Event 1]
[Event 1]
State 2
State_State_2
[Event 2]
State Chart
IML System
99
Attribute value
h.ID
<some ID>
h.Name
h.Members
Table 75: Attribute values for flat State chart representation as IML system
5.5.2
States
State
IML State
Attribute value
s.ID
<some ID>
s.Name
s.Init
s.Terminal
This clause defines the IML representation of the structure and number of predecessor states in flat
State charts in IML system elements.
State_1
...
State_2
State_n
State_State_1
[Event 1]
State_State_2
...
State_State_n
[Event 2]
[Event n]
[Event 3]
[Event 1]
[Event n]
State_State_3
State_3
State Chart
IML System
100
Attribute value
selCon.ID
<some ID>
selCon.Pre
s.Pre
selCon.ID
This clause defines the IML representation of multiple successors of a State chart state in flat State
charts. These successors can be states or connectors.
State_State_1
State 1
[Event n]
[Event 1]
[Event 2]
[Event 1]
State_1
State_2
...
State_n
State_State_1
[Event n]
[Event 2]
State_State_2
State Chart
...
State_State_n
IML System
Attribute value
selDiv.ID
<some ID>
selDiv.Pre
Table 78: Attribute values for the representation of multiple successors of a state in IML
Note: If a state s has only one successor no additional selection divergence is needed.
Note: If the execution order for processing the successor relations is defined within the State chart
this shall be stored with the natural means within PLCopen XML.
5.5.5
Entry Action
State_State_1
N
N
N
Action_action1_ofState_State_1
Action_action2_ofState_State_1
Action_action3_ofState_State_1
Attribute value
a.ID
<some ID>
a.Name
a.Formula
content of action a
a.FiredEvents
a.Pre
ad.ID
<some ID>
ad.Type
StateChartActionType
ad.Value
entryAction
ad.Pre
s.ID
This clause defines the IML representation of actions within a state. These actions are called do
actions.
State_1
entry/action1
do/action2
exit/action3
State_State_1
N
N
N
Action_action1_ofState_State_1
Action_action2_ofState_State_1
Action_action3_ofState_State_1
Attribute value
a.ID
<some ID>
a.Name
a.Formula
content of action a
a.FiredEvents
a.Pre
ad.ID
<some ID>
ad.Type
StateChartActionType
ad.Value
doAction
ad.Pre
s.ID
Exit Action
State_State_1
N
N
N
Action_action1_ofState_State_1
Action_action2_ofState_State_1
Action_action3_ofState_State_1
Attribute value
a.ID
<some ID>
a.Name
a.Formula
Content of action
a.FiredEvents
a.Pre
ad.ID
<some ID>
ad.Type
StateChartActionType
ad.Value
exitAction
ad.Pre
s.ID
Events
Variable with:
Name = Action_action_ev
Type= derived
103
Attribute value
ev.ID
<some ID>
ev.Name
Signals
This clause defines the IML representation of signals. Within the context of AutomationML signals are
the representation of external events.
State 1
Variable with:
Event [Condition]/signal1
Name = Signal_signal1
Type= Boolean
State 3
Attribute value
var.ID
<some ID>
var.Name
var.Type
Boolean
var.SIUnit
empty
var.Initialvalue
empty
var.Address
empty
Event [Condition]/signal1
State 3
State_State_1
Condition
State_State_3
Case
Number
Successors
of
Number
Predecessors
of
Action
Execution
during
Hierarchy Level
No
Yes
Table 84: Distinction of cases for the mapping of state transitions in flat State charts
Case A
The state transition connects states or connectors within the same super state in the same hierarchy
level and no action is executed during the transition.
State_State_1
State 1
[Guard]
[Guard]
State 3
State_State_3
IML element
Attribute value
st.ID
<some ID>
st.Name
st.Guard.Formular
st.Pre
st.ID
Successor relations for the state transition with more than one predecessor:
If the destination state s2 has more than one predecessor state transition (see section 5.5.3)
selCon.Pre
st.ID
105
[Guard]
State_1
[Guard]/action1
StateForActivity_
action1
Action_action1_ofStateTransition
[TRUE]
State_2
State_State_2
Attribute value
st1.ID
<some ID>
st1.Name
st1.Guard.Formular
st1.Pre
s.ID
<some ID>
s.Name
s.Init
False
s.Terminal
False
s.Pre
st1.ID
ad.ID
<some ID>
ad.Type
StateChartStateType
ad.Value
stateForActivity
ad.Pre
s.ID
106
<some ID>
st2.Name
st2.Guard.Formual
TRUE
st2.Pre
s.ID
a.ID
<some ID>
a.Name
a.Formula
Content of action a
a.FiredEvents
a.Pre
s.ID
st2.ID
Successor relations for the state transition with more than one predecessor:
If the destination state s2 has more than one predecessor state transition (see section 5.5.3)
selCon.Pre
st2.ID
Table 86: Attribute values for a state transition with an action in IML
Note: If a state transition action contains events, this shall be expressed in the FiredEvents and the
Formula relations of the resulting action.
Note: If a state transition action addresses signals, this shall be expressed in the Formula relations of
the action by using the relevant variables resulting from the signal.
107
This clause defines additional mapping rules for State charts with hierarchies into IML systems. All
definitions for flat State charts are valid for State charts with hierarchies as well.
5.6.1
Hierarchy Levels
This clause defines the IML representation of a State chart with more than one hierarchy level.
SFC State_Main
State_1
InitialStep_noName
SFC State_2
InitialStep_noName
[True]
[True]
State_2
State_2-1
State_State_2-1
State_State_1
State_2-2
State_State_2-2
State_State_2
Contains AddData
element with
refrence to SFC
State_2
Attribute value
h.ID
<some ID>
h.Name
h.Members
Table 87: Attribute values for hierarchical State chart representation as IML systems
Note: If inter level transitions exist in the State charts, proxy states for the super state may be required
in the IML system representing states of the higher level State chart, see the following subsections.
The relation between a state s and its internal sub State charts is represented by an additional data
element attached to the state.
IML element
Attribute value
ad.ID
<some ID>
ad.Type
StateChartSubCharts/POURef
ad.Value
ad.Pre
s.ID
Table 88: Attribute values for flat State chart representation as IML systems
Note: If a state has more than one sub State charts this is expressed by multiple additional data
elements.
108
History Connector
This clause defines the IML representation of a history connector, as defined in the UML 2.0
specification [UML2010]; therefore two different cases have to be considered. Case A defines the
mapping of a shallow history connector and case B defines the mapping of a deep history connector.
SFC State_1
State_1
State_State_2
History_State1
State_2
State_3
State_State_3
IML element
Attribute value
s.ID
<some ID>
s.Name
s.Init
False
s.Terminal
False
s.Pre
ad.ID
<some ID>
ad.Type
StateChartStateType
ad.Value
historyConnector
ad.Pre
s.ID
109
IML element
Attribute value
s.ID
<some ID>
s.Name
s.Init
False
s.Terminal
False
selDiv.ID if the history connector has more than one
predecessor (see section 5.5.3)
st.ID of the predecessor state transition if the history
connector has one predecessor
s.Pre
ad.ID
<some ID>
ad.Type
StateChartStateType
ad.Value
historyConnector
ad.Pre
s.ID
Condition Connector
This clause defines the IML representation of a condition connector within IML.
SFC State_1
State_1
State_State_4
State_3
Condition_ID_
State_1
State_4
c
State_2
State_State_2
State_State_3
110
Attribute value
s.ID
<some ID>
s.Name
s.Init
False
s.Terminal
False
ad.ID
<some ID>
ad.Type
StateChartStateType
ad.Value
Condition Connector
ad.Pre
s.ID
Table 91: Attribute values for the condition connector representation in IML
Note: Regarding its successor and predecessor relations the history connector shall be treated like a
simple state, see section 5.5.3 and 5.5.4.
Note: Predecessors and successors can be states and connectors on each hierarchy level.
5.6.4
This clause defines the IML representation of inter level state transitions; therefore different cases are
considered Figure 48 depicts the general mapping of State chart state transitions.
SFC State_Main
State_1
InitialStep_noName
SFC State_2
Proxy_State_1
[Guard]
[True]
[Guard]
State_2
State_State_2-1
State_State_1
[Guard]
State_2-2
State_2-1
State_State_2-2
State_State_2
Contains AddData
element with
refrence to SFC
State_2
Figure 48: Transformation of a state transition over different hierarchy level to IML element
Note: Within the following mapping rules predecessors and successors of the state transitions can be
states and connectors on each hierarchy level.
Table 92 gives an overview about the different cases that are considered for the mapping of state
transitions in hierarchical State charts between different levels to IML elements.
Case
Number
of
Successors
Number
of
Predecessors
Successor
State Level
Action during
Execution
Hierarchy
Level
Higher Level
No
Higher Level
Yes
Lower Level
No
Lower Level
Yes
Table 92: Distinction of cases for the mapping of state transitions in hierarchical State charts
111
SFC State_2
Proxy_State_1
InitialStep_noName
[Guard]
[True]
[Guard]
State_2
State_State_2-1
State_State_1
[Guard]
State_2-2
State_2-1
State_State_2-2
State_State_2
Contains AddData
element with
refrence to SFC2
Figure 49: Transformation of a state transition from a higher state without an action to IML elements
The state transition results in an IML state transition st, its IML attribute values and its successor and
predecessor relations of the source state s1 and super state s2 of the destination state of the transition,
within the IML system representing the higher level (see Table 93).
IML element
Attribute value
st.ID
<some ID>
st.Name
st.Guard.Formular
st.Pre
st.ID
Successor relations for the state transition with more than one predecessor:
If the destination state s2 has more than one predecessor state transition (see section 5.5.3)
sel.Div
st.ID
Table 93: Attribute values for state transition representation in IML within hierarchical State charts
Additionally the state transition is mapped to the following elements within the IML system
representing the sub State chart of the super state:
their attribute values and their successor and predecessor relations to the state s1 and the destination
state s3 of the transition (see Table 94).
112
IML element
Attribute value
s2.ID
<some ID>
s2.Name
s2.Init
False
s2.Terminal
False
ad.ID
<some ID>
ad.Type
StateChartStateType
ad.Value
higherLevelState
ad.Pre
s2.ID
st.Name
st.Guard.Formular
st.Pre
st.ID
Successor relations for the state transition with more than one predecessor:
If the destination state s3 of the state transition has more than one predecessor state transition (see
section 5.5.3)
selCon.Pre
st.ID
Table 94: Attribute values for state transition representation in IML within the sub State charts
Note: For the structure and the integration of the internal State charts all provisions of the previous
sections shall be exploited.
113
SFC State_Main
Proxy_State_1
InitialStep_noName
[Guard]
[True]
State_1
StateForActivity_
Proxy_State_1
action1
State_State_1
Action_action1_ofStateTransition
[True]
[Guard]/action1
State_2
[Guard]
State_State_2-1
State_State_2
State_2-2
State_2-1
Contains AddData
element with
refrence to SFC
State_2
State_State_2-2
Figure 50: Transformation of a state transition from a higher state with an action to IML elements
The state transition results in an IML state transition st, its IML attribute values and its successor and
predecessor relations of the source state s1 and super state s2 of the destination state of the transition
within the IML system representing the higher level (see Table 95).
IML element
Attribute value
st.ID
<some ID>
st.Name
st.Guard.Formular
st.Pre
st.ID
Successor relations for the state transition with more than one predecessor:
If the destination state s2 has more than one predecessor state transitions (see section 5.5.3)
selCon.Pre
st.ID
Table 95: Attribute values for state transition representation in IML within hierarchical State charts
Additionally the state transition results in the following elements within the IML representation of the
sub State chart:
an IML activity a,
114
Attribute value
s1.ID
<some ID>
s1.Name
s1.Init
False
s1.Terminal
False
ad.ID
<some ID>
ad.Type
StateChartStateType
ad.Value
higherLevelState
ad.Pre
s1.ID
st1.ID
<some ID>
st1.Name
st1.Guard.Formular
st1.Pre
s2.ID
<some ID>
s2.Name
s2.Init
False
s2.Terminal
False
s2.Pre
st1.ID
ad.ID
<some ID>
ad.Type
StateChartStateType
ad.Value
stateForActivity
ad.Pre
s2.ID
st2.ID
<some ID>
st2.Name
st2.Guard.Formual
TRUE
st2.Pre
s2.ID
115
<some ID>
a.Name
a.Formula
Content of action a
a.FiredEvents
a.Pre
s2.ID
st2.ID
Successor relations for the state transition with more than one predecessor:
If the destination state s3 has more than one predecessor state transition (see section 5.5.3)
selCon.Pre
st2.ID
Table 96: Attribute values for state transition representation in IML within the sub State charts
Note: If a state transition action contains events, this shall be expressed in the FiredEvents and the
Formula relations of the resulting action.
Note: If a state transition action addresses signals, this shall be expressed in the Formula relations of
the action by using the relevant variables resulting from the signal.
Case C
In this case the state transition connects states or connectors within the different hierarchy levels
whereas the originator of the state transition belongs to the lower hierarchy level. Furthermore no
action is executed during the transition.
SFC State_1
SFC State_Main
InitialStep_noName
InitialStep_noName
State_2
[True]
State_State_2-1
[Guard]
State_State_1
State_1
[Guard]
State_State_2-2
State_1-1
State_1-2
State_State_2
[Guard]
Contains AddData
element with
refrence to SFC
State_1
Proxy_State_State_1
Figure 51: Transformation of a state transition from a lower level state without an action to IML
elements
The state transition results in an IML state transition st, its IML attribute values and its successor and
predecessor relations of the super state s1 of the source state and the destination state s2 of the
transition, within the IML system representing the higher level (see Table 97).
116
Attribute value
st.ID
<some ID>
st.Name
st.Guard.Formular
st.Pre
st.ID
Successor relations for the state transition with more than one predecessor:
If the destination state s2 has more than one predecessor state transition (see section 5.5.3)
selCon.Pre
st.ID
Table 97: Attribute values the representation of state transition among hierarchies in IML at the higher
level
Additionally the state transition is mapped to the following elements within the IML system
representing the sub State chart of the super state:
an IML state s3
117
Attribute value
s3.ID
<some ID>
s3.Name
s3.Init
False
s3.Terminal
False
ad.ID
<some ID>
ad.Type
StateChartStateType
ad.Value
higherLevelState
ad.Pre
s3.ID
st.ID
<some ID>
st.Name
st.Guard.Formular
st.Pre
st.ID
Successor relations for the state transition with more than one predecessor:
If the state s3 has more than one predecessor state transition in the sub State chart (see section
5.5.3)
selCon.Pre
st.ID
Table 98: Attribute values for the state transition representation in IML within the sub State charts
118
SFC State_1
InitialStep_noName
InitialStep_noName
[True]
State_2
State_State_1
[Guard]
[Guard]/action1
State_1
Contains AddData
element with
refrence to SFC
State_1
StateForActivity_
action1
State_State_1-1
Action_action1_ofStateTransition
State_State_1-2
[True]
State_1-1
[Guard]
State_1-2
State_State_2
Proxy_State_State_2
Figure 52: Transformation of a state transition from a lower level state with an action to IML elements
The state transition results in:
an IML activity a,
their corresponding IML attributes and their successor and predecessor relations to attribute values
and its successor and predecessor relations of the super state s2 of the source state and the
destination state s3 of the transition (see Table 99).
IML element
Attribute value
st1.ID
<some ID>
st1.Name
st1.Guard.Formular
st1.Pre
s1.ID
<some ID>
s1.Name
s1.Init
False
s1.Terminal
False
s1.Pre
st1.ID
ad.ID
<some ID>
ad.Type
StateChartStateType
119
stateForActivity
ad.Pre
s1.ID
st2.ID
<some ID>
st2.Name
st2.Guard.Formual
TRUE
st2.Pre
s1.ID
a.ID
<some ID>
a.Name
a.Formula
Content of action a
a.FiredEvents
a.Pre
s1.ID
st2.ID
Successor relations for the state transition with more than one predecessor:
If the destination state s3 has more than one predecessor state transition (see section 5.5.3)
selCon.Pre
st2.ID
Table 99: Attribute values the representation of state transition among hierarchies in IML
Additional the state transition results in the following elements within the IML representations of the
sub State chart:
and their corresponding IML attributes and their successor and predecessor relations to the source
states of the transition (see Table 100).
120
Attribute value
s4.ID
<some ID>
s4.Name
s4.Init
False
s4.Terminal
False
ad.ID
<some ID>
ad.Type
StateChartStateType
ad.Value
higherLevelState
ad.Pre
s4.ID
st.ID
<some ID>
st.Name
st.Guard.Formular
st.Pre
st.ID
Successor relations for the state transition with more than one predecessor:
If the destination state s4 has more than one predecessor state transition (see section 5.5.3)
selCon.Pre
st.ID
Table 100: Attribute values for state transition representation in IML within the sub State charts
Note: If a state transition action contains events, this shall be expressed in the FiredEvents and the
Formula relations of the resulting action.
Note: If a state transition action addresses signals, this shall be expressed in the Formula relations of
the action by using the relevant variables resulting from the signal.
121
Example Transformation
Representation
for
State
Charts
to
AutomationML
Logic
Within the following examples the application of the transformation rules is depicted based on the
example of the behaviour of a PLC. The first example represents the cyclic execution of a PLC
program and all further examples are enriched by additional details including interrupt handling, lineby-line execution of code, and PLC programming.
InitialStep_noName
[TRUE]
[Outputs set]
ReadInput
State_ReadInput
SetOutputs
[Input read]
[Inputs read]
[Program executed]
ExecutePr
ogram
State_ExecuteProgram
[Program
executed]
State_SetOutputs
[Outputs set]
[TRUE]
[Outputs set]
State_ReadInput
ReadInput
[Inputs read]
SetOutputs
[Program executed]
ExecutePr
ogram
[Interrupt handled]
[Input read]
State_ExecuteProgram
[Program
executed]
[Interrupt]
InterruptHa
ndling
State_SetOutputs
[Interrupt]
State_InterruptHandling
[Outputs set]
[Interrupt handled]
Figure 54: Example: transformation of a State chart with states with different predecessors and
successors
122
[TRUE]
State_ReadInput
[Outputs set]
ReadInput
[Input read]
SetOutputs
StateForActivity_SetLineCountzero
Action_SetLineCountzero_ofStateTransition
Action_IncrementLineCount_ofState_ExecuteProgram
[TRUE]
[Program executed]
State_ExecuteProgram
ExecuteProgram
[Program
executed]
DoAction IncrementLineCount
State_SetOutputs
[Outputs set]
[TRUE]
State_ReadInput
[Input read]
[Outputs set]
Condition_C
ReadInput
SetOutputs
[Program executed]
[NoInterrupt]
[Inputs read]
ExecutePr
ogram
C
[NoInterrupt]
[Interrupt]
State_InterruptHandling
[InterruptHandled]
[Interrupt]
[Interrupt handled]
InterruptHa
ndling
State_ExecuteProgram
[Program
executed]
State_SetOutputs
[Outputs set]
123
SFC1 - Main
Programming
InitialStep_noName
InitialStep_noName
[TRUE]
[TRUE]
[Stop]
[Start]
State_ReadInput
State_Programming
CyclicBehaviour
[Outputs set]
[Input read]
[Start]
ReadInput
SetOutputs
State_ExecuteProgram
State_CyclicBehaviour
[Program
executed]
[Stop]
[Inputs read]
[Program executed]
ExecutePr
ogram
Contains
AddData element
with refrence to
SFC2
State_SetOutputs
[Outputs set]
SFC1 - Main
InitialStep_noName
InitialStep_noName
[TRUE]
[TRUE]
State_ReadInput
State_Programming
Contains
AddData element
with refrence to
SFC3
[Start]
[Input read]
State_ExecuteProgram
State_CyclicBehaviour
[Stop]
Contains
AddData element
with refrence to
SFC2
[Program
executed]
State_SetOutputs
[Outputs set]
SFC3 Programming
Programming
InitialStep_noName
Proxy_State_CyclicBehaviour
UploadPro
gram
EditProgram
[Stop]
History_Programming
State_EditProgram
[Program correct]
C
[Editing finished]
[Program compiled]
State_CompileProgram
[Stop]
[Start]
[Program
compiled]
CyclicBehaviour
Condition_32_Programming
[Outputs set]
[Program incorrect]
ReadInput
[Program correct]
SetOutputs
State_UploadProgram
[Inputs read]
[Program executed]
ExecutePr
ogram
[Program change
necessary]
[Start]
Figure 58: Example: transformation of a State chart with complex hierarchy and connectors
124
6.1
As described within section 1.1 the main purpose of AutomationML is the exchange of engineering
information of manufacturing systems along the engineering chain. Therefore, the logic descriptions
covered by this document need to be combined with the information of the top-level architecture of
AutomationML [1] to enable a consistent association of logic information with system objects of
production systems or its components respectively.
Within this concept the top-level architecture of AutomationML covers the representation of
hierarchical structures of plant objects. These objects are used to store information to a certain level of
detail only. Additionally, aspects of these objects are stored in external documents which are
referenced by the corresponding AutomationML objects.
CAEX forms the basis data format for the exchange of plant topology information. Relevant for
association of logic aspect to AutomationML objects within the plant topology are the CAEX element
InternalElement and a specific AutomationML reference mechanism.
The InstanceHierarchy stores the plant structure as a hierarchy of object instances together with their
individual properties, interfaces, references, and relations among them. The internal elements
constitute these object instances representing individual units.
References describe associations from CAEX internal elements to information stored in external
documents e.g. COLLADA [Collada2010] or PLCopen XML.
An overview of this architecture is given in the Figure 59.
6.2
6.2.1
Overview
A document reference serves for the linking between one AutomationML object and one external
document which may contain e.g. sequence, behaviour, or interlocking information. The reference
mechanism bases on standard AutomationML interfaces see [1;2].
125
InterfaceClass
Description
AutomationMLBaseInterface
ExternalDataConnector
Generic connector
interface to external data
PLCopenXMLInterface
Interface to a PLCopen
XML document
LogicInterface
Interface to a logic
description within a
PLCopen XML document
VariableInterface
Interface to a variable
definition within a PLCopen
XML document
InterlockingVariableInterface
Interface to an interlocking
description within a
PLCopen XML document
Note: It is recommended to reference the corresponding POU instead of the document, as the
document may contain several POUs.
Referencing multiple PLCopen XML documents is allowed and shall be modeled by using multiple
interfaces of the type PLCopenXMLInterface, LogicInterface, VariableInterface, respectively
InterlockingVariableInterface.
Referencing data within a PLCopenXML document shall be modeled by adding the separating
character # to the documents location in the refURI attribute, followed by the globalId attribute
of the data.
If multiple documents are referenced depicting different versions, variants, or alternatives of the
same logic information, the CAEX header of the CAEX interfaces shall be used in order to
document its version.
126
refURI =
file:///C:/Temp/ PLCopenXML1.xml #variable_globalID
InterfaceClass ExternalDataConnector
Class name
ExternalDataConnector
Description
Parent Class
AutomationMLInterfaceClassLib/AutomationMLBaseInterface
Attribute
refURI
(type=xs:anyURI)
InterfaceClass PLCopenXMLInterface
Class name
PLCopenXMLInterface
Description
Parent Class
AutomationMLBaseInterface/ExternalDataConnector
127
InterfaceClass LogicInterface
Class name
LogicInterface
Description
Parent Class
AutomationMLInterfaceClassLib/AutomationMLBaseInterface/
ExternalDataConnector/PLCopenXMLInterface
InterfaceClass VariableInterface
Class name
VariableInterface
Description
Parent Class
AutomationMLInterfaceClassLib/AutomationMLBaseInterface/
ExternalDataConnector/PLCopenXMLInterface
6.3
6.3.1
Conceptual Overview
Logic information is stored in separate documents following the PLCopen XML data format.
Modeling logic information is, therefore, split into two parts. On the one hand, the corresponding object
is modeled within CAEX without any logic information. On the other hand, a PLCopen XML document
has to be provided containing the logic information. Finally, the CAEX object stores a reference to the
PLCopen XML document. Therefore, two different reference mechanisms are defined.
Figure 60 depicts the base concepts of referencing a PLCopen XML document out of CAEX. For this,
the standard AutomationML InterfaceClasses LogicInterface and VariableInterface are assigned to
the AutomationML object. Details regarding modeling logic information are specified in sections above.
CAEX File
Station
Init
Sequ1 (PLCopenXMLInterface/LogicInterface)
refURI = file:///c:test.xml#POU_1
Step 1
a
b
End
refURI = file:///c:test.xml#b
128
CAEX File
Init
Station
Sequ1 (PLCopenXMLInterface/LogicInterface)
Step 1
Refrenced
POU
refURI = file:///c:test.xml#POU_1
Published
End
LogicInterface
Within logic information descriping the sequencing or behaviour information of AutomationML objects
variables are stored as part of PLCopen XML documents representing signal of controls. For
referencing these information the VariableInterface, defined in section 6.2.6 shall be used.
The VariableInterface shall be added to corresponding object the logic information is assignt to.
Figure 62 depicts such a reference.
CAEX File
Station
Init
Sequ1 (PLCopenXMLInterface/LogicInterface)
Step 1
a
b
PLCopen
variable
End
Published
refURI = file:///c:test.xml#b
VariableInterface
129
Examples
As an example for referencing logic descriptions a small drilling system is considered. It consists of
five components; two of them are cylinders. The overall system has a controller which has to be
programmed. Hence, for the complete drilling system sequencing information have to be stored. In
addition for purposes like virtual commissioning behaviour information can be assigned to each unit. In
our case the Cylinder 1 has additional behaviour information.
The complete system is depicted in Figure 63.
Sequencing
Cylinder 2
+
Drill
C1U
Behavior
Cylinder 1
C1L
Transport
Unit 1
Piece
Transport Unit 2
C1R
P
Piece
The sequencing information for the drill station is stored in the PLCopen XML document
Drill_Station_Sequencing.xml within the POU with the name 010BES_021 and the globalId
H_36b9a027-96cd-47db-92ea-c737e92ed093. This POU has to be referenced from the
InternalElement representing the complete drilling station.
To reference the sequencing information a LogicInterface object named Drill_Station_Sequencing is
placed within the InternalElement representing the complete drilling station. This LogicInterface object
has the attribute refURI. RefURI is used to refer to the POU named above.
Therefore, it has the value file:///c:/Drill_Station_Sequencing.xml#H_36b9a027-96cd-47db-92eac737e92ed093 were file:///c:/Drill_Station_Sequencing.xml gives the path to the PLCopen XML
document within the project documents and H_36b9a027-96cd-47db-92ea-c737e92ed093 defines the
unique identification of the POU that is referenced.
The resulting reference structure is depicted in Figure 64.
130
Drill_Station.aml
AutomationML
<InternalElement Name="Drill_Station"
RefBaseSystemUnitPath="Drill_Station_Lib/MechatronicUnit"
ID="{afda820d-7fb6-4304-9710-8c0987a0f56c}">
<ExternalInterface Name="Drill_Station_Sequencing"
RefBaseClassPath="AutomationMLInterfaceClassLib/AutomationMLBaseInterfa
ce/ExternalDataConnector/PLCopenXMLInterface/LogicInter
face"
ID="{d7fc3628-d056-4acd-818b-d6d033d6058b}">
<Attribute Name="SchemaVersion" AttributeDataType="xs:string">
<Value>2.0</Value>
</Attribute>
<Attribute Name="refURI" AttributeDataType="xs:anyURI">
<Value>file:///c:/Projects/Drill_Project/Drill_Station_Sequencing.xml#
H_36b9a027-96cd-47db-92ea-c737e92ed093
</Value>
</Attribute>
</ExternalInterface>
</InternalElement>
Drill_Station_Sequencing.xml
PLCopen XML
Within the logic information of the drilling station the different sensor and actuators can be addressed.
Thus, the individual sensors and actuators can be part of both the sequencing description within the
PLCopen XML as well as the top level architecture representation.
In the example, the actuator responsible to extract Cylinder 1 can be a valve. This valve is controlled
by the signal Extract_Cylinder1. This signal is integrated in the top level description by an interface
element of type SignalInterface.
To reference from the top level architecture representation of this actor to the PLCopen XML
representation of the signal the VariableInterface is used.
Within the InternalElement for Cylinder 1 a VariableInterface Extract_Cylinder1 is modeled which is
connected to the SignalInterface Extract_Cylinder1 by an internal link. This attribute refURI of the
VariableInterface object used to refer to the variable within the PLCopen XML. Therefore, it get the
131
Drill_Station.aml
AutomationML
<InternalElement Name="Cylinder1"
RefBaseSystemUnitPath="Drill_Station_Lib/Cylinder"
ID="{46ba65e0-5f6d-48ff-9b70-a0030d9dc7b5}">
<ExternalInterface Name="Extract_Cylinder1"
RefBaseClassPath="AutomationMLInterfaceClassLib/AutomationMLBaseInterface/
ExternalDataConnector/PLCopenXMLInterface/VariableInterface"
ID="{3807ad7f-8875-42d4-b7e3-66fbefe46621}">
<Attribute Name="SchemaVersion" AttributeDataType="xs:string" />
<Attribute Name="refURI" AttributeDataType="xs:anyURI">
<Value>file:///c:/Projects/Drill_Project/Drill_Station_Sequencing.xml#
F_32b5a027-69d7-171b-9ea6-73c7f92aa093
</Value>
</Attribute>
</ExternalInterface>
<ExternalInterface Name="Extract_Cylinder1"
RefBaseClassPath="AutomationMLInterfaceClassLib/AutomationMLBaseInterface/
Communication/SignalInterface"
ID="{dd563b37-f9ea-44b0-866f-a672fa00727c}"/>
<InternalLink Name=" Extract_Cylinder1"
RefPartnerSideA="{46ba65e0-5f6d-48ff-9b70-a0030d9dc7b5}:Extract_Cylinder1"
RefPartnerSideB="{46ba65e0-5f6d-48ff-9b70-a0030d9dc7b5}:Extract_Cylinder1"/>
</InternalElement>
Drill_Station_Sequencing.xml
PLCopen XML
Not only sequencing information can be stored within PLCopen XML documents but also behaviour
information. Both can be combined within one document or described in multiple documents. The
mapping of this information is similar to the examples given above.
132
Drill_Station.aml
AutomationML
<InternalElement Name="Drill_Station">
<ExternalInterface Name="Drill_Station_Sequencing">
<Attribute Name="refURI" AttributeDataType="xs:anyURI">
<Value>file:///c:/Projects/Drill_Project/Drill_Station_Sequencing&Behaviou
r.xml# H_36b9a027-96cd-47db-92ea-c737e92ed093</Value>
</Attribute>
</ExternalInterface>
<InternalElement Name="Drill"/>
<InternalElement Name="Cylinder1"/>
<ExternalInterface Name="Cylinder1_Behaviour">
<Attribute Name="refURI" AttributeDataType="xs:anyURI"/>
<Value>file:///c:/Projects/Drill_Project/Drill_Station_Sequencing&B
ehaviour.xml# G_36b9abd6-96cd-47db-92ea-c737e92ed088</Value>
</Attribute>
</ExternalInterface>
<ExternalInterface Name="Extract_Cylinder1">
<Attribute Name="refURI" AttributeDataType="xs:anyURI">
<Value>file:///c:/Projects/Drill_Project/Drill_Station_Sequencing&B
ehaviour.xml# F_32b5a027-69d7-171b-9ea6-73c7f92aa093</Value>
</Attribute>
</ExternalInterface>
</InternalElement>
<InternalElement Name="Cylinder2"/>
<InternalElement Name="TransportUnit1"/>
<InternalElement Name="TransportUnit2"/>
</InternalElement>
Drill_Station_Sequencing&Behaviour.xml
PLCopen XML
7.1
Overview
The description of interlocking conditions is an important part within the engineering of production
systems to ensure their safe behaviour. It affects not only the safe interaction with humans and
environment but also helps to avoid unstable situations of the systems possibly causing harmful
effects on humans and environment or damages on machines and products.
AutomationML provides three levels of detail to describe and store interlocking conditions. These
levels are based on each other and can be used within different engineering phases:
linking of different signal and component groups to describe functional dependencies among
objects in the first stages,
adding of Boolean logic stored as function block networks to describe basic interlocking conditions
within a second stage, and
extension of these function block networks to complex interlocking descriptions in a third stage.
7.2
7.2.1
Concept Description
Within a first stage AutomationML sum up objects that belong to groups of objects that indicate unsafe
states within a production system, the signal groups, see Figure 68, or to groups of objects that are
influenced in their behaviour by signal groups, the so called component groups. To describe this
concept, the example production system in Figure 68 is used.
Safety shut-off mat 1
Emergencystop 1
Light guard 2
Robot 1
Gate 1
Robot 4
Robot 3
Gate 2
Welding
tool 2
Press 1
Emergencystop 3
Gate 3
Conveyer 1
Press 2
Robot 2
Emergencystop 2
Light guard 1
Safety shut-off mat 1
Signal Group
Component Group
Emergencystop 1
Robot 1
Emergencystop 2
Welding tool 2
Gate1
Light guard 1
Robot 2
Signal Group A
Emergency
stop 1
Emergency
stop 2
Component Group A
Robot 1
Welding tool 2
Gate 1
Light guard 1
Robot 2
Signal Group B
Component Group B
Safety shut-off
mat 1
Robot 3
Gate 2
Light guard 2
Press 1
Signal Group C
Safety shut-off
mat 2
Emergencystop 3
Component Group C
Robot 4
Conveyer 3
Press 2
InterlockingConnector
SignalGroup
SignalGroups with
Mirror Objects
InternalLink
ComponentGroups
with Mirror Objects
InterlockingConnector
ComponentGroup
RoleClass ComponentGroup
Class name
ComponentGroup
Description
The RoleClass ComponentGroup is a role type for objects that group objects
belonging to one component group according to the interlocking definition of
AutomationML.
Parent Class
AutomationMLBaseRoleClassLib/AutomationMLBaseRole/Group
136
RoleClass SignalGroup
Class name
SignalGroup
Description
The RoleClass SignalGroup is a role type for objects that group objects
belonging to one signal group according to the interlocking definition of
AutomationML.
Parent Class
AutomationMLBaseRoleClassLib/AutomationMLBaseRole/Group
InterfaceClass InterlockingConnector
be
used
only
within
elements
of
type
SignalGroup
InterlockingConnector
ComponentGroup.
or
InterlockingConnector interface shall be connected via InternalLinks to interfaces of the same type
only.
InterlockingConnector
Description
Parent Class
AutomationMLInterfaceClassLib/AutomationMLBaseInterface
7.3
7.3.1
The second level of interlocking description exceeds the simple grouping of devices to signal and
component groups by a Boolean function describing the interlocking conditions of the signal groups.
The usage of the Boolean function for describing interlocking conditions in this level applies the
following provision:
The Boolean function shall be stored in the corresponding PLCopen XML representation of FBD.
The Boolean function shall be represented by a single POU element within PLCopen XML.
The use of function blocks within FBD is restricted to the usage of AND, OR, TON, TOF and NOT
function blocks corresponding to IEC 61131-3.
The FBD shall have one dedicated variable as evaluation result of the FDB evaluation representing
the interlocking condition of a signal group.
The restriction of the applicable function block set within the second level of the interlocking conditions
on a minimal set of function blocks is made to ensure the exchange between different software tools
within the engineering process, while all necessary Boolean and temporal conditions can still be
expressed.
137
SignalGroup A
PLCopen
XML
Document
Device 2
Link between a
SignalGroup and a
ComponentGroup
Device 1
ComponentGroup A
Device 3
Interlocking Connector
InterlockingVariableInterface
Device 4
InterfaceClass InterlockingVariableInterface
Class name
InterlockingVariableInterface
Description
Parent Class
AutomationMLInterfaceClassLib/AutomationMLBaseInterface/
ExternalDataConnector/PLCopenXMLInterface/VariableInterface
The attribute SafeConditionEquals allows to
indicate which value of the reference variable
indicates a save state.
Values:
Attributes
SafeConditionEquals
(type=xs:Boolean)
POU1
AND
EmergencyStop1
OUT_SignalGroup_A
EmergencyStp2
LightGuard1
The use of the linking mechanism based on the InterfaceClasses InterlockingConnector and
InterlockingVariableInterface in the application case interlocking description is restricted to guarantee
a uniform understanding of interlocking information.
The following mechanisms for interlinking interlocking information are permitted.
Restricted
Mechanism
Description
Direct
Linking
from PLCopen
variables
to
Component
Groups
The logic that describes the interlocking condition for a component group is
stored in a PLCopen document as FBD and the resulting variable is direct linked
via PLCopenXMLInterface to this group.
In this case the PLCopen XML variable shall be linked to a PLCopenXML
Interface that belongs to a SignalGroup. The relation between the variable and
139
SignalGroup A
Device 1
Device 2
ComponentGroup A
PLCopen
XML
Document
Device 3
Device 4
Direct
Linking
from
Object
Interfaces
to
Component
Groups
The signal of one object describes the interlocking condition for one component
group,
In this case the Object shall be referenced in an own Signal Group and this
group shall be linked with the Component group.
Plant
Device 1
Device 4
SignalGroup A
Device 1
Device 2
ComponentGroup A
Table 111: Restrictions for the linking of signal and component groups
7.4
As extension to the description of interlocking conditions with Boolean logic, AutomationML provides a
third level for the interlocking description. Within this level an FBD network with one resulting Boolean
variable shall be used as interface between signal groups and the logic description.
In addition it is intended to store complex FBD networks with e.g. vendor specific function blocks. The
usage of the concept applies following provision:
The FBD for complex logic shall be stored in separate POUs of the PLCopen XML document.
140
Each of these FBD networks shall result in a unique Boolean variable describing the evaluation
result of the FBD network.
The resulting variable of the single networks shall be used as input variable for the FBD with the
Boolean interlocking description following level 2 interlocking description.
Figure 75 depicts the concept of using complex FBD networks to describe interlocking conditions.
Here the POU1 and POU2 describe the third level interlocking descriptions. Each of them has a
unique variable describing the evaluation result of the FBD network. In the case of POU2 this variable
is OUT_POU_2. POU3 gives the description for the interlocking condition following the second level.
Here the variables describing the evaluation result of the FBD network of the third level descriptions
(OUT_POU_1 and OUT_POU_2) are used as input signals in combination with other signals.
POU1
POU2
LIMIT_INT
Min
TAN
INT_TO_BOOL
MN
Temp
IN
Max
MX
LREAL_TO_BOOL
OUT_POU_2
OUT_POU_1
POU3
AND
OUT_POU_1
OUT_POU_3
OUT_POU_2
EmergencyStop3
7.5
7.5.1
Beyond the description of interlocking, FBD networks can be used within the definition of sequences
as transition condition e.g. as step enabling condition in combination with signals as trigger for the
state transitions.
An example for this use case of interlocking is depicted in Figure 75. In this example the transition
from resource state Slow to the resource state change Slow_to_Fast depends on a signal and the
fulfillment of an interlocking condition described in an FBD.
141
State
Motor1
Fast
Slow
ADD
OR
Var1
Interlocking_Var
Var2
ADD
NOT
Var3
Var4
An interlocking variable that is used within a sequence description shall be published within the toplevel format.
Within the PLCopen XML document for the sequence description a placeholder for this variable
shall be created and this shall be published within the top-level format.
The interlocking variable and the placeholder variable shall be linked with an Internal Link within
the top-level format.
7.5.2
In addition it is possible to use FBDs with interlocking conditions to describe the behaviour of single
objects.
Figure 4 gives an example for this description.
Device 1
A
Behaviour Device 1
A
B
&
The PLCopen XML document containing the FDB network shall be attached to the object with a
LogicInterface.
Only AND, OR, TON, TOF and NOT function blocks shall be used within the FDB network.
142
As example for the usage of interlocking descriptions the example given initially in Figure 77 is used.
This example depicts a manufacturing system consisting of three cells containing different
manufacturing equipments and safety structures.
Safety shut-off mat 1
Emergencystop 1
Light guard 2
Robot 3
Robot 1
Gate 1
Robot 4
Gate 2
Welding
Tool 2
Press 1
Emergencystop 3
Gate 3
Conveyer 1
Press 2
Robot 2
Emergencystop 2
Light guard 1
Safety shut-off mat 1
Then the signal groups are modeled possibly effecting the behaviour of the component groups. In our
example the signal groups are:
The example depicts the possibility that elements of the InstanceHierarchy are used to implement as
mirror objects within more than one signal or component group.
The resulting structure of the AutomationML project including the described signal and component
groups is depicted in Figure 78.
143
Figure 78: Interlocking example with modeled signal and component groups
The next step of modeling interlocking description with AutomationML is the linking of the signal and
component groups. Therefore, the IntelickingConnector interface and InternalLinks are used. In the
example, SignalGroup_A is linked with ComponentGroup_A, SignalGroup_B is linked with
ComponentGroup_B and SignalGroup_C is linked with ComponentGroup_C. Therefore, each group
has a unique element of the class InterlockingConnector. In the example of the InterlockingConnector
144
InternalLink
Figure 79: Interlocking example with linked signal and component groups
The next step is the modeling of the interlocking condition on second and third level. Therefore, the
FBD networks are specified and attached to the InterlockingVariableInterface of the signal groups. In
the
case
of
SignalGroup_A
the
name
of
the
InterlockingVariableInterface
is
InterlockingVariableInterface_SignalGroup_A. It contains a reference to the variable of the FBD
network that represents the evaluation result of the network. This example is depicted in Figure 80.
145
SignalGroup_A_InterlockingDescription.xml
<POU name=SignalGroup_A>
<localVars>
<variable name=OUT_SignalGroup_A/>
</localVars>
<body>
<FBD>
</FBD>
</body>
</POU>
Reference
InternalLink
Figure 80: Interlocking example with references PLCopen XML document
The modeling of the interlocking description is complete with the linking the FBD network. But the
concepts of AutomationML logic description can be used the express further information.
Furthermore, the input variables of the FBD network can be linked to the relevant interfaces of
elements in the InstanceHierarchy. In the example, the Light guard 1, the Emergencystop 1, and the
Emergencystop 2 are composed in the SignalGroup A. All of them have a SignalInterface within the
InstanceHierarchy. These interfaces can be connected to the PLCopen XML representation of the
interlocking condition to express the dependency of the interlocking condition on them.
Therefore, each of the named devices has an additional interface object of InterfaceClass
VariableInterface. This is connected by an InternalLink to the SignalInterface. Within the
VariableInterface, the corresponding variable of the PLCopen XML representation of the interlocking
condition is references.
The structure of this example is depicted in Figure 81.
146
<POU name=SignalGroup_A>
<localVars>
<variable name= LightGuard1 />
<variable name= EmergencyStop1 />
<variable name= EmergencyStop12/>
<variable name=OUT_SignalGroup_A/>
</localVars>
<body>
<FBD>
</FBD>
</body>
</POU>
SignalGroup_A
AND
EmergencyStop1
OUT_SignalGroup_A
EmergencyStp2
LightGuard1
Reference
InternalLink
Figure 81: Interlocking example with references to PLCopen XML variables
147
Release
1.4.1,
[IEC61131]
International Electrotechnical Commission: IEC 61131 -Programmable controllers Part 3: Programming languages, www.iec.ch, last accessed Mayl 2010.
[UML2010]
OMG Unified Modeling LanguageTM (OMG UML), Infrastructure, Version 2.2
http://www.omg.org/spec/UML/2.2/Infrastructure/PDF/, last accessed May 2010.
[Harel1988]
529.
Harel, D.: On Visual Formalisms; Communications of the ACM, Jg. 31, H. 5, S. 514
148
Transition 1
ID= ISID_20090303_002,
Guard.Var=a,[2;17],
Event
Variable
ID=ISID_20090303_013
Name=e
ID= ISID_20090303_011,
Name=b, Type=Boolean,
InitialValue=FALSE
Variable
Variable
ID= ISID_20090303_010,
Name=a, Type=Int,
InitialValue=9
ID= ISID_20090303_012,
Name=c, Type=Boolean,
InitialValue=TRUE
Intermediate State
Action 1
ID= ISID_20090303_003,
Init=FALSE, Current=TRUE,
Terminal =FALSE
SelectionDivergence
Transition 2
ID= ISID_20090303_004,
Guard.Boolean=b,
ConsumedEvents={e}
ID= ISID_20090303_009
Transition 3
ID=
ISID_20090303_006,
Guard.Boolean=c,
ConsumedEvents={e}
Terminal State
JumpInitialState
ID= ISID_20090303_007,
State=InitialState
149
150
151
152