Upload
anila
View
136
Download
2
Tags:
Embed Size (px)
DESCRIPTION
Concurrent system. Model. Coloured Petri Nets. Kurt Jensen & Lars Michael Kristensen (Edited by José Luís Silva, DI/CCTC, Universidade do Minho). Coloured Petri Nets. Petri Nets: graphical notation concurrency communication synchronisation CPN ML (Standard ML): - PowerPoint PPT Presentation
Citation preview
Kurt Jensen Lars M. Kristensen
1
Coloured Petri NetsDepartment of Computer Science
Coloured Petri NetsKurt Jensen & Lars Michael Kristensen(Edited by José Luís Silva, DI/CCTC, Universidade do Minho)
Concurrent system Model
Kurt Jensen Lars M. Kristensen
2
Coloured Petri NetsDepartment of Computer Science
Coloured Petri Nets Graphical modelling language for
concurrent systems. Combination of Petri Nets and
programming language.
Petri Nets: graphical notation concurrency communication synchronisationCPN ML (Standard ML):
data manipulationcompact modellingparameterisable models
www.cs.au.dk/CPnets/cpnbook/
Kurt Jensen Lars M. Kristensen
3
Coloured Petri NetsDepartment of Computer Science
CPN Tools userinterface
Kurt Jensen Lars M. Kristensen
4
Coloured Petri NetsDepartment of Computer Science
data
n if successthen 1`nelse empty
n
if n=kthen k+1else k
(n,d)(n,d)
nif n=k then data^delse data
(n,d)
if successthen 1`(n,d)else empty
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
SendPacket
1`1
NO
CD
NO
A
NOxDATA
NextSend1`1
NO
DataReceived
1`""
DATA
B
NOxDATA
PacketsTo Send
AllPackets
NOxDATA
k n
NextReck
if n=kthen k+1else k
NO
1 1`1
11`""6
1`(1,"COL")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
11`1
Non-hierarchical Coloured Petri Nets
Kurt Jensen Lars M. Kristensen
5
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
Simple protocol
Kurt Jensen Lars M. Kristensen
6
Coloured Petri NetsDepartment of Computer Science
Informal description
Sender Network Receiver
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
No loss of packetsNo overtaking
Kurt Jensen Lars M. Kristensen
7
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
Coloured Petri NetPlace
Transition
Arc
Net inscriptions
Nodes
Kurt Jensen Lars M. Kristensen
8
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
Places represent the state of the system
Name(no formal meaning;
large impact on readability)
Initial marking (multiset of
tokens)
Colour set (type)
Definition of colour sets:colset NO = int; (* integers *)colset DATA = string; (* text strings *)colset NOxDATA = product NO * DATA;
Each token in the initial marking must have a colour that belongs to the colour set
Each place contains a number of tokens. Each token carries a colour (data value). The colour set specifies the set of allowed
token colours.
Kurt Jensen Lars M. Kristensen
9
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
1 1`1
6
1`(1,"COL ")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
Current marking during simulation
Information aboutcurrent marking(changes during simulation)
The thick border line indicates that thetransition is enabled (ready to occur)
Circle: 6 tokens
Square: Detailedtoken values
One token with value 1
Values:Token colours
(multiset of actual token colours)
Type:Colour set
(set of allowed token colours)
Kurt Jensen Lars M. Kristensen
10
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
Transitions and arcsArc expression
Name(no formal meaning)
The arc expression must evaluate to a colour in the colour set of the attached place(or a multiset of such colours)
Declaration of variables:var n : NO; (* integers *)var d : DATA; (* strings *)
Binding of variables:<n=3,d="CPN">
Evaluation of expressions:
(n,d) (3,"CPN") : NOxDATA
n 3 : NO
Kurt Jensen Lars M. Kristensen
11
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
1 1`1
6
1`(1,"COL ")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
Enabling of transitionTwo variables: var n : NO; (* integers *) var d : DATA; (* strings *)
Binding: < n=? , d=? >
Transition is enabled if we can find a binding so that each input arc expression evaluates to one or more colours that are present on the corresponding input place
NO DATA
?
?
Kurt Jensen Lars M. Kristensen
12
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
1 1`1
6
1`(1,"COL ")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
Enabling of SendPacket
One token with value 1
Binding: < n=1 , d=? >
We want to find a binding for the variable n such that the arc expression n evaluates to a colour which is present on the place NextSend
Arc expression
Kurt Jensen Lars M. Kristensen
13
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
1 1`1
6
1`(1,"COL ")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
Binding: < n=1 , d=? >
Enabling of SendPacket
Six different tokens
Binding: < n=1 , d="COL" >
We want to find a binding for the variable d such that the arc expression (n,d) evaluates to a colour which is present on the place PacketsToSend
Arc expression
Kurt Jensen Lars M. Kristensen
14
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
1 1`1
6
1`(1,"COL ")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
1
(1,"COL")
Enabling of SendPacket
Binding: < n=1 , d="COL" >
We have found a binding so that each input arc expression evaluates to a colour that is present on the corresponding input place
Transition is enabled(ready to occur)
Kurt Jensen Lars M. Kristensen
15
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
1 1`1
6
1`(1,"COL ")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
Occurrence of SendPacketin binding <n=1,d=“COL”>
(1,"COL")
Remove: (1,"COL")
Add a new token: (1,"COL")
Remove: 1
1
(1,"COL")
Kurt Jensen Lars M. Kristensen
16
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
11`(1,"COL ")
5
1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
New marking after occurrence of SendPacket in binding <n=1,d=“COL”>
The first packet has been removed
A copy of the first packet has been put on A
No token on this place
Transition is no longer enabled(thin border line)
Kurt Jensen Lars M. Kristensen
17
Exercise Simulate the previous example in the CPN Tools:
Press Right button -> New Net Press Right button on Standard declarations -> New Decl
colset NO = int; colset Data = string; colset NOxData = product NO * Data; var n:NO; var d:Data;
ToolBox -> drag drop Create -> select and apply
Place -> press “tab” button to access PLACE TYPE and INIT MARK Transitions Arcs (select origin and then target)
Simulation -> select and apply Execute a transition with a chosen binding
Coloured Petri NetsDepartment of Computer Science
Kurt Jensen Lars M. Kristensen
18
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
11`(1,"COL ")
5
1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
New marking M1
Transition enabled
Kurt Jensen Lars M. Kristensen
19
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
11`(1,"COL ")
5
1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
Binding: < n=? , d=? >
Binding of TransmitPacketCurrent marking
Arc expression
Binding: < n=1 , d="COL" >
Kurt Jensen Lars M. Kristensen
20
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
11`(1,"COL ")
5
1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
Occurrence of TransmitPacket in binding <n=1,d=“COL”>
Remove: (1,"COL")
(1, "COL") (1, "COL")
Add a new token: (1,"COL")
Kurt Jensen Lars M. Kristensen
21
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
11`(1,"COL ")
5
1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
New marking M2
Binding: <n=1,d="COL">
11`2
XXXX
11`(1,"COL")
Kurt Jensen Lars M. Kristensen
22
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
11`2
11`(1,"COL ")5
1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
Binding: <n=2>1
1`2 XXX
New marking M3
Kurt Jensen Lars M. Kristensen
23
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
11`2
11`(1,"COL ")5
1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
Binding: <n=2>
1 1`2
XXX
New marking M4
Kurt Jensen Lars M. Kristensen
24
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
1 1`2
11`(1,"COL ")5
1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
We have successfully transmittedthe first packet and the acknow-ledgement for it
We are ready to start transmission of packet number two
New marking M5
Kurt Jensen Lars M. Kristensen
25
Coloured Petri NetsDepartment of Computer Science
1 (SendPacket ,<n=1, d="COL">)2 (TransmitPacket , <n=1, d="COL">)3 (ReceivePacket , <n=1, d="COL">)4 (TransmitAck , <n=2>)5 (ReceiveAck , <n=2>)
Transition Binding( , )
Binding element
First five steps
Kurt Jensen Lars M. Kristensen
26
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
1 1`2
11`(1,"COL ")5
1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
Binding: <n=2,d="OUR">
11`(2,"OUR")
4
New marking M5
Kurt Jensen Lars M. Kristensen
27
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
1 1`2
11`(1,"COL ")5
1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
Binding: <n=2,d="OUR">
11`(2,"OUR")
11`(2,"OUR")
4
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
11`2
11`(1, "COL ")5
1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
New marking M6
Kurt Jensen Lars M. Kristensen
28
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
1 1`2
11`(1,"COL ")5
1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
Binding: <n=2,d="OUR">
11`(2,"OUR")
21`(2,"OUR")
11`3
4
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
11`2
11`(1, "COL ")5
1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
New marking M7
Kurt Jensen Lars M. Kristensen
29
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
1 1`2
11`(1,"COL ")5
1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
Binding: <n=3>
21`(2,"OUR")
11`3
11`3
4
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
11`2
11`(1, "COL ")5
1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
New marking M8
Kurt Jensen Lars M. Kristensen
30
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
1 1`2
11`(1,"COL ")5
1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
Binding: <n=3>
21`(2,"OUR")
11`3
1`3
4
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
11`2
11`(1, "COL ")5
1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
New marking M9
Kurt Jensen Lars M. Kristensen
31
Coloured Petri NetsDepartment of Computer Science
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
1 1`3
21`(1,"COL ")++1`(2,"OUR")4
1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
We have successfully transmittedthe first twopackets and the acknowledgements for them
We are ready to start transmission of packet number three
New marking M10
Kurt Jensen Lars M. Kristensen
32
Coloured Petri NetsDepartment of Computer Science
Marking after 30 steps
n
n n n
n+1
(n,d)(n,d)
n
(n,d)
(n,d)(n,d)
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
PacketsReceived
B
NOxDATA
PacketsTo Send
1`(1,"COL " )++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
NOxDATA NOxDATA
SendPacket
1 1`7
6
1`(1,"COL ")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
Dead marking (no transitions are enabled)
We have successfully transmitted all six packets and the acknowledgements for them
There are no more packets to transmit
Kurt Jensen Lars M. Kristensen
33
Coloured Petri NetsDepartment of Computer Science
Double-headed arcs
data
n if successthen 1`nelse empty
n
if n=kthen k+1else k
(n,d)(n,d)
nif n=k then data^delse data
(n,d)
if successthen 1`(n,d)else empty
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
SendPacket
1`1
NO
CD
NO
A
NOxDATA
NextSend1`1
NO
DataReceived
1`""
DATA
B
NOxDATA
PacketsTo Send
AllPackets
NOxDATA
k n
NextReck
if n=kthen k+1else k
NO
1 1`1
11`""6
1`(1,"COL")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
11`1
Double-headed arc
Double-headed arc
A double arc is a shorthand for two oppositely directed arcs with the same arc expression
We no longer remove the tokens from the input places
Retransmission becomes possible
Constant
Kurt Jensen Lars M. Kristensen
34
Coloured Petri NetsDepartment of Computer Science
Two enabled transitions
data
n if successthen 1`nelse empty
n
if n=kthen k+1else k
(n,d)(n,d)
nif n=k then data^delse data
(n,d)
if successthen 1`(n,d)else empty
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
SendPacket
1`1
NO
CD
NO
A
NOxDATA
NextSend1`1
NO
DataReceived
1`""
DATA
B
NOxDATA
PacketsTo Send
AllPackets
NOxDATA
k n
NextReck
if n=kthen k+1else k
NO
11`(1,"COL")
1 1`1
11`""6
1`(1,"COL")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
11`1
SP = (SendPacket, <n=1, d="COL">)TP+ = (TransmitPacket, <n=1, d="COL", success=true>)TP
– = (TransmitPacket, <n=1, d="COL", success=false>)
These binding elements need the same token
They are in conflict with each other
Kurt Jensen Lars M. Kristensen
35
Coloured Petri NetsDepartment of Computer Science
Two enabled transitions
data
n if successthen 1`nelse empty
n
if n=kthen k+1else k
(n,d)(n,d)
nif n=k then data^delse data
(n,d)
if successthen 1`(n,d)else empty
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
SendPacket
1`1
NO
CD
NO
A
NOxDATA
NextSend1`1
NO
DataReceived
1`""
DATA
B
NOxDATA
PacketsTo Send
AllPackets
NOxDATA
k n
NextReck
if n=kthen k+1else k
NO
11`(1,"COL")
1 1`1
11`""6
1`(1,"COL")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
11`1
These bindings elements use different tokens
They are concurrently enabled and can occur concurrently
SP = (SendPacket, <n=1, d="COL">)TP+ = (TransmitPacket, <n=1, d="COL", success=true>)TP
– = (TransmitPacket, <n=1, d="COL", success=false>)
Kurt Jensen Lars M. Kristensen
36
Coloured Petri NetsDepartment of Computer Science
Possible marking after 50 steps
k
if n=kthen k+1else k
k
data
n
n if successthen 1`nelse empty
n
if n=kthen k+1else k
(n,d)(n,d)
nif n=k then data^delse data
(n,d)
if successthen 1`(n,d)else empty
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
SendPacket
NextRec1`1
NO
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
DataReceived
1`""
DATA
B
NOxDATA
PacketsTo Send
AllPackets
NOxDATA
11`5
1 1`5
1 1`4
11`"COLOURED PET"
11`(4,"PET")
6
1`(1,"COL")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
Receiver is waiting for packet no. 5
Sender is stillsending packet no. 4
An acknowledgement requesting packet no. 5 is arrivingWhen it is received, the sender will start sending packet no. 5
This packetwill be discarded
Kurt Jensen Lars M. Kristensen
37
Coloured Petri NetsDepartment of Computer Science
Dead marking at the end of simulation
k
if n=kthen k+1else k
k
data
n
n if successthen 1`nelse empty
n
if n=kthen k+1else k
(n,d)(n,d)
nif n=k then data^delse data
(n,d)
if successthen 1`(n,d)else empty
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
SendPacket
NextRec1`1
NO
C
NO
D
NO
A
NOxDATA
NextSend1`1
NO
DataReceived
1`""
DATA
B
NOxDATA
PacketsTo Send
AllPackets
NOxDATA
11`71 1`7
11`"COLOURED PETRI NET"6
1`(1,"COL")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
All packets have been receivedin the correct order
Sender is ready tosend packet no. 7
All buffer placesare empty
Receiver is waiting for packet no. 7
There is no packet no. 7
Kurt Jensen Lars M. Kristensen
38
Coloured Petri NetsDepartment of Computer Science
Transitions can have a guard
k
k
(n,d)
k+1
k
data
k+1
data^d
(n,d)
Discard Packet
ReceiveNextNextRec
1`1
NO
C
NO
DataReceived
1`""
DATA
B
NOxDATA
[n<>k] [n=k]
Guard(<> is theInequality operator)
Guard(tests whether n and kare equal)
Boolean expression which must evaluate to true for the binding element to be enabled.
Additional enabling condition.
Correctpackets
Wrongpackets
andalso and orelse represent respectively the logical conjunction and disjunction operators
Kurt Jensen Lars M. Kristensen
39
Coloured Petri NetsDepartment of Computer Science
k
k
(n,d)
k+1
k
data
k+1
data^d
(n,d)
Discard Packet
[n<>k]
ReceiveNext
[n=k]
NextRec1`1
NO
C
NO
DataReceived
1`""
DATA
B
NOxDATA
11`2
11`""
2
1`(1,"COL")++1`(2,"OUR")
1`"COL"
Guard must evaluate to true
RN1 = (ReceiveNext, <n=1, k=2, d="COL", data="COL">)RN2 = (ReceiveNext, <n=2, k=2, d="OUR", data="COL">)
falsetrue
[n=k]
Kurt Jensen Lars M. Kristensen
40
Coloured Petri NetsDepartment of Computer Science
k
k
(n,d)
k+1
k
data
k+1
data^d
(n,d)
Discard Packet
[n<>k]
ReceiveNext
[n=k]
NextRec1`1
NO
C
NO
DataReceived
1`""
DATA
B
NOxDATA
11`2
11`""
2
1`(1,"COL")++1`(2,"OUR")
1`"COL"
Guard must evaluate to true
DP1 = (DiscardPacket, <n=1, k=2, d="COL" )DP2 = (DiscardPacket, <n=2, k=2, d="OUR")false
true
[n<>k]
Kurt Jensen Lars M. Kristensen
41
Coloured Petri NetsDepartment of Computer Science
Questions
Kurt Jensen Lars M. Kristensen
42
Coloured Petri NetsDepartment of Computer Science
Coloured Petri NetsModelling and Validation of Concurrent Systems
Hierarchical Coloured Petri Nets
Kurt Jensen &Lars Michael Kristensen{kjensen,lmkristensen}@cs.au.dk
Receiver
Receiver
Network
Network
Sender
Sender
PacketsTo Send
AllPackets
NOxDATA
C
NO
D
NO
A
NOxDATA
DataReceived
""
DATAB
NOxDATA
Sender Network Receiver
6
1`(1,"COL")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
1 1`(1,"COL")
11`""
Kurt Jensen Lars M. Kristensen
43
Coloured Petri NetsDepartment of Computer Science
CPN models can be divided into modules CPN modules play a similar role as modules in
ordinary programming languages. They allow the model to be split into
manageable parts with well-defined interfaces. CPN nets with modules are also called
hierarchical Coloured Petri Nets.
Kurt Jensen Lars M. Kristensen
44
Coloured Petri NetsDepartment of Computer Science
Why do we need modules?
There are often system components that are used repeatedly. Inefficient to model these components several times. Instead we define a module, and use the module repeatedly. In this way there is only one description to read, and one
description to modify when changes are necessary.
Impractical to draw a CPN model of a large system as a single net. Would become very large and unhandy. Could be printed on separate sheets and glued together,
but it would be difficult to get an overview and make a nice layout.
The human modeller needs abstractions that make it possible toconcentrate on only a few details at a time. CPN modules can be seen as black-boxes, where the modeller
(when desired) can forget about the details within the modules. This makes it possible to work at different abstraction levels.
Kurt Jensen Lars M. Kristensen
45
Coloured Petri NetsDepartment of Computer Science
Simple protocol
data
n if successthen 1`nelse empty
n
if n=kthen k+1else k
(n,d)(n,d)
nif n=k then data^delse data
(n,d)
if successthen 1`(n,d)else empty
(n,d)
ReceiveAck
TransmitAck
ReceivePacket
TransmitPacket
SendPacket
1`1
NO
CD
NO
A
NOxDATA
NextSend1`1
NO
DataReceived
1`""
DATA
B
NOxDATA
PacketsTo Send
AllPackets
NOxDATA
k n
NextReck
if n=kthen k+1else k
NO
1 1`1
11`""6
1`(1,"COL")++1`(2,"OUR")++1`(3,"ED ")++1`(4,"PET")++1`(5,"RI ")++1`(6,"NET")
11`1
Sender Network Receiver
The protocol model can be divided into three modules: Sender. Network. Receiver.
We “cut” the model into three parts: Using the buffer
places as interfaces between the modules.
Kurt Jensen Lars M. Kristensen
46
Coloured Petri NetsDepartment of Computer Science
Sender module
(n,d)
n
(n,d)
n
SendPacket A Out
NOxDATA
D In
NO
NextSend
1`1
NO
AllPackets
NOxDATA
In
Out
PacketsTo SendI/OI/O
ReceiveAck
k n
Input portUsed to import tokens from the environment
Output portUsed to export tokens to the environment
Input/output portUsed to import and export tokens
Internal placeLocal to themodule
The module interacts with other modules via three port places.
Kurt Jensen Lars M. Kristensen
47
Coloured Petri NetsDepartment of Computer Science
Receiver module
(n,d)
if n=k then data^delse data
k
data
ReceivePacket
COut
NO
BIn
NOxDATA
""
DATA
1`1
NO
In
Out
if n=kthen k+1else k
NextRec
DataReceived I/OI/O
if n=kthen k+1else k
Input portUsed to import tokens from the environment
Output portUsed to export tokens to the environment
Input/output portUsed to import andexport tokens
Internal placeLocal to the module
Kurt Jensen Lars M. Kristensen
48
Coloured Petri NetsDepartment of Computer Science
Network module
n
if successthen 1`(n,d)else empty(n,d)
TransmitAck
TransmitPacket
C In
NO
B Out
NOxDATA
DOut
NO
AIn
NOxDATA
In
Out
Out
Inif successthen 1`nelse empty
Input port
Input port
Output port
Output port
Interaction with the sender
Interaction with the receiver
Kurt Jensen Lars M. Kristensen
49
Coloured Petri NetsDepartment of Computer Science
Receiver
Receiver
Network
Network
Sender
Sender
PacketsTo Send
AllPackets
NOxDATA
C
NO
D
NO
A
NOxDATA
DataReceived
""
DATAB
NOxDATA
Sender Network Receiver
Protocol module Provides a more abstract view of the protocol system. “Glues” the three other modules together.
Three substitution transitions referring to three different modules.
Name of substitution transition
Name of submodule
Kurt Jensen Lars M. Kristensen
50
Coloured Petri NetsDepartment of Computer Science
Protocol module
Receiver
Receiver
Network
Network
Sender
Sender
AllPackets
NOxDATA
C
NO
D
NO
A
NOxDATA
DataReceived
""B
NOxDATA
Sender Network Receiver
DATA
PacketsTo Send
Sender
(n,d)
n
(n,d)
n
SendPacket A Out
NOxDATA
D In
NO
NextSend
1`1
NO
AllPackets
NOxDATA
In
Out
PacketsTo SendI/OI/O
ReceiveAck
k n
(n,d)
if n=k then data^delse data
k
data
ReceivePacket
COut
NO
BIn
NOxDATA
""
DATA
1`1
NO
In
Out
if n=kthen k+1else k
NextRec
DataReceived I/OI/O
if n=kthen k+1else kn
if successthen 1`(n,d)else empty(n,d)
TransmitAck
TransmitPacket
C In
NO
B Out
NOxDATA
DOut
NO
AIn
NOxDATA
In
Out
Out
Inif successthen 1`nelse empty
Network Receiver
Kurt Jensen Lars M. Kristensen
51
Coloured Petri NetsDepartment of Computer Science
Fusion sets Modules can exchange tokens via:
Ports. Fusion sets.
Fusion sets allow places in different modules to be “glued” to one compound place ― across the hierarchical structure of the model.
Fusion sets are in some sense similar to global variables known from many programming languages and should therefore be used with care.
Kurt Jensen Lars M. Kristensen
52
Coloured Petri NetsDepartment of Computer Science
Collecting lost packets We collect a copy of the lost packets on place PacketsLost. Each instance of the Transmit module collects separately.
if successthen emptyelse 1`(recv,pack)
if successthen 1`(recv,pack)else empty(recv,pack) Transmit
Packet
PacketsLost
RECVxPACKET
OUT Out
RECVxPACKET
INIn
RECVxPACKET
In Out
Kurt Jensen Lars M. Kristensen
53
Coloured Petri NetsDepartment of Computer Science
Collecting at a single place All instances of the place PacketsLost are “glued together” to
become a single compound place – sharing the same marking.
if successthen emptyelse 1`(recv,pack)
if successthen 1`(recv,pack)else empty(recv,pack) Transmit
Packet
PacketsLost
Lost RECVxPACKET
OUT Out
RECVxPACKET
INInRECVxPACKETIn Out
LostMember of fusion set
Kurt Jensen Lars M. Kristensen
54
Coloured Petri NetsDepartment of Computer Science
Markingif successthen emptyelse 1`(recv,pack)
if successthen 1`(recv,pack)else empty(recv,pack) Transmit
Packet
PacketsLost
Lost RECVxPACKET
OUT Out
RECVxPACKET
INInRECVxPACKETIn Out
Lost
93`(Recv(1),Data((1,"COL")))++1`(Recv(2),Data((1,"COL")))++3`(Recv(3),Data((1,"COL")))++2`(Recv(3),Ack(2))
11`(Recv(1),Data((1,"COL")))
43
13`(Recv(1),Data((1,"COL")))++18`(Recv(2),Data((1,"COL")))++12`(Recv(3),Data((1,"COL")))
if successthen emptyelse 1`(recv,pack)
if successthen 1`(recv,pack)else empty(recv,pack) Transmit
Packet
PacketsLost
Lost RECVxPACKET
OUT Out
RECVxPACKET
INInRECVxPACKETIn Out
Lost
93`(Recv(1),Data((1,"COL")))++1`(Recv(2),Data((1,"COL")))++3`(Recv(3),Data((1,"COL")))++2`(Recv(3),Ack(2))
2
1`(Recv(1),Ack(2))++1`(Recv(2),Ack(2))
5
2`(Recv(1),Ack(2))++3`(Recv(3),Ack(2))
Local
Local
Shared
Shared
TransmitData
TransmitAck
Local
Local
Kurt Jensen Lars M. Kristensen
55
Coloured Petri NetsDepartment of Computer Science
Booleans(trans)trans
data
InitialiseModel Ack Packets
AcksPACKET
Success
Success BOOL
Data PacketsDataPackets
PACKET
Network
unreliable
TRANSMISSION
DataTo Send
"COLOURED PETRI NET"
DATA
DataPackets
Success
Acks
AllDataPackets(data)
AllAckPackets(data)
1 1`unreliable
1 1`"COLOURED PETRI NET"
Initialisation module Initialisation of the CPN model is done in a specific module. Tokens are distributed to the other modules via fusion sets.
Fusion set
Fusion set
Fusion set
Data to be transmitted
Network properties
Kurt Jensen Lars M. Kristensen
56
Coloured Petri NetsDepartment of Computer Science
Booleans(trans)trans
data
InitialiseModel Ack Packets
AcksPACKET
Success
Success BOOL
Data PacketsDataPackets
PACKET
Network
unreliable
TRANSMISSION
DataTo Send
"COLOURED PETRI NET"
DATA
DataPackets
Success
Acks
AllDataPackets(data)
AllAckPackets(data) 6
1`Ack(2)++1`Ack(3)++1`Ack(4)++1`Ack(5)++1`Ack(6)++1`Ack(7)
2
1`false++1`true
6
1`Data((1,"COL"))++1`Data((2,"OUR"))++1`Data((3,"ED "))++1`Data((4,"PET"))++1`Data((5,"RI "))++1`Data((6,"NET"))
Marking after initialisation
Tokens to Sender module
Tokens to Transmit module
Kurt Jensen Lars M. Kristensen
57
Coloured Petri NetsDepartment of Computer Science
Hierarchical versus non-hierarchical nets
In theory, this implies that the hierarchy constructs of CP-nets do not add expressive power to the modelling language.
Any system that can be modelled with a hierarchical CPN model can also be modelled with a non-hierarchical CPN model.
In practice, the hierarchy constructs are very important. They make it possible to structure large models and thereby
cope with the complexity of large systems. Hence they add modelling power.
A hierarchical CPN model can always be transformed into an equivalent non-hierarchical CPN model.
Kurt Jensen Lars M. Kristensen
58
Coloured Petri NetsDepartment of Computer Science
Questions