Académique Documents
Professionnel Documents
Culture Documents
_______
AUTOMATIQUE
Par
POIRET Clément
______
Travaux pratiques
_______
SOMMAIRE
On désire réaliser l’asservissem nt de position d’un disque. Le coefficient de fr ttement visqueux est
noté f . L’influence de la variati n de ce frottement doit être inférieure à 1% sur la vitesse de rotation,
ceci dans les limites de linéarité de l’amplificateur de puissance qui commande l moteur. Nous allons
modéliser le moteur avec une re résentation sous forme d’état.
m = E + RI
m = Kc. I
E = Ke.Ω
d Ω
m− ∑ Cr = j dt
& = Ro.Cs.Ω
Les données sont les suivantes :
Dans un premier temps, je vais organiser les équations de manière à resso tir les équations du
système :
Um − E
A partir de l’équation (1), on obtient Um = E + RI ⇒ I =
R
Um − KeΩ
En remplaçant E par l’équation (3), l’équation devient I =
R
Avec l’équation (2), en remplaçant dans l’équation (3) le système devient :
Um − KeΩ
Cm = Kc
R
& = Kc Kc.Ke
Ω Um − Ω
R. J R. J
θ & = Ro.Cs.Ω
θ & θ
Le vecteur d’état x& = & ⇒ x =
Ω Ω
θ
Y = [1 0]. + 0
Ω
Je vais maintenant créer la mod lisation du système sous « Simulink » et analyser son comportement
en boucle ouverte, ensuite, à par ir du modèle, je vais déterminer les matrices A, B, C, D et vérifier si
les paramètres concordent avec la représentation ci-dessus.
A =
0 0.1592
0 -0.2000
B =
0
5.9347
C =
1 0
D =
Nous pouvons voir que les rés ltats sont identiques à mes calculs théoriques, afin de juger de la
stabilité de mon système, je vais calculer mes pôles théoriquement puis sous Ma lab en comparant les
résultats obtenus.
Pour déterminer les valeurs propres, je vais utiliser la relation suivante : det(λ
I − A)
P1 = 0
Les deux pôles sont : c.Ke
P2 =− = −0.2000
RJ
Afin de vérifier mes calculs, à l’aide de la fonction « eig(A) », je vais déterminer sous Matlab les
pôles.
pole =
-0.2000
On voit qu’il y a un pôle réel né atif et un pôle à 0 ce qui rend le système instable .
Nous voyons que la position ten vers l’infini, la position voulue ne sera jamais tteinte. Pour palier à
ce problème, je vais fixer les pôl s et calculer mes paramètres K pour réaliser mo retour d’état.
Pour déterminer les coefficients K1, K2 du retour d’état, je dois calculer les pa amètres en imposant
les pôles réels négatifs, je vais effectuer mes calculs théoriques et comparer avec Matlab. Je vais
réaliser le retour d’état sur « Si ulink » et visualiser les résultats de la simulation afin de voir si mon
système est corrigé.
A' = A − BK
0 Ro.Cs 0 0 Ro.Cs 0 0
A' = Kc.Ke − Kc [K 1 K 2] ⇒ A' = Kc.Ke − Kc Kc
0
−
RJ RJ 0 −
RJ RJ
K 1
RJ
K 2
0 o.Cs
A' = Kc Kc. e Kc
− RJ K 1 −
RJ
−
RJ
K 2
En fixant des pôles complexes afin d’augmenter la rapidité, j’ai choisi pole = [−1 + j;− 1 − j ]
pole=
>> k=place(A,B,pole)
k=
2.1164 0.3033
Je vais réaliser le schéma sous « simulink » avec le retour d’état, et voir si ma vitesse et position sont
stables.
Résultat de la simulation :
Nous voyons que notre système est stable, notre système est rapide sans dépassement, cela est due au
choix des pôles complexes. Malheureusement, la consigne est à 1 et la sortie est à 0.5 soit différent
donc le gain statique unitaire n’est pas assurer car l’erreur n’est pas nulle. Pour p lier à ce problème, je
dois calculer le gain à ajouter en entrée.
A' = A − BK
0 Ro.Cs 0 0 Ro.Cs 0 0
A' = Kc.Ke − Kc [K 1 K 2] ⇒ A' = Kc.Ke − Kc Kc
0 −
0 − K 1 2
RJ RJ
RJ RJ RJ
inv( A' ) ⇒
Kc.Ke Kc
0 Ro.Cs 1 − RJ − RJ K 2 − Ro.Cs
inv( A' ) = inv Kc Kc.Ke Kc ⇒ .
− RJ K 1 −
R
−
RJ
K 2
det( A' ) Kc
K 1 0
RJ
1 0 − R .Cs.
Kc 0 1
inv( A' ) × B = .
RJ ⇒ −C × inv( A' ) × B = Ro.Cs. Kc . = 0.4725
det( A' ) 0 0 det( A' )
RJ
En faisant l’inverse du gain, j’ob iens :
1 1
Gain = = = 2.116
G 0.4725
Gain =
0.4725
Une fois le gain ajouté, je vais simuler pour voir si le gain unitaire est assuré.
Résultat de la simulation :
Nous voyons que le gain statiqu est assuré, l’erreur est nulle et nous atteignons l consigne à 1.
D’après les résultats de la sim lation, lorsqu’une perturbation apparait, la po ition change et gain
statique unitaire n’est plus ass ré, notre commande n’est pas robuste. Afin d’annuler l’écart de
position entre la consigne et la s rtie. Je vais essayer d’intégrer cet écart.
Résultat de la simulation :
Pour annuler l’erreur, je dois mo ifier mon système par la représentation suivante :
x& x
Dans un premier temps, mon vecteur d’état aura la forme suivante : z& = ε & ⇒ z = ε
Les équations d’état deviennent :
z& = A' ' z + B ' ' u
Y = Cx + D
Ensuite, nous avons Um = − Kx + Ki.ε
x
Donc je peux écrire que Um = −[K − Ki ].
ε
A partir de là, je dois exprim r les nouvelles matrices A’’ et B’’ afin de c lculer les nouveaux
paramètres mais également le paramètre Ki.
0 Ro.Cs 0
A 0 Kc.Ke
A' ' = = 0 − 0
C 0 RJ
1 0 0
0
B Kc
B ' ' = =
0 RJ
0
0 Ro.Cs 0
Kc Kc.Ke Kc Kc
L’équation devient : A' = K 1 − − K 2 − Ki
RJ RJ RJ RJ
1 0 0
λ 0 0 0 Ro.Cs 0
Kc K 1
det(λ I − A' ) ⇒ det 0 λ 0 − − −
Kc.Ke Kc
− K 2
Kc
Ki
RJ RJ RJ RJ
0 0 λ 1 0
0
λ − Ro.Cs 0
Kc Kc.Ke Kc Kc
det(λ I − A' ) det K 1 λ + + K 2 Ki
RJ RJ RJ RJ
−1 0 λ
Résultat de la simulation :
Avec l’action intégrale, nous vo ons que la perturbation est automatiquement annulée. Notre système
se stabilise en 5 s ainsi que lo s de l’introduction d’une perturbation, le syst me réagit et corrige
immédiatement la position afin de revenir à la consigne d’origine.
8- Conclusion
Ce Tp m’a permit de comprendre la correction d’un système avec le retour d’état. Mais également
d’étudier le comportement d’un machine à courant continu et la nécessité de la commande intégrale
dans ce type de système. Cela m’a également permis d’être un peu plus à l’aise avec la commande par
retour d’état et l’utilisation de Matlab. Je suis plus confiant face à des problèmes d’automatique
nécessitant des commandes rob stes et j’espère avoir l’occasion de continuer ans l’étude d’autres
systèmes.
9- Programme
46-
47- %*********** *********************************** *************%
48- %----------- --------- Frotemments secs -------- -------------%
49- %*********** *********************************** *************%
50-
51- Id = 0.053; Courant de demarrage en A à vitesse nulle
52- Intmn = 0.10 ; %Courant à vide à la vitesse N t /mn
53- Ntmn = 1035; %Nombres de tours à vide
54-
55- Csec = Id*Kc
56- Pente=((Intm -Id)*Kc*60)/(2*pi*Ntmn);
57-
58- %Calcul des atrices A,B,C,D a partir du modele
59- [A,B,C,D]=li mod('ModelisationFTBO' )
60-
61- %Calcul des atrices A,B,C,D a partir du modele
62- %[A,B,C,D]=l nmod('Modelisationtest')
63-
64- %Calcul des oles
65- pole=eig(A)
66-
67- p=[-1-j -1+j
68-
69- P2=-(Kc*Ke)/ (R*Jt)
70-
71- %Calcul des arametres K
72- K=place(A,B, )
73-
74- %Vérificatio des paramètres K théoriques
75- K3=((5*R*Jt) Kc)-Ke
76- K4=(8*R*Jt)/ (ro*Cs*Kc)
77- Ki=-(6*R*Jt) (ro*Cs*Kc)
78-
79- Gain=-C*inv (A-B*K)*B
80-
81- Kg=1/Gain