Programmation des robots ABB en RAPID
Programmation des robots ABB en RAPID
Aujourd’hui
Principes de programmation
Données & Routines
Les trajectoires
Prochain cours
Les outils
Les objets
2
© Claude Théorêt, M.Ing.
2
Prise en main des robots ABB Cours #2
Principes de programmation
- Les instructions
comptage
- Les routines
- Les modules
Bonjour. affichage
- Les données
mouvement attente
- La tâche boucle
choix
- Le programme
3
© Claude Théorêt, M.Ing.
Principes de programmation
- Programme en RAPID
- Création d’un programme
4
© Claude Théorêt, M.Ing.
4
Prise en main des robots ABB Cours #2
Principes de programmation
- Les instructions
Un "programme de production" est constitué d'une succession d' instructions.
Une instruction correspond à une opération élémentaire.
Les instructions permettent de déplacer le robot, de dialoguer avec l'environnement et
avec l'opérateur. Elles sont exécutées une par une.
Instruction
Exemples :
"Arrêt de l'exécution du programme" Stop; Instruction de mouvement
5
© Claude Théorêt, M.Ing.
Principes de programmation
- Les instructions (suite)
Une instruction a souvent besoin d' arguments pour être exécutée.
Ces arguments peuvent être des valeurs, des données, des expressions ou
des fonctions.
Instruction E/S
Exemple :
"Activation de la sortie TOR SetDO s_FermPince , 1 ;
nommée s_FermPince" valeur
donnée
6
© Claude Théorêt, M.Ing.
6
Prise en main des robots ABB Cours #2
Principes de programmation
- Les Routines
Le programmeur décompose son programme en un ensemble de routines.
Principes de programmation
- Les Modules
Ces routines sont regroupées dans une structure appelée module.
MODULE XXX
xxx()
Instruction;
Instruction;
... Routine principale
main() du "programme"
Instruction;
...
xxx()
Instruction;
...
xxx()
Instruction;
... 8
© Claude Théorêt, M.Ing.
8
Prise en main des robots ABB Cours #2
Principes de programmation
- Les Données
Les données utilisées dans les instructions sont également stockées
dans les modules. MODULE xxx
xxx()
Instruction;
MoveL pA , … ;
...
outils
main()
Instruction; pièces
... points (pA,…)
temps données
xxx()
Instruction; ...
Add Cpt , x ; compteurs (Cpt,…)
…
xxx()
Instruction;
...
9
© Claude Théorêt, M.Ing.
Principes de programmation
- Les Données
Les données utilisées devraient avoir une désignation appropriées.
Exemple :
10
© Claude Théorêt, M.Ing.
10
Prise en main des robots ABB Cours #2
Principes de programmation
- La Tâche
MODULE MainModule Il existe 2 types de modules : les modules
routines
programme et les modules système.
main()
... MODULE BASE(SYSMODULE)
xxx()
...
xxx()
...
MODULE xxx
xxx()
...
xxx()
... MODULE xxx(…...)
xxx()
...
11
Principes de programmation
- Le Programme
MODULE MainModule Un programme est un répertoire
routines qui regroupe l'ensemble des
modules programme.
main()
...
xxx() Cette notion de programme ne
...
sert que pour des sauvegardes-
chargements.
MODULE xxx
xxx()
...
xxx()
...
12
© Claude Théorêt, M.Ing.
12
Prise en main des robots ABB Cours #2
Principes de programmation
- Structure d’un programme en RAPID
<?xml version="1.0" encoding="ISO-8859-1" ?>
Pick_and_Place_Cell_A.pgf <Program>
<Module>ModuleA.mod</Module>
<Module>MainModule.mod</Module>
MainModule.mod </Program>
MODULE MainModule ModuleA.mod
PROC main()
Rotuine1; MODULE ModuleA
Routine2; PROC RoutineA1()
ENDPROC MoveL;
MoveL;
PROC Routine1() ENDPROC
MoveL; ENDMODULE
ENDPROC
PROC Routine2()
MoveL;
ENDPROC
ENDMODULE 13
© Claude Théorêt, M.Ing.
13
Principes de programmation
- Exemple d’un programme en RAPID
MODULE Exemple
CONST robtarget A:=[[300,0,500],[0,1,0,0],[0,-1,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
CONST robtarget B:=[[0,300,500],[0,1,0,0],[0,-1,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
CONST tooldata tPince_bout:= [TRUE,[[0,0,233.37],[0.707107,0,0,0.707107]],
[1.7,[12.2,0,158],[1,0,0,0],0.009,0.003,0.012]];
PROC main()
deplacer_piece;
ENDPROC
PROC fermer_pince()
Set DO01_EE_PINCE01;
ENDPROC
PROC deplacer_piece()
VAR num reponse;
MoveJ A,v100,z5,tPince_bout\WObj:=wobj0;
MoveL B,v800,fine,tPince_bout\WObj:=wobj0;
WaitDI DI14_ZS0104, 1;
fermer_pince;
TPWrite "Le bloc est dans la pince. Êtes-vous satisfait?";
TPReadFK reponse, "", stEmpty, stEmpty, stEmpty, "Oui", "Non";
ENDPROC
ENDMODULE 14
© Claude Théorêt, M.Ing.
14
Prise en main des robots ABB Cours #2
Principes de programmation
- Règle de base
Chaque instruction se termine par un point-virgule
(sauf FOR, IF, PROC, etc.).
Une ligne commençant par ! ne sera pas interprétée.
RAPID n’est pas sensible à la casse, mais il est recommandé d’écrire
tous les mots réservés (VAR, PROC, etc.) en majuscules.
Le premier caractère d’un identificateur doit être une lettre. Les autres
caractères peuvent être des lettres, des chiffres ou “ _ ”. La longueur
maximale est 32 caractères.
RAPID est un langage à structure non imposée, ce qui signifie que l’on
peut utiliser des espaces n’importe où sauf dans les identificateurs, les
mots réservés, les valeurs numériques, et les marques de réservation
(<SMT>, <EXP>, etc.).
15
© Claude Théorêt, M.Ing.
15
Principes de programmation
- Création d’un programme
Deux espaces différents sont proposés :
– Pour créer les modules et les routines, pour créer les lignes de programme,
– Pour créer les données.
16
© Claude Théorêt, M.Ing.
16
Prise en main des robots ABB Cours #2
Principes de programmation
- Création d’un programme (suite)
Dans le cas où il n'y a pas encore de programme :
17
© Claude Théorêt, M.Ing.
17
Principes de programmation
- Création d’un programme (suite)
Dans le cas où un programme est déjà présent :
18
© Claude Théorêt, M.Ing.
18
Prise en main des robots ABB Cours #2
Principes de programmation
- Sauvegarde d’un programme
19
© Claude Théorêt, M.Ing.
19
Principes de programmation
- Sauvegarde d’un programme (suite)
Un répertoire du même nom que le programme est créé.
Module: MainModule (Tous les programmes ont un)
Fichier d’extension: pgf
– C’est un fichier XML qui contient les liens des modules
programme à charger.
Le même
nom
20
Prise en main des robots ABB Cours #2
Principes de programmation
- Sauvegarde d’un programme (suite)
Contenu du fichier pgf :
21
Principes de programmation
- Création d’une instruction
Écran d’Édition.
Nom du programme Tâche / Module / Routine
Liste des
modules
Zoom
Boites
de
menus
22
© Claude Théorêt, M.Ing.
22
Prise en main des robots ABB Cours #2
Principes de programmation
- Création d’une instruction (suite)
Les listes d’instruction
23
© Claude Théorêt, M.Ing.
23
Principes de programmation
- Création d’une instruction (suite)
Ajout d’une instruction programme.
Numérotation
des lignes de Choix de
programme
l’instruction
Curseur
24
Prise en main des robots ABB Cours #2
Principes de programmation
- Structure du nouveau programme
Représentation de ce qui vient d’être créé :
MODULE MainModule Le répertoire Prog_stage
PROC main() pour la sauvegarde du
MoveJ , v1000 , z50 , tool0 ; programme
MoveJ * , v1000 , z50 , tool0 ;
MoveL * , v1000 , z50 , tool0 ;
MoveJ * , v1000 , z50 , tool0 ;
Le module programme
* MainModule
contenant la routine main
MODULE BASE (SYSMODULE, … )
PROC SYSRESET() et
tool0
... les différents modules
wobj0 système de la
PROC ...() v1000 version logicielle
... z50
... Ex : BASE et USER
MODULE USER (SYSMODULE) sont présents dans toutes
les versions logicielles
25
© Claude Théorêt, M.Ing.
25
Principes de programmation
- Édition d’une instruction
L'activation de certaines fonctionnalités dépend de la
position du curseur.
26
© Claude Théorêt, M.Ing.
26
Prise en main des robots ABB Cours #2
Principes de programmation
- Exécution d’un programme
Réduction de la vitesse d’exécution
27
© Claude Théorêt, M.Ing.
27
Principes de programmation
- Exécution d’un programme (suite)
Choix du mode d’exécution
Continu.
Cyclique.
28
© Claude Théorêt, M.Ing.
28
Prise en main des robots ABB Cours #2
Principes de programmation
- Exécution d’un programme (suite)
Choix du mode pas à pas
détaillé,
sortant,
principal,
déplacement.
29
© Claude Théorêt, M.Ing.
29
Principes de programmation
- Exécution d’un programme (suite)
Choix du mode pas à pas
30
© Claude Théorêt, M.Ing.
30
Prise en main des robots ABB Cours #2
Principes de programmation
- Exécution d’un programme en mode manuel
Choix du programme à exécuter Place le PP et le curseur
au début de la routine
principale.
Place le PP au niveau
du curseur.
Place le curseur
au niveau du PP.
PP
(Pointeur Programme) Curseur 31
© Claude Théorêt, M.Ing.
31
Principes de programmation
- Exécution d’un programme en mode manuel
Lancement de l’exécution
Exécution
de
l’instruction
en
"marche
avant"
Exécution du
programme
Exécution de
Arrêt de
l’instruction
l‘exécution
en
"marche arrière"
32
© Claude Théorêt, M.Ing.
32
Prise en main des robots ABB Cours #2
Travaux pratiques
Atelier #3 : Déplacement du robot du point A au point B
Manipulations :
Créer un nouveau programme : Atelier3;
33
© Claude Théorêt, M.Ing.
33
Travaux pratiques
Atelier #3 : Déplacement du robot du point A au point B
Manipulations :
Déplacer manuellement le robot à une première
localisation sécuritaire à vitesse réduite;
Ajouter l’instructions MOVEJ;
Déplacer manuellement le robot à une deuxième
localisation sécuritaire à vitesse réduite. Assurez-vous
qu’il n’y ait aucune obstacle entre les deux
localisation);
Ajouter une nouvelle instructions MOVEJ sous la
première;
34
© Claude Théorêt, M.Ing.
34
Prise en main des robots ABB Cours #2
Travaux pratiques
Atelier #3 : Déplacement du robot du point A au point B
Manipulations :
Effectuer la sauvegarde du programme;
Le programme devrait ressembler à celle de la figure suivante :
35
© Claude Théorêt, M.Ing.
35
Travaux pratiques
Atelier #3 : Déplacement du robot du point A au point B
Manipulations :
À l’aide de la commande « pp to main » de la
« fenêtre de production », activer le pointeur de
programme;
36
© Claude Théorêt, M.Ing.
36
Prise en main des robots ABB Cours #2
Travaux pratiques
Atelier #3 : Déplacement du robot du point A au point B
Manipulations :
Réduire la vitesse d’exécution à 25 %;
37
© Claude Théorêt, M.Ing.
37
Travaux pratiques
Atelier #3 : Déplacement du robot du point A au point B
Manipulations :
Sélectionner le mode de fonctionnement : Cyclique;
38
© Claude Théorêt, M.Ing.
38
Prise en main des robots ABB Cours #2
Travaux pratiques
Atelier #3 : Déplacement du robot du point A au point B
La sécurité
- RAPPEL des Règles de Sécurité
Utilisation des robots par des personnes formées
Obtenir l'approbation écrite avant l’utilisation
Enlever les objets inutiles du périmètre (aucune chaise permis)
Porte fermée ⇒ aucune personne à l’intérieur du périmètre
Une seule personne dans le périmètre lorsque le robot est vivant
Avoir le boîtier activé dans le périmètre (si robot vivant)
Ne jamais utiliser les boutons de desserrage des freins
Être près d’un arrêt d'urgence en mode auto
39
© Claude Théorêt, M.Ing.
39
Travaux pratiques
Atelier #3 : Déplacement du robot du point A au point B
Manipulations :
Exécution du programme en mode manuel.
1- Sélecteur à clé
en mode manuel 2- Activer les moteurs
3- Lancer le programme
40
© Claude Théorêt, M.Ing.
40
Prise en main des robots ABB Cours #2
41
© Claude Théorêt, M.Ing.
41
42
Prise en main des robots ABB Cours #2
43
44
© Claude Théorêt, M.Ing.
44
Prise en main des robots ABB Cours #2
45
46
Prise en main des robots ABB Cours #2
47
© Claude Théorêt, M.Ing.
47
48
© Claude Théorêt, M.Ing.
48
Prise en main des robots ABB Cours #2
fine
fine
49
© Claude Théorêt, M.Ing.
49
z50
fine
50
© Claude Théorêt, M.Ing.
50
Prise en main des robots ABB Cours #2
51
© Claude Théorêt, M.Ing.
51
OU
52
© Claude Théorêt, M.Ing.
52
Prise en main des robots ABB Cours #2
53
54
Prise en main des robots ABB Cours #2
55
© Claude Théorêt, M.Ing.
55
56
© Claude Théorêt, M.Ing.
56
Prise en main des robots ABB Cours #2
Exemple de fonction :
FUNC num veclen(pos vector)
RETURN SQRT(POW(vector.x,2)+POW(vector.y,2)+POW(vector.z,2));
ENDFUNC
57
© Claude Théorêt, M.Ing.
57
58
© Claude Théorêt, M.Ing.
58
Prise en main des robots ABB Cours #2
3 types de routines :
- Fonction,
- Procédure,
- Interrompre (Trap)
Choisissez le module
de stockage
et validez
59
© Claude Théorêt, M.Ing.
59
60
© Claude Théorêt, M.Ing.
60
Prise en main des robots ABB Cours #2
61
Les trajectoires
- Qu’est-ce qu’une trajectoire ?
- Les instructions de mouvement
- Création d’une trajectoire
- Arguments d’une instruction
- Modification des arguments d’une instruction
- Arguments de position
- Arguments de vitesse
- Arguments de zone
- Approches et retraits appropriés
- Atelier #4 : Déplacement du robot suivant une trajectoire 62
© Claude Théorêt, M.Ing.
62
Prise en main des robots ABB Cours #2
Les trajectoires
- Qu’est-ce qu’une trajectoire ?
On appelle Trajectoire une succession de mouvements du robot
position à atteindre
position visée
mouvement à éviter
circulaire
mouvement
linéaire mouvement
libre (articulaire)
63
Les trajectoires
- Qu’est-ce qu’une trajectoire ? (Suite)
64
© Claude Théorêt, M.Ing.
64
Prise en main des robots ABB Cours #2
Les trajectoires
- Les instructions de mouvement
Il existe 3 instructions simples pour obtenir un déplacement
robot :
MoveJ
Les mouvements des différents axes sont synchronisés pour amener
le robot sur la position visée. Le tronçon est libre.
position
position (articulaire)
courante
visée
MoveL
Le centre de l'outil (appelé CDO) est déplacé linéairement entre sa position
courante (position de départ) et la position visée (position d'arrivée).
position
courante position (géométrique)
visée 65
© Claude Théorêt, M.Ing.
65
Les trajectoires
- Les instructions de mouvement (Suite)
Il existe 3 instructions simples pour obtenir un déplacement
robot :
MoveC
position
courante
66
© Claude Théorêt, M.Ing.
66
Prise en main des robots ABB Cours #2
Les trajectoires
- Les instructions de mouvement (Suite)
Déplacement articulaire - Instruction : MoveJ
Les différentes articulations devant bouger vont se synchroniser : elles
démarrent en même temps et terminent leur mouvement en même temps.
Le temps du mouvement est donc imposé par l'axe le plus contraignant.
Les éléments portés par le poignet du robot ont donc un déplacement
quelconque dans l'espace avec une vitesse difficilement déterminable.
Position de départ
Position d'arrivée
67
© Claude Théorêt, M.Ing.
67
Les trajectoires
- Les instructions de mouvement (Suite)
Déplacement Linéaire – Instruction : MoveL
Le centre de l'outil (appelé CDO) est déplacé linéairement entre sa position
courante (de départ) et la position visée (arrivée).
Il est déplacé avec une vitesse constante.
Position
de départ
MoveL Position
d'arrivée
MoveJ 68
© Claude Théorêt, M.Ing.
68
Prise en main des robots ABB Cours #2
Les trajectoires
- Les instructions de mouvement (Suite)
Déplacement circulaire – Instruction : MoveC
Le centre de l'outil (appelé CDO) décrit un arc de cercle entre sa position
courante (de départ) et la position visée (arrivée).
Position
intermédiaire
Position
de départ
Position
d'arrivée
MoveC
MoveL
MoveJ 69
© Claude Théorêt, M.Ing.
69
Les trajectoires
- Création d’une trajectoire
70
© Claude Théorêt, M.Ing.
70
Prise en main des robots ABB Cours #2
Les trajectoires
- Création d’une trajectoire (suite)
71
© Claude Théorêt, M.Ing.
71
Les trajectoires
- Création d’une trajectoire (suite)
1. Déplacez le robot jusqu'à la position que vous souhaitez mémoriser.
2. Ouvrez la fenêtre pour vérifier (et changer) l'outil et l'objet actifs.
72
Prise en main des robots ABB Cours #2
Les trajectoires
- Arguments d’une instruction
Argument de base des instructions de mouvement
73
© Claude Théorêt, M.Ing.
73
Les trajectoires
- Arguments d’une instruction (Suite)
Argument de base des instructions de mouvement
74
© Claude Théorêt, M.Ing.
74
Prise en main des robots ABB Cours #2
Les trajectoires
- Arguments d’une instruction (Suite)
Arguments de base des instructions de mouvement
Par défaut, c'est l'outil qui était actif lors de la création de l'instruction.
Si l'objet actif est wobj0, il n'est pas mentionné dans l'instruction.
75
© Claude Théorêt, M.Ing.
75
Les trajectoires
- Arguments d’une instruction (Suite)
MoveL : permet de déplacer le point central de l'outil (TCP) de façon
linéaire vers une destination donnée.
pour des petits déplacements précis
exemples :
MoveL rtStart, v2000, z40, tPince_bout\WObj:=fixture;
MoveL rtStart, v2000, z40, tPince_bout;
MoveL *, v2000 \T:=5, z40, tPince_bout;
MoveL \Conc rtStart, v2000, z40, tPince_bout;
MoveL
76
© Claude Théorêt, M.Ing.
76
Prise en main des robots ABB Cours #2
Les trajectoires
- Arguments d’une instruction (Suite)
MoveJ : permet de déplacer le robot rapidement d'un point à un autre lorsqu'il
n'est pas nécessaire que ce déplacement se fasse en ligne droite. Le robot et
les axes externes se déplacent vers la position de destination le long d'une
trajectoire non linéaire.
Chaque axe est déplacé selon une vitesse d'axe constante et tous les axes
atteignent le point de destination en même temps, ce qui résulte en une
trajectoire non linéaire.
77
© Claude Théorêt, M.Ing.
77
Les trajectoires
- Modification des arguments d’une instruction
Accès n°1 : à partir de l'instruction complète.
78
© Claude Théorêt, M.Ing.
78
Prise en main des robots ABB Cours #2
Les trajectoires
- Modification des arguments d’une instruction
Accès n°2 : en sélectionnant l’argument dans l’instruction.
De la fenêtre
« Sélectionner l’argument Ajoute des parenthèses à
à modifier » l’expression
Retire des parenthèses à
(page précédente) l’expression
79
© Claude Théorêt, M.Ing.
79
Les trajectoires
- Argument de Position
Une position peut-être directement stockée dans l'instruction. Elle est
représentée par *.
Une position peut également être
identifiée à travers une donnée.
C'est une donnée de type robtarget.
• 16 caractères maximum,
• caractères alphabétiques et numériques seulement (et _)
• 1er caractère : alphabétique obligatoirement
80
© Claude Théorêt, M.Ing.
80
Prise en main des robots ABB Cours #2
Les trajectoires
- Argument de Position (suite)
Après avoir déterminé un nom, validez par "OK" (2 fois) pour retrouver
l'écran d'argumentation de l'instruction.
Le nouveau point apparaît dans la liste des données et est immédiatement
utilisé dans la ligne d’instruction.
81
© Claude Théorêt, M.Ing.
81
Les trajectoires
- Argument de Position (suite)
Pour modifier une position, vous devez :
- placer le robot sur la position
souhaitée,
- placer le curseur sur l'instruction ou
la position, et
- appuyer sur la touche
ou
82
© Claude Théorêt, M.Ing.
82
Prise en main des robots ABB Cours #2
Les trajectoires
- Argument de Vitesse
La vitesse de déplacement est donnée par un ensemble de
valeurs. C'est une donnée de type speeddata.
Il existe un ensemble de données déjà "prédéfinies" (elles sont
dans le module système BASE).
v5 pour un déplacement maximum
de 5 mm/s
du CDO.
v10 pour 10 mm/s.
...
v100 pour 100 mm/s.
v150 pour 150 mm/s.
...
v1000 pour 1000 mm/s.
v1500 pour 1500 mm/s.
v2500 pour 2500 mm/s.
...
vmax pour 5000 mm/s.
83
© Claude Théorêt, M.Ing.
83
Les trajectoires
- Argument de Vitesse (suite)
Pour créer une nouvelle donnée de
vitesse, il faut choisir Nouveau sur la
1ère ligne de donnée.
Module de stockage :
MainModule ou USER
84
© Claude Théorêt, M.Ing.
84
Prise en main des robots ABB Cours #2
Les trajectoires
- Argument de Vitesse (suite)
Il faut ensuite donner la Valeur initiale à
cette donnée. Pour une donnée Constante,
c'est sa valeur d'utilisation. Elle est figée
pendant l'exécution du programme
(contrairement à des données de nature
Variable ou Permanente)
Vitesse maximale de
déplacement linéaire
du CDO.
(1000 mm/s pour v1000
par ex)
Changement d’orientation
de l’outil
(en deg/s)
85
© Claude Théorêt, M.Ing.
85
Les trajectoires
- Argument de Zone
L'argument de Zone permet de préciser
le passage sur le point visé. C'est une
donnée de type zonedata.
Il existe un ensemble de données déjà
"prédéfinies" (elles sont dans le module BASE).
86
© Claude Théorêt, M.Ing.
86
Prise en main des robots ABB Cours #2
Les trajectoires
- Argument de Zone
fine
75mm fine
50mm
z50
fine 87
© Claude Théorêt, M.Ing.
87
Les trajectoires
- Approches et retraits appropriés d’un robot
Exemple d’approche et de retrait appropriés :
P1 Z P16
88
© Claude Théorêt, M.Ing.
88
Prise en main des robots ABB Cours #2
Travaux pratiques
Atelier #4 : Déplacement du robot suivant une trajectoire
Manipulations :
Créer un nouveau programme : Atelier4;
89
© Claude Théorêt, M.Ing.
89
Travaux pratiques
Atelier #4 : Déplacement du robot suivant une trajectoire
Manipulations :
Ajouter les instructions nécessaires pour effectuer la
trajectoire suivante en faisant les approches et les
retraits appropriés :
o position d’approche et
de départ
o pHome x position sur la feuille
o p60
p40 x x p10
x p50
p30 x x p20
90
© Claude Théorêt, M.Ing.
90
Prise en main des robots ABB Cours #2
Travaux pratiques
Atelier #4 : Déplacement du robot suivant une trajectoire
Manipulations :
Une position, appelée rRetrait, est enseignée pour
permettre au robot de commencer et de terminer la tâche
à une position sécuritaire;
Effectuer l’apprentissage des localisations à l’aide du
FlexPendant. Les localisations (Robtarget) doivent être
de types « Pers »;
Les localisations (Robtarget) p10 à p50 doivent être à
l’intérieur d’une routine « trajectoire_A »;
Sauvegarder votre programme;
Tester, puis exécuter votre programme en mode manuel. 91
© Claude Théorêt, M.Ing.
91