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
- Clic sur la fonction
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 :
- 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
-
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
-
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
-
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
- 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°) - 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
- 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”
- Utiliser le Z_Toll_Offset pour ne plus avoir à utiliser le point P[2]
- 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.
- 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.