Exemples d'étude
Les Réseaux de Petri (RdP)
Analyse énumérative :
{ réseau borné
{ réseau vivant
Analyse structurelle :
{ Toutes transitions dans
des T- invariants
{ Toutes places dans des
P-invariants
Analyse énumérative :
{ réseau borné
{ réseau NON VIVANT
{ Il y a un deadlock !!
Et pourtant..
Analyse structurelle :
{ Toutes transitions dans
des T-invariants
{ Toutes places dans des
P-invariants
D’où vient le pb ?
⇒ Les réservoirs sont bloqués
lorsque les recettes sont
commencées simultanément.
karen.godary@lirmm.fr Polytech' Montpellier, MEA4 - Cours "Automatismes et SED" - 2007-08 5
Autre implémentation possible :
Pour représenter de façon +
réaliste le stock limité.
Un cycle = la totalité des produits
on été traités.
On obtient un réseau
borné et vivant même
pour plusieurs lots.
Conditions :
{ procédé ok (condition de température et
de pression à assurer pour le stockage)
{ coûts induits ok (coût réservoirs +
canalisations)
{ réseau vivant
Analyse structurelle :
tout est ok
karen.godary@lirmm.fr Réservoir_pa
Polytech' Montpellier, MEA4 - Cours "Automatismes et SED" - 2007-08 11
Processus chimique flexible
Suite de la validation :
{ Génération (automatique) du graphe des marquages;
CONCLUSION :
La validation des propriétés comportementales des RdP ne suffit
pas à valider un modèle. Il faut également vérifier les propriétés
spécifiques extraites du cahier des charges.
Modélisation du système
{ Extension 1 : compteurs de pièces
{ Extension 2 : séquence de démarrage
Validation du modèle
{ Modèle "normal"
{ Modèle avec compteurs de pièces
{ Modèle avec séquence de démarrage
Mise en œuvre
Modélisation
Cahier des charges
Capteurs disponibles :
{ Piece_M1 : fin du transport d'une pièce sur M1
{ Piece_M2 : idem sur M2
{ Fin_US1 : fin de l'action usinage de la machine M1
{ Fin_US2 : idem pour M2
Actionneurs disponibles :
{ TR1 : transport d'une pièce sur M1
{ TR2 : transport d'une pièce sur M2
{ US1 : usinage de la machine M1
{ US2 : usinage de la machine M2
Décomposition matérielle :
{ 3 modules possibles : M1, M2 et le Robot.
{ Pour simplifier, on ne va décomposer qu'en 2 modules
M1 et M2.
{ Les actions TR1 et TR2 seront considérées comme
appartenant à la commande de M1 (resp. M2).
{ Le robot sera considéré comme une ressource
partagée entre M1 et M2.
Représentation de l'état
intermédiaire avant le Piece_M1 Piece_M2
démarrage de l'usinage.
{ TR1 (Piece_M1)
{ Pièce sur M1
Fin_US1 Fin_US2
{ US1 (Fin_US1)
ressource
partagée
Piece_M1 Piece_M2
Fin_US1 Fin_US2
Nb de pièces
usinées par M1
Piece_M1 Piece_M2
Démarrage
Fin_US1 Fin_US2
Séquence de
démarrage du
système
karen.godary@lirmm.fr Polytech' Montpellier, MEA4 - Cours "Automatismes et SED" - 2007-08 23
Les Réseaux de Petri (RdP)
Validation
Validation – Simulation
t0 t2
Toutes les transitions sont
couvertes par des invariants.
⇒ le RdP est vivant.
consistent
vivacité
IT1 : Fin_US1 Piece_M1 t0 t1
IT2 : Fin_US2 Piece_M2 t2 t3
karen.godary@lirmm.fr Polytech' Montpellier, MEA4 - Cours "Automatismes et SED" - 2007-08 27
Validation – Graphe des marquages
M1Libre, M2Libre, RobotLibre
t0 E0 t2
FinUS2
FinUS1 E1 M2Libre, TR1 M1Libre, TR2 E5
FinUS1
FinUS2
PieceM1 PieceM2
t1 t2 t0 t3
E3 E14 E7 E11
M2Libre, RobotLibre, US1 PieceSurM1, TR2 PieceSurM2, TR1 M1Libre, RobotLibre, US2
t2 PieceM2 PieceM1 t0
t1 t3
t3 t1
E10
FinUS2 FinUS1
karen.godary@lirmm.fr RobotLibre,
Polytech' Montpellier, US1,
MEA4 - Cours US2
"Automatismes et SED" - 2007-08 28
Validation – Analyse par énumération
Piece_M1 Piece_M2
Fin_US1 Fin_US2
Nb de pièces
usinées par M1
not invariant
bornitude IP1 : {Robot Libre} TR1 TR2
IP2 : {M1 Libre} {Piece sur M1} TR1 US1
IP3 : {M2 Libre} {Piece sur M2} TR2 US2
t0 E0
PieceM1
Début de construction du GM..
E2 M2Libre, PieceSurM1, RobotLibre
Successeur de E3 : E4, qui est un
t1 marquage supérieur à E0
E3
M2Libre, RobotLibre, US1
⇒ Le graphe est non borné
FinUS1
⇒ Graphe de couverture :
E4 M1Libre, M2Libre, RobotLibre, Nb_p1
REACHABILITY ANALYSIS --------
unbounded
Nb_p1 et Nb_p2 sont des compteurs : on peut
les enlever pour le reste de l'analyse (vivacité). 89 classe(s), 167 transition(s)
Piece_M1 Piece_M2
Démarrage
Fin_US1 Fin_US2
Séquence de
démarrage du
système
karen.godary@lirmm.fr Polytech' Montpellier, MEA4 - Cours "Automatismes et SED" - 2007-08 34
Validation – Analyse structurelle
T-SEMI-FLOWS GENERATING SET ----------
not consistent
vivacité
IT1 : Fin_US1 Piece_M1 t0 t1
IT2 : Fin_US2 Piece_M2 t2 t3
invariant
Toutes les places sont couvertes par des invariants => réseau borné.
2 nouveaux invariants : les places Nb_p1 et Nb_p2 qui ne seront jamais marquées.
karen.godary@lirmm.fr Polytech' Montpellier, MEA4 - Cours "Automatismes et SED" - 2007-08 35
Validation – Graphe des marquages
p0, RobotLibre
Démarrage
t0 E0 t2
FinUS2
FinUS1 E1 M2Libre, TR1 M1Libre, TR2 E5
FinUS1
FinUS2
PieceM1 PieceM2
t1 t2 t0 t3
E3 E14 E7 E11
M2Libre, RobotLibre, US1 PieceSurM1, TR2 PieceSurM2, TR1 M1Libre, RobotLibre, US2
t2 PieceM2 PieceM1 t0
t1 t3
t3 t1
E10
FinUS2 FinUS1
karen.godary@lirmm.fr RobotLibre,
Polytech' Montpellier, US1,
MEA4 - Cours US2
"Automatismes et SED" - 2007-08 36
Validation – Analyse par énumération
switch (Etat_M1)
{
case M1_libre :
break;
break;
case piece_sur_M1 :
break;
case US1 :
Fin_US1
break;
}
Commande de la machine M1 :
switch (Etat_M1)
{
case M1_libre :
if (Robot_libre==1)
{Etat_M1=TR1; Robot_Libre=0;}
break;
case TR1 :
if (Piece_M1)
{Etat_M1=piece_sur_M1; Robot_libre=1;}
break;
case pièce_sur_M1 :
Etat_M1=US1;
break;
case US1 :
if (Fin_US1)
{Etat_M1=M1_libre; nb_pI++;}
break;
}
int Robot_libre;
int nb_pI;
karen.godary@lirmm.fr Polytech' Montpellier, MEA4 - Cours "Automatismes et SED" - 2007-08 42
Décomposition en MEF
enum Etat_M1 {M1_libre, TR1, piece_sur_M1, US1};
#define M2_libre #define M1_libre enum Etat_M2 {M2_libre, TR2, piece_sur_M2, US2};
#define TR2 #define TR1
#define piece_sur_M2 #define piece_sur_M1 int Robot_libre;
#define US2 #define US1 int nb_pI, nb_pII;
2 - Application de contrôle
switch (Etat_M1) {
case M1_libre :
if (Robot_libre==1) {Etat_M1=TR1; Robot_Libre=0;} break;
case TR1 :
if (Piece_M1) {Etat_M1=piece_sur_M1; Robot_libre=1;} break;
MEF1 case piece_sur_M1 :
Etat_M1=US1; break;
case US1 :
if (Fin_US1) {Etat_M1=M1_libre; nb_pI++;} break;
}
switch (Etat_M1) {
case M1_libre :
if (Robot_libre==1) {Etat_M1=TR1; Robot_Libre=0;} break;
case TR1 :
if (Piece_M1) {Etat_M1=piece_sur_M1; Robot_libre=1;} break;
MEF2 case piece_sur_M1 :
Etat_M1=US1; break;
case US1 :
if (Fin_US1) {Etat_M1=M1_libre; nb_pI++;} break;
}
lancement / suspension
Tâche 1 Tâche 2
1 - Entrées : capteurs liés à MEF1 1 - Entrées : capteurs liés à MEF2
2 - Application de contrôle : MEF1 2 - Application de contrôle : MEF2
3 - Sorties : actionneurs liés à MEF1 3 - Sorties : actionneurs liés à MEF2
Tâche 3
1 - Entrées : capteurs liés à MEF3
2 - Application de contrôle : MEF3
3 - Sorties : actionneurs liés à MEF3
karen.godary@lirmm.fr Polytech' Montpellier, MEA4 - Cours "Automatismes et SED" - 2007-08 46
Mise en œuvre multi-tâches
Moniteur multitâche
Gestion de l'exécution des tâches
Tâche 1 lancement / suspension Tâche 2