IMA4 2018/2019 P7 : Différence entre versions
(→15/10/2018) |
(→Interface Client) |
||
(13 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 217 : | Ligne 217 : | ||
* Modification du LabView pour recevoir l'information de fin de production | * Modification du LabView pour recevoir l'information de fin de production | ||
* Rédaction du rapport | * Rédaction du rapport | ||
+ | ===18/10/2018=== | ||
+ | Lors de cette journée, j'ai réalisé les tâches suivantes : | ||
+ | * Résolution du problème qui persistait dans mon Grafcet | ||
+ | * Planning des derniers jours à poster | ||
+ | * Travail sur la validation de l'opérateur après l'envoi de la requête du client | ||
+ | |||
+ | ===19/10/2018=== | ||
+ | Voici les tâches que j'ai réalisé cette journée, | ||
+ | * Travail sur la partie interface pour communiquer les informations client à l'opérateur | ||
+ | * Rédaction du rapport de projet | ||
+ | |||
+ | ===20/10/2018=== | ||
+ | Lors de cette journée, j'ai effectué les tâches suivantes : | ||
+ | * Travail sur la mise en place de tableau de commande pour la partie opérative | ||
+ | * Rédaction du rapport | ||
+ | |||
+ | ===22/10/2018=== | ||
+ | Lors de cette journée, j'ai réalisé les tâches suivantes : | ||
+ | * Finalisation du fichier LabView | ||
+ | * Rétablissement de la fonction d'état de la commande | ||
==Prologue== | ==Prologue== | ||
Ligne 313 : | Ligne 333 : | ||
Mon premier automate était alors le client, et j'envoyais alors une requête au second automate qui était lui serveur. J'ai donc envoyé une requête d'écriture pour écrire les chiffres 8, 9 et 10. Les codes de requêtes de lecture et d'écriture sont les suivantes : 16x0036 et 16x0037. Concernant la gestion, dans le compte rendu s'il est enregistré le code 00 alors la communication a été réussi. Nous pouvons aussi aller vérifier dans les variables du second automate pour voir si nous les avons bien écrit. | Mon premier automate était alors le client, et j'envoyais alors une requête au second automate qui était lui serveur. J'ai donc envoyé une requête d'écriture pour écrire les chiffres 8, 9 et 10. Les codes de requêtes de lecture et d'écriture sont les suivantes : 16x0036 et 16x0037. Concernant la gestion, dans le compte rendu s'il est enregistré le code 00 alors la communication a été réussi. Nous pouvons aussi aller vérifier dans les variables du second automate pour voir si nous les avons bien écrit. | ||
− | [[Fichier: | + | [[Fichier:Envoi_code_P7.jpg|500px|thumb|center|Figure X : Capture de l'envoi des mots écrits par le maître]] |
==Communication Modbus : Envoie de requête pour contrôler l'API== | ==Communication Modbus : Envoie de requête pour contrôler l'API== | ||
Ligne 360 : | Ligne 380 : | ||
==Programmation de l'API : Le traitement de surface== | ==Programmation de l'API : Le traitement de surface== | ||
Pour programmer les différentes gammes de production il faut prendre en compte la communication ModBus. Il sera donc plus simple d'expérimenter différentes manières pour faciliter la communication. Le logiciel que j'utilise pour programmer mes gammes est le logiciel PL7 PRO, ce logiciel me permet de décomposer mon programme. Il y a une partie où la construction du grafcet est réalisée, dans cette même partie je mets les conditions de mon grafcet. Dans une autre partie, je mets les différentes actions et les différentes temporisations permettant le traitement à chaque poste pour chaque gamme. | Pour programmer les différentes gammes de production il faut prendre en compte la communication ModBus. Il sera donc plus simple d'expérimenter différentes manières pour faciliter la communication. Le logiciel que j'utilise pour programmer mes gammes est le logiciel PL7 PRO, ce logiciel me permet de décomposer mon programme. Il y a une partie où la construction du grafcet est réalisée, dans cette même partie je mets les conditions de mon grafcet. Dans une autre partie, je mets les différentes actions et les différentes temporisations permettant le traitement à chaque poste pour chaque gamme. | ||
+ | ==Supervision : Gestion de commande des clients== | ||
+ | Concernant la gestion des commandes des clients, la décision a été d'avoir les fonctionnalités suivantes : | ||
+ | * L'opérateur peut lancer les commandes envoyées par le client | ||
+ | * L'opérateur actualise les différentes commandes et choisit les commandes à lancer | ||
+ | * Lecture de l'état de la production (En attente de confirmation, En production, Terminé) | ||
+ | Pour cela il a fallu établir une ouverture de connexion TCP/IP, ensuite une fois que l'utilisateur choisit sa gamme la requête d'écriture ModBus est envoyée. De plus une seconde requête de lecture est envoyée pour connaître l'état de la production. | ||
+ | Ensuite, la création d'un tableau permettant d'enregistrer les différentes commandes des clients. Pour cela, l'opérateur actualise le tableau de commande. Une fois que la gamme est choisi, nous avons celle-ci qui est enregistrée lorsque l'opérateur actualise puis choisit la commande à lancer en premier. | ||
+ | |||
+ | [[Fichier:Programmation_LabView_P7.png|500px|thumb|center|Figure X : Programmation LabView de la partie opérateur]] | ||
+ | |||
+ | [[Fichier:Aspect_Graphique_Operateur_P7.png|500px|thumb|center|Figure X : Aspect graphique de la partie opérateur]] | ||
+ | |||
+ | Pour connaître les différents états de production (en attente de confirmation, en production et terminé) la première décision a été de mettre directement les commandes en état d'attente de confirmation, ensuite une fois que l'opérateur à actualisé et a sélectionné la commande à lancer son état passe en production. Dans ce programme une requête de lecture est envoyée constamment ce qui permet de passer en mode « Terminé », pour cela je compare le 9ème bit de ma réponse de requête de lecture et s'il est à zéro cela signifie que la commande est terminée. | ||
+ | |||
+ | ==Interface Client== | ||
+ | Pour gérer l'interface graphique, l'utilisation du JavaScript, du HTML et du CSS ont été nécessaire. Dans cette interface, le client entre les infos suivantes : | ||
+ | * Le choix de gamme | ||
+ | * Son Nom de commande | ||
+ | |||
+ | Et nous affichons l'état de production de sa gamme. | ||
+ | |||
+ | Le CSS est un langage permettant de gérer l'aspect graphique de fichier HTML et XML. Le langage HTML est un langage de balisage conçu pour présenter les pages Web. De plus, le langage JavaScript est un langage de programmation de scripts principalement employé dans les pages web interactives. | ||
+ | |||
+ | Dans le cas de l'interface graphique j'ai mis les éléments suivants dans le formulaire de la page d'accueil : | ||
+ | |||
+ | * Un champ « input » permettant de choisir le nom du client | ||
+ | * Un second champ « input » permettant cette fois-ci de choisir sa gamme | ||
+ | * Un champ permettant d'afficher l'état de la commande en cours | ||
+ | * Et enfin un bouton « valider », pour valider les différentes informations entrées par l'utilisateur. | ||
+ | |||
+ | Ainsi, les différentes requêtes HTTP de type GET et de type POST sont écrites dans ce fichier. L'état de la commande change sur cette même page. Pour réaliser ce service web, j'ai utilisé une des fonctionnalité sur LabView permettant de faire cela. | ||
+ | |||
+ | L’interface web a été mise en place par l’intermédiaire de différents langages de programmation dont le CSS. J'ai utilisé le code HTML pour la mise en page simple de l’application. Et j'ai utilisé le CSS pour un apport visuelle et esthétique de la page web. | ||
+ | |||
+ | [[Fichier:Aspect_Interface_Client_P7.png|500px|thumb|center|Figure X : Aspect de l'interface client]] | ||
=Documents Rendus= | =Documents Rendus= |
Version actuelle datée du 26 octobre 2018 à 00:45
Sommaire
- 1 Cahier des charges
- 2 Préparation du projet
- 3 Réalisation du Projet
- 3.1 Feuille d'heures
- 3.2 Journal de bord
- 3.2.1 20/09/2018
- 3.2.2 21/09/2018
- 3.2.3 22/09/2018
- 3.2.4 24/09/2018
- 3.2.5 25/09/2018
- 3.2.6 26/09/2018
- 3.2.7 27/09/2018
- 3.2.8 28/09/2018
- 3.2.9 29/09/2018
- 3.2.10 01/10/2018
- 3.2.11 02/10/2018
- 3.2.12 03/10/2018
- 3.2.13 04/10/2018
- 3.2.14 05/10/2018
- 3.2.15 06/10/2018
- 3.2.16 08/10/2018
- 3.2.17 09/10/2018
- 3.2.18 10/10/2018
- 3.2.19 11/10/2018
- 3.2.20 12/10/2018
- 3.2.21 13/10/2018
- 3.2.22 15/10/2018
- 3.2.23 16/10/2018
- 3.2.24 17/10/2018
- 3.2.25 18/10/2018
- 3.2.26 19/10/2018
- 3.2.27 20/10/2018
- 3.2.28 22/10/2018
- 3.3 Prologue
- 3.4 Description des concepts clés de l'industrie 4.0
- 3.5 Description du processus avec les fonctions principales
- 3.6 Analyse et architecture fonctionnelle
- 3.7 Communication Modbus : Partie préliminaire
- 3.8 Communication Modbus : Communiquer avec d'autres API
- 3.9 Communication Modbus : Envoie de requête pour contrôler l'API
- 3.10 Programmation de l'API : Le traitement de surface
- 3.11 Supervision : Gestion de commande des clients
- 3.12 Interface Client
- 4 Documents Rendus
Cahier des charges
Description
Le sujet étant la réalisation d'un système de supervision pour un équipement de production en version industrie 4.0. Il s'agit d'appliquer les principes prônés par l'industrie 4.0 sur l'interconnexion et la flexibilité des systèmes de production pour la réalisation d'un système de supervision d'un système de production.
Ainsi, appliqué à un des systèmes réels de Polytech (le système de traitement de surface de l'AIP), il s'agit de réaliser la chaîne complète permettant à un opérateur/client distance de faire une commande (= demander la production d'un produit) et d'être informé sur l'avancement de sa production (= en préparation, en production ou production achevée)
Concernant les gammes de production du traitement de surface, elle seront de la sorte :
- Gamme 1 : Pour cette première gamme, elle devra s'arrêter aux postes numéro 2 et 7. On dira que c'est la gamme de traitement rapide. Dans cette gamme il y aura une durée de 5s au poste 2 et 8s au poste 7.
- Gamme 2 : Concernant la deuxième gamme ce sera une gamme standard, on s'arrêtera alors aux postes 3, 5 et 7. La durée de plongée dans les bains pour cette gamme sera de 10s pour chaque poste desservie.
- Gamme 3 : Pour cette dernière gamme, elle sera plus longue. Celle-ci sera la plus complète car elle s'arrêtera à tous les postes de traitement. Cette fois-ci ce sera 12s pour les postes 2,4,6 et 13s pour les postes 3,5 et 7.
De plus, c'est le chariot A qui devra emmener le panier à tous les postes de traitement et une fois arrivé au poste 7 c'est alors au tour du chariot B d'aller chercher le panier pour l'emmener au dernier poste.
Objectifs
Réalisation d'un système de supervision pour un équipement de production (traitement de surface de l'AIP) selon les concepts industrie 4.0
Cibles : Ce projet serait utile pour les usines de production en général, les clients et les fournisseurs pourraient prendre place dans le processus de production.
Préparation du projet
Choix techniques : matériel et logiciel
Il y a différents systèmes disponibles à Polytech :
- Traitement de surface
- Pick and place
- Remplissage de bouteilles
- Cuves contenant liquide
- Bras robotisés effectuant une tâche précise
Mon choix se porterait sur le traitement de surface, pour pouvoir travailler sur un système réel.
Liste des tâches à effectuer
Voici les tâches qu'il faut réaliser pour la réalisation de ce projet :
- Programmation de l'API
- Effectuer la supervision du traitement de surface
- Réaliser une interface client
- Communication Modbus vers API
- Communication client
- Interface client
Calendrier prévisionnel
Il va falloir que je me fixe des objectifs par semaine pour pouvoir respecter le délai final. Ces objectifs doivent être validées pour chaque lundi 11h45.
S1 :
- Avoir un cahier des charges détaillé
- Prise en main du système
- Tester la communication avec l'API
S2 :
- Débuter la programmation de l'API
- Prise en main et effectuer quelques tutoriels pour la supervision
- Terminer la partie présentation dans le rapport
S3 :
- Commencer la Supervision
- Finir la Supervision
- Continuer le rapport
S4 :
- Récupération des données du PC Client
- Tests
- Finaliser le rapport
- Faire la présentation
Réalisation du Projet
Feuille d'heures
Tâche | Prélude | Heures S1 | Heures S2 | Heures S3 | Heures S4 | Heures S5 | Heures S6 | Heures S7 | Heures S8 | Heures S9 | Heures S10 | Total |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Analyse du projet | 0 |
Journal de bord
20/09/2018
Première rencontre avec M. Conrard:
- Explications plus approfondies sur l'objectif du projet
- Mise en place d'un prochain rendez-vous pour une explication des différents points compris et incompris
21/09/2018
- Recherches sur l'industrie 4.0 et ses concepts clés
- Je suis allé dans les différentes salles de Polytech ayant des automates pour les énumérer
22/09/2018
- Première description du travail à réaliser
- Premières recherches sur les différents outils nécessaires à la réalisation du projet
24/09/2018
- Rencontre avec M.Conrard où des objectifs pour le lendemain ont été fixé
- Première version du cahier des charges
25/09/2018
- Comprendre et décrire le processus avec ses fonctions principales
- Première description de l'architecture
- Effectuer une définition du système choisi (le traitement de surface)
26/09/2018
Lors de cette réunion nous nous sommes attardés sur les points suivants, et mes objectifs étaient donc les suivants :
- Avoir un badge d'accès pour la salle
- Réaliser un format de document quotidien
- Fiche sur la réalisation/faisabilité de la supervision (Quelques contraintes évoquées telles que la communication entre l'API et le Client)
27/09/2018
Pendant cette réunion nous nous sommes attardés sur les différentes méthode de travail et il a fallu réaliser les tâches suivantes pour le lendemain :
- Analyse fonctionnelle
- Description détaillée de l'architecture fonctionnelle
- Daily meeting
- Premier planning avec objectifs à réaliser
28/09/2018
Après cette réunion avec M. Conrard, les objectifs étaient :
- Vérifier si la chaine de production était fonctionnelle
- Vérifier si la communication avec l'API était possible
29/09/2018
Je suis venu travailler ce samedi j'ai pu voir quelques problèmes :
- Pression d'air qui ne fonctionnait ==> Tuyau craqué
- Conséquence ==> Impossible de travailler sur l'automate ce jour
- Étude de documentation technique
01/10/2018
Rendez-vous avec M. Conrard les points suivants on été évoqué :
- Problèmes liés au tuyau pour la pression d'air
- Version 2 du cahier des charges présentée
- J'ai énoncé le travail réalisé sur l'automate avant de voir le lendemain le problème pour la pression d'air
02/10/2018
Lors de cette rencontre, étant donné le problème du tuyau il a fallu trouver des alternatives :
- Bien spécifier les différentes gammes
- Services de l'automates à mieux décrire
- Trouver des tâches en parallèle à pouvoir réaliser
03/10/2018
Lors de cette réunion, des alternatives ont été trouvé :
- Étudier la communication Modbus
- Travailler sur un coupleur Ethernet Wago
04/10/2018
Cette fois-ci, après m'être concerté avec M. Conrard les décisions suivantes ont été prise:
- Utiliser un autre automate en attendant la réparation de la pression d'air
- Recherche et tests pour communiquer avec l'API
05/10/2018
Lors de cette rencontre, j'ai dû annoncer un nouveau problème qui était cette fois logicielle :
- Trouver comment régler ce problème
- Une fois trouvé celui-ci a persisté
- Recherches et lecture de datasheet sur le coupleur Ethernet
06/10/2018
Cette fois, le tuyau pour la pression d'air a été remplacé.
- Réalisation d'une application pour gérer un voyant
- Recherche sur la communication Modbus
08/10/2018
Après une réunion avec M. Conrard, le travail suivant a été réalisé
- Établir les différentes méthodes pour pouvoir communiquer
- Recherches et résolution des différents problèmes logiciels
09/10/2018
Lors de cette réunion il s'est dégagé quelques points importants
- Réalisation de la communication Modbus ==> Envoi de requêtes pour contrôler l'automate
- Choix de l'outil pour la réalisation d'un serveur web
10/10/2018
Pendant cette réunion, les points suivants ont été soulevé pour bien gérer le temps restant
- Recherche plus approfondies pour la réalisation du service web
- Rédaction du rapport
11/10/2018
Lors de cette journée et après la réunion avec M. Conrard, le travail suivant a été réalisé
- Restructuration de la programmation de la gamme 1
- Prise en main du modèle récent de LabView
12/10/2018
Lors de cette journée et après la réunion avec M. Conrard, il s'est dégagé quelques points à résoudre et j'ai réalisé cela
- Lecture de documentation technique
- Structure de la page HTML
13/10/2018
- Travail sur le banc composé de coupleurs Ethernet
- Programmation LabView pour le service web
15/10/2018
Lors de cette journée,
- Réussite de l'envoi de trames sur le coupleur wago 750
- Gestion de l'erreur de lecture de trames
16/10/2018
Lors de cette journée, le travail suivant a été réalisé :
- Envoi de trame depuis le service Web
- Restructuration du Grafcet
17/10/2018
Lors de cette journée je n'ai pas pu effectuer des tests sur le système de traitement de surface car il y avait des travaux à l'étage sur les arrivées d'air j'ai donc fait les tâches suivantes :
- Modification du LabView pour recevoir l'information de fin de production
- Rédaction du rapport
18/10/2018
Lors de cette journée, j'ai réalisé les tâches suivantes :
- Résolution du problème qui persistait dans mon Grafcet
- Planning des derniers jours à poster
- Travail sur la validation de l'opérateur après l'envoi de la requête du client
19/10/2018
Voici les tâches que j'ai réalisé cette journée,
- Travail sur la partie interface pour communiquer les informations client à l'opérateur
- Rédaction du rapport de projet
20/10/2018
Lors de cette journée, j'ai effectué les tâches suivantes :
- Travail sur la mise en place de tableau de commande pour la partie opérative
- Rédaction du rapport
22/10/2018
Lors de cette journée, j'ai réalisé les tâches suivantes :
- Finalisation du fichier LabView
- Rétablissement de la fonction d'état de la commande
Prologue
Qu'est-ce que le daily meeting ?
Nous avions décidé au début de mon projet de faire des réunions quotidiennes pour évoquer l'avancée de mon projet. L'objectif du daily meeting est de s'assurer que l'on va atteindre notre objectif. Il faut se poser 3 questions au quotidien :
- Qu'est-ce que j'ai terminé hier ?
- A quoi je m'engage et pour quand ?
- Qu'est-ce que j'ai comme problèmes ?
Description des concepts clés de l'industrie 4.0
L'industrie 4.0 qui est considéré comme la 4ème révolution industrielle se caractérise par l'intégration des technologies numériques dans les processus de fabrication. L'industrie 4.0 a pour objectifs d'optimiser les consommations par l'efficacité énergétique et à rendre plus les usines plus compétitives. Les concepts clés de l'industrie 4.0 sont les suivants :
- Numérisation de l'usine : En numérisant l'usine on cherche à avoir une communication continue et instantanée entre les différents outils et postes de travail intégrés dans les chaînes de production. En utilisant des capteurs communicants cela apporte à l'outil de production la capacité d'autodiagnostic
et permet un contrôle à distance.
- Flexibilité de l'usine et personnalisation de la production : Il y a une grande flexibilité qui peut être due aux systèmes de productions possédant des objets intelligents, pouvant communiquer et étant lié à un réseau étant lui-même relié à un réseau extérieur. Ainsi, le client/operateur peut
prendre une place dans le processus. Il sera donc possible de personnaliser des produits à grande échelle.
- Gestion de l'énergie et des matières premières : Grâce à l'industrie 4.0 et la communication des objets, il sera plus simple d'économiser de l'énergie et de mieux gérer les matières premières.
- Outils logistiques et outils de simulations : Il sera plus simple de communiquer avec les entreprises de logistiques étant extérieurs aux usines de productions. De plus, nous pouvant avoir des réplique virtuelle permettant de corriger plus facilement les problèmes de production.
Description du processus avec les fonctions principales
En ce qui concerne le traitement de surface, celui-ci permet la simulation d'un traitement de surface dans des bains différents. Je rappelle que l'objectif est de faire un démonstrateur Proof Of Concept (POC) d'un système de production type industrie 4.0. Les fonctions de ce système seraient les suivantes :
- Client/Opérateur passe une commande ( Choix du mode de production : possibilité de choisir entre plusieurs processus de traitement prédéfinis, possibilité de modifier les processus de production )
- Après le choix du type de panier, l'opérateur le place
- Lancement du processus choisi
- Suivi de l'état du processus (Sur le logiciel de supervision et sur l'interface client)
- Récupération du panier
Analyse et architecture fonctionnelle
Analyse fonctionnelle
Qu'est-ce qu'une analyse fonctionnelle : L'analyse fonctionnelle décrit le fonctionnement des équipements en listant l'ensemble des défauts, des modes de fonctionnement et des régulations nécessaires aux réalisations des fonctions souhaitées. Elle se présente sous la forme d'un texte clair permettant à un non automaticien de comprendre le fonctionnement de l'installation. Il faut dire quels sont les services attendus pour chaque éléments du système.
Traitement de surface :
- Réaliser les 3 ou 4 gammes de production
- Exécuter l'ordre reçu par le programme
- Acquisition des états du système (différents capteurs)
- Distribution de l'énergie (préactionneurs) ==> Opérationnel
- Convertir l'énergie en action (actionneur) ==> Opérationnel
API :
- Réaliser une production dite rapide
- Réaliser une production dite standard
- Réaliser une production dite lente/complète
- Gestion des déplacements des chariots A et B (Monter, descendre, aller à droite et à gauche)
Poste de supervision :
- Afficher l'avancée de la production
- Communiquer avec le Client (IHM)
- Piloter la production
- Surveiller l'activité (capteurs de fin de course)
- Gestion des commandes de pièces (Mémorise et transmet 1 à 1 à l'API)
PC Client :
- Permettre au client de choisir la gamme de production
- Être informé de l'avancée de la production
Architecture fonctionnelle
L'architecture est telle que le schéma suivant :
Communication Modbus : Partie préliminaire
Modbus est un protocole de communication non-propriétaire, créé en 1979 par Modicon, utilisé pour des réseaux d'automates programmables, relevant du niveau applicatif, c'est-à-dire du niveau 7 du Modèle OSI.
Il y a différents types de fonctionnement, le mode maître-esclave et le mode client-serveur. Dans le premier cas seul le maître est actif, les esclaves sont complètement passifs. C'est le maître qui doit lire et écrire dans chaque esclave. La constitution de ses trames contiennent le numéro de l'esclave concerné, la fonction à traiter (écriture, lecture), la donnée et le code de vérification d'erreur appelé contrôle de redondance cyclique sur 16 bits ou CRC16 dans le cas de la liaison série.
Alors que en mode TCP : (Ethernet) Cela fonctionne sur le mode client-serveur. Seul le client est actif, les serveurs sont complètement passifs. C'est le client qui doit lire et écrire dans chaque serveur. Sa trame contient la fonction à traiter (écriture, lecture) et la donnée. Son adresse du serveur concerné est son adresse IP.
Pendant ces premiers tests avec un coupleur Wago 750 l'envoi de requêtes a permis une meilleure compréhension de ce mode de communication. Un envoi de requête pour favoriser le contrôle de différentes sorties.
Communication Modbus : Communiquer avec d'autres API
Dans un premier temps, j'ai réalisé une communication avec 2 automates. Il a fallu que j'utilise les mots mémoires pour enregistrer des valeurs dans la mémoire de l'automate esclave. Après avoir paramétré tout cela, l'utilisation du système de transmission de requêtes m'a permis d'utiliser SEND_REQ(@destination, code requête, table de transmission, table de réception, gestion).
@destination : adresse du coupleur Ethernet
code requête : Entrer le code pour la lecture ou l'écriture
table de transmission : Réserver 3 mots pour l'adresse du destinataire
table réception : L'endroit où l'on réceptionne les données
gestion : Permet de voir le compte rendu de l'opération et le compte rendu de la communication
Mon premier automate était alors le client, et j'envoyais alors une requête au second automate qui était lui serveur. J'ai donc envoyé une requête d'écriture pour écrire les chiffres 8, 9 et 10. Les codes de requêtes de lecture et d'écriture sont les suivantes : 16x0036 et 16x0037. Concernant la gestion, dans le compte rendu s'il est enregistré le code 00 alors la communication a été réussi. Nous pouvons aussi aller vérifier dans les variables du second automate pour voir si nous les avons bien écrit.
Communication Modbus : Envoie de requête pour contrôler l'API
J'ai utilisé le fichier labview pour pouvoir envoyer une requête à l'automate j'ai pris en compte ce type de trame :
Transaction ID | Protocole | longueur | Unit | Adresse Esclave | Code fonction | Données N octets |
---|---|---|---|---|---|---|
2 octets (ID choisi par l'utilisateur) | ID 2 octets (0x0000) | 2 octets (0x0006 | 1 octet 1 octet (Je n'en ai pas mis, mais j'ai aussi testé avec) | 1 octet (0x03) | 1 octet(0x05) | (02 05 FF 00) |
J'ai utilisé cette documentation et c'est à la page 48 où j'ai trouvé des informations pour les requêtes :
http://www2.schneiderelectric.com/resources/sites/SCHNEIDER_ELECTRIC/content/live/FAQS/1 7000/FA17465/fr_FR/TSX%20ETZ%20410%20et%20510%20-%20Manuel%20utilisateur.pdf
Ensuite, à cette page ils me conseillaient de lire la documentation suivante, et j'ai trouvé le plus d'information à la page 23 pour mon cas.
http://eshop.schneider-electric.com/Download.aspx?infos=H474055_1.pdf;3
Par la suite, j'ai décidé d'affecter un mot à une sortie de l'automate pour pouvoir la contrôler via la communication Modbus. Ainsi, dans ma trame, j'ai compris pourquoi j'avais une erreur qui était dans la réponse à ma requête. (Code x85) Cette erreur était due au fait que l'adresse Esclave et l'Unit correspondait à la même chose. Ensuite, l'adresse esclave était 0x03 car le traitement de surface est la station numéro 3 de ce réseau. Ensuite, j'ai utilisé le code fonction qui correspondait à l'écriture d'un bit. J'ai donc ensuite décidé de choisir le mot que j'allais changer. Ensuite, j'ai utilisé le fichier labview pour pouvoir envoyer une requête à l'automate j'ai pris en compte ce type de trame :
Transaction ID | Protocole | longueur | Adresse Esclave | Code fonction | Données N octets |
---|---|---|---|---|---|
2 octets (ID choisi par l'utilisateur) | ID 2 octets (0x0000) | 2 octets (0x0006) | 1 octet (0x03) | 1 octet(0x05) | (00 01 FF 00) |
Ensuite, concernant le départ cycle que je veux allumer, qui est la sortie %Q2.5 j'ai mis 0X0001. Et j'ai affecté cet mot à la sortie %Q2.5 pour pouvoir le modifier en envoyant la requête.
Programmation de l'API : Le traitement de surface
Pour programmer les différentes gammes de production il faut prendre en compte la communication ModBus. Il sera donc plus simple d'expérimenter différentes manières pour faciliter la communication. Le logiciel que j'utilise pour programmer mes gammes est le logiciel PL7 PRO, ce logiciel me permet de décomposer mon programme. Il y a une partie où la construction du grafcet est réalisée, dans cette même partie je mets les conditions de mon grafcet. Dans une autre partie, je mets les différentes actions et les différentes temporisations permettant le traitement à chaque poste pour chaque gamme.
Supervision : Gestion de commande des clients
Concernant la gestion des commandes des clients, la décision a été d'avoir les fonctionnalités suivantes :
- L'opérateur peut lancer les commandes envoyées par le client
- L'opérateur actualise les différentes commandes et choisit les commandes à lancer
- Lecture de l'état de la production (En attente de confirmation, En production, Terminé)
Pour cela il a fallu établir une ouverture de connexion TCP/IP, ensuite une fois que l'utilisateur choisit sa gamme la requête d'écriture ModBus est envoyée. De plus une seconde requête de lecture est envoyée pour connaître l'état de la production. Ensuite, la création d'un tableau permettant d'enregistrer les différentes commandes des clients. Pour cela, l'opérateur actualise le tableau de commande. Une fois que la gamme est choisi, nous avons celle-ci qui est enregistrée lorsque l'opérateur actualise puis choisit la commande à lancer en premier.
Pour connaître les différents états de production (en attente de confirmation, en production et terminé) la première décision a été de mettre directement les commandes en état d'attente de confirmation, ensuite une fois que l'opérateur à actualisé et a sélectionné la commande à lancer son état passe en production. Dans ce programme une requête de lecture est envoyée constamment ce qui permet de passer en mode « Terminé », pour cela je compare le 9ème bit de ma réponse de requête de lecture et s'il est à zéro cela signifie que la commande est terminée.
Interface Client
Pour gérer l'interface graphique, l'utilisation du JavaScript, du HTML et du CSS ont été nécessaire. Dans cette interface, le client entre les infos suivantes :
- Le choix de gamme
- Son Nom de commande
Et nous affichons l'état de production de sa gamme.
Le CSS est un langage permettant de gérer l'aspect graphique de fichier HTML et XML. Le langage HTML est un langage de balisage conçu pour présenter les pages Web. De plus, le langage JavaScript est un langage de programmation de scripts principalement employé dans les pages web interactives.
Dans le cas de l'interface graphique j'ai mis les éléments suivants dans le formulaire de la page d'accueil :
- Un champ « input » permettant de choisir le nom du client
- Un second champ « input » permettant cette fois-ci de choisir sa gamme
- Un champ permettant d'afficher l'état de la commande en cours
- Et enfin un bouton « valider », pour valider les différentes informations entrées par l'utilisateur.
Ainsi, les différentes requêtes HTTP de type GET et de type POST sont écrites dans ce fichier. L'état de la commande change sur cette même page. Pour réaliser ce service web, j'ai utilisé une des fonctionnalité sur LabView permettant de faire cela.
L’interface web a été mise en place par l’intermédiaire de différents langages de programmation dont le CSS. J'ai utilisé le code HTML pour la mise en page simple de l’application. Et j'ai utilisé le CSS pour un apport visuelle et esthétique de la page web.