Line Tracking Fanuc

Line Tracking Fanuc

Objectifs du TP

On souhaite mettre en oeuvre un tracking de convoyeur afin de pouvoir réaliser des opérations de “Pick” sur une pièce à saisir en mouvement. La saisie à la volée des pièce permet d’améliorer le temps de cycle d’une machine et d’éviter les phases d’arrêt et de redémarrage du convoyeur.

Le convoyeur est piloté par un variateur SEW, lui même piloté en Profinet par un automate S7-1215C. La boîte à boutons permet de donner l’ordre de marche ainsi que le sens de marche. Le pilotage du convoyeur ne sera pas traité dans ce TP.

Pour effectuer le Tracking, le contrôleur de robot doit connaître à chaque instant la position de la pièce à saisir. Deux capteurs sont nécessaires :

  • un détecteur photoélectrique qui indique le passage de la pièce
  • un codeur de position de type incrémentale, qui génère des impulsions en fonction du déplacement du convoyeur.

Le principe est le suivant :

Quand la pièce est détectée, le contrôleur robot va compter le nombre d’impulsions issues du codeur. Connaissant le nombre d’impulsions, on en déduit la position de la pièce.

Dans notre cas, nous avons un codeur de position incrémental qui fournit 1024 points par tour. Il suffit de déterminer le déplacement linéaire du convoyeur en mm pour un tour de codeur pour en déduire la position de la pièce à partir du moment où l’on a détecté le passage devant le capteur photoélectrique. Ces opérations sont faites par le contrôleur Fanuc.

Détecteur de pièce

Le capteur de détection de pièce est de type photoélectrique de proximité. Il est branché sur une entrée DI du contrôleur Robot. Pour trouver le numéro de la DI utilisée, faire :

  • MENU » I/O » Digital
  • Cliquer si besoin sur IN/OUT pour faire apparaître les DI
  • Faire SHIFT + Flèche Bas pour vous positionner aux alentours des DI[100].
  • Trouver le numéro de la DI associée au capteur en activant le capteur avec la main par exemple
  • Notez ce numéro, on en aura besoin pour la suite

Configuration de l’encodeur 1

Afficher le menu de configuration des encodeurs sur Teach Pendant :

  • MENU » SETUP » ENCODER
  • Choisir le numéro de l’encodeur à paramétrer :
    • Clic sur la fonction ENCODER
    • Saisir le numéro d’encodeur, puis clic Enter
      • Numéro d’encodeur par controleur : 1 à 8
      • Choisir le numéro 1 pour le TP

Comme il n’y a qu’un seul encoder (codeur) de sur cette maquette, on choisit le numréro 1.

Configurer les paramètres de l’encodeur comme ci-contre :

La valeur Current Count (cnts) correspond à la valeur actuelle de comptage du nombre d’impulsions issus du codeur. Cette valeur n’est pas à configurer.

Configuration du Tracking sur le Teach Pendant

Afficher le menu de configuration du tracking sur le TEACH PENDANT

  • MENU » SETUP » TRACKING

Choisir le numéro de Schedule à paramétrer :

  • Sélectionner la fonction SCHED
  • Saisir le numéro 1 (pour ce TP)

Positionner le curseur sur l’item Robot Tracking Group

  • Saisir la valeur 1

Positionner le curseur sur l’item Tracking Type

  • Sélectionner la fonction CHOICE
  • Choisir le type Line (convoyeur en ligne)

Positionner le curseur sur l’item Visual Tracking

  • Sélectionner l’option NO

Positionner le curseur sur l’item Use Vision Part Queue = No

  • Sélectionner l’option NO

Positionner le curseur sur l’item Use Tracking Uframe

  • Sélectionner l’option NO

Apprentissage du Tracking Frame

En faisant : SHIFT + COORD Valider les repères suivants :

Configuration de la ligne de Tracking

Nous devons maintenant configurer la ligne de convoyeur que le robot devra “tracker”. Il faut savoir que le convoyeur n’est pas forcément parallèle au robot et qu’il peut être positionné de travers par rapport au repère World du robot. Dans la suite de cette section, nous allons configurer cette ligne de suivi.

Méthode de configuration

Placer une pointe plastique dans la pince du robot

  • Coller un bout de scotch de marquage (scotch papier blanc) au milieu de la bande de convoyage et placez y une petite croix au stylo.

  • Déplacer la bande du convoyeur de manière à placer la cible après le détecteur de pièce.

    • Le centre de la cible doit être atteignable par la pointe du robot.

Pensez au fait que l’espace de travail du robot est limité par le DCS à l’intérieur de la cellule, gardez un peu de marge. Un bon repère pour connaître les zones atteignables sont les trous les plus éloignés du plateau du solitaire.

  • Mesurez avec un réglet, la distance entre le détecteur de pièce et le centre de la croix et conservez cette valeur. Cela constituera la valeur de Part Detect Dist que l’on saisira plus tard.

Paramétrage dans le Teach Pendant

Sur le schéma ci-dessous, nous pouvons voir trois points :

  • le point “Origin” qui correspond au centre de la croix placée sur le scotch
  • le point “+X” qui correspond au centre de la croix déplacée d’environ 20 cm
  • le point “+Y” qui correspond à un décalage suivant la direction +Y du repère Nominal Tracking Frame.

Remarque : un déplacement suivant +X suivant le repère Nominal Tracking correspond à un déplacement suivant “-Y” selon le repère World du robot. De même, un déplacement en “+Y” dans le repère Nominal Tracking correspond à un déplacement suivant “+X” dans le repère World.

Dans le menu SETUP Tracking du Teach Pendant, positionner le curseur sur l’item Nominal Track Frame

Sélectionner la fonction DETAIL

On remarque les trois points “Origin”, “+X” et “+Y” dans ce menu de configuration.

Les étapes de configuration :

  1. Positionner le curseur sur Origin et déplacer la pointe du robot sur la croix précédemment sur cette position.

Pour rappel, la position (le point) Origin se situe :

  • au milieu de la bande
  • à une dizaine de centimètres du détecteur de pièce
  • dans la zone atteignable du Robot

Sélectionner la fonction SHIFT + TEACH pour apprendre le point. (TEACH apparaît dans le menu, ce n’est pas un bouton physique comme SHIFT)

L’item Origin passe alors en RECORD

  1. Positionner le curseur sur +X Direction

    • Monter la pointe du robot pour l’écarter du convoyeur
    • Avancer le convoyeur pour déplacer la cible d’une vingtaine de centimètres
    • Déplacer la pointe du robot sur la croix collée sur le convoyeur

Sélectionner la fonction SHIFT + TEACH pour apprendre le point

L’item +X Dir passe en RECORD

  1. Positionner le curseur sur +Y Direction

    • Déplacer la pointe du robot dans la direction +Y du Frame tracking sans lever la pointe. (+Y du Frame Tracking correspond à +X dans le World)

Sélectionner la fonction SHIFT + TEACH pour apprendre le point

L’item +Y Dir passe en RECORD

  1. Sélectionner la fonction SHIFT + COMPUTE

    • Les items ORIGIN, +X Dir et +Y Dir passent PROCESSED une fois que l’UFrame Tracking a été calculé
    • Relever la valeur de l’échelle (vitesse) du convoyeur (cnt/mm) situé en dessous des données en bas de l’écran

Cliquer sur la touche PREV

Vérifier que la valeur de l’échelle calculée précédemment a été reportée au niveau de l’item Enc Scale Factor (cnt/mm)

Configuration du Tracking

Dans le menu SETUP Tracking du Teach Pendant, positionner le curseur sur l’item Track (ext) Axis Num

  • Saisir la valeur 0

Positionner le curseur sur l’item Track Axis Direction

  • Sélectionner l’option POSITIVE (pour un déplacement du convoyeur dans le sens des X+, ce qui incrémentera le codeur)

Positionner le curseur sur l’item Tracking Encoder Num

  • Saisir l’encodeur 1

Positionner le curseur sur l’item Part Detect Dist (mm)

  • Saisir la distance entre le détecteur et l’origine du Tracking Frame. C’est la mesure que vous avez faite avec le réglet.

Positionner le curseur sur l’item Vision Uframe Dist. (mm)

  • Saisir la valeur 0

Positionner le curseur sur l’item Trigger Input Num

  • Repérer le signal d’entrée digital (DI) qui acquière le signal du détecteur de déclenchement du tracking
  • Saisir le numéro de la DI où est connecté le détecteur

Configuration des limites de Tracking pour le Robot

Nous allons maintenant saisir les limites de la zone où nous allons réaliser le “Tracking”. Ces limites n’ont rien à voir avec la configuration de la ligne de “Tracking” vue plus haut avec les points (Origin, +X, +Y).

  • Upstream Boundary : limite Amont
  • Downstream Boundary : limite Aval
  • entre ces deux limites, se trouve la zone où le tracking peut s’opérer.

Rappel : l’eau coule (Flow) de la montagne (Amont) vers la Vallée (Aval)

Positionner le curseur sur l’item Select Boundary Set

  • Saisir la valeur 1

Positionner le curseur sur l’item Up du set 1

Méthode 1 : saisie directe des valeurs

  • Up : Saisir la position limite en amont  (Upstream Boundary) du robot (position par rapport à l’origine du Tracking Frame)
  • Skew : Saisir une inclinaison à 0° Skew = 0 Permet de définir un angle pour la limite pour éviter un obstacle par exemple

Si l’on place la valeur 0 à Up, le point “Origin” correspondra à la Upstream Boundary.

Méthode 2 : apprentissage avec le TCP

  • Up : Positionner le curseur du Up, déplacer le TCP à la position limite en amont du robot et sélectionner la fonction RECORD (touche Shift enfoncée)
  • Skew : Positionner le curseur sur Skew, sélectionner la fonction RECORD (touche Shift enfoncée) et apprendre 2 points (fonction TEACH) pour définir l’inclinaison (angle) de la limite « amont » et sélectionner la fonction COMPUTE pour calculer l’angle.

On peut se contenter de régler le point UP avec le déplacement du TCP et forcer à 0 la valeur de Skew si l’on ne souhaite pas d’inclinaison (cf figures ci-dessous)

On conservera le Skew à 0 pour ce TP.

On procède de manière analogue à la configuration de la Downstream Boundary :

  • Positionner le curseur sur l’item Dn du set 1

Méthode 1 : saisie directe des valeurs

  • Dn : Saisir la position limite en aval (Downstream Boundary) du robot (position par rapport à l’origine du Tracking Frame)
  • Skew : Saisir une inclinaison de 0° Skew = 0

Méthode 2 : apprentissage avec le TCP

  • Dn : Déplacer le TCP à la position limite « aval » de la zone de tracking et sélectionner la fonction RECORD
  • Skew : Positionner le curseur sur Skew, sélectionner la fonction RECORD (touche Shift enfoncée), apprendre 2 points (fonction TEACH) pour définir l’inclinaison (angle) de la limite « aval » et sélectionner la fonction COMPUTE pour calculer l’angle.

Conserver le Skew à 0 dans le cadre de ce TP.

Cliquer sur la touche PREV

Programmation du Tracking

Objectif : nous souhaitons saisir à la volée par le robot un cylindre transporté par le convoyeur. Pour visualiser au mieux la notion de tracking, nous suivrons avec le robot la pièce pendant 3 secondes avant de la saisir.

Créer 3 programmes :

  • TRACK_INIT
  • TRACK_MAIN
  • TRACK_SP

(Effacer les programmes sur le Teach si ils sont déjà présents !)

On force également l’ouverture de la pince pour faire les premiers essais de tracking en activant depuis le MENU » I/O » ROBOT. Au besoin, on appuie sur IN/OUT pour se positionner sur RO (Output). On ouvre la pince et on la laisse ouverte pour ces premiers essais.

TRACK_INIT

Pour l’initialisation du tracking

  1. On utilise le registre de position global PR[1] pour initialiser la position Home du robot. (J1=J2=J3=J4=J6=0° et J5=-90°)
  2. On utilise le registre de position global PR[2] pour initialiser le ToolOffset suivant Z afin de se placer 50 mm au dessus du point visé.

Penser à renommer les valeurs de PR[1] en home et PR[2] en z_tool_offset en cliquant sur DATA » TYPE Position Reg

Une proposition de code pour TRACK_INIT :

! INIT PR HOME
PR[1:home]=JPOS-JPOS
PR[1,5:home]=(-90)

! INIT TOOL OFFSET
PR[2:z_tool_offset]=LPOS-LPOS
PR[2,3:z_tool_offset]=(-50)

TRACK_MAIN

CALL TRACK_INIT

! MOVE TO HOME
J PR[1:home] 100% FINE

! ENABLE THE ENCODER
LINE[1] ON

! WAIT FOR A PART DETECT. (mettre le bon numéro de DI)
WAIT DI[xxx]=ON

! GET TRIGGER VALUE
LINECOUNT[1] R[1]

! SET TRIGGER VALUE
SETTRIG LNSCH[1] R[1]

! SELECT A BOUNDARY
SELBOUND LNSCH[1] BOUND[1]

! CALL TRACK SUBPROGRAM
CALL TRACK_SP

TRACK_SP

Pour visualiser l’action du tracking, nous allons dans un premier temps suivre la pièce pendant 3 secondes.

Nous utiliserons deux points :

  • P[1] pour le point d’approche
  • P[2] pour le point de prise

Tous les mouvements doivent être en linéaire dans un programme lié à un convoyeur !

! MOVE TO APPROACH POS
L P[1] 500mm/sec FINE ;
! MOVE TO PART
L P[2] 500mm/sec FINE ;
! WAIT FOR 3 SECONDS
WAIT 3.00 (sec) ;
! MOVE TO APPROACH POS
L P[1] 500mm/sec FINE;

Il n’est pas utile d’enregistrer de suite, les bonnes positions d’approche et de prise. Il faudra le faire quand nous allons synchroniser ce sous-programme avec le Tracking. Pour ce faire, il faudra modifier les propriétés du sous-programme.

Remarque : une amélioration du code consisterai à n’utiliser que le point de prise et d’utiliser un Tool_Offset pour se positionner au-dessus du cyclindre.

Modification du programme TRACK_SP

Modifier les propriétés du sous-programme :

  • Clic sur la touche SELECT du Teach Pendant
  • Se positionner sur le sous-programme TRACKING_SP
  • Sélectionner la fonction DETAIL
  • Sélectionner NEXT
  • Configurer les paramètres comme sur la figure ci-contre :
  • puis l’on clic sur le menu END

On peut maintenant Synchroniser le Sous-Programme sur la routine de Tracking du robot :

En executant TRACKING_SP, un post-it apparaît sur le Teach Pendant :

Il faut faire : YES

On place ensuite un cylindre sur le convoyeur tapis en marche et on le fait dépasser le détecteur de pièce et on le laisse atteindre la zone de Tracking.

Quand on est dans la zone de Tracking, on peut initialiser les valeurs des positions P[1] et P[2] en déplaçant le robot au-dessus et sur le cylindre, puis en faisant SHIFT + TouchUp.

Lancement du programme principal

Il faut placer le Robot en mode T2 pour qu’il ait suffisament de dynamique pour suivre le cylindre.

Faire venir l’enseignant pour vous accompagner dans cette phase du TP

On peut maintenant lancer le programme principal : TRACKING_MAIN

Exercices

Améliorations du mode de Tracking

  1. Modifier le programme TRACK_SP de manière à pouvoir effectuer une opération de “Pick” et de “Drop” du cylindre. On utilisera un bac (avec de la mousse au fond) placé dans la cellule robot pour réceptionner le cylindre lors du “Drop”
  2. Utiliser le Z_Toll_Offset pour ne plus avoir à utiliser le point P[2]
  3. Modifier le programme principal pour effectuer un cycle automatique pour la saisie des pièces.

Autre mode de Tracking

On souhaite créer un nouveau programme pour déposer le cylindre sur un support de réception qui sera collé sur la bande de convoyage.

  1. En vous inspirant des programmes réalisés précedemment, proposer une solution permettant de réaliser en automatique, une dépose de cylindre dans le support de réception fixé au convoyeur.