Simulation de Flux avec Flexsim
Simulation de Flux avec Flexsim
Initiation à Flexsim
A. KREMER v1.0
1
1. Description du système de production à modéliser
Le système de production à modéliser est un atelier d’usinage réalisant 2 types de pièces :
• des capots ;
• des carters.
• Phase 10 : Fraisage
• Phase 20 : Perçage
• Phase 30 : Contrôle Qualité
Nombre
Capot Embase
de postes
Inter-arrivée 27 minutes (lot de 1) 20 minutes (lot de 1)
des pièces
Ph10 : Fraisage Loi Normale(7 ;1) Loi Normale(5 ;3) 1 Fraiseuse
(durée en min)
Ph20 : Perçage Loi Uniforme(7 ;8) Loi Triangulaire(10 ;12 ;15) 2 Perceuses
(durée en min)
Ph30 :
pièces bonnes à 95%
Contrôle Qualité
TABLEAU 1 – Données des processus
Fraiseuse Perceuse
Temps de réglage 5 min 2 min
TABLEAU 2 – Temps de réglage des machines-outils
1.3 Simulation
Simuler le système sur une durée de 6h et :
2
2. Créer et Configurer la simulation
File
Apres avoir lancé le logiciel FLEXSIM, créez une simulation (:::: New Model).
:::::::::::
3
3. Première modélisation Basique
La modélisation évoluera au fur et à mesure, ce qui permettra de valider les ajouts progressive-
ment.
Les éléments à inserer (par glisser-déposer) sont les blocs Source et Sink (Figure 3) qui se
Library
trouvent dans le menu situé à gauche ::::::::
Fixed ressources (ou via double-clic dans la
::::::::::::::::::
fenêtre principale).
Une fois ces éléments déposés il faut connecter la sortie de Source à l’entrée de Sink (comme
sur la Figure 4). Pour ce faire :
La connexion est
créée !
Si la fenêtre Properties
:::::::::::
View puis Properties
n’apparaît pas à droite de l’écran, faire ::::: :::::::::::
pour l’affi-
cher (ou cliquer sur l’engrenage brun dans la barre d’outils du haut).
En sélectionnant la Source, ses propriétés s’affichent et peuvent être modifiées (Figure 5).
4
Modifie le nom d’affichage
Affectation du « Type_de_piece »
• Output by Type : Nombre d’élément sortis du bloc, classés par type (Figure 6)
• Output by hour by Type : Nombre d’éléments sortis du bloc sur un pas de temps défini, classé
par type (Figure 7)
5
• Glisser - Déposer Output by Type dans
Dashboard
:::::::::::
Procéder de la même façon pour l’autre indicateur : Output by hour by Type. Un exemple de pa-
ramétrage de cet indicateur est fourni Figure 7.
6
3.3 Lancement de la simulation
Pour cette simulation l’élément Sink1 a été renommé en Pièces finies.
Le lancement de la simulation s’effectue à partir de la barre de simulation (bouton RUN).
La simulation s’arrête automatiquement au temps réglé (voir Figure 2.), mais en cliquant à nou-
veau sur RUN la simulation se continue au delà de la limite programmée.
La figure 8 présente les résultats que vous devez obtenir après avoir ajouter la création des
embases.
7
4. Création du processus de Fraisage
Le processus va nécessiter l’ajout d’autres ressources qu’il faudra insérer dans le flux existant. Il
est donc nécessaire de supprimer les connexions existantes afin d’en créer de nouvelles.
Les ressources à ajouter sont :
• une Queue : permet de stocker les pièces le temps que la ressource suivante se libère.
• un Processor : correspond à la ressource utilisée par le processus et intègre le temps
pris par le processus.
8
4.2 Le bloc PROCESSOR
Ce bloc doit être configuré pour correspondre à la modélisation définie. Les points importants de
cette modélisation pour le processus de Fraisage sont :
Il faut définir :
9
5. Création du processus de Perçage
La modélisation du processus de Perçage n’ajoute que peu de complexité. L’évolution du modèle
est la suivante :
Lorsqu’une QUEUE est connectée à plusieurs ressources en sortie, la configuration par défaut
consiste à envoyer la pièce vers la première ressource disponible.
Cette règle convient parfaitement pour cette modélisation. Toutefois d’autres regles sont pos-
sibles :
• Le port de sortie dépends d’un Label : Type_de_piece (Les capots sur la perceuse 1 et
les embases sur la perceuse 2) « Port by case ».
• Répartition par pourcentage (75% des pièces sur le port 1....) « Random »
• ...
10
6. Ajout d’une étape de réglage
Lorsque 2 pièces consécutives sont de types différents il est nécessaire de régler la machine. Pour
ce faire un Régleur intervient sur la machine. Le temps nécessaire au réglage est indiqué page 1. Il
n’y a que 1 régleur pour l’ensemble des machines à régler (Fraiseur + les 2 perceuses).
Il faut donc :
• Créer une ressource (le régleur). Le régleur est modélisé par un OPERATOR (dans le
menu TASK EXECUTERS).
• Associer le régleur pour le réglage des différentes machines.
Ces ressources additionnelles sont des Task executers, tels que les opérateurs, les robots, les
:::::::::::::::
transporteurs, les grues ...
Pour utiliser le régleur dans un processus il faut l’associer au processus (le connecter via les
« center points », Cf. Figure 13). Puis il faut configurer le processus pour affecter cette ressource
additionnelle à une tache spécifique (Réglage, utilisation de la ressource ...) (Figure 14).
11
6.2 Affecter cette ressource au réglage
Maintenant la fraiseuse peut utiliser le régleur, mais il faut lui indiquer quelle tâche effectuer ainsi
que la durée du réglage.
Si, pour fonctionner, la fraiseuse a besoin d’un opérateur (en plus du régleur qui n’effectuera QUE
le réglage) il suffit d’associer ce nouvel opérateur et de bien répartir les tâches (Cf. Figure 15).
12
6.3 Taux de charge du régleur
Un indicateur très utile pour les ressources est le Taux de charge.
Charge de travail attribuée
T aux de charge = Capacité réelle de travail
Pour visualiser cet indicateur, il suffit d’ajouter au DashBoard un élément de type :::::::
STATE comme
une State Bar.
L’ajout de l’usineur ne modifie en rien la simulation : il est utilisé en dehors des temps de réglage
(Temps Utilize U sineur = Temps Processing F raiseuse ).
Pour finaliser la prise en compte du réglage, il faut la configurer sur les Perceuses, mais toujours
avec la même ressource Régleur !
13
7. Utilisation spéciale du bloc QUEUE
Un bloc QUEUE permet de base de créer un stock tampon entre deux processus, cela permet au
premier processus de déposer la pièce dans la QUEUE sans avoir besoin que le second processus
soit libre. Cela correspond à l’utilisation standard d’une QUEUE.
Étant donné que l’utilisation d’une QUEUE ne nécessite ni ressource et ne rajoute pas de temps,
il est possible d’utiliser une QUEUE pour :
• Répartir le flux de pièces (en fonction d’une variable, d’une loi ...)
• Modifier des variables, des labels ...
(a) (b)
F IGURE 17 – Paramètres réglables du bloc QUEUE.
14
Les détails de la configuration de la Figure 18 sont les suivants :
15
Les actions sont multiples et varient avec les Triggers :
• Les Data :
• Les Controls :
• Les Visual :
– Modifier la couleur
– Modifier la forme
– ...
• ...
16
8. Utilisation de variables
La modélisation de systèmes complexes peut nécessiter l’utilisation de variables afin de gérer le
flux ou de moduler les conditions facilement et de manière automatique pour comparer des modèles.
F IGURE 21 – Résultats d’un plan d’expériences (source : https: // answers. flexsim. com/ )
Ces paramètres sont des variables globales qui permettent aussi de configurer les éléments du
modèle 3D. En cas de répétition cela permet de modifier une caractéristique commune très rapide-
ment.
(a) (b)
F IGURE 22 – Accès aux paramètres (a) et détails sur les paramètres (b).
17
Utiliser les Paramètres dans le modèle
Voici les différentes façons d’appeler un paramètre nommé « MyParameter »dans une simulation :
• Model.parameters.MyParameter
• Model.parameters["My Parameter"].evaluate()
Il est aussi possible que « MyParameter »prenne en compte des paramètres internes :
Il est possible de créer plusieurs GlobalTables, et il est conseillé de les renommer pour plus de
clarté.
18
8.4 Utilisation de GlobalTables
Les données dans la GlobalTables peuvent être de différents types (Entier, chaîne de caractères
...).
Dans cette partie nous utiliserons une GlobalTables pour limiter le nombre d’entités dans une
zone. Cela peut correspondre au décompte des personnes dans un supermarché, avec blocage des
entrées lorsque le nombre maximal est atteint.
Une GlobalTables a été créée et renommée "encours". il faudra incrémenter cette variable à
l’entrée de la zone et la décrémenter à la sortie. De plus un blocage / déblocage des ports d’entrée
en fonction de la valeur de cette variable.
La figure 24 montre l’incrémentation de la variable dans un Trigger.
Attention : il existe une fonction « increment »qui ne fonctionne pas sur les GlobalTables. Il faut
donc utiliser la méthode décrite Figure 24.
19
9. Processus imbriqués
Un processus est caractérisé par l’utilisation de ressources (avec le risque de non disponibilité)
pendant une certaine durée.
Les processus imbriqués correspondent à un processus « global »à l’intérieur duquel d’autres
processus interviennent. Le processus « global »nécessitera des ressources qui lui sont spécifiques
mais sa durée sera conditionnée par les durée des processus internes.
Un exemple est la modélisation d’un restaurant :le processus « global »consiste en l’utilisation des
tables du restaurant (les ressources), et la durée dépends des autres processus (prise de commande,
préparation du repas, service, paiement ...).
La modélisation du processus global consiste donc à gérer la disponibilité de ressources (nombre
de tables, de places de parking ....).
Une GlobalTables nommée « Encours »(1 seule cellule) permet de connaître le nombre de places
de parking occupées. La figure 26 montre les réglages mis en place pour faire évoluer cette variable.
Ce nombre de places de parking occupées doit donc être comparée au nombre de places dis-
ponibles. Le nombre de places disponible a été enregistré comme un paramètre de la simulation.
L’utilisation d’un paramètre dans ce cas permet :
20
Trigger défini à l’entrée de la
QUEUE « je suis garé ». La variable
« Encours »est incrémentée de 1.
Une GlobalTables nommée « Encours »(1 seule cellule) permet de connaître le nombre de places
de parking occupées. La figure 26 montre les réglages mis en place pour faire évoluer cette variable.
A chaque fois qu’une place est prise ou qu’une place se libère il faut vérifier si il faut fermer ou
ouvrir le port d’entrée sur le parking. La figure 27 montre les Triggers utilisés permettant la gestion
de ce port.
21
9.2 Process Flow
ProcessFlow est un processus qui fonctionne en parallèle du model3D
Un ::::::::::::: :::::::::
mais qui interagit
avec lui, comme sur la figure 28 :
– fermeture d’un port d’un élément du Model3D (« Ferme Port acces pkg »)
– ouverture d’un port d’un élément du Model3D (« ouvre Port acces pkg »)
F IGURE 28 – ProcessFlow
:::::::::::::
pour un processus imbriqué
Un ProcessFlow
:::::::::::::
model3D suivant des règles particulières.
permet de piloter le ::::::::::
22