Vous êtes sur la page 1sur 21

1

GPA546
Robots industriels

Ilian Bonev, ing., Ph.D. Professeur, TS

Cours 2 : Rvision

IRB 1600 - 5/1.45 type A

IRC5 avec FlexPendant

Cours 2 : Rvision
(+65, 245) (+200, 200) ou 380 tours max !!! (+115, 115)

(+400, 400) ou 576 tours max !!!

(+120, 90)

Attention !
Dans cette configuration, le robot est en singularit (axes 4 et 6 sont aligns)

(+180, 180)

Mouvement des axes (tous les axes en position zro)

Cours 2 : Rvision

DANGER !

Cours 2 : Rvision

Cours 2 : Rvision

Cours 2 : Rvision
Modlisation dune cellule Modlisation doutils Programmation interactive diteur RAPID Programmation MultiMove Simulation

Cours 3 : Langage RAPID

11

Structure dun programme en RAPID


Pick_and_Place_Cell_A.pgf
<?xml version="1.0" encoding="ISO-8859-1" ?> <Program> <Module>ModuleA.mod</Module> <Module>MainModule.mod</Module> </Program>

MainModule.mod
MODULE MainModule PROC main() Rotuine1; Routine2; ENDPROC PROC Routine1() MoveL; ENDPROC PROC Routine2() MoveL; ENDPROC ENDMODULE

ModuleA.mod
MODULE ModuleA PROC RoutineA1() MoveL; MoveL; ENDPROC ENDMODULE

12

Exemple dun 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

13

Rgles de base
Chaque instruction se termine par un point-virgule (sauf FOR, IF, PROC, etc.). Une ligne commenant par ! ne sera pas interprte. RAPID nest pas sensible la casse, mais il est recommand dcrire tous les mots rservs (VAR, PROC, etc.) en majuscules. Le premier caractre dun identificateur doit tre une lettre. Les autres caractres peuvent tre des lettres, des chiffres ou _ . La longueur maximale est 32 caractres. RAPID est un langage structure non impose, ce qui signifie que lon peut utiliser des espaces nimporte o sauf dans les identificateurs, les mots rservs, les valeurs numriques, et les marques de rservation (<SMT>, <EXP>, etc.).

14

Sortes de donnes
Trois sortes : constantes, variables et persistantes. Une constante reprsente une valeur statique et peut seulement recevoir une nouvelle valeur manuellement. Une variable peut galement recevoir une valeur en cours dexcution du programme. Une persistante peut tre dcrite comme tant une variable persistante. Lorsquun programme est sauvegard, la valeur dinitialisation reflte la valeur actuelle de la persistante. Exemples :
CONST num Decalage := 200; CONST string auteur := "Jean Tremblay"; CONST speeddata LowSpeed := [250,500,5000,1000]; VAR bool PresenceTrou; VAR num N; VAR num maxno{10} := [1,2,3,4,5,6,7,8,9,10]; PERS robtarget table := [[300,0,500],[0,1,0,0], [0,-1,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

15

Types de donnes
Trois types : atomic, record et alias. Un type de donnes est atomic (atomique) dans le sens ou il nest pas dfini en se basant sur un autre type et quil ne peut pas tre divis en parties ou composantes (bool, num, dnum et string). Un type de donnes record (denregistrement), est un type avec des composantes ayant un nom et un ordre, par exemple pos. Une composante pourra tre soit du type atomic soit du type record.
VAR pos pos1 := [200, 300, 150]; VAR orient orient1 := [1, 0, 0, 0]; VAR pose frame1; frame1:= [pos1,orient1]; pos1.x := pos1.x + 20; frame1.trans.y := 300;

Un type de donnes pseudonymes est, par dfinition, quivalent un autre type. Les types pseudonymes permettent de classer les objets de donnes. Par exemple, dionum est quivalent num.

16

Routines
Trois types : procdures, fonctions et interruptions. Les procdures ne fournissent pas de valeur et sont utilises dans le contexte des instructions. Les fonctions fournissent une valeur dun type spcifique et sont utilises dans le contexte des expressions. Les routines dinterruption fournissent un moyen de grer les interruptions. Locales (LOCAL
PROC routine1())

et globales (PROC

routine2()).

Quatre types de paramtres :


PROC routine1(num in_par, INOUT num inout_par, VAR num var_par, PERS num pers_par)

Exemple de fonction :
FUNC num veclen(pos vector) RETURN SQRT(POW(vector.x,2)+POW(vector.y,2)+POW(vector.z,2)); ENDFUNC

19

Types de donnes : Records


robtarget : Dfinit la localisation dun rfrentiel doutil du robot par rapport un autre rfrentiel, la configurations des axes du robot, et les axes externes. Les composantes : trans de type pos; rot de type orient; robconf de type confdata; extax de type extjoint (toujours [9E9,9E9,9E9,9E9,9E9,9E9] pour nos robots).

PERS robtarget Retrait:=[[-306.31,517.44,768.63], [0.263201,-0.442148,-0.833986,-0.199236], [1,1,-3,0], [9E9,9E9,9E9,9E9,9E9,9E9]];

20

Types de donnes : Records


orient : utilis pour les orientations. Lorientation est dcrite sous la forme d'un quaternion compos de quatre lments: q1, q2, q3 et q4, de type num. L'orientation doit tre normalise, c'est--dire que la somme des carrs doit tre gale 1. Absolument non intuitives et difficiles utiliser!!! Ne jamais entrer une orientation en quaternions directement! Heureusement, il y a les fonctions suivantes :
object.rot := OrientZYX(roll1, pitch1, yaw1); yaw2 := EulerZYX(\X, object.rot); pitch2 := EulerZYX(\Y, object.rot); roll2 := EulerZYX(\Z, object.rot); !Note : il y a 50% de probabilit que yaw2 yaw1, etc.

roll yaw pitch

zR
Roll

21

Angles dEuler
Convention dangles dEuler utilise par ABB Pitch

Yaw

yR

interprtation 1 :

ZR (r) XR (w)

Y(p) YR (p) ZR

X(w)
interprtation 2 :

xR

Applet Java

y2zR x2 y3 z1 z y2 z2 1 z x1 y2 y z2 zx y1 x2 90o 3 xR z2 x1 180o z

(r) Exemple : des y12 Lordre w = rotations est important!!! y 90o y1 p = 90o y y2 r = 180o

y
-90o z y 3

Attention !
Il y a 2 ou solutions [180o,180o]
solution 1 : w, p, r solution 2 : w 180o, 180o p, r 180o

yR

z2

22

Types de donnes : Records


confdata : Configuration daxes du robot (cf1, cf4, cf6 et cfx). Dfini sous la forme de la rvolution de quart de cercle des axes 1, 4 et 6. La premire rvolution de quart de cercle positive allant de 0 90 est fixe 0, ensuite 1, 2, 3, etc., ou -1, -2, etc. Trs difficile utiliser!!! On peut ignorer la configuration avec
ConfL \Off ou ConfJ \Off.

23

Types de donnes : Records


La composante cfx est de 0 7.

25

Types de donnes : Records


speeddata : permet de spcifier la vitesse laquelle le robot et les axes externes se dplacent. Les composantes : v_tcp : vitesse du point central de loutil (TCP) en mm/s; v_ori : vitesse angulaire du TCP, exprime en degrs/s; v_leax : vitesse des axes externes linaires en mm/s; v_reax : vitesse des axes externes rotatifs en mm/s; plusieurs vitesses prdfinies : v5, v10, , v6000, v5000, vmax. VelSet : permet de changer la vitesse programme (VelSet Override Max) AccSet : permet de changer lacclration.

26

Types de donnes : Records


zonedata : permet de spcifier la faon dont une position doit tre termine, c'est--dire quelle distance de la position programme les axes doivent se trouver avant de se dplacer vers la position suivante. plusieurs points de passages prdfinies : z0, z1, , z200. point darrt : fine.

fine
75mm 50mm

fine z50

fine

28

Instructions de mouvement
MoveL : permet de dplacer loutil du robot, dune pose une autre, en gardant le TCP le long dune trajectoire linaire (sauf raccordements). aucune option pour contrler le changement dorientation de loutil ( slerp interpolation ) trs sensibles aux singularits (on peut utiliser SingArea \Wrist mais) pour des petits dplacements (la somme des mouvements pour chaque paire daxes 1+4, 1+6, 3+4 ou 3+6 ne doit pas dpasser 180) exemples :
MoveL rtStart, v2000, z40, tPince_bout\WObj:=fixture; MoveL *, v2000 \T:=5, z40, tPince_bout; MoveL \Conc rtStart, v2000, z40, tPince_bout;

30

Instructions de mouvement
MoveJ : permet de dplacer le robot rapidement dun point un autre lorsquil nest pas ncessaire que ce dplacement se fasse en ligne droite. Le robot et les axes externes se dplacent vers la destination le long dune trajectoire non linaire. Chaque axe est dplac selon une vitesse daxe constante et tous les axes atteignent la destination en mme temps, ce qui rsulte en une trajectoire Cartsienne non linaire. ConfJ \Off : le robot ne change pas la configuration des axes 1 3, mais il recherche la solution pour les axes 4 6 la plus proche de celle du dpart.

31

Instructions de mouvement
MoveJ : permet de dplacer loutil du robot, dune pose une autre, en gardant le TCP le long dune trajectoire circulaire. CirPathMode : permet de slectionner diffrents modes de rorientation de loutil au cours des mouvements circulaires. trs sensibles aux singularits (on peut utiliser SingArea \Wrist mais) exemple :
MoveC p_int, p_final, v500, z30, tPince_bout;

32

Instructions de mouvement
MoveAbsJ : permet de dplacer le robot vers une configuration donne, dfinie dans les positions daxes. Utilis lorsque cette configuration est singulire. MoveJDO (ou MoveLDO) : MoveJ (ou MoveLDO) + le signal de sortie logique spcifi est mis 1/remis 0 au milieu du raccordement. CalcRobT : permet de calculer des donnes robtarget partir de donnes jointtarget. CalcJointT : permet de calculer les angles des axes du robot et des axes externes partir de donnes robtarget spcifies. Offs : permet de dcaler la position dun robot dans le repre objet. (MoveL Offs(p2, 0, 0, 10), v1000, z50, tool1\WObj:=fixture;). RelTool : permet dajouter un dplacement et/ou une rotation, exprim dans le systme de coordonnes de loutil. (MoveL RelTool(CRobT,0,0,10 \Rz:=25), v1000, z50, tool1;).

Systmes de coordonnes (Rfrentiels)


XF Rfrentiel Poignet (tool0) ZF YF YT XT Rfrentiel Outil ZT

33

Z0 Y0 ZR YR

tooldata tGun := [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]];

X0 Rfrentiel Base

Rfrentiel Atelier

XR

34

Systmes de coordonnes : wobj


Z

oframe
Y

uframe
ZR YR

Z Y X

wobj0
XR Rfrentiel ATELIER
X

oframe = uframe
Y

35

Systmes de coordonnes : wobj


wobjdata : permet de dcrire lobjet de travail que le robot soude, excute, dans lequel il se dplace, etc. Les composantes : robhold : indique si le robot maintient lobjet de travail dans la tche de programme rel (TRUE ou FALSE); ufprog : dfinit si un repre utilisateur fixe est utilis; ufmec : ""; uframe : repre utilisateur (type pose, p/r wobj0); oframe : repre objet (type pose, p/r uframe); Exemples :
Feuille := DefFrame(P_1,P_2,P_3); WobjFeuille.uframe := Feuille;
ZR YR uframeZ Y X X Z oframe Y

WobjFeuille.oframe.trans := [100,130,0]; WobjFeuille.oframe.rot := OrientZYX(90,0,0);


wobj0

XR Rfrentiel ATELIER

36

Systmes de coordonnes : wobj

Y1 X1 X2

Enregistre pour mmoriser les points de mesure (pour contrles ultrieurs)

X1 Y1 X2

37

Instructions I/O
SetDO : permet de changer la valeur dun signal de sortie digitale, avec ou sans retard de synchronisation. (SetDO \SDelay := 0.2, DO01_EE_PINCE01, high; SetDO \Sync ,do1, 0;) Set (ou Reset) : mettre (remettre) un signal de sortie 1 (0). Pour lire la valeur dun signal dentre :
IF DI09_ZS0101 = 1 THEN ... WaitDI DI09_ZS0101, 1; WaitDI diPresenceBloc,1 \MaxTime:=2000 \TimeFlag:=NoBloc; WHILE not TestDI(DI09_ZS0101) DO ...

WaitTime : attendre un laps de temps donn en secondes.

38

Synchronisation I/O

p10
P40

P30
P20

39

Contrle du programme
FOR : rptition un nombre donn de fois.
FOR i FROM 1 TO 10 DO routine1; ENDFOR

pas besoin de dclarer la variable du compteur ; cette variable est accessible uniquement lintrieur du boucle (par exemple, on ne peut pas utiliser i dans la routine routine1).

40

Communication laide de TP
TPErase : permet deffacer lcran du FlexPendant. TPWrite : permet dcrire du texte sur le FlexPendant. (TPWrite "Max. TCP speed in mm/s for my robot =" \Num:=MaxRobSpeed();) TPReadFK : permet dcrire du texte sur les touches de fonction et dtecter la touche appuye. (TPReadFK reponse, "Encore?", stEmpty, stEmpty, stEmpty, "Oui", "Non"; o reponse est de num) TPReadNum : permet lire un nombre partir du FlexPendant. (TPReadNum reponse, "Nombre de blocs?";)

41

Communication laide de linterface util.


UIMsgBox, UIMessageBox : permet crire un message sur le FlexPendant. UINumEntry : permet de lire une valeur numrique sur le FlexPendant. UINumTune : permet dajuster une valeur numrique sur le FlexPendant. UIAlphaEntry : permet de lire une chane sur le FlexPendant. UIListViewEntry : permet de dfinir des lignes de menu qui incluent du texte et des icnes sur le FlexPendant.