ÉCOLE DE TECHNOLOGIE SUPÉRIEURE

ÉCOLE DE TECHNOLOGIE SUPÉRIEURE
DÉPARTEMENT DE GÉNIE DE LA PRODUCTION
AUTOMATISÉE
Chargé de cours: Ahmed Joubair
Session: ÉTÉ 2015
GPA546 Robots industriels
PROJET #2 : Simulation d’une tâche d’assemblage
1 - OBJECTIFS
- Être capable d'opérer un robot ABB IR1600 en mode manuel;
- Être capable de faire la programmation de base d’un robot ABB;
- Être capable d'utiliser les référentiels « objet » (wobjdata) dans la programmation des
robots.
2 - DESCRIPTION DU LABORATOIRE
Description générale. Ce projet consiste à programmer un robot ABB pour simuler une
tâche de palettisation. Les pièces en acier sont initialement disposées dans un magasin (une
glissoire) situé sur une table. La présence et l’orientation (trou à gauche ou à droite) d'une
pièce sont détectées à l'aide de deux capteurs situés en bas du magasin (DI09_ZS0101 et
DI10_ZS0102). Un vérin pneumatique (DO09_FV0101) pousse la pièce pour permettre sa
préhension avec la pince du robot. Une palette remplie contient N blocs déposés à plat et
formant une forme régulière (voir annexe) autour d’un point centre. Les blocs doivent être
déposés avec les trous circulaires orientés vers le même sens. La valeur de N peut varier de
quatre à sept. Les blocs doivent être aussi près que possible.
Séquence de travail. Le programme remplit une seule palette en effectuant les séquences
suivantes :
a) Avant d'effectuer ses mouvements, le robot doit faire les initialisations appropriées
(paramètres de mouvement par défaut pour un mouvement rapide, etc.
b) Le système doit s’assurer qu’il est à moins de 5 cm du robtarget « Repos » avec une
divergence d’angle de l’outil par rapport à ce même robtarget d’un maximum de 2
degrés. Ainsi qu’une « configuration moteur » identique entre les deux positions
comparées. Si la validation est réussie alors le système passe au point suivant, sinon le
programme avorte en affichant un message approprié décrivant en détail le pourquoi de
l’échec.
c) Le système demande le nombre de côtés à la forme en affichant un menu similaire au
menu suivant sur l'écran de votre « FlexPendant » :
d) Le programme effectue les calculs des positions de travail (« robtargets ») selon le
nombre de côtés choisi. Ce calcul doit se faire de façon itérative avec des boucles
(while, for) et non de façon conditionnelle (if, else, elseif, switch) pour chaque cas
différent.
e) Le robot passe par une position décalée (lors de l’approche et lors du dégagement), lors
de la prise dans la glissoire et lors du dépôt sur la feuille. Pour pouvoir faire une prise
d’un bloc, le robot doit détecter la présence de ce bloc dans la chute avant de démarrer
la séquence de prise. Sinon, le robot attend le bloc. Si l’attente est de plus de 5
secondes, le robot retourne à Repos, affiche un message d’avertissement et continu
l’attente nécessaire; *Important : la pince doit toujours prendre le bloc avec les suces
du côté du trou.
f) Le robot dépose le premier bloc au centre de l’arrête (long coté) de la feuille sur la table
en le mettant parallèle aux axes du référentiel de la feuille (Système de coordonnées
objet) et répète l’étape e) pour mettre les N-1 blocs suivants. L’espace entre les blocs
doit être constant. Le dépôt doit se faire de façon itérative avec des boucles (while, for)
et non de façon conditionnelle (if, else, elseif, switch) pour chaque cas différent.
*Important : la grosseur de vos formes doit s’ajuster en fonction du nombre de côtés
de façon à ce que l’espacement entre les blocs soit toujours le même.
uFrame
oFrame
Figure 1 Repère objet : WobjFeuille
g) Après que le dernier bloc a été placé sur la table, le robot retourne à la localisation
Repos et le programme s'arrête de lui-même.
Points importants à considérer :
-
-
Vous devez seulement enseigner les 3 éléments suivants : WobjTable, GLISSOIRE
et REPOS. Les positions de dépôt doivent être calculées.
Votre programme doit être concis avec des noms de variables significatifs. Vous ne
devez pas répéter des lignes de code inutilement.
Lorsque vous interagissez avec l’opérateur, vous ne devez pas faire de fautes de
français.
Vos procédures et vos fonctions doivent accomplir une seule tâche. Par exemple,
vous ne devez pas avoir une fonction qui s’appelle CalculerVolumeSphere qui
calcule le volume d’une sphère et qui déplace le robot en même temps. Elle doit
seulement faire la tâche que son nom indique. Vous devez bien découper votre
programme.
Vous devez respecter vos propres conventions de programmation.
Avant d'exécuter le programme.
*
Le programme utilise trois persistantes de type wobjdata ou robtarget, enseignées avec le
boîtier de commande :
1) WobjTable, qui est un système de coordonnées de type wobjdata;
a. la partie « UFrame » est utilisée pour définir la table,
b. la partie « OFrame » est utilisée pour définir la feuille sur la table.
2) GLISSOIRE représente l'endroit où le robot prend la pièce dans le magasin.
3) REPOS représente l'endroit où le robot est dégagé, soit environ 60 cm au-dessus du
centre de la table avec une pince qui pointe vers le sol.
REPOS et GLISSOIRE doivent être enseignés par rapport au repère atelier (wObj0).
Afin d’avoir un programme sécuritaire, les approches et les retraits pour les prises et les
dépôts doivent être de 20 cm avec une interpolation maximale de 10 cm.
Pour définir le système de coordonnées objet, vous devez utiliser la méthode « définition par
3 points » à l’aide du « FlexPendant ». Ces localisations enregistrées doivent s'enseigner
rapidement et efficacement par un opérateur. Vous devez tenir compte que la feuille ou la
table peuvent bouger entre deux sessions de travail.
Les positions des blocs sont calculées par le programme par rapport au référentiel
WobjTable.oframe qui est situé sur la feuille. Vous ne devez pas assumer que l’axe Z du
référentiel de l’atelier est perpendiculaire à la surface de la table. Toutes les localisations
doivent être de type PERS.
Après avoir exécuté le programme en mode automatique, le robot effectue la séquence de
travail demandée.
En tant que spécialiste en robotique, vous devez :
- Respecter les consignes de sécurité émises au laboratoire #1 ;
- Faire en sorte que l’opérateur ait un minimum de travail à faire pour enseigner les trois
objets;
- Minimiser le temps d’exécution du programme tout en respectant les contraintes
suivantes :
1) Vitesses d’approche et de retrait à une vitesse RÉELLE de 300 mm/s
(avec VelSet 25,1000, si vous utilisez 300 mm/s dans votre speeddata, la vitesse
RÉELLE sera de 75 mm/s);
2) Distances d’approche et de retrait de 200 mm;
3) Le programme gère certaines conditions limites : manque de pièce, mauvais choix
entré par l’opérateur, etc. ;
4) Vous devez suivre la procédure décrite dans le document « Procédures au
laboratoire A-0610 ».
Les fonctions RAPID suivantes peuvent être utiles :
CRobT
CWobJ
MoveJDO
OFFS
TPReadFK
wobjdata
TestDI
WaitUntil
DefFrame
OrientZYX
WaitDI
Distance
RelTool
WaitTime
Vous devez examiner le manuel de référence technique « RAPID Instructions, fonctions et
types de données » dont une copie électronique est disponible dans la section Documents du
site web du cours.
3 - FONCTIONNEMENT
La durée du projet est de quatre séances (avec présence d’un chargé de laboratoire). La
première séance est consacrée à écrire un programme sans erreurs de syntaxe avec le logiciel
de simulation « RobotStudio » au local A-3608 (en contexte industriel, la programmation
hors ligne permet d'éviter l'arrêt de la production pour écrire le programme). Au début de la
deuxième séance, vous devrez remettre un programme de base fonctionnel et sans erreurs de
compilation incluant les étapes a), b) et e) complétées sans quoi vous vous verrez attribuer la
note 0 pour l’approbation. De plus, tant que vous n’aurez pas produit un programme de base
et obtenu l’approbation écrite de votre chargé de laboratoire, l'utilisation de votre robot vous
sera interdite. Les deuxième et troisième séances vous permettront de mettre au point votre
programme. À la quatrième séance, vous devrez faire une démonstration de votre travail et
remettre votre programme final. Aucune extension ne sera accordée sous prétexte que
votre séance (par exemple, mardi soir) est plus tôt que la séance d’une autre équipe
(mercredi soir).
GPA-546 ROBOTS INDUSTRIELS
Barème de correction pour les laboratoires
Noms :
Approbation........................................................................................................................ 3 points
Vous devez transmettre votre programme AVANT votre deuxième séance selon les consignes
mentionnées et imprimer cette page.
Démo sur le robot et programme final ........................................................................... 17 points
Le programme final doit être transmis électroniquement au chargé de laboratoire AVANT la
quatrième séance. Expliquez votre programme en mettant des commentaires appropriés.
En se basant sur les quatre éléments mentionnés ci-dessous, la correction se fait de façon
progressive. Par exemple, un zéro à l’élément 2 entraîne un zéro pour les éléments suivants.
1 - Démo fonctionnel dans son ensemble
2 - Connaissance du programme
3 - Respect des contraintes imposées
4 - Mouvements appropriés, commentaires appropriés, concision du programme.
Note pour le laboratoire .............................................................................................................. /20
Consignes pour la transmission électronique de votre programme par courriel. Aucune copie
papier ne sera corrigée.
Adresse courriel : [email protected]
Titre du courriel* : GPA546 – Remise du laboratoire XX
Nom du fichier .zip à transmettre* : LabXX - ÉquipeXX - Prénom Nom - Prénom Nom
*Il est important de respecter la casse, les accents et l’ordre des éléments demandés.
Le fichier .zip doit contenir les éléments suivants :
 Fichier(s) .mod de votre programme complet
 Fichier .pdf de votre programme complet
Vous devez transmettre votre programme AVANT le début de la deuxième séance pour
l’approbation et AVANT la quatrième séance pour le programme final, sans quoi vous perdrez 10%
sur la note du laboratoire.
Annexe – Formes demandées
Figure 2: Carré
Figure 3: Pentagone
Figure 4: Hexagone
Figure 5: Heptagone