Les Réseaux de Petri (RdP)
Transcription
Les Réseaux de Petri (RdP)
Les Réseaux de Petri (RdP) Exemples d'étude Les Réseaux de Petri (RdP) Exemple d'étude n°1 : Processus chimique flexible Processus chimique flexible Modélisation pour la conception de ce système. 2 type de produits, suivant la recette utilisée : Les transferts entre les deux réacteurs s'effectuent à l'aide d'un robot, mais on suppose ne pas avoir à gérer ce robot (simplification). Pas de réservoirs intermédiaires. Ici : pas de considération du tps, modéliser en RdP de base [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 3 Cas d'un seul lot à fabriquer : Analyse énumérative : { { Analyse structurelle : { { réseau borné réseau vivant Toutes transitions dans des T- invariants Toutes places dans des P-invariants Tous semble correct ! [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 4 Cas de deux lots à fabriquer : Analyse énumérative : { { { Et pourtant.. Analyse structurelle : { { ⇒ réseau borné réseau NON VIVANT Il y a un deadlock !! 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. [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 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. [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 6 On rajoute une exclusion mutuelle. On obtient un réseau borné et vivant même pour plusieurs lots. Rmq : mais on a perdu l'intérêt du parallélisme !! [email protected] Inutiles maintenant Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 7 Processus chimique flexible Idée : réservoirs intermédiaires. Conditions : ⇒ { procédé ok (condition de température et de pression à assurer pour le stockage) { coûts induits ok (coût réservoirs + canalisations) Hypothèses : le robot s'occupe également du transfert entre les réacteurs et les réservoirs intermédiaires. conditions supp : robot ok [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 8 Analyse énumérative : { réseau borné { réseau vivant Analyse structurelle : tout est ok C'est correct.. du point de vue comportemental des RdP. ⇒ Qu'en est il des propriétés spécifiques au système ????? [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 9 Processus chimique flexible Suite de la validation : { Génération (automatique) du graphe des marquages; { Analyse détaillée de ce graphe (manuelle ou automatique). [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 10 Nb de lots (initial) Réservoir_pb Processus chimique flexible [email protected] Réservoir_pa Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 11 Processus chimique flexible Suite de la validation : { Génération (automatique) du graphe des marquages; { Analyse détaillée de ce graphe (manuelle ou automatique). On constate que certains marquages ont 2 jetons dans un des réservoirs. On a oublié de spécifier que les réservoirs ne contiennent qu'une seule charge. Rajouter au modèle une gestion de la ressource "réservoir". ⇒ ⇒ 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. [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 12 Les Réseaux de Petri (RdP) Exemple d'étude n°2 : Atelier robotisé de production Plan Modélisation du système { { Validation du modèle { { { Extension 1 : compteurs de pièces Extension 2 : séquence de démarrage Modèle "normal" Modèle avec compteurs de pièces Modèle avec séquence de démarrage Mise en œuvre [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 14 Les Réseaux de Petri (RdP) Modélisation Cahier des charges ⇒ Usinage de pièces par 2 machines, M1 et M2 Transport des pièces par un seul Robot Stock de pièces Hypothèse : dès qu'elles sont usinées, les pièces sont évacuées manuellement de façon immédiate. ⇒ on ne s'en préoccupe pas. Mise en œuvre par MEF Décomposition nécessaire pendant la modélisation [email protected] • MEF = Machine à état fini • Représentation du fonctionnement par un cycle à 1 seul jeton. • Ce jeton représente l'état du système Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 16 Prise en compte du procédé 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 [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 17 Prise en compte du procédé ⇒ Utilisation des RdP interprétés. Attention : pas de capteurs "Robot libre" ou "M1 libre". ⇒ Il faut gérer cela par partage de ressource. Pas de précision sur la quantité du stock : on le suppose infini, on ne le gère pas. [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 18 Décomposition matérielle 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. [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 19 Modélisation des 2 machines !!! : ces 2 actions utilisent la ressource Robot Représentation de l'état intermédiaire avant le démarrage de l'usinage. Etats possibles de M1 : { M1 libre { TR1 (Piece_M1) { Pièce sur M1 { US1 (Fin_US1) [email protected] Piece_M1 Piece_M2 (instantané) Fin_US1 Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" Fin_US2 20 Modèle complet du système ressource partagée [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 21 Modèle du système – extension 1 Piece_M1 Piece_M2 Fin_US1 Fin_US2 Nb de pièces usinées par M1 [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 22 Modèle du système – extension 2 Piece_M1 Piece_M2 Fin_US1 Fin_US2 Démarrage Séquence de démarrage du système [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 23 Les Réseaux de Petri (RdP) Validation Validation – Simulation Exécution pas à pas : OK Exécution aléatoire : OK ⇒ apparemment, pas de blocage, pas de pb.. ¾ MAIS attention : la simulation n'est pas une méthode d'analyse exhaustive. [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 25 Validation – Analyse structurelle ⇒ Toutes les places sont couvertes par des invariants. le RdP est borné. IP1 représente la ressource Robot : ce jeton ne peut être présent qu'en TR1 ou TR2 ou RobotLibre. IP2 représente la boucle de commande de la machine M1; 1 seul jeton est présent dans cette boucle; il représente l'état en cours de la M1. bornitude Idem IP3 pour M2. [email protected] t0 t1 t2 t3 P-SEMI-FLOWS GENERATING SET ---------invariant IP1 : {Robot Libre} TR1 TR2 IP2 : {M1 Libre} {Piece sur M1} TR1 US1 IP3 : {M2 Libre} {Piece sur M2} TR2 US2 Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 26 Validation – Analyse structurelle t0 ⇒ t2 Toutes les transitions sont couvertes par des invariants. le RdP est vivant. IT1 représente la commande de la machine M1; les 4 transitions forment une boucle; une transition de cette boucle est tjs tirable. Idem IT2 pour M2. t1 t3 T-SEMI-FLOWS GENERATING SET ---------consistent vivacité IT1 : Fin_US1 Piece_M1 t0 t1 IT2 : Fin_US2 Piece_M2 t2 t3 [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 27 Validation – Graphe des marquages M1Libre, M2Libre, RobotLibre E0 t0 E1 FinUS1 M2Libre, TR1 t2 FinUS1 FinUS2 PieceM1 t1 M1Libre, PieceSurM2, RobotLibre t2 t0 E14 M2Libre, RobotLibre, US1 E4 TR2, US1 PieceM2 E9 FinUS1 PieceM1 E8 t1 PieceSurM2, RobotLibre, US1 FinUS2 E11 M1Libre, RobotLibre, US2 t3 PieceSurM1, PieceSurM2, RobotLibre t3 t0 TR1, US2 FinUS2 E12 PieceM1 PieceSurM1, RobotLibre, US2 E13 t3 [email protected] t3 PieceSurM2, TR1 PieceM2 t1 E6 E7 PieceSurM1, TR2 t2 E5 PieceM2 E2 M2Libre, PieceSurM1, RobotLibre E3 FinUS2 M1Libre, TR2 E10 t1 Polytech' Montpellier, ERII4 US1, - CoursUS2 "Automatismes et SED" RobotLibre, FinUS1 28 Validation – Analyse par énumération REACHABILITY ANALYSIS --------------------- réseau borné Bounded 15 marking(s), 28 transition(s) taille du GM LIVENESS ANALYSIS ------------------------- réseau vivant live 0 dead marking(s), 15 live marking(s) 0 dead transition(s), 8 live transition(s) [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 29 Modèle complet du système Piece_M1 Piece_M2 Fin_US1 Fin_US2 Nb de pièces usinées par M1 [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 30 Validation – Simulation La simulation montre une accumulation de jetons dans les places Nb_p1 et Nb_p2. ⇒ Le réseau semble non borné. Validation pour vérifier. [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 31 Validation – Analyse structurelle T-SEMI-FLOWS GENERATING SET ---------vivacité not consistent no semi-flows Aucun T-invariant n'a été trouvé ⇒ pas de conclusion sur la vivacité.. P-SEMI-FLOWS GENERATING SET ---------not invariant bornitude IP1 : {Robot Libre} TR1 TR2 IP2 : {M1 Libre} {Piece sur M1} TR1 US1 IP3 : {M2 Libre} {Piece sur M2} TR2 US2 3 P-invariants ont été trouvés : les mêmes que précédemment. Mais cette fois, toutes les places ne sont pas couvertes par des invariants… ⇒ Il est possible que le réseau ne soit pas borné. [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 32 Validation – Graphe des marquages M1Libre, M2Libre, RobotLibre t0 E1 FinUS1 M2Libre, TR1 PieceM1 E2 M2Libre, PieceSurM1, RobotLibre t1 E3 Début de construction du GM.. Successeur de E3 : E4, qui est un marquage supérieur à E0 ⇒ Le graphe est non borné M2Libre, RobotLibre, US1 FinUS1 E4 E0 ⇒ Graphe de couverture : 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é). [email protected] 89 classe(s), 167 transition(s) Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 33 Modèle complet du système Piece_M1 Piece_M2 Fin_US1 Fin_US2 Démarrage Séquence de démarrage du système [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 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 2 T-invariants (les mêmes que précédemment) Mais toutes les transitions ne sont pas couvertes par des invariants => on ne sait pas. P-SEMI-FLOWS GENERATING SET ---------invariant bornitude IP1 IP2 IP3 IP4 IP5 : : : : : {Robot Libre} TR1 TR2 {M1 Libre} {Piece sur M1} TR1 US1 p0 {M2 Libre} {Piece sur M2} TR2 US2 p0 Nb_p1 Nb_p2 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. [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 35 Validation – Graphe des marquages p0, RobotLibre Démarrage M1Libre, M2Libre, RobotLibre E0 t0 E1 FinUS1 M2Libre, TR1 t2 FinUS1 FinUS2 PieceM1 t1 M1Libre, PieceSurM2, RobotLibre t2 t0 E14 M2Libre, RobotLibre, US1 E4 TR2, US1 PieceM2 E9 FinUS1 PieceM1 E8 t1 PieceSurM2, RobotLibre, US1 FinUS2 E11 M1Libre, RobotLibre, US2 t3 PieceSurM1, PieceSurM2, RobotLibre t3 t0 TR1, US2 FinUS2 E12 PieceM1 PieceSurM1, RobotLibre, US2 E13 t3 [email protected] t3 PieceSurM2, TR1 PieceM2 t1 E6 E7 PieceSurM1, TR2 t2 E5 PieceM2 E2 M2Libre, PieceSurM1, RobotLibre E3 FinUS2 M1Libre, TR2 E10 t1 Polytech' Montpellier, ERII4 US1, - CoursUS2 "Automatismes et SED" RobotLibre, FinUS1 36 Validation – Analyse par énumération REACHABILITY ANALYSIS --------------------- réseau borné bounded 16 marking(s), 29 transition(s) taille du GM LIVENESS ANALYSIS ------------------------- réseau non vivant not live 0 dead marking(s), 15 live marking(s) 0 dead transition(s), 8 live transition(s) mais pas de deadlock et aucune Rmq : en réalité, le réseau est quasi-vivant. transition non vivante.. ??? Idem pour la transition Démarrage ⇒ Le logiciel utilisé (TINA) n'est pas très précis dans ce domaine. [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 37 Les Réseaux de Petri (RdP) Remarque sur la modélisation Modélisation : remarque Il y a plusieurs façons d’envisager le passage d’un problème à un modèle. ON PEUT PARTIR DE LA DESCRIPTION DES ACTIONS OU DE CELLE DES COMPOSANTS MATERIELS Exemples : { { ⇒ Pour le processus chimique : On part de l’enchaînement des étapes de chaque recette On associe une place à chaque étape les autres places décrivent l’occupation du matériel par les produits (chaque réservoir est une ressource). Pour le modèle de l’atelier flexible : On part du découpage des composants physiques On associe une place à chacun les transitions décrivent les transferts entre les composants. Au final, la description contient les deux (Actions et matériels) [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 39 Les Réseaux de Petri (RdP) Mise en œuvre logicielle Langage C Décomposition en MEF Etats possibles de la machine M1 : M1_libre, TR1, piece_sur_M1 et US1 switch (Etat_M1) { case M1_libre : break; Piece_M1 case TR1 : break; case piece_sur_M1 : break; case US1 : Fin_US1 break; } [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 41 Décomposition en MEF 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; } [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" int Robot_libre; int nb_pI; 42 Décomposition en MEF #define #define #define #define M2_libre TR2 piece_sur_M2 US2 #define #define #define #define enum Etat_M1 {M1_libre, TR1, piece_sur_M1, US1}; enum Etat_M2 {M2_libre, TR2, piece_sur_M2, US2}; M1_libre TR1 piece_sur_M1 US1 Commande de la machine M1 : switch (Etat_M1) { case M1_libre : if (Robot_libre==1) {Etat_M1=TR1; Robot_Libre=0;} break; int Robot_libre; int nb_pI, nb_pII; Commande de la machine M2 : switch (Etat_M2) { case M2_libre : if (Robot_libre==1) {Etat_M2=TR2; Robot_Libre=0;} break; case TR1 : if (Piece_M1) {Etat_M1=piece_sur_M1; Robot_libre=1;} break; case TR2 : if (Piece_M2) {Etat_M2=piece_sur_M2; Robot_libre=1;} break; case piece_sur_M1 : Etat_M1=US1; break; case piece_sur_M2 : Etat_M2=US2; break; case US1 : if (Fin_US1) {Etat_M1=M1_libre; nb_pI++;} break; case US2 : if (Fin_US2) {Etat_M2=M2_libre; nb_pI++;} break; } [email protected] } Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 43 Mise en œuvre monotâche Structure et exécution du code avec MEF, monotâche (Rappel) 1 - Lecture des entrées : valeurs des capteurs MEF1 2 - Application de contrôle MEF2 MEF3 3 - Sorties : commandes des actionneurs [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 44 Mise en œuvre monotâche 1 - Lecture des entrées : valeurs des capteurs Lecture_Entrées (Piece_M1, Fin_US1, Piece_M2, Fin_US2); 2 - Application de contrôle MEF1 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 piece_sur_M1 : Etat_M1=US1; break; case US1 : if (Fin_US1) {Etat_M1=M1_libre; nb_pI++;} break; } MEF2 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 piece_sur_M1 : Etat_M1=US1; break; case US1 : if (Fin_US1) {Etat_M1=M1_libre; nb_pI++;} break; } 3 - Sorties : commandes des actionneurs US1, TR2, US2); [email protected]_Sorties (TR1, Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 45 Mise en œuvre multi-tâches Structure et exécution du code avec MEF, multitâche Moniteur multitâche Gestion de l'exécution des tâches lancement / suspension Tâche 1 Tâche 2 1 - Entrées : capteurs liés à MEF1 2 - Application de contrôle : MEF1 3 - Sorties : actionneurs liés à MEF1 [email protected] Tâche 3 1 - Entrées : capteurs liés à MEF2 2 - Application de contrôle : MEF2 3 - Sorties : actionneurs liés à MEF2 1 - Entrées : capteurs liés à MEF3 2 - Application de contrôle : MEF3 3 - Sorties : actionneurs liés à MEF3 Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 46 Mise en œuvre multi-tâches Moniteur multitâche Gestion de l'exécution des tâches Tâche 1 lancement / suspension 1 - Entrées : capteurs liés à MEF1 1 - Entrées : capteurs liés à MEF2 Lecture_Entrées (Piece_M1, Fin_US1); Lecture_Entrées (Piece_M2, Fin_US2); 2 - Application de contrôle : MEF1 Robot_libre (ressource partagée) 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 piece_sur_M1 : Etat_M1=US1; break; case US1 : if (Fin_US1) {Etat_M1=M1_libre; nb_pI++;} break; } 3 - Sorties : actionneurs liés à MEF1 Generation_Sorties (TR1, US1); [email protected] Tâche 2 2 - Application de contrôle : MEF2 switch (Etat_M2) { case M2_libre : if (Robot_libre==1) {Etat_M2=TR2; Robot_Libre=0;} break; case TR2 : if (Piece_M2) {Etat_M2=piece_sur_M2; Robot_libre=1; break; case piece_sur_M2 : Etat_M2=US2; break; case US2 : if (Fin_US2) {Etat_M2=M2_libre; nb_pI++;} break; } nb_pI nb_pII 3 - Sorties : actionneurs liés (compteurs) Generation_Sorties (TR2, US2); Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" à MEF2 47 FIN [email protected] Polytech' Montpellier, ERII4 - Cours "Automatismes et SED" 48 Les Réseaux de Petri (RdP) Mise en œuvre matérielle Logique séquentielle Les Réseaux de Petri (RdP) Mise en œuvre matérielle Logique VHDL