Title: Coloured Petri Nets
1Coloured Petri NetsModelling and Validation of
Concurrent Systems
Chapter 2Non-hierarchical Coloured Petri Nets
- Kurt Jensen Lars Michael Kristensen
- kjensen,lmkristensen_at_cs.au.dk
- June 2009
2Simple protocol
3Informal description
No loss of packets No overtaking
Sender
Network
Receiver
4Coloured Petri Net
Place
Arc
Nodes
Transition
Net inscriptions
5Places represent the state of the system
Initial marking (multiset of tokens)
Each token in the initial marking must have a
colour that belongs to the colour set
Name(no formal meaninglarge impact on
readability)
Definition of colour sets colset NO
int ( integers ) colset DATA
string ( text strings ) colset NOxDATA
product NO DATA
- Each place contains a number of tokens.
- Each token carries a colour (data value).
- The colour set specifies the set of allowed token
colours.
Colour set (type)
6Current marking during simulation
Values Token colours (multiset of actual token
colours)
Circle 6 tokens
Type Colour set (set of allowed token colours)
Square Detailed token values
The thick border line indicates that
the transition is enabled (ready to occur)
Information about current marking (changes during
simulation)
One token with value 1
7Transitions and arcs
- The arc expression must evaluate to a colour in
the colour set of the attached place(or a
multiset of such colours)
Arc expression
Declaration of variables var n NO (
integers ) var d DATA ( strings )
Name(no formal meaning)
Binding of variables ltn3,d"CPN"gt
Evaluation of expressions (n,d) ? (3,"CPN")
NOxDATA n ? 3 NO
8Enabling of transition
Two variables var n NO ( integers
) var d DATA ( strings )
?
Binding lt n? , d? gt
NO DATA
?
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
9Enabling of SendPacket
Binding lt n1 , d? gt
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
One token with value 1
10Enabling of SendPacket
Six different tokens
Arc expression
Binding lt n1 , d? gt
Binding lt n1 , d"COL" gt
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
11Enabling of SendPacket
We have found a binding so that each input arc
expression evaluates to a colour that is present
on the corresponding input place
Binding lt n1 , d"COL" gt
Transition is enabled (ready to occur)
12Occurrence of SendPacketin binding ltn1,dCOLgt
13New marking after occurrence of SendPacket in
binding ltn1,dCOLgt
The first packet has been removed
Transition is no longer enabled (thin border line)
A copy of the first packet has been put on A
No token on this place
14New marking M1
Transition enabled
15Binding of TransmitPacket
Arc expression
Binding lt n? , d? gt
Binding lt n1 , d"COL" gt
16Occurrence of TransmitPacket in binding
ltn1,dCOLgt
17New marking M2
XXXX
Binding ltn1,d"COL"gt
18New marking M3
Binding ltn2gt
XXX
19New marking M4
XXX
Binding ltn2gt
20New marking M5
We have successfully transmittedthe first packet
and the acknow-ledgement for it We are ready to
start transmission of packet number two
21First five steps
1 (SendPacket ,ltn1, d"COL"gt) 2
(TransmitPacket , ltn1, d"COL"gt) 3
(ReceivePacket , ltn1, d"COL"gt) 4 (TransmitAck
, ltn2gt) 5 (ReceiveAck , ltn2gt)
Transition
Binding
( , )
22New marking M5
4
Binding ltn2,d"OUR"gt
23New marking M6
4
Binding ltn2,d"OUR"gt
24New marking M7
2
4
1(2,"OUR")
Binding ltn2,d"OUR"gt
25New marking M8
2
4
1(2,"OUR")
Binding ltn3gt
26New marking M9
2
4
1(2,"OUR")
13
Binding ltn3gt
27New marking M10
We have successfully transmittedthe first
twopackets and the acknowledgements for them We
are ready to start transmission of packet number
three
28Marking after 30 steps
We have successfully transmitted all six packets
and the acknowledgements for them There are no
more packets to transmit
Dead marking (no transitions are enabled)
29Second version of protocol
Constant
30Declaration of constants
- We use the following constant to specify the
initial marking of PacketsToSend.
val AllPackets 1(1,"COL") 1(2,"OUR")
1(3,"ED ") 1(4,"PET")
1(5,"RI ") 1(6,"NET")
- Saves a little bit of space in the diagram.
- Enhances readability.
- Can be reused (at other places).
31Double arcs
A double arc is a shorthand for two oppositely
directed arcs with the same arc expression
Double-headed arc
We no longer remove the tokens from the input
places
Double-headed arc
Retransmission becomes possible
32More complicated arc expression
More complicatedarc expression (if-then-else
expression)
33If-then-else expression
success true
New variable
1(1,"COL")
var success BOOL
Successful transmission over the network
b ltn1, d"COL", successtruegt b ltn1,
d"COL", successfalsegt
34If-then-else expression
No packet is added
success false
empty
var success BOOL
Packet is lost during transmission
b ltn1, d"COL", successtruegt b ltn1,
d"COL", successfalsegt
35New name and new type
New name
Initial marking empty text string
New type
36New place NextRec
New place
Plays a similar role as NextSend
Contains the number of the expected packet
37Correct packet arrives
Empty text string
XXX
Packet no 1 arriving
Binding ltn1, d"COL", k1, data""gt
is the concatenation operator
Packet no 1 expected
Update NextRec (from 1 to 2)
Send acknoweledgement (with sequence number of
next packet)
Add received data "COL"
38Wrong packet arrives
Packet no 1 arriving
Binding ltn1, d"COL", k3, data"COLOUR"gt
Packet no 3 expected
Do not change NextRec
Send acknowledgement(with sequence number of
next packet )
No data is added to DataReceived
39Acknowledgements can be lost
Also possible to loose acknowledgements
40NextSend is updated
NextSend is updated with sequence number from
acknowledgement
41Two enabled transitions
- These binding elements need the same token
- They are in conflict with each other
SP (SendPacket, ltn1, d"COL"gt) TP
(TransmitPacket, ltn1, d"COL", successtruegt) TP
(TransmitPacket, ltn1, d"COL",
successfalsegt)
42Two enabled transitions
- These bindings elements use different tokens
- They are concurrently enabled and can occur
concurrently
SP (SendPacket, ltn1, d"COL"gt) TP
(TransmitPacket, ltn1, d"COL", successtruegt) TP
(TransmitPacket, ltn1, d"COL",
successfalsegt)
43Three enabled transitions
These binding elements are in conflict
All other binding elements are concurrently
enabled
SP (SendPacket, ltn1, d"COL"gt) TP
(TransmitPacket, ltn1, d"COL", successtruegt) TP
(TransmitPacket, ltn1, d"COL",
successfalsegt) RP (ReceivePacket, ltn1,
d"COL", k1, data""gt)
44Three enabled transitions
35 different enabled steps
All other binding elements are concurrently
enabled
SP (SendPacket, ltn1, d"COL"gt) TP
(TransmitPacket, ltn1, d"COL", successtruegt) TP
(TransmitPacket, ltn1, d"COL",
successfalsegt) TA (TransmitAck, ltn2,
successtruegt) TA (TransmitAck, ltn2,
successfalsegt)
45Possible marking after 50 steps
This packetwill be discarded
Receiver is waiting for packet no. 5
Sender is still sending packet no. 4
An acknowledgement requesting packet no. 5 is
arriving When it is received, the sender will
start sending packet no. 5
46Dead marking at the end of simulation
There is no packet no. 7
All packets have been received in the correct
order
Receiver is waiting for packet no. 7
Sender is ready to send packet no. 7
All buffer places are empty
47Simulation report
1 0 SendPacket _at_ (1Protocol) - d "COL" - n
1 2 0 TransmitPacket _at_ (1Protocol) - n 1 - d
"COL" - success true 3 0 ReceivePacket _at_
(1Protocol) - k 1 - data "" - n 1 - d
"COL" 4 0 TransmitAck _at_ (1Protocol) - n 2 -
success true 5 0 ReceiveAck _at_ (1Protocol) - k
1 - n 2 6 0 SendPacket _at_ (1Protocol) - d
"OUR" - n 2
- Specifies the occurring transitions and their
bindings. - Automatically generated by the CPN Tools
simulator.
48Visualisation by message sequence chart
- Graphical high-level representation of occurrence
sequence. - Automatically generated by theCPN Tools
simulator. - Makes it easy to see what happened also for
non-CPN experts.
49Transitions can have a guard
- Boolean expression which must evaluate to true
for the binding element to be enabled. - Additional enabling condition.
Correct packets
Wrong packets
Guard (ltgt is the Inequality operator)
Guard (tests whether n and kare equal)
50Guard must evaluate to true
nk
RN1 (ReceiveNext, ltn1, k2, d"COL",
data"COL"gt) RN2 (ReceiveNext, ltn2, k2,
d"OUR", data"COL"gt)
false
true
51Guard must evaluate to true
nltgtk
DP1 (DiscardPacket, ltn1, k2, d"COL" ) DP2
(DiscardPacket, ltn2, k2, d"OUR")
true
false
52Questions