Transcript
Page 1: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

Simulateur de chaînes de production

Encadrants :GAFFE Daniel

BRUNETTE Christian

Etudiants :BOIGONTIER JulienDE LOPEZ JulienLEVENEUR DanielPASQUIER HenriRICHASSE Nicolas

Avril −→ Juin 2004

Page 2: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

Table des matières

I Cahier des charges 3

1 Organisation du projet 51.1 Processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.1.1 Semaine 09 (Du 23/02 au 29/02) . . . . . . . . . . . . . . . . . . . . . . . 51.1.2 Semaine 10 (Du 01/03 au 07/03) . . . . . . . . . . . . . . . . . . . . . . . 51.1.3 Semaine 11 (Du 08/03 au 14/03) . . . . . . . . . . . . . . . . . . . . . . . 51.1.4 Semaine 12 (Du 15/03 au 21/03) . . . . . . . . . . . . . . . . . . . . . . . 61.1.5 Semaine 13 (Du 22/03 au 28/03) . . . . . . . . . . . . . . . . . . . . . . . 61.1.6 Semaine 14 (Du 29/03 au 04/04) . . . . . . . . . . . . . . . . . . . . . . . 61.1.7 Semaine 15 (Du 05/04 au 11/04) . . . . . . . . . . . . . . . . . . . . . . . 61.1.8 Semaine 16 (Du 12/04 au 18/04) . . . . . . . . . . . . . . . . . . . . . . . 61.1.9 Semaine 17 (Du 19/04 au 25/04 . . . . . . . . . . . . . . . . . . . . . . . 61.1.10 Semaine 18 (Du 26/04 au 02/05 . . . . . . . . . . . . . . . . . . . . . . . 61.1.11 Semaine 19 (Du 03/05 au 09/05) . . . . . . . . . . . . . . . . . . . . . . . 61.1.12 Début de la phase de Production : Du 10/05 au 11/06 . . . . . . . . . . . 8

1.2 Organisation structurelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3 Limites et interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2 Gestion 112.1 Objectifs et priorités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2 Hypothèses, dépendances, contraintes . . . . . . . . . . . . . . . . . . . . . . . . . 112.3 Gestion du risque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.4 Moyens de contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 Technique 143.1 Méthodes et outils employés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4 Fonctions du produit 154.1 Interactions avec un boitier de commande. . . . . . . . . . . . . . . . . . . . . . . . 154.2 Création de chaînes de productions . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.3 Représentation graphique du fonctionnement de la chaîne . . . . . . . . . . . . . . . 154.4 Editeur graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

5 Contraintes non fonctionnelles 165.1 Plate-forme matérielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165.2 Temps de réponse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165.3 Empreinte mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1

Page 3: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

2

II Phase de production 17

6 Découpage en tâches et planning du projet 216.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216.2 Découpage du projet en phases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216.3 Planning e�ectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

7 Fonctionnement des objets réactifs 237.1 Ce que proposent les Icobjs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237.2 Utilisation des Icobjs a�n de réaliser le simulateur . . . . . . . . . . . . . . . . . . . 247.3 Implémentation des modèles des di�érents objets . . . . . . . . . . . . . . . . . . . 24

8 Interface Utilisateur 288.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288.2 Modi�cations apportées à la librairie Icobjs . . . . . . . . . . . . . . . . . . . . . . . 28

8.2.1 Modi�cations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288.2.2 Créations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

8.3 Structure de l'interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298.4 Interface avec les icobjs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308.5 Chargeur de plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308.6 Utilisation de l'interface graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

9 Connexion avec d'autres processus Unix 329.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329.2 Détails du protocole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329.3 Détails de l'implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

9.3.1 Diagramme de classe du package link . . . . . . . . . . . . . . . . . . . . . 349.3.2 Captures d'écran du fonctionnement de SimIcobj avec un boitier de commande 34

9.4 Problèmes rencontrés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

10 Suivi 3610.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3610.2 Moyens mis en ÷uvre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3610.3 Di�cultés rencontrées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

c 2004

Page 4: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

3

Partie I

Cahier des charges

c 2004

Page 5: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

4

Introduction

Résumé

Le projet SimIcobj représente l'utilisation concrète des objets réactifs dans un contexte physique. Ilest destiné à devenir un support de simulation pour les chaînes de productions, basé sur l'outil Icobj.Les Icobjs forment une implémentation des objets réactifs dans le langage Java et supportent la ma-jorité des comportements physiques que notre outil va simuler. Ce sont des objets capables d'interagirentre eux, d'évoluer d'état en état selon le comportement qu'on leur aura attribué.

Le produit SimIcobj devra communiquer avec un logiciel existant par mémoire partagée. Le pro-tocole de communication associé est déjà établi et implémenté dans une classe C++. Nous auronsdonc à gérer l'appel de fonctions C++ en JAVA.

Fournitures

Le produit SimIcobj sera livré au client avec des exemples de chaîne de productions, une documen-tation précise et un tutorial.Le langage de conception étant Java, le produit en est portable et donc multi-plateforme.

Dé�nitions et acronymes

• Icobj : Implémentation graphique des objets réactifs dans le langage Java et basé sur l'APIJunior.

• Junior : Implémentation des objets réactifs en Java.• Objet Réactif : Processus autonome pouvant intéragir avec d'autres objets réactifs au coursd'instants successifs dans un environnement.

• Java : Langage de programmation multi-plateforme.• Chaîne de production : Ensemble d'outils, de machines, et plus généralement de systèmes phy-siques regroupés géographiquement, dans le but de fabriquer en série des objets de grandeconsommation (industrie manufacturière). Parmi ces systèmes, nous aurons besoin de :� Ventouse : Entité de la chaîne de production qui respecte le comportement d'une �ventouse�.� Tapis : Entité de la chaîne de production qui possède une partie mobile sur laquelle sedéplaceront des pièces.

� Pièce : Entité de la chaîne de production, objet quelconque se déplaçant sur la chaîne deproduction.

� Vérin : Entité de la chaîne de production, dispositif permettant d'imprimer un déplacementlinéaire.Chaque vérin est actionné par un distributeur.

� Distributeur : Entité de la chaîne de production, appareil permettant de distribuer une puis-sance �pneumatique� aux vérins, et donc d'actionner leur mouvement.

c 2004

Page 6: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

5

Section 1

Organisation du projet

1.1 Processus

Début de la phase d'étude et de compréhension du sujet (23/02 −→ 18/04). Cette phase consisteen la compréhension du sujet et de ses objectifs ainsi qu'en la recherche de documentation.A l'issue de cette phase, le terrain doit être prépare en vue d'une phase de production exclusive.

1.1.1 Semaine 09 (Du 23/02 au 29/02)• Écriture de la page web. (Fait)• Lecture des documents fournis. (Fait)• Prise de contact avec Mr Ga�é. (Retard)• Lecture des tutoriaux de la page o�cielle. (Fait)• Première approche des sources. (Fait)

1.1.2 Semaine 10 (Du 01/03 au 07/03)• Recherche d'un serveur CVS. (Machine trouvée)• Consultation plus approfondie des sources. (Fait)• Attente d'une réponse au mail envoyé aux chargé du TER, prise de rendez-vous éventuelle.(Rencontre e�ectuée avec Mr Ga�é)

• Premières implémentations simples. (Reporté)• Consultation du contenu de la première recherche bibliographique. (Fait)• Lecture du cours sur les objets réactifs. (Fait)

1.1.3 Semaine 11 (Du 08/03 au 14/03)• Moins de temps pouvant être consacré au TER du fait d'autres projets à réaliser.• Prise de rendez-vous avec Mr Brunette.(Rencontre e�ectuée avec Mr Brunette)• Fin de lecture des diverses documentations. (Fait)• Écriture de la page WEB personnelle du TER. (Reporté)• Installation du système sur le serveur CVS. (Fait)

c 2004

Page 7: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

1.1. PROCESSUS 6

1.1.4 Semaine 12 (Du 15/03 au 21/03)• Durant cette semaine le groupe doit �naliser, et éventuellement rattraper son retard pour cequi est de la compréhension du fonctionnement des objets réactifs. (Fait).

• La compréhension du fonctionnement des chaînes de production est souhaitée. (Reporté)

1.1.5 Semaine 13 (Du 22/03 au 28/03)• Les premières implémentations simples avec les ICOBJs doivent commencer à prendre forme.(Fait)• Le fonctionnement des chaînes de production doit être assimilé. (Retard)• Travail sur le cahier des charges. (Fait)

1.1.6 Semaine 14 (Du 29/03 au 04/04)• Travail sur le cahier des charges. (Fait)• Pour le 1er Avril, arriver en TP avec un cahier des charges avancé à 80%.• Avancée liée à la page personnelle du projet. (Fait)• Mise en place du serveur CVS. (Tâche secondaire)

1.1.7 Semaine 15 (Du 05/04 au 11/04)• Réunion générale. (Fait)• Avancement des implémentations simples, liées aux nouvelles contraintes physiques si néces-saire. (Tâche prioritaire)

• Avancée du cahier des charges. (Fait)

1.1.8 Semaine 16 (Du 12/04 au 18/04)• Finalisation du cahier des charges et préparation de la soutenance. (Fait)• Pour le 14 Avril, mettre en ligne le cahier des charges sur la page twiki. (Fait)• Pour le 16 Avril, première soutenance. (Tâche prioritaire)

1.1.9 Semaine 17 (Du 19/04 au 25/04• Marge d'erreur. Rattrapage du retard.

1.1.10 Semaine 18 (Du 26/04 au 02/05• Révision. Aucune avancée prévue.

1.1.11 Semaine 19 (Du 03/05 au 09/05)• Période d'examen. Aucune avancée prévue.

c 2004

Page 8: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

1.1. PROCESSUS 7

Fig. 1.1 � Planning de la phase de production

c 2004

Page 9: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

1.2. ORGANISATION STRUCTURELLE 8

1.1.12 Début de la phase de Production : Du 10/05 au 11/06• Cette phase consiste en l'implémentation et la réalisation à plein temps destinée à fournir un"livrable" (logiciel + documentation). La soutenance a lieu le 17 Juin.

• Le planning de cette période n'est pas encore totalement établi mais la dernière semaine servirade marge d'erreur, de sécurité en cas de nécessité.L'emploi du temps précis sera dé�ni dés que la structure précise du logiciel aura été dé�nie.

1.2 Organisation structurelle

� Contrôle de qualité (0)Ce processus de contrôle aura lieu pendant toute la phase de production mais sera particulière-ment actif lors des développements parallèles par les di�érents groupes de l'équipe. Il consisteen la véri�cation de l'avancement général et que les fonctionnalités attendues sont bien pré-sentes au moment voulu.C'est une tâche de coordination et le responsable de ce processus sera chargé de répartir éven-tuellement entre les membres de l'équipe les travaux imprévus. Il consiste également en la miseà jour du site Web et en un intermédiaire de communication entre les membres de l'équipe,ainsi qu'en la rédaction de la documentation et des tutoriaux.

� Structure (1)Cette tâche consiste en la rédaction du modèle abstrait du projet ainsi que de sa division ensous-développements qui seront répartis entre tous les développeurs.

� Site Web (2)Cette tâche consiste en la création d'un site Web concernant l'application, ainsi qu'en la miseen place et gestion du serveur CVS.

� Objets (3)Cette tâche consiste en l'implémentation de tous les objets correspondants aux entités de lachaîne de production ainsi que de leur comportement.

� Look'n feel (4)Cette tâche consiste en l'implémentation d'une interface graphique permettant de visualiserl'évolution d'une chaîne de production.

� Environnement (5)Phase de tests pour tous les objets implémentés ainsi que de création de chaînes de productioncomplètes.Implémentation des interfaces permettant la communication entre les icobjs et le boitier decommande.

� Fusion (6)C'est à ce moment là que l'interface graphique (interface utilisateur) sera intégrée et fusion-née avec la partie plus abstraite (implémentation des objets = environnement). Phase de testsintensifs et débuggage.

c 2004

Page 10: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

1.2. ORGANISATION STRUCTURELLE 9

� Mémoire partagée (7)Cette phase consiste en la compréhension de l'utilisation du protocole de mémoire partagéefourni ainsi que de la liaision entre la bibliothèque C++ et notre logiciel écrit en Java.

� Editeur (8)Programmation d'un éditeur graphique (interactif et dynamique ?). Il permettra de créer ceschaînes de production sans passer par les outils d'édition déjà existants.

� Fin de projet (9)Intégration des fonctions de communication avec le boitier de commande, nouvelle phase detests, et débat selon le temps disponible sur les di�érents ajouts possibles ou fonctionnalitésmanquantes.

� Fonctions optionnelles du logiciel(10)Il est ici question d'ajouter au logiciel toutes les fonctions pouvant faciliter ou améliorer sonutilisation. Le contenu est encore indéterminé.

A�ectation des tâches

(0) Boigontier Julien

(1) Richasse Nicolas, Boigontier Julien

(2) Richasse Nicolas

(3) De Lopez Julien, Leveneur Daniel, Pasquier Henri

(4) Richasse Nicolas

(5) De Lopez Julien, Leveneur Daniel, Pasquier Henri

(6) Tâche commune

(7) Boigontier Julien

(8) Tâche commune, sous divisions possibles

(9) Tâche commune

(10) Selon emploi du temps de chacun

� Boigontier Julien : Coordonnateur.� Richasse Nicolas : Responsable de l'interface utilisateur, web et esthétique.� Leveneur Daniel, Pasquier Henri, De Lopez Julien : concepteur des composants et environ-nement.

Nous partons du principe que chaque membre du projet est multi-fonction c'est à dire qu'il peutaider, une fois sa tâche accomplie, l'un de ses collègues.

c 2004

Page 11: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

1.3. LIMITES ET INTERFACES 10

1.3 Limites et interfaces

Nous devons pour implémenter ce projet utiliser les librairies Icobjs qui sont fortement dépendantesd'autres librairies.(Junior ...) certaines notions doivent être apprises et approfondies par plusieursmembres du projet.Nous sommes dépendant du fonctionnement qu'a établi le concept d'objets réactifs.Le logiciel devra intéragir par mémoire partagée (processus unix) avec un boitier de commande,exemple fourni. Le protocole est déjà établi (bibliothèque C++).

c 2004

Page 12: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

11

Section 2

Gestion

2.1 Objectifs et priorités

ObjectifsNos objectifs principaux recouvrent :

� L'implémentation du maximum de fonctionnalités en ce qui concerne la création de chaînes deproduction.

� Notre modèle devra être développé de manière à être souple , c'est à dire à permettre l'ajoutfutur de nouvelles entités et modèles non prévus par la programmation initiale (nouveaux typesde vérins , etc...).

� Le protocole de communication par mémoire partagée devra être strictement respecté.

PrioritésEn cas de retard , nous n'implémenterons pas les fonctionnalités dynamiques de l'éditeur graphique

(possibilités de modi�er le comportement de la chaîne de production pendant son fonctionnement),ni la librairie de partage mémoire en Java (si c'est possible).En cas de retard plus important nous n'implémenterons aucune fonction optionnelle.

2.2 Hypothèses, dépendances, contraintes

HypothèsesNous ne pouvons pas faire d'hypothèses arbitraires étant donné que nous dépendons de normes

et de formats déjà établis que nous devons respecter.Chaque point du sujet sera débattu avec le "client" .

DépendancesCertaines notions devront être apprises , comprises et approfondies par di�érents membres du

projet :� Fonctionnement des chaînes de production.� Fonctionnement des objets réactifs.� Connaissance des librairies icobjs.

c 2004

Page 13: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

2.3. GESTION DU RISQUE 12

� Compréhension du protocole de mémoire partagée.

ContraintesObligation d'utiliser les Icobjs eux-même étant dépendants de junior.

Nous devons créer un logiciel de qualité supérieur à ce qui existe déjà.

Voici ci dessous un exemple de boîtier de commande qui pourra interagir avec SimIcobj parmémoire partagée :

Fig. 2.1 � boîtier de commande

Voici ci dessous un exemple de logiciel utilisant le protocole de partage de la mémoire avec lasimulation qui existe déjà.

Fig. 2.2 � simulateur de Graphcet

2.3 Gestion du risque

� Les exemples que nous avons pour l'instant implémentés grâce aux Icobjs sont cohérents.Resteà véri�er que la librairie est totalement valide.

� Le plus gros risque reste la non compréhension des comportements physiques à simuler.

c 2004

Page 14: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

2.4. MOYENS DE CONTRÔLE 13

2.4 Moyens de contrôle

Présentation régulière de l'avancement du produit de manière ouverte sur internet.Un coordinateur est dévoué à la véri�cation de la progression et de la qualité du travail.

c 2004

Page 15: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

14

Section 3

Technique

3.1 Méthodes et outils employés

Le projet sera intégralement créé en java donc nous ne prendrons pas en compte l'environnementd'exécution, cependant la librairie dé�nissant les fonctions de partage mémoire est écrite en C++donc à moins que nous n'ayons le temps de réecrire cette librairie en Java, un compilateur C++ seranécessaire.Les outils que nous utiliserons sont : Jbuilder, gimp, x�g, java 1.4.2 ...Un serveur CVS sera mis en place par nos soins de manière à centraliser les données.

3.2 Documentation

La structure de notre projet sera dé�nie au format UML et servira de référence pendant le déve-loppement.Une javadoc sera générée au fur et à mesure de l'avancement et le coordinateur sera chargé de lasynthétiser et de la mettre à disposition de toute l'équipe.Des tutoriaux seront écrits pour faciliter l'utilisation du logiciel lorsque celui-ci sera fonctionnel.

c 2004

Page 16: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

15

Section 4

Fonctions du produit

4.1 Interactions avec un boitier de commande.

• Communiquer par mémoire partagée.� opération : écrire et lire dans une zone mémoire.� description : selon son comportement, chaque objet réactif modi�era certaines valeurs enmémoire et devra lire les modi�cations apportées par un boitier de commande externe.

4.2 Création de chaînes de productions

• Création des objets réactifs.� opération : créer un Icobj. A partir d'une entité qui aura été préalablement dé�nie (à partirde l'éditeur) , un comportement (Icobj) sera créé et intégré à la chaîne de production.

• Intégration des objets à l'environnement.� opération : ajout d'un objet. Un objet réactif dé�ni sera intégré à l'environnement (la chaînede production) et mis en relation avec les objets auxquel il est associé.

4.3 Représentation graphique du fonctionnement de la chaîne

• Animation de la chaîne de production.� description : dessiner un objet sur l'écran.

• Possibilité de simuler plusieurs scènes en même temps.� description : possibilité de simuler plusieurs chaînes indépendantes en même temps.

• Possibilité de changer dynamiquement le comportement d'un objet.� opération : éditer les caractéristiques d'un objet

• Interagir avec les pièces.� opération : ajouter ou supprimer une pièce dans la chaîne de production.� opération : déplacer une pièce.

4.4 Editeur graphique

• modi�cation de la propriété des objets.� opération : possibilité de changer les paramètres physiques et graphiques d'un objet.

• créer une chaîne de production graphiquement.� opération : ajouter toutes les entités d'une chaîne de production.

c 2004

Page 17: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

16

Section 5

Contraintes non fonctionnelles

5.1 Plate-forme matérielle

Indépendant.

5.2 Temps de réponse

Le déroulement de la chaîne de production doit s'a�cher de manière �uide.Le partage mémoire ne doit générer un �ux trop important, c'est à dire qu'il ne doit pas saturer lamachine.

5.3 Empreinte mémoire

Aucune.

c 2004

Page 18: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

17

Partie II

Phase de production

c 2004

Page 19: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

18

Introduction

Présentation des chaînes de production

La chaîne de production désigne l'installation industrielle elle-même.Elle est désormais totalement automatisée dans la plupart des usines des pays développés. Elle n'estplus qu'un maillon d'une chaîne d'approvisionnement complexe qui associe de nombreuses entreprisespour fabriquer un produit �ni. L'homme intervient (et encore de moins en moins) pour contrôler laqualité, réparer les dysfonctionnements et assurer le pilotage en temps réel d'une chaîne qui doit êtreen mesure de s'adapter très vite à la demande : produire plus, produire plus vite, réaliser des produitsde plus en plus personnalisés, etc.

Des archéologue ont fait une découverte surprenante d'une "chaîne de production" d'outils enpierre datant du néolithique dans le sud de la Chine.

Dans certaines écoles d'ingénieurs se trouvent, en modèles réduits, de vraies chaînes de productionqui sont destinées à des concepteurs de systèmes automatisés ; il ne s'agit donc pas d'un ensemblequi aurait été acheté puis installé globalement et qui servirait seulement à former des utilisateurs. Elleest au contraire un ensemble "vivant", modi�ée et enrichie d'année en année, dont la mise en placeet le développement constituent ainsi un centre d'expérimentation très concret destiné aux élèveset aux chercheurs. Cette formation se rapproche de l'objectif de notre projet qui n'est autre que depouvoir simuler sur un ordinateur de nombreuses chaînes de production.En e�et, le coup d'une chaînede production, même de taille réduite est beaucoup trop important pour certains établissement quio�rent ce genre deformation, et c'est là toute l'utilité d'avoir à sa disposition un logiciel tel queSimIcobj pour pouvoir remplacer ce manque.

Un exemple de chaîne de production : Cette chaîne emballe des contenants rond, ovales, carrés ourectangulaires.

Voici des dé�nitions de termes techniques utilisés dans une chaîne de production :• CapteurObjet technique de prélèvement d'informations sur un processus. Il réalise la conversion d'unegrandeur physique mesurée en une grandeur physique de sortie exploitable par un constituantde traitement.

• Distributeur pneumatiquePré actionneur qui gère la circulation de l'air comprimé dans le circuit pneumatique.

• GRAFCETLe GRAFCET est l'outil normalisé de description des comportements attendus des systèmeslogiques. (développé par l' A.F.C.E.T).

c 2004

Page 20: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

19

• MécanismeEnsemble de pièces ou d'organes liés mécaniquement ou électro-mécaniquement et dont cer-tains sont mobiles. Ensemble mécanique articulé modélisable par une association de liaisonsorganisées en vue de lui conférer une mobilité fonctionnelle.

• Mode de marcheMode de fonctionnement du système permettant sa conduite en production et hors production.Les deux principaux modes de marche sont le mode de marche automatique et le mode demarche manuel.

• MonostableCaractérise un système possédant une position stable à laquelle il revient lorsque cesse toutesollicitation.

• MouvementDéplacement d'un solide par rapport à un solide de référence, �xe ou lui-même mobile. Les deuxmouvements élémentaires sont le mouvement de translation et le mouvement de rotation.

• PièceElément ou sous-ensemble du bien considéré qui n'est ni désassemblé, ni divisé lors d'uneopération de maintenance. Elément d'un ensemble ou plusieurs éléments formant un tout, etqui normalement ne peuvent pas être désassemblés sans destruction.

• Pré actionneurConstituant de gestion d ?énergie qui, sur ordre de la partie commande, distribue une énergiedisponible vers un actionneur (et parfois vers un élément du pupitre pour la réalisation demessages particuliers).

Vérin \ Distributeur 3/2 mono 3/2 bi 4/2 mono 4/2 bi 5/2 bi 4/3Avec ressort 1 2 X X X 3Sans ressort X X 1 2 2 X

Explication des types :� Type 1 : Allez et Retour distincts� Type 2 : L'allez-retour est une action à part entière� Type 3 : Progressif

• Séquence d'opérationsChronologie d'opérations.

• Séquence linéaire d'un grafcetDans une séquence linéaire, chaque étape n'est suivie que par une transition et chaque transitionn'est validée que par une seule étape.

• Système automatiséEnsemble destiné à apporter, suivant un processus déterminé, une valeur ajoutée à la matièred'÷uvre sur laquelle il agit, a�n de répondre à un besoin. Système technique dont l ?ensembledes parties (opérative et commande) est réalisé par des constituants fabriqués.

• Valeur ajoutéeModi�cation des caractéristiques de la matière d'÷uvre après passage dans le système. Il existetrois types de valeur ajoutée : la transformation, le déplacement, et le stockage.

• Validation d'un grafcetVéri�cation des comportements attendus de la partie opérative avec le modèle de la partiecommande dé�ni par le grafcet. Cette validation peut être réalisée à l'aide d'un logiciel desynthèse directe (exemple : PL7-3, CADEPA...)

• VérinActionneur qui transforme l'énergie d'un �uide, ou l'énergie électrique, en énergie mécaniquede translation ou de rotation alternative.

c 2004

Page 21: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

20

Présentation du simulateur de Mr Ga�é

. . .

Présentation des Icobjs

. . .Ceci est le rapport �nal du Travail d'Etude et de Recherche GB1, Simulateur de chaîne de

production par ICOBJs. Nous allons tout d'abord vous présenter le plan que nous avons suivi pendanttoute la phase de production, vous détailler quelles sont les di�érentes tâches qui ont été assignéesà chacun des membres de l'équipe, pour ensuite consacrer pour chacune d'elles un chapitre vousexpliquant son contenu.

Les informations que vous trouverez dans ce rapport sont non exhaustive et ne peuvent êtreprises qu'en complément des données relatives au projet que vous trouverez sur notre page twiki :http://deptinfo.unice.fr/cgi-bin/twiki/bin/view/Minfo/ICOBJs

En annexe sont fournis un manuel d'utilisation présentant les fonctionnalités principales de notreproduit SimIcobj, ainsi qu'une impression du planning individuel des 5 étudiants composant l'équipede développement.

c 2004

Page 22: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

21

Section 6

Découpage en tâches et planning du

projet

6.1 Présentation

Ce chapitre est une synthèse de plusieurs aspects de l'organisation du projet, il traite du découpageglobal du projet en phases et du découpage individuel du projet en tâches. Par souci de clarté et debrièveté nous n'insérons pas ici toutes les données relatives à ce sujet présentes sur notre page twiki(http://deptinfo.unice.fr/cgi-bin/twiki/bin/view/Minfo/ICOBJs rubriques "avancée globale de la phasede production" et "suivi du travail individuel")

6.2 Découpage du projet en phases

Nous avons décidé de partager la phase de production en 3 étapes.• La première consiste en :� Implémentation des objets réactifs simples (sans possibilité de les commander).� Réalisation de l'interface graphique brute.� Recherches dans le domaine du partage mémoire entre processus Unix en Java.� Création de la structure de base de notre produit.

• La seconde consiste en :� Intégration de l'interface utilisateur avec le moteur de simulation et de partage mémoire.� Intégration du simulateur dans l'exemple concret du TP9 de Licence EEA.� Correction des bugs.� Création d'un éditeur graphique permettant de créer ses propres chaînes de production.

• La troisième consiste en :� Création de la documentation �nale et des tutoriaux d'utilisation.� Mise en forme du projet, format rpm.� Préparation du rapport �nal.� Préparation de la soutenance.� Création de la documentation �nale et des tutoriaux d'utilisation. Pour plus de détails surle détail de chacune de ces phases, vous pouvez consulter notre page de suivi à l'adressesuivante : http://deptinfo.unice.fr/cgi-bin/twiki/bin/view/Minfo/SuiviProjetIcobjs

c 2004

Page 23: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

6.3. PLANNING EFFECTIF 22

6.3 Planning e�ectif

Ce qui a été modi�é :• Tâche "Structure" �nalement réalisée de manière collective.• Suppression de la tâche "Site Web" du projet, remplacé par la page twiki.• Tâche "Editeur" réalisée en parallèle de la tâche "Fusion"• Les tutoriaux ont été écrits par Julien De Lopez.[PS : penser à mettre l'occupation horaire par tâche de chaque personne :] [Par exemple :]• Julien Boigontier

� Contrôle de qualité : 20% du temps pendant toute la durée du projet.� Mémoire partagée : 80% du temps pendant 5 semaines.� Documentation : 75% du temps pendant 5 jours.� Tests divers : 5% du temps pendant 5 jours.

c 2004

Page 24: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

23

Section 7

Fonctionnement des objets réactifs

Responsables : LEVENEUR Daniel - PASQUIER Henri

7.1 Ce que proposent les Icobjs

La librairie Icobj permet de simuler des réactions physiques entre di�érents objets mis dans unmême environnement. Son mode de fonctionnement est le suivant : Dans un premier temps, tous lesobjets prennent connaissance des forces qui sont susceptibles de les faire réagir (collision, force degravité, . . . ) . Ensuite chaque objet fait la somme de toutes ces forces et réagit en conséquence.

Chaque Icobj est implémenté notamment grâce à une suite d'instructions d'un langage assez limitépropre à cette librairie. Néanmoins il est possible de créer ses propres instructions a�n d'enrichir celangage. Parmi les fonctionnalités proposées, on retrouve le minimum d'un langage de programmation(comme l'a�chage, les boucles ou les sauts conditionnels).

Exemple :Ic.Seq(

Ic.Print(" Je suis le meilleur programmeur Icobj "),Ic.Loop(

Ic.If(new Test(),Ic.Print(" super "),Ic.Await(" Piston ")))) ;

� Ic.Seq exécute deux instructions atomiques en séquence.� Ic.Print permet d'a�cher une chaîne de caractère.� Ic.Loop permet de répéter une suite d'instructions.� Ic.If est un saut conditionnel correspondant à un if habituel.� Ic.Await permet de mettre en attente une exécution jusqu'à ce qu'un événement particulier soitgénéré.

� . . .

Grâce à cette librairie, on peut appliquer à chaque Icobj di�érentes forces comme la masse, lavitesse, la collision. . . Certains Icobjs étaient déjà implémentés comme la gravité ou la présence deforce de frottement avec l'air. . .

c 2004

Page 25: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

7.2. UTILISATION DES ICOBJS AFIN DE RÉALISER LE SIMULATEUR 24

7.2 Utilisation des Icobjs a�n de réaliser le simulateur

� L'interaction entre deux Icobjs dans un même environnement ne réagissait pas comme nousl'attendions car il n'y a aucun calcul de trajectoire e�ectué. La fréquence de détection d'Icobjne pouvant pas être aussi grande que dans le monde réel, l'intersection de leur surface est plusgrande que la normale au moment de la détection et la réaction qui en découle est dispropor-tionnée. Toutes les interactions entre les objets ont donc dû être prise en compte par notresimulateur. Nous avons crée tous les objets de la chaîne en considérant le fait que chaque objeta une interaction spéciale avec chaque autre objet.

� La présence de groupe d'Icobjs n'existait pas dans cette librairie et on ne pouvait donc pasappliquer une même force à tout un groupe d'Icobj.Exemple : la ventouse collée au piston doit se comporter comme un seul objet donc doit suivrele piston et attirer les objets.A�n de simuler cette propriété, nous nous sommes servi du fait qu'un Icobj peut obtenir uneinstance d'un autre qui est en contact avec lui et ainsi lui communiquer une force.

� Par défaut, les Icobjs sont " traversables " c'est-à-dire qu'ils peuvent se chevaucher ce qui n'estpas très réaliste pour une chaîne de production. Nous avons dû faire en sorte que ceci ne seproduise pas.

7.3 Implémentation des modèles des di�érents objets

Nous avions à représenter plusieurs objets de la chaîne de production, voici ci-dessous le détail dechacun d'entre eux :

I Tapis roulant

Le tapis possède trois principales caractéristiques, il communique une force à l'objet carré, on nepeut pas le traverser et il ne réagit pas à la gravité. On peut changer sa vitesse dynamiquement,le faire reculer, arrêter ou le relancer. Des qu'un objet est en contact avec ce dernier, il subitune force égale à celle du tapis et avance ou recule.Si le pré actionneur est en contact avec le tapis, ils s'arrêtent tous les deux ainsi que tous lesobjets présents sur le tapis.

I Pré actionneur

Un pré actionneur est composé d'un distributeur et d'un vérin.Le vérin est lui-même composé d'un cache, d'un piston et d'une éventuelle ventouse.� 6 types de distributeurs : trois demi monostable , etc� 2 types de pistons : avec ou sans ressorts.� 2 type de positions : horizontaux ou verticaux.� 2 modèles di�érents : avec ventouse et sans ventouse.

c 2004

Page 26: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

7.3. IMPLÉMENTATION DES MODÈLES DES DIFFÉRENTS OBJETS 25

Une ventouse peut-être soit horizontale soit verticale, et pour chacun de ces cas, elle pré-sente 4 forces d'attraction disponibles. La ventouse peut aussi devenir un aimant. On peutdynamiquement arrêter l'aspiration de la ventouse.Les 6 types de distributeurs couplés avec chacun des types de pistons engendrent trois typesdistincts de déplacement pour le pré actionneur :� Pré actionneur qui e�ectue un aller-retour dès qu'un événement spéci�que est engendré.� Pré actionneur qui attend un événement fais l'aller, puis attend un autre événement et

e�ectue son retour.� Pré actionneur qui avance et peut reculer selon un événement di�érent.

Nous avons dû gérer les di�érentes éventualités que nous pouvions rencontrer :� Réaction avec un objet sur le tapis

� Pré actionneur sans ventouse :� Si l'objet arrive sur le côté du pré actionneur, ce dernier le bloque. Le tapiscontinue à appliquer sa force à tout objet qui est à son contact.

� Si l'objet arrive en dessous du pré actionneur, il s'arrête et le laisse continuer àavancer sur le tapis.

� Pré actionneur avec ventouse� L'objet se colle à la ventouse. Si aucun objet ne gêne le déplacement du préactionneur, l'objet sera attiré par la ventouse qui est elle-même entraînée par lepiston.

c 2004

Page 27: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

7.3. IMPLÉMENTATION DES MODÈLES DES DIFFÉRENTS OBJETS 26

� Si un objet bloque l'avancement de la ventouse, le piston s'arrête.

� Réaction avec un pré actionneurLe vérin (A) doit pousser l'autre vérin (B) et permet ainsi de faire des combinaisons (utilepour les tables XY). Si (B) est lui-même composé d'une ventouse qui attire un objet, (A)va déplacer (B) ainsi que tous ces objets qui y sont attachés.

On peut ainsi faire des combinaisons de plusieurs vérins.� Réaction avec le tiroir

Le tiroir ne peut être qu'horizontal, de ce fait, un pré actionneur horizontal peut le pousseret le tirer de gauche à droite et un vertical se bloque à son contact.

c 2004

Page 28: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

7.3. IMPLÉMENTATION DES MODÈLES DES DIFFÉRENTS OBJETS 27

� Réaction avec la gravitéLe pré actionneur ne réagit pas à la gravité.

I ColleSi cette option est activée, l'objet se colle à n'importe quel objet de la chaîne de productionsauf le tapis et les capteurs. Ceci est utile lorsque l'on met un piston sans ventouse et que l'onveut quand même attirer l'objet.

I Objet CarréLes interactions objet carré/objet carré étant mal dé�nies dans les icobjs, nous avons dû lesredé�nir a�n que ce soit plus réaliste. L'objet carré peut aussi être de type métallique et ainsiêtre attiré par un aimant.C'est le seul objet de notre chaîne de production qui réagit à la gravité et aux forces defrottement avec l'air.

I Tiroir

Le tiroir permet de tirer un objet carré à gauche ou à droite s'il est relié à un pré actionneur.L'objet carré ne suivra le tiroir que s'il est placé à l'intérieur de la cavité prévue à cet e�et.Sinon il repose dessus et si le tiroir bouge, il glissera soit dans la cavité soit à l'extérieur.Le tiroir n'est pas soumis à la gravité.

I Capteurs

Les capteurs changent d'état dès qu'ils rencontrent un objet carré.I Générateur d'objets carrés

Permet de générer des objets carrés comme son nom l'indique. On peut générer des objets enplastique ou en métal, et les générer sur la droite, la gauche ou le bas du générateur

c 2004

Page 29: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

28

Section 8

Interface Utilisateur

Responsable : RICHASSE Nicolas

8.1 Présentation

. . .

8.2 Modi�cations apportées à la librairie Icobjs

8.2.1 Modi�cations� icobj.BootWorkspace

J'ai rajouté dans cette classe un mutex qui permet de gérer les problèmes d'exclusion mutuellelors de la sauvegarde d'une simulation. En e�et, avant cette modi�cation, un panneau graphiqueétait créé en cas d'erreur de sauvegarde, ce qui empêchait tout traitement de l'erreur par lesapplications utilisant cette fonctionnalité. On aurait pu lancer une exception à la place, mais lasérialisation est en fait appelée, lorsque c'est demandé, par un thread qui se réveille toutes lesx millisecondes. Dans ce cas, une application englobante ne peut donc pas attraper l'exceptionlancée. Donc suite a cette modi�cation, chaque processus voulant sauvegarder une simulationdevra appeler la méthode save() puis se synchroniser sur le mutex, qui sera libéré par le processusde sauvegarde une fois terminé. Si la sauvegarde est réussie, un booléen sera mis a vrai dansune variable accessible hors package, et dans le cas contraire l'exception générée sera stockéedans une autre variable (accessible aussi hors package).

� icobj.framework.inspector.Parameter

J'ai rajouté dans cette classe un KernelParameter par défaut dont le but est de fournir lesobjets de type Parameter à l'inspecteur.

� icobj.framework.IcobjInspector

L'inspecteur implémente maintenant l'interface InspectorInterface.

8.2.2 Créations� icobj.framework.inspector.BasicKernelParameter

Cette classe est la classe constructrice d'objets de type Parameter utilisée par défaut par l'ins-pecteur d'icobjs de Mr Brunette. Elle implémente donc icobj.frameworks.inspector.KernelParameter.

c 2004

Page 30: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

8.3. STRUCTURE DE L'INTERFACE 29

� icobj.IcobjClassLoader

Cette interface permet d'identi�er un chargeur de classes d'icobjs.� icobj.Semaphore

Cette classe permet de représenter un Sémaphore en Java. Ce sémaphore sera utilisé entreautres pour le processus de sauvegarde (modi�é dans icobj.BootWorkspace)

� icobj.framework.inspector.KernelParameter

Cette interface devra être implémentée par toutes les classes génératrices d'objets de typeParameter utilisés par les inspecteurs d'icobjs. Les instances de ces classes génératrices sontstockées dans une variable statique de la classe icobj.framework.inspector.Parameter nommée" kp ".

� icobj.framework.InspectorInterface

Cette interface permet d'identi�er un inspecteur d'icobjs.� icobj.IcObjectInputStream

Cette classe a été créée a�n de rendre possible la sérialisation/désérialisation de simulationsavec les plugins. Cette classe permet donc de charger un �chier en spéci�ant un classloader quiconnaîtra les classes des plugins qui ne sont pas connus dans le classloader par défaut.Il a donc fallu redé�nir la méthode resolveClass : celle-ci cherche les classes dans le ClassLoaderpar défaut, ainsi que dans le classLoader passé en paramètre si elles ne sont pas trouvées dansle précédent.

8.3 Structure de l'interface

L'interface graphique a été programmée de manière à pouvoir e�ectuer la moindre modi�cationavec un maximum de �exibilité. C'est pour cela que chaque composant graphique a un pointeur surun objet de type SimGestionnaire qui se charge de faire l'intermédiaire avec d'autres composants.Seul le SimGestionnaire est sensé connaître la structure globale de l'interface graphique, et chaquecomposant est sensé connaître la sienne.

L'interface graphique contient principalement une boite d'outils ainsi qu'un bureau où seront ou-vertes 1 ou plusieurs simulations.

� La boite d'outils contient tout d'abord des raccourcis pour ouvrir, créer, enregistrer et fermerdes simulations, mais aussi, lorsque l'éditeur est activé, tous les objets pouvant intervenir dansune chaîne de production.

� Chaque simulation peut être divisée en 4 grandes parties :� Le panneau d'informations

C'est lui qui contient la liste de tous les objets réactifs de la chaîne de production courante.Le fait d'y sélectionner un objet entraîne l'a�chage de ses propriétés dans le panneau depropriétés, et l'encadrement de sa représentation graphique dans la zone de dessin.IMAGE

� Le panneau de propriétés

Ce panneau se charge d'a�cher les propriétés de l'objet sélectionné (et rien si aucun n'estsélectionné). Les composants graphiques qui y sont a�chés permettent de visualiser lecomportement, la position, vitesse, etc. de chacun d'eux. Grâce à l'interface KernelPa-rameter, certains d'entre eux viennent de la librairie d'icobjs créée pas Mr Brunette, etd'autres de notre package fr.unice.simicobj.gui.inspector .IMAGE

c 2004

Page 31: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

8.4. INTERFACE AVEC LES ICOBJS 30

� La zone de simulation

C'est dans cet espace qu'est jouée la simulation. La souris ne peut intéragir à l'intérieurque lorsque l'éditeur est activé. Dans ce cas, le fait de cliquer sur un objet, entraine sasélection dans le panneau d'informations, et l'a�chage de ses propriétés dans le panneaude propriétés, et tout cela grâce a un appel de fonction du SimGestionnaire. On peutaussi modi�er la position d'un objet et e�ectuer plusieurs opérations qui seront décritesplus tard.IMAGE

� Le panneau de contrôle

Chaque objet de la simulation fournit à l'interface une liste de paramètres modi�ablesdynamiquement, et un composant permettant d'e�ectuer ces modi�cations s'a�che alorsdans le panneau de contrôle. Ce panneau a été créé dans le souci de pouvoir contrôlerfacilement le déroulement de la simulation. Les composants graphiques qui y sont a�chéssont de type Parameter et viennent de fr.unice.simicobj.gui.controller .IMAGE

8.4 Interface avec les icobjs

A�n de donner des caractéristiques précises aux objets de la chaîne de production, chacun d'euxdoit étendre la classe SimObject. A�n de mieux intéragir avec l'application, les classes étendantSimObject peuvent surcharger certaines fonctions. Par exemple, la fonction getMyParameters() doitretourner un tableau contenant la liste de tous les paramètres modi�ables dynamiquement à l'aidedu panneau de contrôle. De même, la fonction getMyComponents() retourne la liste des objets quicomposent ce SimObject s'il est lui-même composé. Dans le cas d'objets composés, il est importantde redé�nir la méthode move(x, y) qui permet de placer l'objet à une certaine position de l'espacede simulation (a�n de faire en sorte que tous les objets qui le composent se déplacent aussi). Ladescription des autres fonctions se trouve dans la documentation générée par l'outil Javadoc.

Tous les SimObjects évoluent dans un environnement de type SimWorkspace. La classe SimWorks-pace étend la classe BootWorkspace de la librairie Icobjs a�n de fournir quelques fonctionnalitéssupplémentaires.

8.5 Chargeur de plugins

A�n de rendre l'application facilement extensible, les objets de la chaîne de production sontreprésentés comme des plugins qui sont chargés dynamiquement à l'ouverture de l'application. Lesclasses des plugins doivent être placées dans le répertoire "plugins/repository" situé à la racine duprojet. En fait, ce ne sont pas des instances de ces classes qui sont chargées dynamiquement, maisles classes elles mêmes, a�n de pouvoir les instancier a volonté dans l'éditeur.

Mais tous les objets ne sont pas instanciables dans la simulation : en e�et, un pré-actionneurpar exemple est composé d'un cache, d'un piston, d'une ventouse, d'un distributeur et d'un res-sort, mais un ressort isolé n'aurait aucun intérêt dans la simulation. C'est pour cela que des ob-jets " constructeurs " ont été créés a�n de pouvoir identi�er les objets que peut insérer l'utilisa-teur durant l'édition d'une simulation. Chaque objet constructeur doit étendre la classe de l'objet àcréer (par exemple un constructeur de Tapis devra étendre la classe Tapis), implémenter la classefr.unice.simicobj.object.SimConstructor et posséder un constructeur de classe pre-nant comme unique paramètre un objet de type icobj.Workspace. Par contre il se peut que certainsconstructeurs nécessitent une intervention de l'utilisateur a�n de s'instancier correctement. Dans cecas, l'objet constructeur devra respecter ces 2 conditions :

c 2004

Page 32: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

8.6. UTILISATION DE L'INTERFACE GRAPHIQUE 31

� posséder un constructeur prenant en paramètre un objet de type icobj.Workspace ainsiqu'un tableau d'objets de type ConstructorParameter.

� redé�nir la méthode statique getConstructorParameters() qui retourne un tableau de Construc-torParameter passé en paramètre au constructeur de classe.

Ceci étant fait, une boite de dialogue s'a�chera avant chaque instanciation de l'objet et proposeraà l'utilisateur de personnaliser son objet.

Vu que les objets de types constructor qui sont reconnus comme des outils par l'application,il faudra alors redé�nir les méthodes statiques getSimDescription() et getSimIcon() quidonnent respectivement le texte qui sera a�ché comme une " aide " sur le bouton graphique del'objet et l'icône de ce bouton.

8.6 Utilisation de l'interface graphique

L'interface graphique peut se lancer en plusieurs modes :� Editeurpermet d'ouvrir et d'éditer des simulations.

� Normalpermet seulement d'ouvrir et de jouer les simulations (sans intervention possible de la souris)

� Mémoire partagéepermet d'ouvrir et de jouer les simulations en prenant en compte le protocole de mémoirepartagée de Mr Ga�é (ne marche que sous Unix/Linux).

Voici une description détaillée de ces 3 modes de fonctionnement.I Mode Editeur

Pour créer une simulation, lancer Fichier/Nouveau ou cliquer sur le bouton associé dans la barred'outils. Ensuite, il su�t de sélectionner un outil dans la barre et cliquer dans la zone de simu-lation. Si l'objet est complexe, une fenêtre s'a�chera demandant de paramétrer l'initialisationde l'objet, sinon il sera inséré tout de suite à la position du click. Dès que la simulation estécrite, on peut l'enregistrer en lançant Fichier/Enregistrer ou en cliquant sur le bouton associédans la barre d'outils.En ce qui concerne la souris :� le bouton gauche permet d'e�ectuer une opération d'insertion.� le bouton droit permet de supprimer l'objet pointé.� le bouton du milieu permet de retailler l'objet, même si ce n'est pas conseillé (risque de bugsavec les objets programmés).

I Mode NormalPour ouvrir une simulation, lancer Fichier/Ouvrir et sélectionner le �chier a ouvrir, ou cliquersur le bouton associé dans la barre d'outils. Pour lancer, arrêter, etc. la simulation, cliquer surles boutons de contrôle associés situés dans le panneau de contrôle.

I Mode Mémoire partagéeDans ce mode, on ne peut ouvrir qu'une seule simulation partagée et le comportement est lemême qu'en mode normal, à la di�érence que la commande unix est lancée en parallèle et peutintéragir avec l'application.

c 2004

Page 33: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

32

Section 9

Connexion avec d'autres processus

Unix

9.1 Présentation

L'une des fonctionnalités principale de notre produit SimIcobj est sa capacité à communiquer avecn'importe quel processus Unix implémentant le protocole de mémoire partagée dé�ni par Mr Ga�é(celui-ci est détaillé plus loin). Cette communication est à double sens et permet à la simulation deprévenir de l'activation d'un capteur (capteur de position) et au programme client (processus Unix)de signaler l'activation d'un bouton (Mise en marche du tapis roulant, . . . ).

Cette fonctionnalité a été introduite dans notre projet dans le but de permettre à Mr Ga�é defaire interagir la simulation avec deux outils : Un boîtier de commande et son logiciel de simulationde Grafcet. Cependant les possibilités n'en sont pas limitées à ces deux exemples et le protocole estsu�samment générique pour permettre la création d'autres types de clients.

9.2 Détails du protocole

Le protocole de mémoire partagée est assez simple à comprendre, il s'articule sur la possessionpar le client et le serveur d'une référence vers une structure donnée.

La voici (dé�nie en C++, présente dans le �chier IOshare.h) :struct IO_controleur_structure {

public:long clock;g_bool auth_acces_input;int nb_entrees;int nb_sorties;g_bool input[IO_controleur_NB_IO_MAX];g_bool output[IO_controleur_NB_IO_MAX];char nom_input[IO_controleur_MEM_TAILLE_NOM][IO_controleur_NB_IO_MAX];char nom_output[IO_controleur_MEM_TAILLE_NOM][IO_controleur_NB_IO_MAX];

};

• Long clock

c 2004

Page 34: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

9.3. DÉTAILS DE L'IMPLÉMENTATION 33

Cette variable est initialisée à 0 puis incrémentée à chaque modi�cation du contenu de lastructure partagée. Par convention cette variable est mise à -1 lorsque le Serveur cesse defonctionner.

• g_bool auth_acces_input

Cette variable peut admettre deux valeurs : G_TRUE et G_FALSE. Elle est utilisée pourinterdire ou autoriser l'accès à la structure partagée.

• int nb_entrees

Correspond au nombre d'identi�cateurs d'entrées. Ceux-ci sont des chaînes de caractères iden-ti�ants un capteur.

• int nb_sorties

Corresspond au nombre d'identi�cateurs de sorties. Ceux-ci sont des chaînes de caractèresidenti�ants une action possible sur une entité de la chaîne de production. (par exemple activerl'aspiration de la ventouse, identi�é par "vent1").

• g_bool input[]

Tableau correspondant aux valeurs associées aux identi�ants d'entrées (soit G_FALSE ouG_TRUE).

• g_bool output[]

Tableau correspondant aux valeurs associées aux identi�ants de sorties. (soit G_FALSE ouG_TRUE).

• char nom_input[][]

Tableau contenant les chaînes de caractères identi�ants les entrées.• char nom_output[][]

Tableau contenant les chaînes de caractères identi�ants les sorties.

Important : Les identi�ants doivent être uniques.

9.3 Détails de l'implémentation

Pour réaliser cette fonctionnalité il nous a fallu faire appel à une librairie permettant de fairecommuniquer Java avec du C++, nous nous sommes donc tournés vers la Java Native Interface.(tutorial disponible à l'adresse suivante : http://java.sun.com/docs/books/tutorial/native1.1)

Le programme SimIcobj échange donc des données avec une librairie c++ (écrit par nos soins) : "liblink.so ".

Le fonctionnement du partage du coté de Java est le suivant :� Création de la simulation et des identi�ants.� Création d'un objet Linker (classe de lien avec C++).� Création pour chaque objet réactif d'un objet Linked (contenant l'objet réactif + ses identi-�ants).

� Communication de ses objets Linked à l'objet Linker.� Communication des données nécessaire à la partie c++.� Appel des fonctions d'initialisation mémoire de c++ depuis Java.� Lancement du corps du programme c++ depuis Java.� Attente de message venant du programme c++.Pour plus de détails, voir la Javadoc du package " link ".

c 2004

Page 35: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

9.4. PROBLÈMES RENCONTRÉS 34

Le fonctionnement du partage du coté de C++ est le suivant (coté serveur) :� Initialisation de la structure partagée, on suppose qu'il a connaissance des identi�ants (enpratique ils lui seront envoyés par le programme Java),

� Initialisation des tableaux input et output qui sont remplis de valeurs G_FALSE.� Lancement du programme client et transmission en paramètre de l'adresse de la structurepartagée (la commande sera de la forme " nomduclient -automemlink adressemémoire & ").A noter : le nom du programme client doit être connu du serveur. (il lui sera communiqué parSimIcobj).

� Scann régulier des valeurs du tableau output et réaction en cas de changements (envoie auprogramme de simulation l'identi�cateur correspondant à la case du tableau modi�ée).

� En cas de réception d'un message (depuis Java) indiquant qu'un capteur a été activé alors leserveur e�ectue l'a�ectation voulue dans le tableau input.

Le fonctionnement du partage du coté de C++ est le suivant (coté client) :� Réception au moment de son lancement l'adresse de la structure partagée.� Accès et modi�cations de la structure selon les besoins du client.

9.3.1 Diagramme de classe du package linkIMAGE

9.3.2 Captures d'écran du fonctionnement de SimIcobj avec un boitier decommande

IMAGE bouton non activéIMAGE bouton activé

9.4 Problèmes rencontrés

L'erreur principale commise juste après le choix d'utiliser la librairie JNI fut de vouloir faire tropcomplexe.

Avant même d'avoir parfaitement maîtrisé le fonctionnement de JNI j'ai voulu faire en sorte decréer un objet C++ par simulation, dont les réferences seraient gardées par l'objet Linker (du cotéJava) et permettant ainsi que faire fonctionner plusieurs simulations avec pour chacune un programmeclient donné.

Cependant en avançant dans l'apprentissage de JNI je me suis rendu compte du peu de docu-mentation disponible quand aux possibilités de passage de Java à C++ ou de C++ à Java d'objetsde type quelconque, c'est à dire non dé�nis dans le �chier "jni.h". A ce moment je me suis alorsposé la question de savoir si cette possibilité de multiples simulations et de leurs programmes clientsapporterait vraiment quelque chose à l'utilisateur principal (Mr Ga�é) et je me suis rendu comptequ'il était peu probable que ses étudiants aient à dé�nir puis à tester plusieurs chaînes de productionen un TP puis à les tester simulatanément.

En conséquence de quoi j'ai rénoncé à cette idée puis ai adopté une vision de la communication"au plus simple", c'est à dire en atomisant au maximum les échanges de données entre C++ et Java.

La seconde di�culté rencontrée est due à un disfonctionnement de la commande javah, qui permetde générer un �chier d'en-têtes (�chier .h) C++ à partir de la classe Java d'où seront appelées lesfonctions dites Natives (écrites dans un autre langage que Java).

En e�et lors des tests de la librairie link hors du projet (sans les packages) tout marchait très bien,cependant une fois les packages dé�nis Java prétendait ne pas trouver les fonctions C++ requises.

c 2004

Page 36: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

9.4. PROBLÈMES RENCONTRÉS 35

Cela vient de fait que javah, en générant le �chier .h, ne tient pas comtpe des packages pour créerle nom des fonctions C++ or ceux-ci doivent être précisemment dé�nis.

Exemple :Pour la fonction native déclarée en Java dans la classe Linker du package fr.unice.simicobj.link

sous la forme "public native int init(String cont) ;" javah génère une en-tête de fonction qui estJNIEXPORT jint JNICALL Java_Linker_init (JNIEnv * , jobject, jstring);

Or cet en-tête devrait être :JNIEXPORT jint JNICALL

Java_fr_unice_simicobj_link_Linker_init (JNIEnv * , jobject, jstring);

c 2004

Page 37: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

36

Section 10

Suivi

10.1 Présentation

La phase de production de SimIcobj a été réalisée par une équipe de 5 personnes à temps pleinpendant plus de 6 semaines. Il s'agit d'un programme relativement complexe et faisant appel à untrès grand nombre de classes. Pour éviter que le travail de chacun ne soit désordonné et pour assurerau maximum que nos objectifs soient respectés nous avons décidé de nommer un " coordinateur "dont la tâche serait de veiller à l'avancement du projet. Ceci nous a été conseillé par Mr Ga�é lorsde nos premiers entretiens.

10.2 Moyens mis en ÷uvre

Pour obtenir un suivi cohérent du projet plusieurs moyens ont été mis en �uvre dont voici l'énu-mération et le but.� Création de pages de suivi individuelles basées sur la même structure, ceci permettant une

lecture plus aisée de rapport de travail de chacun.� Création et mise à jour régulière d'une page de suivi de l'avancée générale du projet, ceci per-

mettant de situer le stade auquel le développement est arrivé ainsi que ce qui reste à e�ectuer.Le but était également de mettre en place une vision la plus large possible de manière à éviterde se rendre compte quelques jours avant une deadline donnée que telle ou telle fonctionnalitéa été oubliée.

� Communication quotidienne avec chaque membre du projet par mail ou messagerie instantanéedans le but de regrouper le plus d'informations récentes possibles sur le stade atteint par chacun.

� Découpage du projet en phase et �xation de deadlines dans le but de structurer au maximumle travail global et de dé�nir des objectifs à court ou moyen terme.

� Prise de rendez-vous réguliers avec notre encadrant (une fois par semaine) pour lui présenterles dernière modi�cations apportées et les lui faire valider.

� Adaptation du planning �xé dans le cahier des charges aux nécessités du moment.� A�ectation de nouvelles tâches une fois les précédentes terminées.

10.3 Di�cultés rencontrées

Elles sont assez nombreuses mais dans l'ensemble une communication régulière nous a permisd'éviter les pièges courants tels que la double écriture d'une fonctionnalité par deux personnes codantsen ignorant l'un le travail de l'autre, l'écriture de fonctionnalités inutiles, l'oubli de certains objectifs.

c 2004

Page 38: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

10.3. DIFFICULTÉS RENCONTRÉES 37

Ceci est un bilan à quelques heures du rendu du projet, il ne signi�e par que nous n'avons pasrencontrés les problèmes ci-dessus mais plutôt qu'ils ont été " diagnostiqués " à temps avant uneperte de temps inutile.

Voici ce qui, a mon avis, serait à revoir et pourrait être amélioré dans le suivi du la production :• Inciter plus au retour d'information, c'est bien beau de faire des synthèses et d'envoyer desmails pour informer l'équipe de l'avancement du projet mais encore faut-il que ces informationssoient lues régulièrement. Une solution serait de demander pour chaque message important unaccusé de lecture.

• Augmenter la communication avec l'encadrant/client et préparer avec plus de soin les pointsà éclaircir lors des rendez-vous. Certains points essentiels du comportement des objets de lachaîne de production n'ont été bien compris que peu de temps avant la �n de lu projet.Solution : Mettre en place un suivi des interrogations (sous forme de page web) dans lequelchaque membre de l'équipe pourrait faire part de ses doutes ou questions quand à la réalisationd'une fonctionnalité donnée.

c 2004

Page 39: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

10.3. DIFFICULTÉS RENCONTRÉES 38

Conclusion globale

Au �nal, nous sommes assez contents de la manière dont s'est déroulé la phase de productionmais nous sommes conscients que certaines erreurs auraient pu être évitées et donc nous faire gagnerdu temps.

Si nous avions à reprendre le développement, voici ce sur quoi nous insisterions d'avantage :• La communication, encore et encore, en insistant sur le retour d'information.• Un dialogue plus poussé avec les encadrants, quitte à poser les questions les plus évidentes pours'assurer d'une compréhension optimale et réciproque entre les deux parties.

• Des présentations/démonstrations plus fréquentes.• Des tests plus régulier et rigoureux des comportements des objets réactifs, et faits par quelqu'und'autre que celui qui a développé l'objet.

• Une plus grande ré�exion initiale sur l'a�ectation des tâches, certains ont eu plus de travail (enheures) et il était di�cile pour quelqu'un n'ayant pas suivi une partie du développement donnéede s'insérer dans celle-ci pour aider.

Voici concernant les points d'organisation que nous aurions pu améliorer, reste à traiter les fonc-tionnalités qu'implémentent le logiciel et celles qui au contraire ne sont pas présentes.

Ce que SimIcobj fait :• Simulation des machines usuelles d'une chaîne de production.• Création et sauvegarde de chaînes de production.• Extensibilité par plugins (possibilité d'ajouts de nouvelles machines).• Communication avec un processus Unix et possibilité d'intervention par celui-ci sur la simulation.• Simulation de pannes.

Ce qui SimIcobj ne fait pas et pourquoi :• A�chage d'une vue de dessus de la simulation. Nous avons manqué de temps pour cettefonctionnalité, la priorité étant de fournir un moteur de simulation cohérent.

• Simulation de multiples chaînes de production communiquant chacune avec un processus Unixdi�érent. Pour implémenter cette fonctionnalité (non prévue dans le cahier des charges) ilfaudrait revoir la librairie de communication avec C++. Le moteur de simulation permet d'avoirplusieurs Workspaces en fonctionnement mais pas la librairie de lien. Cette possibilité nous estapparue trop tard dans le projet mais pourrait être intéressante à implémenter.

• A compléter.

c 2004

Page 40: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

10.3. DIFFICULTÉS RENCONTRÉES 39

En dé�nitive ce projet peut-être considéré comme très enrichissant pour tous les membres del'équipe, nous y avons découvert des concepts nouveaux comme la programmation par objets réactifs,la communication inter-langages, la communication par mémoire partagée. De plus Nous y avonsapprofondi des concepts tels celui de plugin et avant tout : le travail en équipe (pas aussi évident quecela parait).

Pour terminer ce rapport nous aimerions adresser une petite phrase aux étudiants qui auront àcompléter SimIcobj ou qui liront juste cette conclusion pour essayer d'en tirer quelques conseils : Nevous engagez dans aucun code sans être sûr de faire exactement ce qui est requis, n'hésitez pas àaller au plus simplet et au plus clair. . . Et communiquez !

c 2004

Page 41: Simulateur de chaînes de production - Département …deptinfo.unice.fr/twiki/pub/Minfo03/ICOBJs/rapport_10... · 2004-06-10 · Simulateur de chaînes de production Encadrants :

BIBLIOGRAPHIE 40

Bibliographie

[Bib][Cou][La][Le][Les]

c 2004


Recommended