Bras Staubli & Tapiris

images[1]images[3]

 

 

Ce projet a été conçu par Chadia ASSOUIMI, Amélie VILLAIN et Loïc ZIMMERLE.

Introduction

Étant donné que nous sommes en deuxième année DUT Génie électrique et informatique industrielle, nous avons du réaliser au sein de notre université, un projet de fin d’études basé sur le choix de nos options.

Ce projet aura pour but de concevoir et développer en autonomie un programme automate pour la gestion du tapis roulant,
un programme robot et également un système permettant de faire du traitement d’image.

Présentation du Sujet

Notre projet sera axé dans un premier temps sur la réhabilitation d’un tapis simulant le tri postal. En effet, la partie commande constitué d’un automate Schneider TSX  et d’un bus AS-I  à été décâblé du tapis. Les différents capteurs  communiquait à l’automate via ce bus. Les éléments électropneumatiques et traitement d’air comprimé sont eux aussi absents du tapis.

De plus, le coffret regroupant la partie puissance à été modifié. Certaines de ces modification ne permettant plus le fonctionnement de l’Altivar (module qui pilote le convoyeur en fonction des consignes qui on été programmé).

Pour notre projet, nous disposons d’un tapis qui  »simulait » un tri postal.

Ce tapis est constitué de :

  • un poste de chargement;
  • un convoyeur industriel motorisé;
  • deux postes d’évacuation latérale avec bacs récupérateurs;

Dans un second temps, nous y implémenterons une partie vision industrielle qui sera en charge de trier les pièces en fonction de leur motif.

Pour finir, nous y intégrerons un bras Stäubli, qui lui, sera en bout de chaine. Il sera en charge de récupéré les pièces dites « mauvaise ».  L’ensemble des composants (robot, tapis) sera piloté par un automate Siemens.

FullSizeRender

Cahier des Charges

But du projet :

Mettre en place un système permettant de trier des pièces à l’aide d’un tapis roulant, d’un robot TX40 Stäubli et une caméra.

Matériels utilisés :

  • Un tapis roulant Tapiris (Schneider),
  • Un coffret électrique pour le tapis regroupant disjoncteurs, bouton d’urgence, bouton de réarmement, variateur de vitesse(Altivar 11),
  • 3 vérins à double effet commandés par un distributeur 5/2 (Festo),
  • 4 capteurs photosensibles (Télémécanique),
  • Un robot Stäubli TX40 à 6 axes,
  • Un automate programmable Siemens du type S7-1500,
  • Une caméra intelligent de type NI1742.

bete a corne IUT

Taches réalisés :

  • Câblage du coffret électrique du tapis,
  • Câblage des éléments constitutifs du tapis (vérins, capteurs..) sur les entrées/sorties automate à l’aide d’un bornier FESTO,
  • Réalisation du programme automate (LADDER) commande le tapis, le robot et la caméra,
  • Réalisation du programme en langage VAL3 du robot TX40 Stäubli,
  • Paramétrage de la caméra intelligente via le logiciel VisionBuider,
  • Vidéo du tapis en fonctionnement.

Développement

Notre système aura pour but de trier trois types de pièces à l’aide d’un tapis roulant, un robot et une caméra intelligente. Les pièces à trier sont définit par des émoticônes.

Le Tapiris permettra de trier deux types de pièces à l’aide de deux vérins (1S1 et 1S2), la troisième type de pièce sera récupéré par le robot Stäubli. Pour effectuer ce trie, une caméra sera implémenter afin d’identifier les différentes pièces en fonction de leur émoticône.

Réhabilitation de la partie électrique

La façade du coffret dispose : d’un bouton « marche » et d’un bouton coup de poing d’arrêt d’urgence.

coffret extérieur

Extérieur du coffret

Le coffret électrique comprend :

  • un disjoncteur général 4 A qui protège deux départs;
  • un contacteur qui pilote l’alimentation du variateur ALTIVAR 11;
  • une alimentation 24 VCC/1 A protégé par le disjoncteur 1A alimentant les équipements 24 VCC.

intérieur du coffret

Trois problèmes sont survenus : l’Altivar n’était pas alimenté ainsi que son contacteur, de plus le coup de poing arrêt d’urgence ne fonctionnait pas. Afin de comprendre les différentes pannes du coffret, son schéma électrique à été crée, il est disponible en annexe. Pour résoudre les différents problèmes nous avons procédé comme suit :

  • Les contacts L1 et L2 du contacteur servent à l’alimenter l’altivar, ces derniers était décâblé de la partie puissance de l’Altivar. Ils ont été recâblé en sortie du disjoncteur 4A (voir annexe).
  • La bobine du contacteur était câblé au mauvaise borne (le + de la bobine était sur un contact du contacteur). La bobine à été recâblé sur la sortie +/- de l’alimentation 24 VCC.
  • Le coup de poing était shunter par un fil. Ce fil à été enlevé.

Réhabilitation de la partie pneumatique

L’ensemble de la partie pneumatique est composé d’un module régleur de pression, il est équipé d’un manomètre (0/10 BAR). Il est associé à un distributeur pneumatique 5/2 permettant de piloter trois vérins double effet. Le premier vérin est l’éjecteur du magasin de pièces, le deuxième et troisième vérins servent aux tries des pièces.

regleur

distributeur

Régleur                                                Distributeur 5/2

Le schéma pneumatique est disponible en annexe.

Interface Tapiris/automate

intere automatetapi

L’interface FESTO permet d’implémenter à longue distance les différentes entrées/sorties de l’automate SIEMENS. En effet, un unique câble regroupant ces entrées/sorties est utilisé.

En entrée :

  • Les capteurs : SPE 1- SPE 2- SPE 3;
  • Les fins de course des vérins : 1S1-2S1-3S1;
  • Le coup de poing arrêt d’urgence.

En sortie :

  • Les bobines du distributeur 5/2;
  • L’enclenchement de l’altivar (I1).

Vision industriel

La vision industriel sera utilisé pour gérer le flux d’objet sur le Tapiris. Une caméra intelligente NI1742 effectuera le contrôle des émoticônes sur certaines pièces. En fonction des informations qui seront envoyer par la caméra, l’automate effectuera l’action appropriée. En effet, cette caméra est dite « intelligente » c’est-à-dire qu’elle effectue le traitement de l’image et que dans un second temps elle envoie le résultat à l’automate soit sous forme binaire soit sous forme d’une trame TCP/IP.

photo camera

Caméra intelligente NI1742

La caméra reconnait trois types d’émoticônes; en fonction du type, la caméra active une sortie binaire. Cette sortie est associé à un unique émoticône. Vous pouvez voir ci-dessous les pièces reconnues par la caméra:

photo 3photo 2photo 1

La caméra dispose de deux sorties binaire pour l’utilisateur (Isout(0) borne 6/Isout(1) borne 11). A l’activation des sorties Iso, un signal +24VCC est transmis à l’automate. La caméra est alimenté en +24 VCC en borne 5.

Le schéma ci-dessus représente les différentes entrées/sorties:

entrées_sorties

entrées_sorties

La caméra est programmé via le logiciel Vision builder. Les deux premières étapes du programme sont destinés à « étalonner la caméra. Ensuite, les Geometric Matching 1 et 2 traitent l’image, donc les pièces à trier. Pour finir le bloc Read/Write permet d’activer ou de désactiver les sorties binaires en fonction du résultat issu du traitement de l’image. Le bloc Delay 1 « retarde  » le programme. En effet, les cycles de scrutation de l’automate sont moins rapide que le temps d’activation des sorties de la caméra, ainsi ce bloc permet à l’automate de scruter les différentes sorties de la caméra.

programmation caméra

L’automate SIEMENS  S7-1500

L’automate Siemens pilotera l’ensemble du tapis: réception d’information issu de capteurs, mise en mouvement du convoyeur, actions des vérins…

Schéma de principe des entrées S7-1500:

schéma principe entrées

L’alimentation interne des entrées automate se font aux bornes 20/40 (Masse) et aux bornes 19/39 (24VCC). Les canaux ch0/ch31 sont réservés pour l’utilisateur.

  • Entrées des capteurs : – SPE 1 : borne 1    ; SPE2 : borne  2; SPE 3 : borne 3.
  • Le coupe de poing à la borne : 4.
  • Caméra intelligente borne : 10 et borne : 11.

Caractéristique technique :

  • Tension d’alimentation 24 VCC;
  • Nombres d’entrées TOR : 32;
  • Logique positive.

entrée automate

Schéma de principe des sorties S7-1500:

schéma sortie automate

L’alimentation interne des sorties automate se font aux bornes 10/20 (Masse) et aux bornes 8/18 (24VCC). Les canaux ch0/ch15 sont réservés pour l’utilisateur.

  • Bobines du distributeur 5/2 : – 1S1: borne 1; 2S1 : borne 2; 3S1 : borne 3.
  • Altivar 11 borne : 4.
  • Bras Stäubli borne : 11.

Caractéristique technique :

  • Tension d’alimentation 24 VCC;
  • Nombres de sorties TOR : 16;
  • Logique positive.

image sorties automate

Les entrées/sorties de l’automate sont câblées en lien avec l’interface FESTO.

automate SIEMENSautomate interieur

Figure 1 : L’automate S7-1500                                                                                  Figure 2 : Entrées(rouge) et sortie(bleue)

Programmation de l’API

La programmation de l’automate SIEMENS  S7-1500 utilisé dans le projet se réalise sur la plate-forme  TIA Portal (Totally Integrated Automation Portal) qui est la dernière évolution des logiciels de programmation Siemens. Cette plate- forme  regroupe dans un seul logiciel la programmation des différents dispositifs d’une installation. On peut donc avec ce logiciel, programmer et configurer, en plus de l’automate, les dispositifs IHM (interface homme machine), les variateurs, etc…

Ce logiciel optimise l’ensemble des procédures au niveau planification, machine et processus. Il dispose d’une interface intuitive pour l’utilisateur. En effet, ses fonctions sont simples (glisser & déposer, copier & coller) et sa transparence totale des données le rendent extrêmement convivial.

 

Langages CONT et LOG

La programmation est structurée dans des blocs qui sont les blocs d’organisation, les fonctions, les blocs fonctionnels, les   blocs de données. L’écriture des programmes est possible sous plusieurs langages qui sont : le langage à contact (CONT), le  logigramme (LOG), le langage en liste d’instructions (LIST), le grafcet (graph S7), le langage structuré (SCL), etc.

Dans le cadre de ce projet, nous avons programmé l’automate en langage CONT et LOG car ce sont ceux que nous avons appris à utiliser au cours de ces deux ans de formation. C’est donc par conséquent la plus simple et évidente des solutions pour nous, même s’il était aussi possible de programmer l’automate dans les autres langages.

Les langages CONT et LOG sont des langages de programmation graphiques qui offrent donc une très bonne visibilité et une navigation rapide.

  • Langage de programmation CONT (shéma à contacts)

Dans le langage de programmation graphique CONT, la représentation est fondée sur des schémas à relais. Les éléments d’un tel schéma, comme par exemple les contacts à ouverture ou les contacts à fermeture sont reliés pour former des réseaux. Un ou plusieurs de ces réseaux forment la section d’instructions complète d’un bloc de code.

Exemple : 

 Capture1

  • Langage de programmation LOG (logigramme)

Le langage de programmation LOG utilise des pavés logiques connus dans l’algèbre booléenne pour la représentation logique.

Exemple d’une temporisation de 2 secondes :

 Capture

Programmation des blocs de données

L’automate met à disposition différents types de blocs qui contiennent le programme avec les instructions à exécuter et les données correspondantes. Il est possible de structurer le programme en différents blocs : OB, FB et FC.

La programmation effectuée pour ce projet suit la structure ci-dessous :

Capture2

  • Blocs d’organisation

Ils constituent l’interface entre le système d’exploitation et le programme utilisateur. Pour que le traitement du programme démarre, le projet doit posséder au moins un OB cyclique.

Notre projet possède alors deux  blocs d’organisation :

L’OB de démarrage (OB 100)

Il n’est traité qu’une seule fois, lorsque le mode de fonctionnement passe de STOP à RUN. Après le traitement de l’OB de démarrage, c’est le traitement de l’OB cyclique qui démarre.

Capture4

Dans notre projet, le bloc nommé Startup [OB100] set l’étape 0 du bloc FC1.

L’OB cycliques (OB 1)

Il traite cycliquement le programme. C’est un bloc de code de niveau supérieur dans le programme dans lequel on peut appeler d’autres blocs.

Capture5

On voit bien ici que le bloc nommé Main [OB 1] de notre programme appelle les blocs de données FC1, FC2 et FB.

  • Fonctions (FC)

Ce sont des blocs de code sans mémoire. Les données des variables temporaires sont perdues après l’exécution de la fonction.

Dans le projet, notre programme possède deux blocs FC1 et FC2.

Dans le bloc FC1, nous définissons les  transitions entre chaque étape et ainsi donc les conditions nécessaires pour activer l’étape suivante (capteur, tempo, etc…).

Dans le bloc FC2, on associe les actions à l’étape correspondante.

Capture6

  • Blocs fonctionnels (FB)

Ce sont des blocs de code qui mémorisent durablement leurs paramètres d’entrée, de sortie et d’entrée/sortie dans des blocs de données d’instance afin qu’il soit possible d’y accéder même après le traitement de blocs.

Capture7

Dans le projet, nous avons utilisé un bloc FB tel que ci-dessus pour programmer un grafcet de tâche permettant l’éjection de pièce toutes les 8 secondes pour avoir plus d’une pièce sur le tapis roulant. Le reste du programme permet aux différents éléments (robot, caméra, tapis) de gérer correctement deux pièces qui se suivent.

Voici le grafcet de tâche correspondant au code ci-dessus :

Capture8

Grafcet principal :

Capture9

Ce grafcet définit chaque étape du programme. Certaine sont reliées à une actions qui active en générale la sortie d’un vérin, la marche du tapis ou l’exécution du grafcet de tâche (étape 3).

Entre les étapes sont définies les conditions pour passer d’une étape à une autre. Ce sont en générale la détection ou non-détection d’un capteur, ou bien une temporisation de syntaxe as/Xb (a étant le temps en secondes et b le numéro de l’étape qui précède la tempo).

Ici, « pièce_bleue » et « pièce_rouge » désignent les pièces avec deux émoticônes différents. Ces deux sortes d’émoticônes sont reconnues par la caméra du système qui envoie l’information au programme. Ainsi, c’est le vérin correspondant qui s’active.

Dans le cas où la pièce ne fait partie d’aucune des deux sortes d’émoticônes, aucun des vérins ne doit sortir. La pièce va alors jusqu’au bout du tapis où le robot Stäubli récupère la pièce.

Robot Staubli TX40

Le robot Staubli TX40 aura pour fonction de récupérer la pièce dite « mauvaise », non trié par le Tapiris et les placer dans un bac de rangement. Il se met en marche uniquement quand l’automate du Tapiris lui ordonne. Pour cela, l’automate aura pour but de lui envoyer un signal quand la pièce lui est attribué.

Description du robot

Le robot TX40 est un bras articulé avec 6 degrés de rotation de liberté qui lui permettent une grande flexibilité. En effet, l’enveloppe de travail permet d’exploiter au maximum l’espace de travail à l’intérieur de la cellule.

Robot Staubli TX40
Robot Staubli TX40
Modèle Charge nominale Charge maximal Rayon d’action Répétabilité Nombre de degrés de liberté
TX40 1.7 Kg 2.3 Kg 512 mm +/- 0.2mm  6

Description du contrôleur CS8C

Le contrôleur CS8C est la partie intelligente de l’installation qui permet de piloter chaque axe du robot. Il intègre un port Ethernet Modbus, des entrées sorties digitales…

Contrôleur CS8C robot TX40
Contrôleur CS8C pour robot TX40

Description du pupitre de commande

Le MCP (Boitier de commande manuelle ) permet la mise sous puissance et le contrôle des mouvements du bras. Il est utilisé pour faire le déplacement du robot, l’apprentissage des points et l’exécution des programmes.

Pour la mise sous puissance, il suffit d’appuyer sur l’interrupteur « homme mort » qui se trouve à l’arrière boitier et le bouton vert (puissance) qui permet d’activer/couper l’alimentation électrique du robot.

Pupitre de commande robot Staubli
Pupitre de commande robot Staubli

Description de l’interface opérateur WMS

L’interface opérateur WMS permet la sélection des modes de marche :

Mode Manuel (1er mode sur la photo), ce mode nécessite un opérateur qui doit rester appuyé sur la fonction « MOVE HOLD » après le lancement de l’application afin d’actionner les mouvements du bras. Ce mode est aussi utilisé pour l’apprentissage des points (axe cartésien X,Y,Z) avec les différents modes de déplacements.

Mode Auto local (2ième mode sur la photo), équivalent au mode automatique et il suffit juste de lancer l’application et d’appuyer une seule fois sur la fonction « MOVE HOLD » et les mouvements du bras se font de manière automatique.

Mode Auto déporté (3ième mode sur la photo), ce mode permet d’effectuer les mouvements du robot par un contact externe ( IHM, Automate …)

Interface opérateur WMS
Interface opérateur VMS

Configuration de la communication entre Robot Staubli et Automate

Afin de faire communiquer le robot Staubli TX40 et l’automate programmable Siemens, nous avons cablé une entrées digitale du contrôleur CS8C à une sortie de l’automate.

Le robot Staubli attendra un signal de l’automate pour démarrer. En effet, quand la sortie automate sera à « 1 », le programme du robot Staubli s’exécutera.

Pour cela, nous avons regardé dans la documentation du contrôleur CS8C l’emplacement des entrées digitales dans le connecteur J109.

Entrée digitale utilisé dans le connecteur J109
Entrée digitale utilisé dans le connecteur J109

Par suite, nous avons choisi l’entrée UsrIn0 (ci dessus) et nous avons mis le fil de 24 V (rouge) sur la partie « + » soit « USER-IN-0+ » et le fil de la masse (bleu) sur la masse du connecteur soit J109-19 (voir schéma électrique).

Connecteur J109 du contrôleur CS8C

Les fils câblés sur l’entrée digitale UserIn0, sont reliés a une sortie automate tout en respectant le code des couleurs: 24V (rouge) sur la sortie automate commandant le robot et la masse (bleu) sur une masse des sorties de l’automate.

Module de sorties automate montrant le cablâge de l'entrée digitale du robot
Module de sorties automate montrant le cablâge de l’entrée digitale du robot

Programmation Robot Staubli

Environnement de programmation

Le programme du robot Staubli TX40 est développé avec le langage VAL3 qui est un langage dédié à la robotique.

Ce langage utilise des fonctions de mouvements prédéfinis tels que :

MOVEJ (point, tool, mdesc) où « point » est la position du point voulu, « tool » est l’outil utilisé dans l’application et « mdesc » est la vitesse du mouvement. MOVEJ effectue un mouvement en courbe dans l’espace.

MOVEL (point, tool, mdesc), admet le même principe que MOVEJ sauf qu’il effectue un mouvement en ligne droite.

waitEndMove() est une instruction à insérer à la fin du programme et qui permet d’annuler le lissage sur le mouvement précédent.

Apprentissage des points

Concernant l’apprentissage des points, il suffit de créer un nouveau point et à l’aide des fonctions permettant les mouvements dans l’axe cartésien, on déterminera l’emplacement du point.

Apprentissage des points
Apprentissage des points

Ci-dessus, nous pouvons voir la configuration des points, il suffit de se positionner à l’endroit voulu grâce aux fonctions permettant de faire bouger le bras dans l’axe cartésien et enregistrer la position à l’aide de la fonction « Ici ».

Configuration de l’entrée User-In-0

Pour la configuration de l’entrée digitale User-In-0, nous avons du créer une variable de type « dio » (entrées digitales du robot ) car nous pouvons pas utiliser directement l’entrée User-In-0 dans le programme.

Donc nous avons crée une variable « dAPI » que nous avons lier par la suite à l’entrée digitale User-In-0 à l’aide de la fonction « Lien ».

Une fois la liaison créée entre la variable « dAPI » et l’entrée digitale User-In-0, nous pouvons utilisé cette variable dans le programme du robot Staubli.

IMG_1392 (1)
Vue des variables pour la configuration de l’entrée digitale

 

Programme

On utilise donc les fonctions prédéfinis MOVEJ et MOVEL qui permettent les déplacements du bras robotisé en utilisant les points programmés pour se rendre à la position voulu.

Ce programme est exécuté uniquement quand la variable automate (dAPI) est à 1.

En effet, c’est l’automate qui déclenche le lancement du programme en mettant  à « 1 » l’entrée digitale du robot (UsrIn0) qui est reliée à une sortie de l’automate.

Nous pouvons voir ci dessous le passage à « 1 » de l’entrée digitale usrIn0 qui est commandé par l’automate.

Entrée digitale mise à "1" par l'automate
Entrée digitale mise à « 1 » par l’automate

Pour cela, nous avons inséré dans le programme la fonction « wait » (attente bloquante) qui aura pour but d’attendre que la variable automate (dAPI) soit à « 1 » pour lancer le programme et une boucle « while » (tant que) qui exécutera le programme tant que la variable de l’automate (dAPI) est à « 1 ».

Nous pouvons voir ci-dessous les vues sur le programme en langage VAL3 du robot TX40.

Programme Robot TX40 (1)
Programme Robot TX40 (1)
Programme TX40 (2)
Programme Robot TX40 (2)

Gestion de Projet

Mettre gestion GANTT de chaque personne.

Diagramme de gantt robot

Gantt projet IUT

Perspectives

Certaines perspectives d’amélioration du tapis sont possible. Premièrement, l’acquisition et le traitement de l’image pour le trie des pièces s’effectue via la caméra. Cette caméra transmet le résultat du traitement de l’image par une mise à 1 d’une sortie binaire. Il est également possible de transmettre ces informations à l’automate via une communication TCP/IP. Il serait intéressant de mettre en place cette dernière approche car elle permettrait une combinaison de résultat plus large que via une communication binaire. En effet, avec deux sorties binaire  il est possible d’avoir trois résultats différents, donc de traiter trois pièces. Une communication TCP n’est restreint que par la capacité mémoire de l’automate à stocker des informations.

Concernant le robot Stäubli TX40, il dispose plusieurs avantages techniques comme des vitesses élevées, une grande capacité de charge et une large enveloppe de travail. De ce fait, il peut s’adapter à tous les environnements et garantir une bonne qualité des processus ainsi qu’une productivité accrue.

Bilan

Grâce à cette maquette, il est maintenant possible de trier différentes pièces en fonction de leur émoticônes. Nous espérons que l’automatisation du Tapiris permettra de le faire fonctionner de façon transparente pour les utilisateurs.

Conclusion

Finalement, notre système est capable de trier trois types de pièces à l’aide d’un tapis roulant, d’un bras robotisé et d’une caméra intelligente. Celle-ci est capable d’identifier deux types de pièces. Le robot se charge de prendre les pièces en fin de chaîne que la caméra n’a pas pu identifier.

La création du trieur de pièces nous à permis d’utiliser certaines notions abordées au cours de ces deux années de DUT telles que l’automatisme, l’électrotechnique et la vision industriel. Les différents problèmes auxquels nous avons dû faire face nous ont obligés à mettre en œuvre de nouvelles solutions techniques.

Nous tenons à remercier encore une fois l’IUT de Mulhouse et son équipe pédagogique pour leur aide et leurs conseils.

Annexe

schéma tapis4

Figure 3 : Schéma coffret électrique

schéma partie pneumatique

Figure 4 : Schéma pneumatique Tapiris

 

bornier FESTO

Figure 5 : Bornier FESTO