Académique Documents
Professionnel Documents
Culture Documents
GPA546
Robots industriels
Cours 2 : Rvision
Cours 2 : Rvision
(+65, 245) (+200, 200) ou 380 tours max !!! (+115, 115)
(+120, 90)
Attention !
Dans cette configuration, le robot est en singularit (axes 4 et 6 sont aligns)
(+180, 180)
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
11
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
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()).
Exemple de fonction :
FUNC num veclen(pos vector) RETURN SQRT(POW(vector.x,2)+POW(vector.y,2)+POW(vector.z,2)); ENDFUNC
19
20
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
(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
23
25
26
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;).
33
Z0 Y0 ZR YR
X0 Rfrentiel Base
Rfrentiel Atelier
XR
34
oframe
Y
uframe
ZR YR
Z Y X
wobj0
XR Rfrentiel ATELIER
X
oframe = uframe
Y
35
XR Rfrentiel ATELIER
36
Y1 X1 X2
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 ...
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