Projet de simulation d’un système à évènement discret « Système de production : Fabrication de deux types de Produits» sur la plate-forme CPN Tools La simulation à évènements discrets consiste à concevoir un modèle logiciel d’un système réel puis à construire des expériences sur ce modèle de manière à appréhender et anticiper son comportement et ainsi d’en améliorer ses performances. Au-delà de la question de savoir comment utiliser au mieux l’outil par rapport aux objectifs de performance qui ont été fixés sur les différents systèmes à piloter, l’entreprise se pose également de plus en plus la question de savoir comment formaliser un processus de type « Simulation de flux » pour itérer efficacement les différents projets de simulation à mener. 1. Présentation du projet Vous êtes chargé de modéliser et de simuler le processus de découpage des produits A et B sur le logiciel CPN Tools. Le système de production se décompose en sous-systèmes suivants : réception des pièces, l’exécution de découpage ainsi que le stockage des produits dans des bacs. 1.1. Réception des produits Un poste amont a pour rôle la préparation des pièces pour leur découpe. Les produits préparés sont mises en attente pour les transférer à la machine de découpage. Elles sont reçues une après autre. 1.2. Découpage et stockage des produits La machine réalise deux types de produits: A et B. Le sous processus de découpage commence par deux événements : début et fin. Les produits ainsi découpées sont stockées dans des bacs. 2. Objectifs du projet Nous cherchons par ce projet de simulation de tester les performances du système de production par le calcul du : temps total du système ; taux d’utilisation des ressources machine. 3. Logiciel CPN Tools Nous utilisons le logiciel CPN Tools pour réaliser la modélisation et la simulation du système à étudier. C’est un logiciel Open source, produit et distribué par le laboratoire de recherche (DAIMI), Eindhoven University of Technology, Netherlands. Il permet d’éditer, de simuler et d’analyser les modèles de réseaux de Petri Colorés. Vous pouvez découvrir toutes les informations sur le site web : http://cpntools.org/contact. 4. Cahier de charge Pour réaliser la modélisation, vous devez déclarer les Colsets, les variables et les fonctions. Pour simuler le modèle ainsi développé, vous utilisez les outils de monitoring. Vous trouvez ci-dessous le modèle principal et les sous-modèles.
1
ENSEM
Figure 1 : Modèle principale et le sous modèle Réception des produits
Figure 2 : le sous modèle découpage et stockage des produits 4.1. Les Colsets : colset Unit= unit timed; colset INT = int; colset Machine = with machine timed; colset ProductType = with A | B; colset Product = record productType : ProductType * AT : INT; colset Products= list Product; colset MachinexProduct = product Machine * Products timed; 4.2. Les variables: var proctime : INT;(déclare la variable du processus du temps) var pdt: Produits; (déclare la variable du colset Products)
2
ENSEM 4.3. Les fonctions : fun expTime ():la déclaration de la fonction pour initialiser le processus de temps fun expTime (mean: int) = let val realMean = Real.fromInt mean val rv = exponential((1.0/realMean)) in floor (rv+0.5) end; fun intTime():la déclaration de la fonction pour initialiser le processus de temps fun intTime() = IntInf.toInt (time()); fun newProducts():la déclaration de la fonction d’un nouveau produit {produitsType = ProduitsType.ran(), AT = intTime()} 4.4. Les déclarations de Monitoring globref longdelaytime = 200; (La variable de référence « longdelaytime » est utilisée pour indiquer la limite inférieure de ce qui sera considéré les longs délais d'attente pour les produits dans la file d'attente). globref fileid = (NONE : TextIO.outstream option); (La variable « fileid » est une référence à une option TextIO.outstream. qui fournit une interface Input/Output de caractère ou de chaine (String)). fun getfid () = (* this will raise Option exception * if fileid = NONE *) Option.valOf(!fileid) (La fonction « getfid » retourne l'identifiant de fichier qui se réfère à « fileid », en supposant que fileid ne fait pas référence à la valeur NONE). fun initfile () = let val filename = OS.Path.concat (Output.getSimOutputDir(), "Trans_Log_File.txt") in Output.initSimOutputDir(); fileid := SOME (TextIO.openOut filename) end La fonction « initfile » initialise un fichier qu’un utilisateur met à jour lors de la simulation. Le nom du fichier est Trans_Log_File.txt et il sera sauvegardé dans un répertoire de sortie de simulation. Le nom du répertoire de sortie de simulation est accessible via le « Output.getSimOutputDir » fonction qui est l'une des fonctions de gestion de sortie. 5. Votre mission En utilisant le logiciel CPN Tools, l’aide en ligne de l’outil et votre cours, vous devez modélisez et simulez ce système de production. N.B : Aucune politique de gestion de production n’est mise en place, le temps d’inter-arrivés des produits suit une distribution exponentielle.