Pour la partie
3
du cours
Jean-Daniel Dessimoz
C T T=1ms
τ
S
τ=1ms
1
3.1…Commande hiérarchisée (constante de
temps et agilité) corr. 011.11.10
3.1…Commande hiérarchisée
008.11.14, 009.11.10, 010.11.23, 011.11.10
2
3.1…Commande hiérarchisée
007.11.20 Corr 1 de 3 , 008.11.14, 009.11.10 , 010.11.23, 011.11.10P
L’agilité relative du système à régler est la
suivante: T/τ=1ms/1ms=1
Dès lors, comme indiqué sur l’axe de la
fig. ad hoc (cf. cours pp. 7 et 55), un tel
régulateur ne suffit pas.
3.1…Commande hiérarchisée
Corr 2 de 3 , 007.11.20, 008.11.14 009.11.10 , 010.11.23 , 011.11.10P
3
3.1…Commande hiérarchisée
Corr 3 de 3, 007.11.20, 008.11.14, 009.11.10 , 010.11.23, 011.11.17
Pour que ça joue, une ou plusieurs des trois
démarches suivantes sont requises:
1- ajouter un régulateur complémentaire, plus
rapide (système hiérarchisé – cascadé ou
maillé dans le jargon de la régulation)*
2- diminuer l’intervalle d’échantillonnage (2 à
20x),
3- augmenter l’inertie du système à régler
* Par exemple: ajouter un régulateur de vitesse, entre un PC assurant
une régulation de position, et un moteur à courant continu
4
3.2… IEC 61’131
corr 1 de 5 009.11.10 , 010.11.23 , 011.11.17P
• Branchons l’interrupteur (via une
alimentation) à l’entrée 6 (comme au
labo, manipulation 25)
• Branchons l’électrovanne de la pince à la
sortie 4 (comme au labo)
Déclaration
Mieux:
FermetureInterrupteur 32.5
FermeturePince 32.3
5
3.2… IEC 61’131
corr 3 de 5 009.11.10 , 010.11.23 , 011.11.17P
• ST:
FermeturePince:=FermetureInterrupteur;
• IL:
LD FermetureInterrupteur;
ST FermeturePince;
FermetureInterrupteur FermeturePince
FB – Function block
6
3.2… IEC 61’131
corr 5 de 5 009.11.10,010.11.23 , 011.11.17P
Grafcet
FermeturePince:=TRUE;
FermetureIn-
terrupteur
FermeturePince:=FALSE;
FermetureIn-
terrupteur
7
3.2… IEC 61’131
005.12.14 corr , 006.12.01, 007.11.26 , 008.11.18,
009.11.10
Déclaration
• ST:
Sortie3:=Entree2;
• IL:
LD Entree2;
ST Sortie3;
8
3.2… IEC 61’131 005.12.14 corr , 006.12.01
007.11.26, 008.11.18
LD -Ladder
Entree2
Sortie3
FB – Function block
9
3.2… IEC 61’131
• Ecrire un programme pour que la sortie 3
soit le « ou logique » des entrées 4 et 5,
en respectant la norme 1131
10
3.2… Graphe des transformations
009.04.09 , 011.11.17P
Esquisser le graphe
x
des repères et z
z
transformations pour CAM y
l’application
z
« cylindres »: x
y
x Z
Les lettres
majuscules (Z, P, H, y
etc.) représentent des
P z
transformations, qui x atelier
ici, toutes, doivent se x y
comprendre par y z H
rapport au repère
« atelier ». x z y
x
z
z
CAM y
z
y
x
Z
x
P z
x atelier
x y
y z H
x z y
Exercices de Robotique et automatisation, JDZ 09.04.2009 22
11
3.2… Graphe des transformations
009.04.09 , 010.11.29 , 011.11.17P (dans le cours) corr
x
z
z
CAM y
z
y
x
x Z
atelier
y
P x z atelier
x y
y z H
x z y
12
3.2… Consigne de mouvement
Corr 011.11.24
13
3.2… Position d’approche
009.04.09 , 010.11.29 (dans le cours) 011.11.24P
z
20 cm
y
x
y
e.m.std.
Extrémité
fixe
e
PA Pos.appro.
, base, extr.fixe.std
.
14
3.2… Position d’approche
0 32 009.04.09 , 010.11.29 (dans le cours) ) 011.11.24P corr 2 de 4
x
Tool e (pince)
(ligne 1)
e.m.std.
Extrémité
mobile e
PA Pos.appro.
, base, extr.fixe.std
.
x
x
Cf. Tool: pince, en ligne 1
y
Cf. Base: cylindre, en ligne 6
z
z
20 cm
y
15
3.2… Position d’approche
009.04.09 , 010.11.29 (dans le cours) ) 011.11.24Pcorr 4 de 4
3.2… PG?
006.05.12, , 007.11.27 , 008.04.01, 009.04.09 , 010.11.29) 011.11.24P (dans le cours)
x
z
y
y
z
20 cm
16
3.2… PG? 006.05.12, 007.11.27 , 008.04.01 , 010.11.29 )
011.11.24P Corr
Sol. 1
⎛ 0 0 −1 0 ⎞
⎜ ⎟
⎜ 0 1 0 0 ⎟
x
PG =⎜
1 0 0 − 10 ⎟
⎜ ⎟
⎜ 0 0 0 1 ⎟⎠
x
⎝
z
y
y
Sol. 2
⎛ 1 0 0 0 ⎞
z
⎜ ⎟
⎜ 0 1 0 0 ⎟
20 cm
PG = PA ∗⎜
0 0 1 20 ⎟
⎜ ⎟
⎜ 0 0 0 1 ⎟⎠
⎝
Exercices de Robotique et automatisation, JDZ 09.04.2009 33
x
z
y
y
z
20 cm
17
3.2… PG2? 007.02.01 , 008.04.01 , 009.11.17 , 010.11.29,
Corr
⎛ 0 0 −1 0 ⎞
x
⎜ ⎟
x
z
⎜ 0 1 0 0 ⎟
y
PG 2 =⎜
y
1 0 0 − 20 ⎟
y
⎜ ⎟
z
⎜ 0 0 0 1 ⎟⎠
z
⎝
20 cm
18
3.2… Position de Départ, PD?
009.04.09 , 010.11.29 (dans le cours) ) 011.11.24P corr 1 de 3
z
y
Cf. Tool: cylindre, en ligne 10
Cf. Base: cylindre, en ligne 6
cylindre
x
e.m. extr. mobile
manipulé
z
PD
x
10 cm
y
z
y
e.f. extrém. fixe cylindre
posé
Exercices de Robotique et automatisation, JDZ 09.04.2009 38
19
3.2… PD? , 008.04.01 corr 3 de 3,
009.04.09 , 010.11.29 (dans le cours) ) 011.11.24P
z
X Y Z Rz Ry Rz
10 0 0 0 0 0
y
e.f. extrém. fixe
13 BASE INVERSE(z): h : ht
20
3.2… Programmation de robot
0 32 007.02.02, 010.11.29 , 011.11.24P corr 1 de 3
x
Extrémité
fixe
PA
, base, extr.fixe.std
.
Extrémité
fixe
PA
, base, extr.fixe.std
.
21
corr 2 de 3 12 SET ht=hr[i]
x z
z
CAM
y alésage1 alésage2
z y
x
x Z hr[1] hr[2]
y bloc
P H
x z atelier
x y
y z
atelier
x z y
H
22
3.2… Programmation de robot
007.02.02, 010.11.29
x
z
x
y V= 20cm/s
y z
z
x
y convoyeur
x z
x
y V= 20cm/s
y z
23
x
z Corr 2 de 6
CAM y
z
y
x
Z
x
P z
x Convoyeur
y
x
x Cylindre vu x y
y
y z
z H
y
Cylindre bougé
x z y
Exercices de Robotique et automatisation, JDZ 19.11.2009 47
CV caméra
Cylindre vu
Corr 3 de 6
Set T=Inverse(P):CV
Set Tavance=T:Trans(dx,0,0,0,0,0):Inverse(T)
24
Cylindre bougé
convoyeur pa
Nouvelle
Tavance
position
d’approche
caméra
Cylindre vu pa
Position
d’approche
Corr 4 de 6
6
BASE
INVERSE(z):p :Tavance
; BASE permet de
redéfinir ce qui constitue l'extrémité fixe du bras; celle-ci
est maintenant définie sur le cylindre
qui a bougé
7
MOVE
pa
; la pince se déplace en position
d'approche,
8
MOVES pg
; puis de prise du cylindre (en ligne
droite),
9
CLOSEI
; ferme la pince, avec effet immédiat
10
TOOL
e : INVERSE(pg)
; définit l'extrémité
mobile du bras sur le cylindre (voir fig. 3.2.12)
11
MOVE
pd
; déplacement en position de départ
25
Sol 2 Exemple en V+, 2Corr
de 46 de 6
, 010.11.30
6
BASE
INVERSE(z):p
; BASE permet de
redéfinir ce qui constitue l'extrémité fixe du bras; celle-ci
est maintenant définie sur le cylindre
7
MOVE Tavance:pa
pa
; la pince se déplace en position
d'approche,
8
MOVES pg
; puis de prise du cylindre (en ligne
droite),
9
CLOSEI
; ferme la pince, avec effet immédiat
10
TOOL
e : INVERSE(pg)
; définit l'extrémité
mobile du bras sur le cylindre (voir fig. 3.2.12)
11
MOVE
pd
; déplacement en position de départ
26
3.3.3…Coordination Corr
007.12.04, 008.11.28
3.3.4…Lois de mouvement
007.12.04, 008.11.28, 009.11.17, 010.11.30, 011.11.29 ,
012.12.03 , 013.11.19
Quel est le temps mis par un robot P2R2 pour
faire un mouvement M, sachant que:
– le mouvement est coordonné (interpolation
linéaire des variables d'articulations);
– les vitesses maximales sont respectivement
de 0.8 m/s, 1.4 m/s, 140°/s, 60°/s;
– le mouvement se fait à vitesse constante;
– le déplacement fait par chacune des
articulations vaut 0.1 m, 0.7 m, 30°, 18° ?
Esquisser les courbes de déplacement et de
vitesse
Exercices de Robotique et automatisation, JDZ 09.04.2009 54
27
3.3.4…Lois de mouvement 007.12.04
3.3…Lois de mouvement
005.11.05, , 006.12.01, 007.12.03, 008.11.28 , 009.11.17, 010.11.30 ,
011.12.06 , 012.12.03 , 013.11.19
28
3.3…Lois de mouvement
corr 005.11.05, 006.12.01, 007.12.03
011.12.06 , 012.12.03
, 008.12.02 , 009.11.23 ,
Cas de l' accélération inconnue:
1. 40
1. 20
d 1. 00
0. 80
0. 60
2
0. 40
0. 20
0. 00
t t
0. 00 0. 10 0. 20 0. 30 0. 40 0. 50 0. 60 0. 70 0. 80 0. 90
dépl.
4. 00
3. 50
2
3. 00
2. 50
2
d 1 ⎛ t ⎞
2. 00 S ér i e1
1. 50
1. 00
0. 50
= a⎜ ⎟
0. 00
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
2 2 ⎝ 2 ⎠
15 .0 0
10 .0 0
5 .0 0
0 .0 0 S é r ie 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2 21
-‐ 5 .0 0
-‐ 10 .0 0
-‐ 15 .0 0
3.3…Lois de mouvement
corr 005.11.05, 006.12.01,
007.12.03
011.12.06 , 012.12.03
, 008.12.02 , 009.11.23 ,
29
3.3…Lois de mouvement
corr2 005.11.05, , 006.12.01 , 007.12.03 , 008.12.02 , 009.11.23 , 011.12.06 ,
012.12.03
B. Hypothèse d'un profil véritablement trapézoïdal en
vitesse:
Deux inconnues (a, tacc) et deux équations (déplacement
et vitesse)
⎛ 1 2 t ⎞ vmax = tacc ⋅ a
d = ⎜ at acc + ( − t acc ) ⋅ vmax ⎟ ⋅ 2
⎝ 2 2 ⎠
=> ⎛⎜⎝ 12 ⋅ v ⋅ t + ( 2t − t ) ⋅ v ⎞⎟⎠ ⋅ 2 − d = 0
max acc acc max
t
=> vmaxtacc + ( − tacc ) ⋅ vmax ⋅ 2 − d = 0
d 2
=> t acc = t −
vmax => tacc = 0.5
ce qui n’est pas possible car plus grand que t/2.
Ceci valide aussi l’hypothèse triangulaire (cas A).
(Cas général: voir aussi programme Excel)
Exercices de Robotique et automatisation, JDZ 09.04.2009 59
3.3…Lois de mouvement
corr 007.12.03
005.11.05, , 006.12.01,
011.12.06 , 012.12.03
, 008.12.02 , 009.11.23 ,
30
3.3… Coordination 005.11.05, 006.12.01
1.5
m
1m
3.3… Coordination
005.11.05, 006.12.01 corr 1 de 2
• Le déplacement, la vitesse et
l’accélération de la roue droite
sont proportionnels au rapport
des rayons de courbure Rd/
Rg=0.5.
ddroit = 0.75 m,
vmax droit = 1,87 m/s, et
adroit = 4,69 m/s2.
Exercices de Robotique et automatisation, JDZ 09.04.2009 62
31
3.3… Coordination
corr 2 de 2 005.11.05, 006.12.01
d 1. 60
1. 40
d 2
1. 20
1. 00
0. 80
0. 60
4 0. 40
0. 20
0. 00
t t
0. 00 0. 10 0. 20 0. 30 0. 40 0. 50 0. 60 0. 70 0. 80 0. 90
dépl.
4. 00
3. 50
2
3. 00
2. 50
2. 00 S ér i e1
1. 50
1. 00
0. 50
0. 00
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
15 .0 0
10 .0 0
5 .0 0
0 .0 0 S é r ie 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2 21
-‐ 5 .0 0
-‐ 10 .0 0
-‐ 15 .0 0
3.4…Servocommandes , 011.12.08,
012.12.03, 013.12.03
32
3.4…Servocommandes
Corr 1 de 3 , 011.12.08, 013.12.03
3.1…Commande hiérarchisée
Corr 2 de 3, 011.12.08 , 012.12.03
Ac 10
T
Ar
C
As
Exercices de Robotique et automatisation, JDZ 06.12.2011 66
33
3.4…Servocommandes
Corr 2b de 3
, 011.12.08
2 5 10 20 Ar
Chaînes cascadées/hiérarchisées PID PI P Régulateur TOR
3.1…Commande hiérarchisée
Corr 3 de 3, 011.12.08, , 013.12.03
34
3.4…Servocommandes
006.01.24b, 006.11.27 , 010.12.06
3.4…Servocommandes
006.11.27,
006.01.24b, corr 1de2 010.12.06
35
3.4…Servocommandes
006.01.24b, 010.12.06 corr 2 de 2
C T
τ
S
3.4.1 Commande et
asservissement d'axes 007.12.04, 008.12.02,
009.11.23,010.12.06 , 011.12.06
36
3.4.1 Commande et asservissement
d'axes Corr 1 de 3 007.12.04 , 008.12.02 , 009.11.23 , 011.12.06
37
3.4.1 Commande et asservissement
d'axes Corr 3 de 3 , 008.12.02 , 009.11.23, 011.12.06
38
Exo 3…Servocommandes 006.01.24
corrigé 1 de 3
• Ziegler-Nichols ont proposé diverses méthodes pour
dimensionner un régulateur PID.
• Celle que nous présentons ici est particulièrement
intéressante ; simple et fondamentale. C’est une
méthode qui est de nature expérimentale. Il s’agit de
brancher le régulateur au système avec des gains P, I et
D initialement nuls, puis d’augmenter progressivement
le gain de la branche proportionnelle (KP).
• Dans certains cas on peut augmenter ce gain
arbitrairement et cela va de mieux en mieux. Un réglage
tout-ou-rien est alors indiqué.
• Si Kc=12, le tableau ZN propose Kp=0.59*Kc =7.18
Exercices de Robotique et automatisation, JDZ 09.04.2009 77
corrigé 2 de 3
• Dans d’autres cas, le système tend à osciller même
avec un gain très faible, et il faut changer d’approche.
On ne peut utiliser un régulateur PID dans ce contexte
(cf. systèmes hiérarchisés).
• Le cas intéressant ici est celui où un régulateur PID (ou
P, PI, etc.) est à la fois nécessaire et utile.
• Dans ce cas on observe généralement que
l’augmentation de KP est d’abord judicieuse
(amélioration en terme de précision, de vitesse de
régulation), jusqu’à une certaine valeur critique, Kc, au-
delà de laquelle le système se met à osciller.
39
Exo 3.4…Servocommandes
corrigé 3 de 3 006.01.24
Exo 3.5…Programmation
005.11.15, 007.12.10
40
Exo 3.5…Programmation 007.12.10
corrigé 2007
1 : MoveAGN(Trans(50,60,30));
break;case
2: ;
break;case
41
Exo 3.5…Programmation
corrigé 007.12.10
• Ecrire un programme en ARIA qui
provoque le déplacement d’un
préhenseur de robot industriel en position
(50,60, 70, 300)
CONST NoCarte=4; (* servocommande
pour rotation de l’outil / préhenseur *)
D3n_absMove(1,50,60,70);
Ax_absMove(NoCarte, 30);
Exercices de Robotique et automatisation, JDZ 09.04.2009 83
Exo 3.5…Programmation
corrigé bis 007.12.10
• Ecrire un programme en ARIA qui provoque le
déplacement d’un préhenseur de robot industriel
en position (50,60, 70, 300)
CONST NoCarte=4;
D3n_absMove(1,50,60,70);
Ax_absMove(NoCarte, 30);
repeat until D3n_Q_EndMoveReached(1);
repeat until Ax_Q_EndMoveReached(NoCarte);
42
Exo 3.5…Programmation 007.12.10
Exo 3.5…Programmation
Corr 007.12.10
43
Exo 3.5…Programmation
Corr 007.12.10
Exo 3.5…Programmation
Corr bis 007.12.10
44
Exo 3.5…Programmation
Rapid/ABB corrigé 1 de 2 007.12.10
3.5…Programmation
Rapid/ABB corrigé 2 de 2
007.12.11
45
Exo 3.5…Programmation 005.11.18,
006.11.27, 007.12.10
int NSIDetecteurDeBleu = 12 ;
int NSOOuvertureVanneSoufflerie = 3 ;
…
10 : if (SignalIn(NSIDetecteurDeBleu))
SignalOutAGN(NSOOuvertureVanneSoufflerie, true) ;
else SignalOutAGN(NSOOuvertureVanneSoufflerie, false) ;
break;case
11 : GoState (10);
break;case
Exercices de Robotique et automatisation, JDZ 09.04.2009 92
46
Exo 3.5…Programmation 005.11.18, 006.11.27
V+ corrigé 1 de 2 007.12.11
if (Sig(1000+NSIDetecteurDeBleu) <>0)
Signal NSOOuvertureVanneSoufflerie
else Signal -NSOOuvertureVanneSoufflerie
End
00000000 0 faux
11111111 -1 vrai
00000001 1 vrai
11111110 -2 vrai…
Exercices de Robotique et automatisation, JDZ 09.04.2009 94
47
Exo 3.5…Programmation 005.11.18, 006.11.27
// déclaration
dio NSIDetecteurDeBleu, NSOOuvertureVanneSoufflerie
dioLink(NSIDetecteurDeBleu ,io:bIn11)
dioLink(NSOOuvertureVanneSoufflerie ,io:bOut2)
if (NSIDetecteurDeBleu )
dioSet(NSOOuvertureVanneSoufflerie ,true)
else
dioSet(NSOOuvertureVanneSoufflerie ,false)
endIf
48
3.5…Programmation
Rapid/ABB corrigé 1de3
007.12.11
Exo 3.5…Programmation
Rapid/ABB corrigé 2 de 3 007.12.11
49
Exo 3.5…Programmation
Rapid/ABB corrigé bis 3 de 3 007.12.11
[cm]
ϕ = 90°
80
table
robot
X [cm]
Z
70
table Exercices de Robotique et automatisation, JDZ 09.04.2009 100
50
Exo 3.5… Langage de program-
mation pour robots 006.11.27 corrigé
• Solution 1 (Piaget 2006):
1: MoveAGN(Trans(70,80,90));
break;case
2: ;
51
3.5… corrigé 005.10.01(suite)
• Solution a (Piaget 2005):
location MaPos;
1: SetTrans(70,80,90);
break; case
2: MaPos=Trans;
break;case
3: MoveAGN(MaPos);
break;case
Exercices de Robotique et automatisation, JDZ 09.04.2009 103
0 1
Exercices de Robotique et automatisation, JDZ 09.04.2009 104
Interrupteur
52
3.5 Programmation de robots langages VAL/V+,
ARIA, ABB/Rapid, Comau … Corr (1 de 9), 009.11.24, 011.12.08
Pseudo-langage:
Boucle infinie
Aller en S;
Si interrupteur ON alors
Aller en M1
sinon
Position de
Aller en M2; sécurité
S
Prendre l'objet;
Aller en W; Magasin Magasin
Zone de
Déposer l'objet; M1
tr avail
M2
Fin de boucle. W
DELAY 0.2
Magasin Magasin
MOVE w M1 Zone de M2
BREAK tr avail
W
OPENI
DELAY 0.2 Fig. Prise et dépose d'un objet
END
Exercices de Robotique et automatisation, JDZ 09.04.2009 106
53
3.5…Programmation de robots langage
V+ Corr (2 de 9), 009.11.24, 011.12.08
WHILE true DO
MOVE s
IF SIG(1003)<>0 THEN
MOVE m1
ELSE
MOVE m2
END
BREAK Position de
CLOSEI ; aussi possible: sécurité
signal 2 par ex. S
DELAY 0.2
Magasin Magasin
MOVE w M1 Zone de M2
BREAK tr avail
W
OPENI
DELAY 0.2 Fig. Prise et dépose d'un objet
END
Exercices de Robotique et automatisation, JDZ 09.04.2009 107
54
3.5…Programmation de robots langage
Aria-HEIG-VD Corr (4 de 9) , 009.11.24, 011.12.08
WHILE (true)
begin
Move(s); (* cf. applistd *)
if Ax_Q_In (NoCarte,NSIChoixM1)=1 then
Move (m1);
ELSE Position de
sécurité
Move (m2); S
Aspiration;
Move (w); Magasin Magasin
M1 Zone de
Ejection; tr avail
M2
End; W
55
3.5…Programmation de robots langage
ABB/Rapid Corr (6 de 9) , 009.11.24, 011.12.08
WHILE (true)
MoveJ s, v200, fine, tool1;
IF di3 = true THEN
MoveJ m1, v200, fine, tool1;
ELSE
MoveJ m2, v200, fine, tool1;
ENDIF
Wait /InPos
Set gripper Position de
WaitTime 0.2 sécurité
MoveJ w, v200, fine, tool1; S
Wait /InPos
Reset gripper Magasin Magasin
M1 Zone de M2
WaitTime 0.2 tr avail
End; W
waitTime(0.2)
Exercices de Robotique et automatisation, JDZ 09.04.2009 112
endWhile;
56
3.5…Programmation de robots langages
Piaget Corr (8 de 9) , 009.11.24, 011.12.08
Int NSOFermerPince=2; // canal 2
1: MoveAGN (s);
break; case
2: IF (SignalIn(3))
MoveAGN( m1);
else
MoveAGN( m2);
break; case
3: SignalOutAGN(NSOFermerPince, true);
break; case
4: SleepAGN(0.2); Position de
break; case sécurité
5: MoveAGN( w); S
break; case
6: SignalOutAGN(NSOFermerPince, false); Magasin Magasin
Zone de
break; case M1 M2
tr avail
7: SleepAGN(0.2); W
break; case
8: GoState(1);
Fig. Prise et dépose d'un objet
break; case
57