Simulateur de systèmes en JavaScript

Bonjour à toutes et à tous !

Nous sommes trois étudiants en seconde année du cycle préparatoire de Polytech Angers et lors de ce quatrième semestre nous avons travaillé sur un simulateur de systèmes de production en JavaScript. Vous trouverez dans cet article le déroulement de notre projet et les problèmes auxquels nous avons pu faire face !

Objectif

Le but est de créer une application web pouvant simuler un système de production, cela implique de programmer différents composants tels que des convoyeurs, des aiguillages et d’autres types de machines que l’on peut retrouver sur des chaînes de production réelles.

Ce genre de système est souvent pris en exemple pour illustrer des travaux de recherche car il permet de suivre l’évolution des flux du système au cours du temps.

Notre application devra également permettre à un utilisateur de créer facilement ses propres systèmes.

Pourquoi JavaScript ?

Tout simplement car il s’agit d’un langage de programmation qui convient parfaitement aux applications web et permet de programmer des animations graphiques dans un navigateur comme nous en avons besoin pour créer notre simulateur.

Logo du langage JavaScript

Logo du langage JavaScript

Déroulement du projet

Pour que notre simulateur puisse être le plus complet et permette un maximum de possibilités, nous avons créé au total 9 composants utilisables dans le système que voici :

  • Les convoyeurs : ce sont eux qui permettent le mouvement des pièces entre les différentes machines du système.
  • Un convoyeur

    Un convoyeur

  • Les convoyeurs butés : il s’agit d’un convoyeur normal avec en plus la capacité de stopper les pièces et de les faire repartir (on pourrait l’assimiler à un feu de circulation).
  • Un convoyeur buté

    Un convoyeur buté

  • Les machines : elles traitent les pièces en un certain temps et peuvent en traiter également qu’un certain nombre simultanément. Pour plus de dynamisme, leur design change en fonction de leur stock pendant la simulation.
  • Une machine

    Une machine

  • Les lots : ce sont des machines qui rassemblent un nombre défini de pièces en une seule pièce.
  • Un lot

    Un lot

  • Les lots doubles : des machines possédant le même comportement que les lots mais avec deux entrées pour les pièces et chacune de ces deux entrées doit avoir un nombre défini de pièces pour créer un lot.
  • Un lot double

    Un lot double

  • Les découpeurs : des machines qui découpent une pièce en plusieurs pièces.
  • Un découpeur

    Un découpeur

  • Les découpeurs doubles : ils fonctionnent comme les découpeurs mais la sortie des pièces découpées est divisée en deux.
  • Un découpeur double

    Un découpeur double

  • Les aiguillages : ils permettent de séparer les pièces qui arrivent. Cette séparation suit une logique cyclique : dans l’image suivante une pièce va en bas (0) puis deux pièces vont en haut (1).
  • Un aiguillage

    Un aiguillage

  • Les téléporteurs : des éléments qui transportent les pièces à travers la simulation afin de simplifier les échanges entre les machines sans surcharge visuelle.
  • Un téléporteur

    Avec tous ces composants disponibles nous avons pu créer plusieurs presets (exemples de système de production déjà faits) permettant à l’utilisateur de tester et de comprendre plus rapidement le comportement de chaque machine et leur manière de fonctionner.

    Vous pouvez tester ces différents presets et essayer de créer votre propre système en téléchargeant notre programme ici

    Les problèmes rencontrés

    Bien que le langage JavaScript soit le plus adapté pour ce projet, aucun de nous trois n’avait auparavant codé en JavaScript. Nous avons dû faire de nombreuses recherches pour apprendre les bases avant de commencer à travailler.

    Nous nous sommes rapidement rendu compte qu’il n’allait pas être simple pour l’utilisateur et même pour nous-même de créer des systèmes complexes s’il faut les coder directement dans le programme. C’est pour cette raison que nous avons créé une autre page qui permet d’ajouter et de retirer des machines bien plus facilement et avec un aperçu du système final en temps réel avant de lancer réellement la simulation.

    Le résultat

    Après plus d’une centaine d’heures de travail sur ce projet, nous avons pu aboutir à un résultat fonctionnel et qui satisfait le cahier des charges ainsi que nous-même.

    Voici une courte vidéo faisant la démonstration du premier preset intégré à notre application :

    Les améliorations possibles

    Avec plus de temps et de moyen, nous aurions pu envisager la mise en place d’un serveur offrant la possibilité à un utilisateur de se connecter pour enregistrer et récupérer ses créations plus facilement qu’avec la fonction de copier-coller actuel.

    La page principale où l’on crée sa simulation peut également être améliorée d’un point de vue ergonomique avec un système de “Glisser-déposer” par exemple pour placer les différents composants.

    Conclusion

    Cette expérience a été riche et très enrichissante pour nous trois. Adepte de l’informatique, nous avons pris beaucoup de plaisir à travailler sur ce simulateur et avons également beaucoup appris. Les problèmes rencontrés n’ont fait que renforcer nos connaissances du sujet et nous ont permis d’acquérir de nouvelles compétences qui nous seront utiles un jour dans notre carrière professionnelle.

    Nous tenons à remercier M. COTTENCEAU pour son encadrement tout au long du projet.

    Merci d’avoir lu notre article jusqu’au bout !

    Antoine Buquet
    Thomas Billequin
    Mathis Vaugeois