Réseaux de Petri - Université de Montpellier

Transcription

Réseaux de Petri - Université de Montpellier
Université Montpellier II
Module 2 : Modèles de Coordination
Application des réseaux de Petri
à la structuration
d ’applications logicielles
[email protected]
1
[email protected]
2
Motivations
modélisation
Système
Modèle
Réseaux de Petri
modification
révision
et/ou
analyse
incorrect
Propriétés
du modèle
implémentation
Application
logicielle
correct
[email protected]
3
Repères
Réseau de Petri
programmation du modèle
animation du modèle
joueur de réseau de Petri
synchrone, monotâche
asynchrone, multitâches
décomposition
en MEF
structure
application
logicielle
[email protected]
4
Analyse d ’un réseau de Petri
pour la caractérisation des propriétés de l'application
Analyse du réseau de Petri
Propriétés
caractéristiques importantes du système
structure et comportement dynamique
modification et/ou l'amélioration
Évaluation
étude des performances temporelles (RdP T/P-temporisés, temporels)
étude des protocoles , des files, etc. (RdP stochastiques)
etc.
… avant la mise en œuvre !
[email protected]
5
Propriétés
Ré-initialisable
Bornage (état)
(évolution)
graphe fini
cycle
cycle
évaluation
Borné & ré-initialisable
[email protected]
Place puits
Non borné & Non ré-initialisable
6
Propriétés
Vivacité (évolution) ensemble du graphe tjs évolutif
Blocage
total
partiel
non-vivant
(évolution)
existence chemin totalement bloquant
existence branche morte
transition quasi-vivante
initialisation
initialisation
initialisation
Place source
quasi-vivante
cycle
cycle
cycle
quasi-vivantes
vivantes
inférence
non-vivante
BLOCAGE TOTAL
(« blocage mortel »)
[email protected]
BLOCAGE PARTIEL
(« branche morte »)
7
Propriétés
Composante conservative
structure
Invariant de marquage (places)
+ marquage initial
≡
contrainte
sur les états et les activités du système
toujours vérifiée ∀t
p1
M(p1) + M(p2) = Mo(p1) + Mo(p2) = 1 + 0 = 1
M(p1) + M(p2) =1
∀t
p2
i.e. soit p1 actif soit p2 actif, mais jamais p1 et p2 en même temps
[email protected]
8
Propriétés
Composante répétitive stationnaire
structure
Invariant de transition
+ marquage initial
≡
séquence cyclique d'événements
qui peut être répétée indéfiniment
t1
S = {t1, t2}
t2
[email protected]
9
Ordre(s) de fabrication de pièce
de type I
de type II
Exemple d’étude
Of_p2
Of_p1
M2
libre
M1
libre
TR2
TR1
pièce
sur M1
US1
M1
Robot
libre
pièce
sur M2
US2
stock
TR1
TR2
transport de pièce
du robot vers Mi
US1
US2
usinages
Robot
M2
nb_pI
nb_pII
Quantité de pièces produites
de type I
de type II
[email protected]
10
Résultats d'analyse : Modèle sans ordre de fabrication ni comptage des pièces produites
P-invariants:
1 0 0
(M1_libre)
0 1 0
(robot_libre)
0 0 1
(M2_libre)
1 1 0
(TR1)
0 1 1
(TR2)
1 0 0
(piece_M1)
0 0 1
(piece_M2)
1 0 0
(US1)
0 0 1
(US2)
T
1
0
1
0
1
0
1
0
invariants:
0
(t1)
1
(t2)
0
(t3)
1
(t4)
0
(t5)
1
(t6)
0
(t7)
1
(t8)
ie.
ie.
M(M1_libre)+M(TR1)+M(piece_M1)+M(US1)
M(robot_libre)+M(TR1)+M(TR2)
M(M2_libre)+M(TR2)+M(piece_M2)+M(US2)
= 1
= 1
= 1
t1 ; t3 ; t5 ; t7
t2 ; t4 ; t6 ; t8
All transitions are covered by Tinvariants.
All places are covered by P-invariants.
General properties :
Net is bounded.
Deadlock is not possible.
Net is live.
Net has home states.
Coverability graph generation statistics: 15 unique markings
[email protected]
11
Résultats d'analyse : Modèle sans ordre de fabrication avec comptage des pièces produites
P-invariants:
1 0 0
(M1_libre)
0 1 0
(robot_libre)
0 0 1
(M2_libre)
1 1 0
(TR1)
0 1 1
(TR2)
1 0 0
(piece_M1)
0 0 1
(piece_M2)
1 0 0
(US1)
0 0 1
(US2)
0 0 0
(nb_pI)
0 0 0
(nb_pII)
ie.
M(M1_libre)+M(TR1)+M(piece_M1)+M(US1)
M(robot_libre)+M(TR1)+M(TR2)
M(M2_libre)+M(TR2)+M(piece_M2)+M(US2)
T invariants:
None.
No transitions are covered by T-invariants.
=1
=1
=1
The following places are not covered by Pinvariants: nb_pI, nb_pII
General properties :
Net is unbounded.
Place nb_pII can become unbounded via the following transition
firing sequence: t2
t4
t6
t8
Rem : idem nb_pI
Coverability graph generation statistics: 85 unique markings
[email protected]
12
Résultats d'analyse : Modèle sans comptage des pièces produites, avec ordre de fabrication
P-invariants:
1 0 0
(M1_libre)
0 1 0
(robot_libre)
0 0 1
(M2_libre)
1 1 0
(TR1)
0 1 1
(TR2)
1 0 0
(piece_M1)
0 0 1
(piece_M2)
1 0 0
(US1)
0 0 1
(US2)
0 0 0
(of_p2)
0 0 0
(of_p1)
ie.
M(M1_libre)+M(TR1)+M(piece_M1)+M(US1)
M(robot_libre)+M(TR1)+M(TR2)
M(M2_libre)+M(TR2)+M(piece_M2)+M(US2)
T invariants:
None.
No transitions are covered by T-invariants.
=1
=1
=1
The following places are not covered by Pinvariants: of_p2, of_p1
General properties :
Net is bounded.
Deadlock is possible via the following transition firing sequence:
t2
t4
t6
t8
t2
t4
t6
t8
t1
t3
t5
t7
t1
t3
Net is not live (there is a deadlock).
t5
t7
Net has home states.
Coverability graph generation statistics: 77 unique markings
[email protected]
13
Exploitation des résultats d'analyse
pour la caractérisation des propriétés de l'application
P-invariants:
1 0 0
(M1_libre)
0 1 0
(robot_libre)
0 0 1
(M2_libre)
1 1 0
(TR1)
0 1 1
(TR2)
1 0 0
(piece_M1)
0 0 1
(piece_M2)
1 0 0
(US1)
0 0 1
(US2)
M2
libre
M1
libre
TR2
TR1
pièce
sur M1
Robot
libre
pièce
sur M2
ie.
M(M1_libre)+M(TR1)+M(piece_M1)+M(US1)
M(robot_libre)+M(TR1)+M(TR2)
M(M2_libre)+M(TR2)+M(piece_M2)+M(US2)
US1
= 1
= 1
= 1
US2
All places are covered by P-invariants.
RdP borné (relation non duale)
Affectation exclusive de la ressource
Sous-réseaux assimilables MEF pour décomposition
[email protected]
14
Exploitation des résultats d'analyse
pour la caractérisation des propriétés de l'application
T
1
0
1
0
1
0
1
0
invariants:
0
(t1)
1
(t2)
0
(t3)
1
(t4)
0
(t5)
1
(t6)
0
(t7)
1
(t8)
t1
t2
t3
t4
ie.
t5
t6
t1 ; t3 ; t5 ; t7
t2 ; t4 ; t6 ; t8
t7
t8
All transitions are covered by Tinvariants.
RdP vivant (relation non duale)
Existence de processus cycliques
(rem: transitions impliquées et nombre d’occurrence sur le vecteur)
[email protected]
15
Exploitation des résultats d'analyse
pour la caractérisation des propriétés de l'application
General properties :
Net is bounded.
borné
Deadlock is not possible.
vivant
Net is live.
Net has home states.
Coverability graph generation statistics: 15 unique markings
Ré-initialisable (états
d’accueil)
A
M2
libre
M1
libre
pièce
sur M1
US1
B
TR2
TR1
Robot
libre
C
D
pièce
sur M2
F
E
G
US2
H
Graphe des marquages
accessibles
I
J
L
N
K
M
O
[email protected]
16
Exploitation des résultats d'analyse
pour la caractérisation des propriétés de l'application
P-invariants:
1 0 0
(M1_libre)
0 1 0
(robot_libre)
0 0 1
(M2_libre)
1 1 0
(TR1)
0 1 1
(TR2)
1 0 0
(piece_M1)
0 0 1
(piece_M2)
1 0 0
(US1)
0 0 1
(US2)
0 0 0
(nb_pI)
0 0 0
(nb_pII)
ie.
M(M1_libre)+M(TR1)+M(piece_M1)+M(US1)
M(robot_libre)+M(TR1)+M(TR2)
M(M2_libre)+M(TR2)+M(piece_M2)+M(US2)
M2
libre
M1
libre
TR2
TR1
pièce
sur M1
Robot
libre
pièce
sur M2
US1
=1
=1
=1
The following places are not covered by Pinvariants: nb_pI, nb_pII
nb_pI
US2
nb_pII
Quantité de pièces produites
de type I
de type II
(rem: places « puits »)
RdP borné ? Conclusion impossible !
(rem: places dédiées au comptage de pièces … donc logiquement non bornées)
Relations préservées car structure du RdP non modifiée sur cette partie du modèle
[email protected]
17
Exploitation des résultats d'analyse
pour la caractérisation des propriétés de l'application
T invariants:
None.
M2
libre
M1
libre
TR2
TR1
No transitions are covered by T-invariants.
pièce
sur M1
US1
nb_pI
Robot
libre
pièce
sur M2
US2
nb_pII
Quantité de pièces produites
de type I
de type II
Perte des processus cycliques, en fait non identifiés par l’analyse
(induit par marquage croissant donc non stationnaire sur places puits)
[email protected]
18
Exploitation des résultats d'analyse
pour la caractérisation des propriétés de l'application
General properties :
Net is unbounded.
Place nb_pII can become unbounded via the following transition
firing sequence: t2
t4
t6
t8
Rem : idem nb_pI
Coverability graph generation statistics: 85 unique markings
Identification du chemin (séquence de franchissements de transitions)
conduisant à un marquage strictement croissant
Non borné … induit par marquage croissant sur places puits
Graphe de marquage > 85 états (analyse arrêtée là) … graphe infini
(rem : à noter la non détermination d’états d’accueil)
[email protected]
19
Exploitation des résultats d'analyse
pour la caractérisation des propriétés de l'application
(rem: places « sources »)
P-invariants:
1 0 0
(M1_libre)
0 1 0
(robot_libre)
0 0 1
(M2_libre)
1 1 0
(TR1)
0 1 1
(TR2)
1 0 0
(piece_M1)
0 0 1
(piece_M2)
1 0 0
(US1)
0 0 1
(US2)
0 0 0
(of_p2)
0 0 0
(of_p1)
ie.
M(M1_libre)+M(TR1)+M(piece_M1)+M(US1)
M(robot_libre)+M(TR1)+M(TR2)
M(M2_libre)+M(TR2)+M(piece_M2)+M(US2)
Ordres de fabrication de pièces
de type I
de type II
of_p1
of_p2
M2
libre
M1
libre
=1
=1
=1
The following places are not covered by Pinvariants: of_p2, of_p1
TR2
TR1
pièce
sur M1
US1
Robot
libre
pièce
sur M2
US2
RdP borné ? Conclusion impossible !
(rem: of_p1 et of_p2 = places sources … donc normalement bornées
mais n’appartiennent pas à composantes conservatives car marquage décroissant)
Relations préservées car structure du RdP non modifiée sur cette partie du modèle
[email protected]
20
Exploitation des résultats d'analyse
pour la caractérisation des propriétés de l'application
Ordres de fabrication de pièces
de type I
de type II
of_p1
of_p2
T invariants:
None.
No transitions are covered by T-invariants.
M2
libre
M1
libre
TR2
TR1
pièce
sur M1
US1
Robot
libre
pièce
sur M2
US2
Perte des processus cycliques, en fait non identifiés par l’analyse
(induit par marquage décroissant donc non stationnaire sur places sources)
[email protected]
21
Exploitation des résultats d'analyse
pour la caractérisation des propriétés de l'application
General properties :
Net is bounded.
Deadlock is possible via the following transition firing sequence:
t2
t4
t6
t8
t2
t4
t6
t8
t1
t3
t5
t7
t1
t3
Net is not live (there is a deadlock).
t5
t7
Net has home states.
Coverability graph generation statistics: 77 unique markings
Non vivant … identification du chemin
(séquence de franchissements de transitions)
conduisant à un blocage total
borné … pas d ’influence des places sources
(marquage borné décroissant)
Graphe de marquage = 77 états … graphe fini mais bloquant
(rem : à noter la détermination d’états d’accueil même si non ré-initialisable)
[email protected]
22
Remarque sur la présence
d ’état source ou d ’état puits
Prise de la
ressource
OP1
OP2
Ressource
Unitaire
(i.e. capacité=1)
OP2
Libération de la
ressource
Avec prise en compte de la ressource
P-invariants:
1 0 (p1)
1 0 (attente)
Disparition de la
1 1 (OP1)
1 0 (OP2)
contrainte sur OP1
0 1 (ressource)
ie.
M(p1) + M(attente) + M(OP1) + M(OP2) = 3
M(OP1) + M(ressource) =1
[email protected]
OP1
!
Sans prise en compte de la ressource
P-invariants
1 (p1)
1 (attente)
1 (OP1)
1 (OP2)
ie.
M(p1) + M(attente) + M(OP1) + M(OP2) = 3
23
Remarque sur l ’analyse
d ’un RdP constitué de plusieurs sous-RdP
RdP_A
t1
t2
t3
RdP_B
RdP_B
t1
t3
t2
t4
t4
t5
RdP_A
… t4 … t5 … t4 ...
=> RdP_A non-bloqué
=> RdP_B
bloqué
… t1 … t2 … t1...
=> RdP_A et RdP_B bloqués
Sous-RdP corrects mais interactions bloquantes !
Nécessité d’une Analyse Globale !
Propriétés RdP Global non déductibles de celles des sous-RdP
[email protected]
24
Réalisation Logicielle
Plusieurs possibilités d’implémentation
• les machines à micro-processeur (langages assembleur, Pascal, C, Ada, ...)
directement (programmation du modèle) ou indirectement (traduction du modèle),
• les automates programmables
attention à l’utilisation d’automates orientés Grafcet car les règles d'évolution sont différentes,
• les systèmes d’exploitation multitâches temps-réel
le RdP décrit la structure des tâches et leurs interactions,
• les environnements orientés objets
structuration en objets dont les RdP associés décrivent les comportements et les interactions,
• les systèmes distribués (ou multiprocesseurs), etc.
Fonctionnement en mode synchrone (ou pseudo-synchrone) ou asynchrone.
[email protected]
25
Réalisation Logicielle … mode synchrone
mode synchrone = utilisation d’une horloge temps-réel (HTR) pour guider l’exécution du cycle.
Initialisation
système
Initialisation
système
IT HTR
Initialisation
cycle
LE
Initialisation
cycle
SORT
LE
Traitement
SORT
Attente HTR
Traitement
- Structure du programme synchrone • Entrées mémorisées (LE)
• Sorties réelles (SORT) appliquées à pas
constant
• Traitement (durée variable mais finie et
inférieure au temps de cycle )
[email protected]
- Structure du programme pseudo-synchrone • En fait asynchrone car cycle pas cadencé par une horloge
temps-réel
• Considéré parfois comme synchrone car E/S sont mémorisées
et fonctionnement cyclique
• Cependant pas de calcul pas nécessairement constant
26
Réalisation Logicielle … mode asynchrone
Asynchrone = pas d’horloge temps-réel
• lecture des entrées effectuée au besoin
• élaboration des sorties effectives au fur et à mesure des calculs
• avantages : simplicité (pas de mémorisation des E/S) et rapidité.
• inconvénient : les possibilités d’aléas
• Conséquence et règles
- Système monotâche : mémoriser toute variable d’entrée binaire ou numérique utilisée plusieurs fois au
cours du même cycle ... quasi-équivalent au mode pseudo-synchrone.
- Système multitâches : événement local à une tâche si possible, sinon événement testé à l’aide d’une
primitive de l’exécutif.
[email protected]
27
Réseaux de Petri Interprétés (flot de contrôle et flot de données)
Réseau de Petri = une structure de contrôle traduisant l'aspect comportemental du système
Or le système possède souvent de nombreuses données dont l'organisation peut fortement influencer les
performances de l'application résultante.
Données (et transformations) non représentées
Utiliser des diagrammes de flots de données (Data Flow Diagram).
La description de l'application est complète si elle comprend :
• l'expression du flot de contrôle (RdP décrivant le comportement)
• l’expression du flot de données (DFD décrivant la manipulation des données)
[email protected]
28
Réalisation logicielle monotâche synchrone
Réalisation guidée par les transitions
(plus adéquat pour réalisation monotâche)
• Places représentées par des variables du programme.
• Chaque transition = un bloc d’instructions.
Ce bloc est composé de 4 groupes :
• 1er groupe : il détermine si la transition est sensibilisée
•
a&b
2ème
groupe : il détermine si la réceptivité associée est vraie
• 3ème groupe : il effectue le franchissement de la transition.
- démarquage des places précédentes,
- marquage des places suivantes.
S1
• 4ème groupe : il désactive les actions (ou les sorties virtuelles selon le mode) associées aux places
démarquées et active celles associées aux places nouvellement marquées.
[email protected]
29
Réalisation logicielle monotâche synchrone
Réalisation guidée par les transitions
(plus adéquat pour réalisation monotâche)
• Places représentées par des variables du programme.
• Chaque transition = un bloc d’instructions.
Ce bloc est composé de 4 groupes :
• 1er groupe : il détermine si la transition est sensibilisée
•
a&b
2ème
groupe : il détermine si la réceptivité associée est vraie
• 3ème groupe : il effectue le franchissement de la transition.
- démarquage des places précédentes,
- marquage des places suivantes.
S1
• 4ème groupe : il désactive les actions (ou les sorties virtuelles selon le mode) associées aux places
démarquées et active celles associées aux places nouvellement marquées.
[email protected]
30
Réalisation logicielle monotâche synchrone
Réalisation guidée par les transitions
(plus adéquat pour réalisation monotâche)
• Places représentées par des variables du programme.
• Chaque transition = un bloc d’instructions.
Ce bloc est composé de 4 groupes :
• 1er groupe : il détermine si la transition est sensibilisée
•
a&b
2ème
groupe : il détermine si la réceptivité associée est vraie
• 3ème groupe : il effectue le franchissement de la transition.
- démarquage des places précédentes,
- marquage des places suivantes.
S1
• 4ème groupe : il désactive les actions (ou les sorties virtuelles selon le mode) associées aux places
démarquées et active celles associées aux places nouvellement marquées.
[email protected]
31
Réalisation logicielle monotâche synchrone
Réalisation guidée par les transitions
(plus adéquat pour réalisation monotâche)
• Places représentées par des variables du programme.
• Chaque transition = un bloc d’instructions.
Ce bloc est composé de 4 groupes :
• 1er groupe : il détermine si la transition est sensibilisée
•
a&b
2ème
groupe : il détermine si la réceptivité associée est vraie
• 3ème groupe : il effectue le franchissement de la transition.
- démarquage des places précédentes,
- marquage des places suivantes.
S1 vraie
• 4ème groupe : il désactive les actions (ou les sorties virtuelles selon le mode) associées aux places
démarquées et active celles associées aux places nouvellement marquées.
[email protected]
32
Réalisation logicielle monotâche synchrone
Réalisation guidée par les transitions
Organisation générale du programme
Initialisations
début cycle
L.E. (Lecture des Entrées) ;
SORT (génération des sorties) ;
Bloc transition t1
Bloc transition t2
.
.
.
Bloc transition tn
fin cycle ...
En mode asynchrone blocs LE et SORT répartis
dans les blocs transitions
Sorties impulsionnelles produites directement dans les blocs
transitions quel que soit le mode de réalisation (synchrone,
asynchrone)
Transitions décrites en séquence dans un ordre indifférent
Pour deux transitions en conflit effectif,
la transition franchie est la première exécutée ...
Donc rendue prioritaire à l’implémentation :
défaut de reproductibilité
(éviter cet indéterminisme dès la spécification)
[email protected]
33
Réalisation logicielle monotâche synchrone
Illustration transitions en conflit effectif
Transitions décrites en séquence dans un ordre indifférent
Marquage courant
…
t1
?
t2
bloc t4
bloc t2
t3
bloc t5
t4
t5
conflit entre t2 et t3
bloc t1
bloc t3
bloc t6
la transition franchie
est la première exécutée ...
Après tir de t2,
t3 non franchissable
...
t6
donc t2 rendue prioritaire …
à l’implémentation !
Si t3 décrite avant t2 … t3 prioritaire
[email protected]
défaut de reproductibilité
34
Réalisation logicielle monotâche synchrone
Résolution de l ’indéterminisme d ’un conflit structurel
introduction de la place complémentaire
Boucle de lecture
Transitions en conflit
A
A’
A
A’
A’
A
B
A’ place complémentaire de A
évolution inverse du marquage
• transitions alimentant A vident A’
• transitions vidant A alimentent A’
conflit effectif impossible
(ici, priorité de A sur B)
[email protected]
35
Réalisation logicielle monotâche synchrone
Réalisation guidée par les transitions … Illustration implémentation
P1
P2
P3
ti
S2
S1
( x1&/x2 ; S0 )
P4
P5
P6
Bloc transition ti
•1er groupe : sensibilisation
var = P1 et P2 et P3
si var = faux alors saut à ti+1
•2ème groupe : condition
var = x1 et pas x2
si var = faux alors saut à ti+1
•3ème groupe : tir de ti.
P1 = faux ; P2 = faux ; P3 = faux ; P4 = vrai ; P5 = vrai ; P6 = vrai ;
•4ème groupe : actions
Actions sur les transitions
S0 = vrai ; S0 = faux ;
Actions sur les places
S1 = faux ; S2 = vrai ;
[email protected]
36
Réalisation logicielle monotâche synchrone
Réalisation guidée par le marquage
technique du choix multiple
appliquée pour la mise en œuvre des machines à états finis (systèmes séquentiels)
Pour l’appliquer aux réseaux de Petri (RdP), adaptation du modèle parfois nécessaire :
• soit en s’appuyant sur le Graphe des Marquages accessibles GA(R;Mo),
Méthode "lourde" mais efficace en terme de temps de calcul et de taille du programme,
• soit en décomposant le RdP en RdP machines à états (RdP ME).
S’il subsiste des sous-réseaux non ordinaires et/ou des RdP MEF k-bornés, il faut tirer leur graphe
des marquages accessibles
Décomposition en machine à états finis (MEF)
[email protected]
37
Décomposition en machine à états finis (MEF)
Rappels
• un RdP ordinaire est un RdP dans lequel les poids des arcs sont égaux à 1 (un RdP ordinaire binaire
est un RdP sauf, i.e. ordinaire 1-borné).
• un RdP ME est un RdP ordinaire dans lequel toute transition possède une seule place en entrée (Pré)
et une seule place en sortie (Post). Une ME permet effectivement d'exprimer les décisions mais pas le
parallélisme (contrairement au graphe d'événements).
Convergence en ET
[email protected]
Divergence en ET
Convergence en OU Divergence en OU
38
Décomposition en machine à états finis (MEF)
Rappels
• Un RdP ordinaire k-borné (avec k>1) n’est pas directement transposable en un RdP ME.
Il faut passer par le graphe des marquages accessibles afin d’obtenir un RdP ME
n’ayant qu’un état actif quelque soit t (caractéristique essentielle d’une ME).
Toutefois dans certains cas la pondération n'étant que l'expression d'un comptage d'entités
(symbolisées par les jetons), le RdP ordinaire k-borné reste transposable en un RdP ME.
(m;c+1)
(m;)
10
- RdP non binaire [email protected]
≡
(c=10;c=0)
- Transformation d'un compteur structurel en interprétation 39
Décomposition en machine à états finis (MEF)
Principe
• Différence structurelle entre un RdP ordinaire binaire et une Machine à Etats (ME) :
- essentiellement au niveau du parallélisme et des synchronisations
- repérables par les transitions ayant :
- plusieurs arcs sortants … départ en parallèle
- et/ou plusieurs arcs entrants … synchronisation
• La coupure de ces transitions en fragments possédant :
- 1 seul arc entrant
- et un seul arc sortant
définit des branches RdP
séquentielles ordinaires
• Les sous-RdP obtenus sont des RdP ME
Il suffit alors de refermer ces branches et de les synchroniser entre elles
pour rendre les RdP ME obtenus exploitables.
• Plusieurs branches RdP ordinaires peuvent être recomposées pourvu que cette composition
donne toujours un RdP ME
minimisation possible du nombre de RdP ME de l’application
[email protected]
40
Décomposition en machine à états finis (MEF)
Illustration
P1
(a>10;)
t3
t1
Action1
P3
P2
t2
(c=2.6;action4)
(b=5;)
P4
t8
P8
Action2
t4
(f<14;action5)
(d=21;) t7
t5
Action3
Action1
P5
t6
(e=1;)
P7
P6
Fragmentation des transitions
(x;y)
[email protected]
(condition ; action impulsionnelle)
41
Décomposition en machine à états finis (MEF)
Illustration
ß Décomposition en RdP ME ß
P1
P4
t'7
P8
P3
P2
t2
t8
t3
t1
t4
t'5
t7
t6
P5
t5
P6
P7
synchronisations
[email protected]
42
Décomposition en machine à états finis (MEF)
Illustration
ß RdP ME_B ß
ß RdP ME_A ß
P1
« fermeture »
t3
t1
P2
t2
t8
PB
t5 . synchroP4
P8
P3
P5
t4
P4
t6 . synchroP7
t6
t7 . synchroP6
P6
P7
t4 . synchroPB
inutile
(PB marquée avant P4)
[email protected]
SynchroPi = Variables de synchronisations
43
Décomposition en machine à états finis (MEF)
Exercice
P1
t1
P2
t2
P3
t3
P4
t4
[email protected]
t5
P5
P6
P7
t6
P8
t7
P9
t8
44
Décomposition en machine à états finis (MEF)
Solution
t5’
t1’
P5
t1
P1
t5
P6
t6’
t2’
P2
P7
t6
t2
P8
« fermeture »
P3
t7
t3
P9
P4
t4
PA
t2’
[email protected]
t5’
t1’
P5
t8
PB
t6’
45
Décomposition en machine à états finis (MEF)
Solution
t5’ & SynchroP6
t1’ & SynchroP1
PA
t2’ & SynchroP2
P5
PB
t6’ & SynchroP7
t5 & SynchroP5
t1 & SynchroP5
P1
P6
P7
P2
t6 & SynchroPB
t2 & SynchroPA
P8
P3
t3
P4
[email protected]
t4
Remarque
synchro sur les états
mais en toute rigueur
synchro sur les transitions
(fusion de transitions)
t7
P9
t8
46
Réalisation logicielle monotâche synchrone
Réalisation guidée par le marquage
technique du choix multiple … illustration
Organisation générale du programme
Initialisations
début cycle
répéter
LE
SORT
/* traitement */
switch (Etat_ME_A)
{ case P1 :
case P2 :
...
case Pn :
}
• chaque RdP ME a une variable d’état associée (ex : Etat_ME_A)
• chaque état est codé par une constante (ex : type énuméré du C)
• les synchronisations sont représentées par des variables (0/1)
jusqu’à faux (attention, il est préférable de prévoir une condition de sortie)
fin cycle
[email protected]
47
Réalisation logicielle monotâche synchrone
Réalisation guidée par le marquage … illustration (ex rdp p.43)
main()
{
/* déclaration des MEFs */
enum etats_ME_A {P1 ,P2 , P3 ,P4 , P7 , P8} Etat_ME_A ;
enum etats_ME_B {PB ,P5 ,P6} Etat_ME_B ;
/* déclaration des variables */
int SynchroP4, SynchroP6, SynchroP7 ;
int Condition_Sortie_Boucle = 0 ;
/* Initialisations de l‘état initial de chaque RdP ME et des
synchronisations */
Etat_ME_A = P1 ; Etat_ME_B = PB ;
SynchroP4 = 0 ; SynchroP6 = 0 ; SynchroP7 = 0 ;
do /* début cycle */
{
/* Bloc Lecture et mémorisation des entrées (mode synchrone
ou pseudo-synchrone) */
evt1=(a>10); evt3=(b==5); evt2=(c==2.6); evt4=(d==21);
evt5=1; evt7=1; evt8=(f<14); evt6=(e==1);
[email protected]
/* Bloc inférence ... description des réseaux de Petri */
switch (Etat_ME_A) {
case P1 : if (evt1) Etat_ME_A = P2 ;
else if (evt3) Etat_ME_A = P3 ; break ;
case P2 : if (evt2) Etat_ME_A = P4 ; Action4=1; Action4=0; break ;
case P3 : if (evt4) Etat_ME_A = P4 ; break ;
case P4 : if (evt5) Etat_ME_A = P7 ; break ;
case P7 : if (evt7 && synchroP6) Etat_ME_A = P8 ; break ;
case P8 : if (evt8) Etat_ME_A = P1 ; Action5=1; Action5=0; break ;
default : printf(‘’ Erreur RdP ME A non initialisée \n‘’ ) ;
}
switch (Etat_ME_B) {
case PB : if (evt5 && synchroP4) Etat_ME_B = P5 ; break ;
case P5 : if (evt6) Etat_ME_B = P6 ; break ;
case P6 : if (evt7 && synchroP7 ) Etat_ME_B = PB ; break ;
default : printf(‘’ Erreur RdP ME B non initialisée \n‘’ ) ;
}
/* Ce bloc d’actualisation des synchronisations peut être inséré en début
ou fin de cycle */
SynchroP4 = (Etat_ME_A==P4); SynchroP7 = (Etat_ME_A==P7);
SynchroP6 = (Etat_ME_B==P6);
/* Bloc Génération des sorties (bloc inséré avant ou après l’inférence selon
le mode désiré) */
Action1=((Etat_ME_A==P2)||( Etat_ME_A==P5));
Action2=(Etat_ME_A==P3);
Action3=(Etat_ME_A==P7);
}
while (condition_sortie_boucle) ; /*fin cycle */
}
48
Réalisation logicielle monotâche synchrone
Réalisation guidée par le marquage … PRECISION IMPORTANTE
Attention à la synchronisation !
Il ne faut pas toucher au marquage des places de synchronisation tant que tous les RdP ME n’ont pas été
exécutés. Le marquage de ces places doit donc être mémorisé et leur évolution effective doit être effectuée
en début ou fin de cycle.
Illustration du dysfonctionnement induit si évolution des variables de synchronisation lors des tirs
PA
PB
t1 & SynchroPB
t3 & SynchroPA
t2
SynchroPA=0
tir de t2
SynchroPA=1
T1 non franchissable
t4
t3 franchissable
SynchroPB=0
SynchroPB=1
tir de t3
(donc perte « simultanéité » du tir)
RdP désynchronisés !
[email protected]
Précision : tirs de t1 et de t3 pdt le même cycle
programme (2 MEF décrites en séquence)
49
Réalisation logicielle multitâches asynchrone
Représentation de la structuration d’une application multitâches par un modèle basé RdP
fonctionnement de l’application logicielle traduit sur la structure du modèle
(enchaînement des opérations, parallélisme potentiel, synchronisations, etc.)
Tâche A
Tâche B
structure
out
in
squelette
décomposition en
sous-systèmes
correspondant à
tâches indépendantes
et/ou coordonnées
Importance de la communication sur l ’OS
[email protected]
50
Réalisation logicielle multitâches asynchrone
La décomposition en sous-systèmes … principe
• orientée matériel : à chaque entité commandée est associée 1 tâche
L’approche (intuitive ou aidée parfois par les composantes conservatives) consiste à associer une tâche à
chaque entité physique commandée, il faut cependant que ces dernières ne puissent intrinsèquement
mener qu’une activité à la fois. Le cas contraire ferait apparaître du parallélisme au sein des tâches
obtenues par cette décomposition, ce qui supposerait alors une re-décomposition des sous-réseaux
obtenus.
• orientée fonction : à chaque fonction du système est alors associée 1 tâche
Il faut identifier les cycles séquentiels suivis par les jetons (souvent reflétés à travers les composantes
répétitives stationnaires) : un cycle correspond alors au corps d’une tâche. Les places qui sont reliées par
un arc à ce cycle, en entrée ou en sortie, constituent alors les places de communication à travers
lesquelles s’effectue tout échange et/ou synchronisation entre tâches.
Les fonctions ne correspondent pas toujours aux activités utilisées pendant la modélisation, à savoir
qu’un processus (décrivant une fonction) peut correspondre à une séquence d’activités.
Les deux principes s’appuient sur la décomposition d’un RdP en RdP machines à états.
[email protected]
51
Réalisation logicielle multitâches asynchrone
La décomposition en sous-systèmes … illustration
M2
libre
M1
libre
décomposition orientée matériel
TR2
TR1
• Robot en charge des transports
pièce
sur M1
Robot
libre
pièce
sur M2
rem : TR1 et TR2 exclusifs
• Machine 1 en charge Usinage US1
US1
Sous-RdP
M1
US2
• Machine 2 en charge Usinage US2
Sous-RdP
Sous-RdP
ROBOT
M2
3 RdP_ME
+
communication
[email protected]
52
Réalisation logicielle multitâches asynchrone
La décomposition en sous-systèmes … illustration
Places
de
communication
Places
M2
libre
M1
libre
communication
TR2
TR1
de
Robot
pièce
sur M1
pièce
sur M1
pièce
sur M2
pièce
sur M2
US1
M1
libre
[email protected]
US2
M2
libre
53
Réalisation logicielle multitâches asynchrone
La décomposition en sous-systèmes … implémentation
corps des tâches
(pseudo-code)
Définition des messages
Intialisation
Définition priorité, stratégie
d ’ordonnancement
etc.
{
corps de la tâche
}
pièce
sur M1
Send(pid_robot,M1_libre) ;
do
{
Receive(pid_robot, pièce_sur_M1) ;
Reply(pid_robot) ;
US1 ;
Send(pid_robot,M1_libre) ;
}
while (1) ;
US1
M1
libre
Libération(s) et destruction(s) diverses
Attention à l’initialisation
[email protected]
54
Réalisation logicielle multitâches asynchrone
La décomposition en sous-systèmes … implémentation
Structure particulière !
t1
M1
libre
t2
TR2
TR1
Robot
pièce
sur M1
pièce
sur M2
attention conflit non résolu,
priorité établie par l'implémentation
(ici, t1 prioritaire sur t2)
[email protected]
M2
libre
corps des tâches
(pseudo-code)
do
{
activite = aucune ;
while (activite= =aucune)
{
if ((pid=Creceive(pid_machine1,M1_libre)) !=-1)
activite=activite1 ;
else
if ((pid=Creceive(pid_machine2,M2_libre)) !=-1)
activite=activite2 ;
}
Reply (pid) ;
Switch (activite)
{
case activite1 :
TR1; Send(pid_machine1,pièce_sur_M1); break;
case activite2 :
TR2; Send(pid_machine2,pièce_sur_M2); break;
...}
}
while (1) ;
55
Réalisation logicielle multitâches asynchrone
La décomposition en sous-systèmes … illustration
M2
libre
M1
libre
décomposition orientée fonction
TR2
TR1
• fonction 1
pièce
sur M1
Robot
libre
pièce
sur M2
« fabriquer pièce type I »
• fonction 2
US1
Sous-RdP
FONCTION 1
US2
Ressource
Partagée
ROBOT
« fabriquer pièce type II »
Sous-RdP
FONCTION 2
2 RdP_ME
+
sémaphore
[email protected]
56
Réalisation logicielle multitâches asynchrone
La décomposition en sous-systèmes … illustration
« fabriquer pièce type I »
Robot
« fabriquer pièce type II »
Robot
TR2
TR1
US2
US1
[email protected]
57
Réalisation logicielle multitâches asynchrone
La décomposition en sous-systèmes … implémentation
« fabriquer pièce type I »
Robot
TR1
do
{
Sem_wait(sem_robot) ; // réservation du robot
TR1 ;
Sem_post(sem_robot) ; // libération du robot
US1 ;
}
while (1) ;
US1
Précision : une tâche initiale doit se charger de
la création et de l’initialisation du sémaphore,
ainsi que de sa destruction.
[email protected]
58
Réalisation logicielle multitâches asynchrone
La communication entre réseaux de Petri
Différents types de communication possibles dans une relation Ecrivain/Lecteur
(en supposant chaque acteur représenté par une tâche)
• Ecrivain (Asynchrone) / Lecteur (Asynchrone) (1)
Pas de contrainte de synchronisation sur la production d’un document ni sur la
vérification … évolution libre de chaque acteur.
• Ecrivain (Synchrone) / Lecteur (Synchrone) (2)
Les acteurs se donnent RDV pour échanger le document.
• Ecrivain (Asynchrone) / Lecteur (Synchrone) (3)
L ’Ecrivain évolue librement mais le Lecteur attend le document avant de le
vérifier.
• Ecrivain (Synchrone) / Lecteur (Asynchrone) (4)
réciproque cas précédent.
[email protected]
59
Réalisation logicielle multitâches asynchrone
La communication entre réseaux de Petri … illustration
Ecrivain (Asynchrone) / Lecteur (Asynchrone) (1)
aucune structure particulière car pas d’interaction.
Ecrivain
[email protected]
Lecteur
60
Réalisation logicielle multitâches asynchrone
La communication entre réseaux de Petri … illustration
Ecrivain (Synchrone) / Lecteur (Synchrone) (2)
l’interaction correspond à un RDV.
Ecrivain
Lecteur
2
7
3
4
1
5
[email protected]
8
9
6
10
61
Réalisation logicielle multitâches asynchrone
La communication entre réseaux de Petri … illustration
Ecrivain (Asynchrone) / Lecteur (Synchrone) (3)
l’interaction correspond à une synchronisation.
Ecrivain
[email protected]
Lecteur
62
Réalisation logicielle multitâches asynchrone
Influence de la mise en œuvre des structures de communication
La communication inter-processus : exemple de QNX (Real-Time Operating System)
• la communication synchrone … avec accusé de réception !
Le récepteur du message doit répondre à l‘émetteur car ce dernier n’évolue pas sans avoir reçu
cette réponse.
Ce mode correspond sous QNX au mécanisme de communication par messages ; il implique les
primitives Send (pour l’émission), Receive (pour la réception) et Reply (pour la réponse).
• la communication asynchrone ...
Le récepteur du message n’a pas à répondre à l’émetteur, ce dernier évolue d’ailleurs sans
attendre une réponse quelconque.
Ce mode correspond sous QNX au mécanisme de communication soit par proxy soit par signal ;
la primitive triggers permet d’activer un proxy et raise d’émettre un signal. Ce mode ne permet pas
l’échange de messages, à l'exception de messages prédéfinis dans le cas des proxies.
[email protected]
63
Réalisation logicielle multitâches asynchrone
Influence de la mise en œuvre des structures de communication
Impact sur le cas du RDV … Ecrivain (Synchrone) / Lecteur (Synchrone) (2)
Début /* ECRIVAIN */
Répéter (à l’infini)
{
faire opération associée à P1,
envoyer message au lecteur (P2),
recevoir message du lecteur (P7),
répondre au message (P9),
faire opération associée à P5.
}
Fin
P2
P4
P7
P9
Début /* LECTEUR */
répéter (à l’infini)
{
faire opération associée à P6,
envoyer message à l'écrivain (P7)
recevoir message écrivain (P2),
répondre au message (P4),
faire opération associée à P10.
}
Fin
Les deux tâches effectuent une émission pour laquelle elles attendent chacune une réponse
(communication par message avec accusé de réception) ... qui ne se produira jamais puisqu'elles sont
toutes les deux en émission.
Primitives et ordre de déclaration des échanges = sources d’interblocage
[email protected]
64
Réalisation logicielle multitâches asynchrone
Influence de la mise en œuvre des structures de communication
Impact sur le cas du RDV … Ecrivain (Synchrone) / Lecteur (Synchrone) (2)
Début /* ECRIVAIN */
Répéter (à l’infini)
{
faire opération associée à P1,
envoyer message au lecteur (P2),
// réception réponse implicite (P4)
faire opération associée à P5.
}
Fin
P2
P4
Début /* LECTEUR */
répéter (à l’infini)
{
faire opération associée à P6,
recevoir message écrivain (P2),
répondre au message (P4),
faire opération associée à P10.
}
Fin
Se ramener à un simple échange : une seule émission-réponse
[email protected]
65
Réalisation logicielle multitâches asynchrone
Influence de la mise en œuvre des structures de communication
Adaptation nécessaire … Ecrivain (Asynchrone) / Lecteur (Synchrone) (3)
Communications asynchrones entre deux processus en s’appuyant uniquement sur l’ensemble de primitives de
communication synchrone (i.e. les primitives dédiées à l‘échange de messages).
Considérer que l’échange asynchrone entre deux processus est supporté par un troisième processus qui, après
avoir reçu le message du processus émetteur et lui avoir répondu, prend en charge l’échange de ce message avec
le processus cible. Il s'agit en quelque sorte d'un « facteur ».
La communication entre émetteur et cible est alors de nature asynchrone
[email protected]
66
Réalisation logicielle multitâches asynchrone
Influence de la mise en œuvre des structures de communication
Adaptation nécessaire … Ecrivain (Asynchrone) / Lecteur (Synchrone) (3)
Process A
émetteur
Process B
intermédiaire
Send()
time
Send-data
transmitted
Reply-data
transmitted
Process C
cible
Process A
émetteur
Process B
intermédiaire
Receive()
Process C
cible
Reply()
Send()
Receive()
Processus bloqué
dans l’attente de la
réception du
processus cible
Send-data
transmitted
Reply-data
transmitted
- Principe de fonctionnement [email protected]
Reply()
- Modèle correspondant 67
Réalisation logicielle par un joueur de réseaux de Petri
Réalisation basée sur un joueur de réseaux de Petri = une "réalisation par tables"
Réalisation indirecte par l'intermédiaire d'un module de traduction qui construit un ensemble de
tables représentant les interconnexions des éléments de base du modèle (la structure et
l'interprétation).
Cette réalisation repose sur trois modules :
1- la description
Places [
1 'p1' (54,250) 1 0 0 0
...]
TimedTrans [
2 't_ex' (191,213) 0 2 0
...]
2- la traduction
nom:
état :
suivante :
nom:
état :
suivante :
[email protected]
3- l'exécution
structure
noyau
68
Réalisation logicielle par un joueur de réseaux de Petri
La description du réseau
• directement par la donnée de la matrice d'incidence C
(mode d'entrée peu pratique ne concernant que la partie structurelle du modèle)
• un système d'entrée graphique
• plus simplement un système d'entrée par fichier (format texte)
Souvent faite à partir des transitions
§ déclaration des arcs du réseau,
(arcs d'entrée et de sortie pour chaque transition, i.e. connexion aux places amont et aval)
§ déclaration de l'interprétation associée à chaque transition (réceptivité),
§ description des réceptivités associées aux transitions
(plusieurs transitions pouvant avoir la même réceptivité),
§ déclaration des actions associées aux places et leurs valeurs,
§ description du marquage initial.
[email protected]
69
Réalisation logicielle par un joueur de réseaux de Petri
La description du réseau … illustration
• Arcs du réseau
Format : <nom transition>, <liste places d'entrée>, <liste places de sorties>;
Exemple : t1, P1, P2 P3;
• Interprétation associée à la transition
Format : <nom transition>, <nom réceptivité>;
Exemple : t1, R1; t8, R7 ;
• Réceptivité
Format : <nom réceptivité>, <type=T>, <base temps>,<durée>;
<type=B>, <entrée(capteur)>, <valeur>;
<type=L>, <opération 1>, <opération 2>, ..., <opération n>;
Exemple de temporisation, donc type T, de durée = 3 * base_de_temps_1 :
R1, T, 1, 3;
Exemple d'expression logique, donc type L, a & (distance <10) & /(b+c) :
R7, L, a ET 2, 3 ET 4, distance < 10, 5 PAS, b OU c.
• Actions associées aux places
•
Format : <nom place>, <sortie(actionneur)>, <valeur>;
Exemple : P1, S(2),1;
Marquage initial
Format : <nom place>, <marquage>;
// les autres sont initialisées non marquées.
Exemple : P1, 2;
[email protected]
70
Réalisation logicielle par un joueur de réseaux de Petri
La description du réseau …
exemple d’un éditeur-analyseur DNAnet
nom
Type 1 = place
Description textuelle générée à partir
de la saisie graphique du modèle
(pour RdP autonomes ou T-temporisés).
Type 2 =
timed transition
Type 3 =
imm transition
Places
1 'p1'
1 'p2'
1 'p3'
1 'p4'
...]
[
(54,250)
(229,189)
(418,250)
(152,251)
Marquage
initial
1
1
1
0
Nœud
d'arrivée
[email protected]
0
0
0
0
0
0
0
0
Temporisation
TimedTrans [
2 't_ex' (191,213) 0 2 0
...]
ImmedTrans [
3 't1' (152,163) 0 1 0
3 't2' (317,164) 0 1 0
3 't3' (151,296) 0 1 0
...]
Edges [
't8' to
't7' to
'p1' to
'p3' to
't2' to
...]
'p3'
'p1'
't1'
't2'
'p5'
Coordonnées
graphiques
Interactions
avec
sous-réseaux
Subnets [ ]
Nœud de
départ
0
0
0
0
1
1
2
1
3
[
[
[
[
[
]
]
]
]
]
Poids des
arcs
71
Réalisation logicielle par un joueur de réseaux de Petri
La traduction du modèle
description initiale
ensemble de données
(structures de données)
manipulées par
le module d'exécution
La traduction est donc la mise en forme du modèle au niveau informatique.
étape clef qui conditionne les performances de l'exécution
mise en forme de la structure = source d'optimisation du temps de cycle du joueur
compromis entre
rapidité d'inférence conférée par une meilleure structuration (exécution plus rapide) et
accroissement induit sur la dimension de l'espace mémoire nécessaire (stockage)
une solution = structures de données chaînées (pointeurs) pour décrire le modèle.
Cela permet d'atteindre immédiatement les transitions sensibilisées
et donc susceptibles d'être franchies, à partir du marquage courant.
[email protected]
72
Réalisation logicielle par un joueur de réseaux de Petri
L'exécution du modèle ... le joueur de réseaux de Petri
rôle = animer le modèle
en appliquant les règles régissant l'évolution du marquage au sein d'un RdP
Son algorithme « classique » s'appuie sur les places marquées
Pour chaque place marquée,
recherche de(s) transition(s) sensibilisée(s) par le marquage courant.
Exécution dirigée par le marquage
donc examen que des transitions sensibilisées (ou susceptibles de l'être)
et de plus, chacune d'elles une et une seule fois par cycle.
[email protected]
73
Réalisation logicielle par un joueur de réseaux de Petri
L'exécution du modèle ... le joueur de réseaux de Petri
cycle
Événement
externe ou interne
Places marquées
Recherche
transition sensibilisée
Plus aucune
Etat
stable
non
Test
si transition franchissable
oui
Tir de la transition =
Actualisation marquage
Evénements internes ou externes (exemples)
• un top d'horloge dans le cas d'un fonctionnement synchrone,
• l'arrivée d'un message ou la libération d'un sémaphore dans le cas
asynchrone
Etat stable
état sans évolution autonome possible,
i.e. attente de l’occurrence d’un événement
[email protected]
74
Réalisation logicielle par un joueur de réseaux de Petri
L'exécution du modèle ... Elément d’optimisation du joueur
Algorithme du joueur : étape essentielle = recherche des transitions sensibilisées
Transition sensibilisée = marquage de ses places amont suffisant
Rechercher une transition sensibilisée = examiner le marquage de toutes ses places amont
(l'examen s'arrête dès que le marquage de l'une de ces places est insuffisant)
La structure d'un modèle contient fréquemment des divergences en OU (choix explicite)
Place partagée alors "intéressante" puisque son état permet de juger de
la sensibilisation de plusieurs transitions à la fois.
Recherche des transitions sensibilisées réduite, i.e. plus rapide
Optimisation du joueur par réduction du nombre de tests …
notion de place de déclenchement
[email protected]
75
Réalisation logicielle par un joueur de réseaux de Petri
L'exécution du modèle ... Illustration de l’optimisation du joueur
Place de déclenchement = place désignée comme place devant nécessairement être marquée
pour franchir une transition donnée.
A chaque transition du réseau est associée une place de déclenchement, plusieurs transitions pouvant
avoir la même place de déclenchement ... là est d'ailleurs l'intérêt.
P2
P1
t1
t2
t3
P3
P4
t4
Places de déclenchement de l'exemple : P1 pour t1 ; P2 pour t2 t3 t4
2 places à examiner pour tester la sensibilisation de 4 transitions
• choix de la place de déclenchement associée à une transition est totalement libre
• choix totalement indépendant de celui effectué pour les autres transitions du réseau
• plus judicieux de choisir comme places de déclenchement les places partagées du réseau
[email protected]
76
Réalisation logicielle par un joueur de réseaux de Petri
L'exécution du modèle ... désignation des places de déclenchement
• Détermination, hors ligne, automatisée sans difficulté :
pour chaque transition prendre la place amont la plus partagée ou à défaut sa première place d'entrée
• Afin d'éviter la redondance dans la déclaration des arcs, pour chaque transition supprimer sa place
de déclenchement de son ensemble de places d'entrée
Pour chaque transition on obtient donc l'ensemble des places adjacentes à tester
si sa place de déclenchement est marquée.
P1
t1
P3
P2
t2
t3
t4
Transition t4 :
[email protected]
P4
- place de déclenchement = P2
- ensemble des places adjacentes = {P3 P4}
77
Réalisation logicielle par un joueur de réseaux de Petri
L'exécution du modèle ... Optimisation du joueur
pi
E(pi,ti)
= la place de déclenchement de la transition ti, pointée par pi,
= l'ensemble des places adjacentes à la place pi par rapport à la transition ti.
Nouvel algorithme du joueur
[email protected]
1.
Scruter la liste des places de déclenchement marquées
Si fin ou vide aller en 5, sinon aller en 2.
2.
Tester le marquage des places adjacentes
Si marquées aller en 3, sinon aller en 1.
3.
Tester la condition associée à la transition pointée
Si condition respectée aller en 4, sinon aller en 1.
4.
Franchir la transition (réactualisation du marquage)
Aller en 1.
5.
Etat Stable.
78
Quelques ouvrages de référence ou sites intéressants sur les RdP
[David89] R. David, H. Alla. "Du Grafcet aux réseaux de Petri". Edition Hermes, Traité des
nouvelles technologies, Paris 1989.
[Vidal92] G.Vidal-Naquet, A.Choquet-Geniet, "Réseaux de Petri et systèmes parallèles", Editions
Armand Collin 1992.
[Brams83] G.W.Brams, "Réseaux de Petri : théorie et pratique", Editions Masson 1983.
§ The Petri Nets Bibliography
http://www.informatik.uni-hamburg.de/TGI/pnbib/
§ Groupe francophone sur les réseaux de Petri
http://www.ec-lille.fr/~rdp/
§ Petri Nets Tools Database Quick Overview
http://www.daimi.aau.dk/~petrinet/tools/quick.html
§ Méthodes formelles de développement de Systèmes logiciels
http://lglwww.epfl.ch/Enseignement/GLA/GLA98/Transparents/
[email protected]
79