diaporama du cours n°4 au format

publicité
Polytech'Nice-Sophia, Cours de Commande par Ordinateur, séance n°4
Jean-Paul Stromboni, SI4 SAR et VIM et MAM4 VIM
Commande en boucle fermée et par retour d’état de
l'alunissage de Lunar Lander
Contenu du cours :
1.
2.
3.
4.
Principe de la commande par retour d'état
Effet de la discrétisation sur les valeurs propres
Reproduire le temps de réponse d’une valeur propre réelle
Reproduire le temps de croisement de deux valeurs propres
complexes conjuguées
5. Commande par retour d’état de la vitesse de Lunar Lander
6. Comparaisons de deux retours d’état pour l’alunissage
* document http://cours.polytech.unice.fr/intcom/4.seance/RetourEtat.ppt et
script solution du TD 4-2012.doc : TD4RetourEtat.sce et TD4.sce.
22/04/2017
Page 1
Principe de la commande par retour d’état
• À tout instant, le vecteur de commande est calculé à partir de la valeur
du vecteur d’état retourné par les capteurs, et du vecteur d’état désiré,
ou consigne.
• Soit l’équation d’état : X n 1  Ad X n  BdU n
• Voici la loi de commande par retour d’état :
•
•
•
•
U n  K Cn  X n 
Cn est la consigne, ou référence, de la commande
Cn – Xn est l’erreur de commande
K est la matrice de commande ou de gain du retour d’état
il s’agit d’un système en boucle fermée, loi de commande+équation
d’état, ou encore d’une contre réaction (feedback)
22/04/2017
page 2
Formulation du retour d'état pour Lunar Lander
X n 1
axn


 1
 Ad X n  BdU n  Ad X n  Bd 

a

g
/

yn
lune


 a xn 


 a   K Cn  X n 
 yn 
X n 1
•
•
•
•
2
0


 (3)
 ( Ad  Bd K ) X n  Bd KCn  Bd 
 g lune /  
Ad- BdK est la matrice d’état du système bouclé
BdK est la matrice de commande
K est une matrice (2 lignes, 4 colonnes)
Question : comment calculer K ?
22/04/2017
Page 3
Calcul de K par placement des valeurs propres de la
matrice d’état du système bouclé (pole mapping)
•
Les valeurs propres vd de la matrice d’état, qui sont aussi les
pôles de la fonction de transfert, ou encore les racines du
polynôme caractéristique, déterminent le comportement
dynamique d’un système en temps discret :
–
–
La stabilité au sens EBSB (si |vd| < 1)
La rapidité (plus la partie réelle de vd est faible en valeur absolue,
et plus le temps de réponse est petit)
•
–
La forme du régime transitoire :
•
•
•
Si vd=0, on obtient la réponse pile, réponse en temps fini !
Une valeur propre vd réelle donne un régime transitoire apériodique
Valeurs propres complexes conjuguées vd et vd* : régime sinusoïdal amorti
On calcule K de façon à imposer les valeurs propres de Ad-BdK
22/04/2017
Page 4
Effet de la discrétisation sur les valeurs propres
•
Soit un processus en temps continu de matrice d’état A discrétisé à la période
d’échantillonnage Te. On démontre que Ad, la matrice d’état du processus
discrétisé vaut :
2
Ad  e ATe
•
n
A2Te
AnTe
 I  ATe 
 ... 
 ...
2
n!
En conséquence, on obtient les valeurs propres vd de la matrice Ad à
partir des valeurs propres v de la matrice A en utilisant la relation :
vd  e vTe
•
On utilise ce résultat pour reproduire dans un système discret le
comportement dynamique connu d’un processus continu :
1. Du premier ordre, c’est-à-dire doté d’une unique valeur propre v réelle
2. Du second ordre, c’est-à-dire doté d’une paire de valeurs propres
complexes conjuguées : v, v*
22/04/2017
Page 5
Reproduction du comportement apériodique du premier ordre :
une valeur propre réelle –a imposant un temps de réponse 3/a
s  as(t )  s(t )  e  at s(0)
p  a racine équation caractéristique
s(tr 5% )  0.05s(0)  tr 5%  3 / a
sk 1  e  aTe sk  s(kTe )  sk  e  akTe
z  e aTe
une valeur propre p= - a, a = 10 Hz
valeur propre z=exp(-a*Te), a= 10 Hz, Te=1/25s
1
1
0.8
0.8
0.6
0.6
observation
observation
racine équation caractéristique
0.4
0.2
0.4
0.2
0
0
0
0.2
0.4
0.6
0.8
1
0
temps t (s)
Quelle est la relation entre z et p ?
22/04/2017
0.2
0.4
0.6
0.8
1
temps t (s)
z  e  aTe  eTe p
Page 6
Reproduction du comportement indiciel sinusoïdal amorti du
second ordre : deux valeurs propres complexes conjuguées
s(t )  2m0 s(t )  0 2 s(t )  0 2e(t ), 0  m  1
p2  2m0 p  0  0, 0  m  1
2
z e
( p2 , p2 )  m0  i0 1  m 2 
( z2 , z2 )  e m0Te  e i
Te p

1 m 2 0Te

sn2  ( z2  z2 )sn1  z2 z2 sn  1  ( z2  z2 )  z2 z2 en
m=.707, w0=10rd/s
m=.707, w0=10rd/s, Te=1/25s
1.4
1.4
tc
1.2
1.2
1
observation
observation
1
0.8
tr5%
0.6
0.8
0.6
0.4
0.4
0.2
0.2
0
0
0
0.2
0.4
0.6
temps t (s)
22/04/2017
0.8
1
0
0.2
0.4
0.6
0.8
1
temps t (s)
Page 7
Étude de l’effet de l'amortissement réduit m et de la pulsation propre
0 sur le temps de réponse à 5% (en abscisse, on porte t/ 0 et non t)
( p2 , p2 )  m0  i0 1  m 2 , 0  m  1
( p2 , p3 )  m0  0 m 2  1, m  1
Amplitude
Step Response
1.8
1.75
1.7
1.65
1.6
1.55
1.5
1.45
1.4
1.35
1.3
1.25
1.2
1.15
1.1
1.05
1
0.95
0.9
0.85
0.8
0.75
0.7
0.65
0.6
0.55
0.5
0.45
0.4
0.35
0.3
0.25
0.2
0.15
0.1
0.05
0
¬ m=0.1
m
0.1
¬ m=0.456
0.456
0.707
¬ m=0.707
1
¬ m=1
2
¬ m=2
0 1 2 3 4 5 6 7 8 9 101112131415161718192021222324252627282930
Time (sec.)
22/04/2017
Page 8
tr5%
Abaque tr 5%0 en fonction de l’amortissement réduit m tracé par
Matlab (on note qu’au minimum on a tr5%= 2.93/0 et tc= 3.4/0)
22/04/2017
Page 9
Placement des pôles (valeurs propres) avec Scilab
• Après avoir déterminé les valeurs propres souhaitées pour la
matrice d’état du système bouclé, il faut calculer la matrice K
– La fonction ‘ppol’ de Scilab calcule la matrice K telle que les valeurs propres
de la matrice Ad-BdK sont celles d’un vecteur vp=[v1,v2,v3,v4] imposé.
– Restriction de ‘ppol’ : on doit appliquer ppol séparément pour les 2 entrées de
commande de Lunar Lander.
En fait K=[Kh,0,0;0,0,Kv] avec
• Kh=ppol(ad(1:2,1:2), bd(1:2,1), vz(1:2));
• Kv=ppol(ad(3:4,3:4), bd(3:4,2), vz(3:4));
• Application à la commande de la vitesse de Lunar Lander
avec Matlab et la fonction ‘place’ (au lieu de ‘ppol’ en Scilab)
22/04/2017
Page 10
Réglage de la commande en vitesse de Lunar Lander
(saisir ‘v’ au clavier pour ce mode de contrôle)
• Les équations à considérer (d’ordre deux, donc plus simples):
x    ax



y    a y  glune 

 x 
 x    0  ax

  Bu

V     V     

 y 
 y   0   a y  glune /  
1 0
 Vn  Te Bu n
• La discrétisation donne : Vn1  
0 1
•
 k1 0 

La loi de commande est un  K (cn  Vn ) avec K  
 0 k2 
0 
1  Tek1


A

BK

• La matrice d’état est :
 0
1  Tek2 

• Deux valeurs propres : 1  Te k1 , 1  Te k2 
• Exemple : fixer des valeurs propres nulles : k1  k2 
22/04/2017
1
  Te
Page 11
Calcul de la commande en vitesse de Lunar Lander avec
deux valeurs propres nulles (réponse pile de durée Te)
Pour calculer le gain K du retour d’état donnant la réponse pile, Matlab utilise la
fonction place(.) car il y a plusieurs entrées de commandes.
La fonction ltiview de Matlab calcule le retour à l'équilibre depuis l'état x0=[1;1].
retour à l'équilibre depuis x =1, valeur propre=0
0
vxn
1
0.5
0
0
0.2
0.4
0.6
0.8
n° période échantillonnage (Te=0.04 s)
retour à l'équilibre depuis x =1, valeur propre=0
0
1
vyn
mvide= 6839; mfuel=816.5;
m= mvide + mfuel
ve=4500;
erg = ve/m;
Te=0.04;
A=zeros(2);
B=[erg,0;0,erg];
C=eye(2);
ll=ss(A,B,C,0);
lld=c2d(ll,Te);
ad=get(lld,'a')
bd=get(lld,'b')
% spécification des valeurs propres
vecpol=[0 0]
K=place(ad,bd,vecpol);
% donne k1= 42.53, k2= 42.53
x0=[1;1];
sbf=ss(ad-bd*K, bd*K, C, 0, Te);
ltiview('initial',sbf,x0)
maxCom=max(K) % donne maxCom=42.53
0.5
0
0
0.2
0.4
0.6
0.8
n° période échantillonnage (Te=0.04 s)
22/04/2017
Page 12
Calcul de la commande en vitesse de Lunar Lander avec
deux valeurs propres réelles et non nulles : 0.5 et 0.75
retour à l'équilibre depuis x0=1, valeur propre=0.5
1
xn
0.8
0.6
0.4
0.2
0
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
n° période échantillonnage (Te=0.04 s)
retour à l'équilibre depuis x =1, valeur propre=0.75
0
0.8
0.6
0.4
0.2
0
22/04/2017
0
1
xn
mvide= 6839;
mfuel=816.5;
m= mvide + mfuel
ve=4500; % vitesse éjection gaz
erg = ve/m;
Te=0.04;
A=zeros(2);
B=[erg,0;0,erg];
C=eye(2);
ll=ss(A,B,C,0);
lld=c2d(ll,Te);
ad=get(lld,'a')
bd=get(lld,'b')
% choix des valeurs propres
vecpol=[0.5, 0.75]
K=place(ad,bd,vecpol);
% donne k1= 21.27, k2= 10.63
x0=[1; 1];
initial(ss(ad-bd*K,bd*K,C,0,Te),x0)
maxCom=max(K) % maxCom= 21.27
0
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
n° période échantillonnage (Te=0.04 s)
1
Page 13
Commande en vitesse de LL avec deux valeurs propres
complexes conjuguées (m=sqrt(2)/2, w0=1rd/s)
valeurs propres complexes conjuguées, m=sqrt(2)/2,  =1rd/s
0
1.2
1
0.8
vitesse horizontale (m/s)
%% valeurs propres complexes conj.
mvide= 6839; mfuel=816.5;
m= mvide + mfuel
ve=4500; erg = ve/m;
Te=0.04;
A=zeros(2);
B=[erg,0;0,erg];
C=eye(1,2);
ll=ss(A,B,C,0);
lld=c2d(ll,Te);
ad=get(lld,'a')
bd=get(lld,'b')
% calcul des valeurs propres
pol=[-1+i, -1-i]*sqrt(2)/2
vecpol=exp(Te*pol)
K=place(ad,bd,vecpol);
%
x0=[1;-1];
initial(ss(ad-bd*K,bd*K,C,0,Te),x0)
maxCom=max(K) % maxCom = 1.206
0.6
0.4
0.2
0
-0.2
0
1
2
3
4
5
6
7
8
9
temps (sec)
22/04/2017
Page 14
Alunissage avec des valeurs propres réelles, sur les deux axes
horizontal et vertical, et tr5%=4s
•
•
•
•
22/04/2017
Saisir ‘e’ au clavier
pour le mode retour
d’état,
Le fichier Kre.txt
contient 8 valeurs :
0.33, 1.11, 0.0, 0.0,
0.0, 0.0, 0.33, 1.11
On impose quatre
valeurs propres
réelles, telles que
tr5%=4s
Qu’est ce qu’on
constate ?
Page 15
Alunissage avec des valeurs propres complexes conjuguées,
sur les axes horizontal et vertical, m=sqrt(2)/2 et tr5%=4s
• Scilab a trouvé la
matrice K suivante :
0.88 1.73 0.0 0.0 
K 

 0.0 0.0 0.88 1.73
• Il y a 8 valeurs dans le
fichier Kre.txt,
• Les valeurs propres sont
des paires complexes
conjuguées avec
tr5%=4s, w0=1 rd/s et
m=sqrt(2)/2
• Vérifier : le temps de
croisement tc vaut 4.6s
quand tr5% vaut 4s
22/04/2017
Page 16
Téléchargement