IMA4 2017/2018 P64
Présentation générale
Description
La conception de systèmes de contrôle/commande (robot, automate, machine outil...) s'appuie généralement sur une mise au point des développements à l'aide de simulations.
Dans ce cadre, le projet proposé consiste à développer la simulation d'un ascenseur en vue de sa commande par un automate réel. Le choix du langage est à déterminer au cours du projet. Cette simulation doit intégrer la prise en compte des appels paliers et cabine et la simulation des mouvements de l'ascenseur.
Objectifs
La finalité de ce projet sera de réaliser la commande d'un ascenseur, simuler sur un pc, à l'aide d'un API connecté grâce à un réseau Modbus. On pourra observé les différents états de l'ascenseur.
Préparation du projet
Cahier des charges
Choix techniques : matériel et logiciel
Pour réaliser ce projet, j'ai besoin de 2 ordinateurs , d'un module réseau Modbus avec connexion ethernet et série. ( présent dans la salle C001 )
Sur les pc , le logiciel Labview de version récente est nécessaire.
Un automate de commande sera par la suite nécessaire. ( présent dans la salle C006 )
Liste des tâches à effectuer
Calendrier prévisionnel
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 | 1 | |||||||||||
Réalisation du cahier des charges | 4 | 2 | ||||||||||
Gestion modbus | 3 | 5 | ||||||||||
Apprentissage du logiciel Labview | 3 | |||||||||||
Réalisation de la partie Simulateur d'ascenseur | 5 | |||||||||||
Réalisation du réseau Modbus sur Labview | 2 | 3 | 11 | |||||||||
Programmation de l'automate | 6 |
Prologue
Semaine 1
La première parti de ce projet sera de comprendre le fonctionnement du protocole Modbus. J'ai donc commencé par la réalisation du tp de RLI effecuté en Ima 4. Ce tp étant nouveau, je n'ai pas eu l'occasion de le réaliser l'année dernière. J'ai pour l'instant pu lire la documentation technique fournie et faire la première partie du tp concernant la communication entre 2 pc avec la configuration série - modbus et ethernet - modbus.
Semaine 2
Une fois la communication entre les 2 ordinateurs effectuée grâce au réseau Modbus, la tâche suivante est donc de comprendre comment fonctionne réellement cette communication.
Tout d'abord la partie ethernet Modbus.
Je commence donc avec la modification d'une sortie digital. On doit suivre la trame suivante pour envoyer un ordre.
Byte | Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9 | Byte 10 | Byte 11 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Signification | Transaction identifier 1/2 | Transaction identifier 2/2 | Protocol Identifier 1/2 | Protocol Identifier 2/2 | Longueur de trame 1/2 | Longueur de trame 2/2 ( ici 6 ) | Identifiant | Fonction Modbus ( ici 5 ) | Adresse de sortie 1/2 | Adresse de sortie 2/2 | ON / OFF |
On va maintenant voir la lecture depuis le port Ethernet.
Byte | Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9 | Byte 10 | Byte 11 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Signification | Transaction identifier 1/2 | Transaction identifier 2/2 | Protocol Identifier 1/2 | Protocol Identifier 2/2 | Longueur de trame 1/2 | Longueur de trame 2/2 ( ici 6 ) | Identifiant | Fonction Modbus ( ici 1 ) | Adresse de début 1/2 | Adresse de début2/2 | Nombre d'octet à lire 1/2 | Nombre d'octet à lire 2/2 |
Ensuite la partie Série - Modbus. Cette partie ci fonctionne à peu de chose prêt à la précédente, mais il y a ici présence d'un CRC ( contrôle de redondance cyclique ) à chaque trame transmise. Un programme pré-existant permet de calculer le CRC lorsqu'on lui fournit tout le début de la trame. J'ai donc pu tester les messages envoyés avec le CRC calculé précédemment et vérifier la fonctionnalité de mes commandes.
Si l'on veut envoyer un ordre , on doit suivre ce modèle de trame :
Byte | Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 |
---|---|---|---|---|---|---|---|---|
Signinication | Adresse esclave | Code de fonction | Adresse de sortie 1/2 | Adresse de sortie 2/2 | Donnée d'envoie 1/2 | Donnée d'envoie 2/2 | CRC Low | CRC High |
Semaine 3
J'ai donc maintenant pu passer au contrôle d'une système ( ici gestion de remplissage de bouteille depuis une cuve ) à l'aide de la connexion Modbus sur une version de Labview antérieur. La simulation du remplissage et les liaisons Modbus étant déjà réaliser, j'ai pu comprendre comment était gérer la connexion entre les deux pc avec lecture et écriture sur les variables du simulateur.
J'ai donc réaliser l'automatisation de celui ci pour comprendre la logique Labview. L'étape suivante étant d'installer la nouvelle version Labview sur laquelle je dois travailler et réaliser la partie simulation d'ascenseur pour ensuite passer à la réalisation de la partie réseau.
Semaine 4
L'installation du logiciel LabView 2013 étant réalisé, il est maintenant question de prendre en main le logiciel pour permettre de réaliser la simulation de l'ascenseur. N'ayant utiliser ce logiciel que de façon utilisateur et non concepteur, tout reste à apprendre dans ce domaine.
Pour apprendre à utiliser le logiciel, je me suis servis de programme déjà réalisé. Celà m'a permet de comprendre le fonctionnement du logiciel et apprendre différentes structures. Une fois cette première étape réalisé, je me suis donc mis au travail concernant la partie simulateur d'ascenseur.
J'ai donc commencé de manière assez simple, contrôler l'ascenseur tout d'abord sans Modbus, en utilisant des entrées tout ou rien directement dans le programme de simulation. Cette première partie est essentiellement visuelle puisqu'il s'agit de voir à l'écran l'ascenseur monter et descendre et les portes s'ouvrir et se fermer. J'ai aussi ajouter les capteurs de position d'étage et de porte ouverte et fermée. Les capteurs sont en fait des comparaisons avec soit la position d'un objet, soit la valeur de celui ci ( sur une scrollbar par exemple pour les portes ).
Une fois cette partie réalisé, il a donc été question de contrôler de manière très sommaire l'ascenseur en réseau. L'automate que nous allons utiliser par la suite sera connecté par liaison série. Il est donc nécessaire de gérer la partie réseau Modbus série sur Labview.
Il n'est pas encore question de réaliser le programme de contrôle de l'ascenseur, seulement de tester l'envoie d'ordre et la lecture des réponses. Pour cette partie la, je suis actuellement bloqué sur l'utilisation de la librairie Modbus de Labview.
Semaine 5
Je suis actuellement toujours bloqué sur la liaison série. Le programme de communication avec le boitier WAGO est réalisé mais une erreur dû, il me semble, au driver,bloque directement mon programme dès l'initialisation de la liaison sur Labview. Même lors de la réalisation du programme le plus basique l'erreur apparait ( le programme tourne mais il ne peut rien envoyer , celà est observable sur les sorties d'erreurs ). Je cherche actuellement des solutions sur le site de National Instrument pour pouvoir avancer au plus vite.
Après des heures de recherches et avec consultations d'un des tuteurs, j'ai désinstaller la version Labview 2003 présent sur les pc. J'ai alors pu installer le nouveau driver VISA compatible avec la version Labview 2013.
J'ai donc pu tester le programme réaliser précédemment. La lecture et l'écriture sur la liaison série est bien réalisé. Une fois cette partie testé, le programme étant réaliser en tant que maitre sur le réseau et non esclave, il me reste à le modifier. Cependant cette démarche était nécessaire pour pour s'assurer du bon fonctionnement de la lecture et de l'écriture.
Semaine 6
J'ai pu commencer à travailler sur la programmation de l'automate Schneider. J'utilise le logiciel de programmation Unity pro. Un module de réseau Modbus est présent sur l'automate. l'automate est relié à l'ordinateur grâce à une liaison série. Ayant un programme sur Labview prévu pour fonctionner en temps que maître sur le réseau, j'ai commencer par mettre l'automate en tant qu'esclave pour comprendre rapidement comment accéder au variable présente sur l'automate depuis Labview. Avec cette manipulation j'ai pu découvrir comment était gérer les variables et quelles sont les trames Modbus à envoyer pour lire ou écrire sur les variables de l'automate. Il y a donc 256 variables possibles. L'écriture des trames est assez facile à réaliser quand on a bien compris comment elles sont formées.
La suite du travaille est de passer l'automate en mode maître et la partie Labview en tant qu'esclave. J'ai déjà pu regarder sur internet comment gérer la partie automate. Le site internet de Schneider donne pas mal d'explication sur ceci.