You are on page 1of 15

CONSERVATOIRE NATIONAL DES ARTS ET METIERS

CENTRE REGIONAL ASSOCIE DE PICARDIE

_______

AUTOMATIQUE

COMMANDE DES SYSTEMES

Etude du moteur à Courant Continu par retour d’état

Par

POIRET Clément

______

Travaux pratiques

Rédigé le 02 janvier 2012

_______

Enseignant : KAFROUNI Elie


SOMMAIRE

1. Cahier des charges


2. Détermination des équations d’état du procédé
3. Etude du comportement en boucle ouverte
4. Commande par retour d’état
5. Calcul du gain statique unitaire
6. Introduction d’une perturbation
7. Action intégrale
8. Conclusion

-2-
Commande des systèmes
1- Cahier des charges

On désire réaliser l’asservissement de position d’un disque. Le coefficient de frottement visqueux est
noté f . L’influence de la variation de ce frottement doit
doit être inférieure à 1% sur la vitesse de rotation,
ceci dans les limites de linéarité de l’amplificateur de puissance qui commande le moteur. Nous allons
modéliser le moteur avec une représentation sous forme d’état.

Les équations du système :

Les équations
uations simplifiées du fonctionnement du moteur sont les suivantes :

Um = E + RI
Cm = Kc.I
E = Ke.Ω
dΩ
Cm − ∑ Cr = j
dt
θ& = Ro.Cs.Ω

Les données sont les suivantes :

E : Force électromotrice Ke : Constante de fem

J : Inertie Cr : Couple de charge (frein)

Ro : Réducteur mécanique
méc Kc : Constante de couple

Cs : Capteur de position en V/rad θ : position en rad

2- Détermination des équations d’état du procédé

Dans un premier temps, je vais organiser les équations de manière à ressortir les équations du
d
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 

’équation (4), nous obtenons une équation différentielle du premier ordre.


L’équation

-3-
Commande des systèmes
Système du premier ordre :

Um − KeΩ  dΩ Kc.Um Kc.Ke dΩ


Kc   = j + ∑ Cr ⇒ − Ω= j + ∑ Cr
 R  dt R R dt

En organisant l’équation ci-dessus,


dessus, j’obtiens les
l équations suivantes :

Ω& = Kc Um − Kc.Ke Ω
R.J R.J
θ& = Ro.Cs.Ω
Représentation sous forme d’état :

 θ&  θ 
Le vecteur d’état x& =   ⇒ x =  
Ω 
& Ω 

x& = Ax + Bu
Je vais mettre sous la forme d’état
Y = Cx + D

 θ&  0 Ro.Cs   θ   0 
 &  = 0 − Kc.Ke .  +  Kc Um
Ω   Ω
RJ     RJ 

θ 
Y = [1 0].  + 0
Ω

3- Etude du comportement en boucle ouverte

Je vais maintenant créer la modélisation du système sous « Simulink » et analyser son comportement
en boucle ouverte, ensuite, à partir 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.
ci

Sous Matlab, à l’aide de la fonction « [A,B,C,D]=linmod('ModelisationFTBO'


ModelisationFTBO')»,je dois
vérifier la concordance des calculs et de modélisation du système.
système

A =

0 0.1592
0 -0.2000

-4-
Commande des systèmes
B =

0
5.9347

C =

1 0

D =

Nous pouvons voir que les résultats sont identiques


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 Matlab en comparant les
résultats obtenus.

Détermination des pôles :

Pour déterminer les valeurs propres, je vais utiliser la relation


rela suivante : det(λI − A)

 λ 0  0 Ro.Cs    λ − Ro.Cs 
Kc.Ke  ⇒ λ. λ +
  Kc.Ke 
det  − Kc.Ke  ⇒ det 
Donc :
  0 λ  0 −    0 λ +   RJ 
  RJ    RJ 

P1 = 0
Les deux pôles sont : Kc.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.

%Calcul des poles


pole=eig(A)

pole =

-0.2000

On voit qu’il y a un pôle réel négatif et un pôle à 0 ce qui rend le système instable.

-5-
Commande des systèmes
Nous voyons que la position tend vers l’infini, la position voulue ne sera jamais atteinte.
atteinte Pour palier à
ce problème, je vais fixer
er les pôles et calculer mes paramètres K pour réaliser mon retour d’état.

4- Commande par retour d’état

Pour déterminer les coefficients K1, K2 du retour d’état, je dois calculer les paramètres en imposant
les pôles réels négatifs, je vais effectuer mes calculs
calculs théoriques et comparer avec Matlab. Je vais
réaliser le retour d’état sur « Simulink » et visualiser les résultats de la simulation afin de voir si mon
système est corrigé.

Pour cela, je dois calculer le det(λI − A' ) ⇒ A' = A − B.K

A' = A − BK
0 Ro.Cs   0  0 Ro.Cs   0 0 
A' =  Kc.Ke  −  Kc [K1 K 2] ⇒ A' =  Kc.Ke  −  Kc Kc 
0 − RJ   RJ  0 − RJ   RJ K1 RJ K 2

 0 Ro.Cs 
A' =  Kc Kc.Ke Kc 
− RJ K1 − RJ − RJ K 2

 λ 0   0 Ro.Cs 
det(λI − A' ) ⇒ det  −  Kc Kc.Ke Kc 
  0 λ  − K1 − − K 2 
  RJ RJ RJ 

 λ − Ro.Cs   Kc.Ke + Kc.K 2  


.Ke Kc  ⇒ λ λ +
KcK1
det Kc
λ
Kc  − − Ro.Cs.
 RJ K1 + + K 2   RJ   RJ 
RJ RJ

Kc.( Ke + K 2) Ro.Cs.Kc.K1
λ2 + λ+
RJ RJ

rapidité j’ai choisi pole = [−1 + j;−1 − j ]


En fixant des pôles complexes afin d’augmenter la rapidité,

(λ + 1 − j )(. λ + 1 + j ) = λ2 + λ + Jλ + λ + 1 + J − Jλ − J − J 2 ⇒ λ2 + 2λ + 2
Par identification, j’obtiens :

Kc( Ke + K 2) 2RJ
= 2 ⇒ K2 = − .Ke = 0.3033
RJ Kc
Ro.Cs.Kc.K1 2RJ
= 2 ⇒ K1 = = 2.1164
RJ Ro.Cs.Kc

Après calcul sous Matlab, j’obtiens les mêmes valeurs de K :

>> pole=[-1+j -1-j]

pole=

-1.0000 + 1.0000i -1.0000 - 1.0000i

-6-
Commande des systèmes
>> 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 palier à ce problème, je
dois calculer le gain à ajouter en entrée.

-7-
Commande des systèmes
5- Calcul du gain statique unitaire

A' = A − BK
0 Ro.Cs   0  0 Ro.Cs   0 0 
A' =  Kc.Ke  −  Kc [K1 K 2] ⇒ A' =  Kc.Ke  −  Kc Kc 
0 − RJ   RJ  0 − RJ   RJ K1 RJ K 2

inv( A' ) ⇒
 Kc.Ke Kc 
 0 Ro.Cs  1 − RJ − RJ K 2 − Ro.Cs
inv( A' ) = inv Kc Kc.Ke Kc ⇒ . 
− RJ K1 − RJ − RJ K 2 det( A' )  Kc
K1 0 
 RJ 
 Kc   0 0 1
1 0 − Ro.Cs .
inv( A' ) × B = . RJ  ⇒ − C × inv( A ' ) × B =  Kc . = 0.4725
det( A' ) 0   Ro.Cs. 0 det( A' )
 0   RJ 

En faisant l’inverse du gain, j’obtiens :

1 1
Gain = = = 2.116
G 0.4725

Sous « Matlab »,, j’obtiens les résultats identiques,


identiques

Gain =

0.4725

Système avec Gain en entrée :

Une fois le gain ajouté, je vais simuler pour voir si le gain unitaire est assuré.

-8-
Commande des systèmes
Résultat de la simulation :

Nous voyons que le gain statique est assuré, l’erreur est nulle et nous atteignons la consigne à 1.

6- Introduction d’une perturbation

Dans le cas ou il y a des perturbations sur la sortie, nous devons étudier le système avec le retour
d’état et voir si le gain est assuré quelque soit les perturbations. Pour cela je vais modifier mon
modèle.

D’après les résultats de la simulation, lorsqu’une perturbation apparait, la position


posit change et gain
statique unitaire n’est plus assuré, notre commande n’est pas robuste. Afin d’annuler l’écart de
position entre la consigne et la sortie. Je vais essayer d’intégrer cet écart.

-9-
Commande des systèmes
Résultat de la simulation :

7- Action intégrale

uler l’erreur, je dois modifier mon système par la représentation suivante :


Pour annuler

 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 exprimer les nouvelles matrices A’’ et B’’ afin de calculer 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 

-10-
Commande des systèmes
Le nouveau
veau système est le suivant :

 θ&  0 Ro.Cs 0 θ   0 
&    Kc 
0.Ω  +  Um
Kc.Ke
Ω  = 0 − RJ RJ
 ε&  1 0  ε   0 
   0

Calcul des paramètres K et Ki :

A' = A' '−B' ' K


0 Ro.Cs 0  0 
 Kc.Ke   Kc 
A' = 0 − 0 −  [K1 K 2 Ki] ⇒
1 RJ   RJ 
 0 0  0 

0 Ro.Cs 0  0 0 0 
 Kc.Ke   Kc Kc Kc 
A' = 0 − 0 −  K1 K2 Ki ⇒
1 RJ RJ RJ RJ 
 0 0  0 0 0 

 0 Ro.Cs 0 
 Kc Kc.Ke Kc Kc 
L’équation devient : A' = − K1 − − K2 − Ki
 RJ RJ RJ RJ 
 1 0 0 

 λ 0 0   0 Ro.Cs 0 
  Kc Kc  
 
det(λI − A' ) ⇒ det  0 λ 0  − − K1 −
Kc.Ke Kc
− K2 − Ki 
 RJ RJ RJ RJ  
  0 0 λ   1
  0 0 

 λ − Ro.Cs 0 
  Kc Kc.Ke Kc Kc  
det(λI − A' ) ⇒ det  K1 λ + + K2 Ki 
  RJ RJ RJ RJ  
 −1 λ  
 0

Ke.Kc + Kc.K 2 2 Ro.Cs.Kc.K1 Ro.Cs.Kc.


Kc Ki
det(λI − A' ) = λ3 λ + λ−
RJ RJ RJ

En posant les pôles pole = [−1 + j;−1 − j;−3]

(λ + 1 − j )(. λ + 1 + j )(λ + 3) = λ3 + 5λ2 + 8λ + 6


Par identification, on obtient les nouveaux paramètres K1, K2, Ki.

-11-
Commande des systèmes
Ke.Kc + Kc.K 2 5RJ
= 5 ⇒ K2 = − Ke = 0.8088
RJ Kc
Ro.Cs.Kc.K1 8.RJ
= 8 ⇒ K1 = = 8.4600
RJ Ro.Cs.Kc
Ro.Cs.Kc.Ki − 6RJ
− = 6 ⇒ Ki = = −6.3400
RJ Ro.Cs.Kc

Système avec action intégrale:

Résultat de la simulation :

-12-
Commande des systèmes
Avec l’action
on intégrale, nous voyons que la perturbation est automatiquement annulée. Notre système
se stabilise en 5 s ainsi que lors de l’introduction d’une perturbation, le système réagit et corrige
immédiatement la position afin de revenir à la consigne d’origine.
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’une machine à courant continu et la nécessité de la commande intégrale
dans ce type de système. Cela m’a également permis
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 robustes et j’espère avoir l’occasion de continuer dans l’étude d’autres
systèmes.

9- Programme

10- %------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------%
11- %-- Tp avec Elie Kafrouni sur un asservissement de position--%
position
12- %------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------%
13-
14- %-- Fichier d'initialisation de la simulation du moteur et de
15- %-- la position par retour d'Etat
16-
17- clear all;
18- close all;
19- clc;
20-
21- %************************************************************%
22- %--------- initialisation des paramètres du moteur ---------%
23- %************************************************************%
24-
25- R = 5.8; %valeur du constructeur
26- Ke = 0.0337;
27- Kc = 0.0337;
28- DT = 0.0497; %Capteur de vitesse V/rd/s
29-
30- ro = 1/20; %reducteur mecanique
31- Cs = 20/6.28; %Capteur de position V/rd
32- AP = 1; %Gain de l'ampli de puissance
33- Isat = 1.2; %Courant de saturation de l'ampli
34- Umax = 13; %Tension de sortie max de l'ampli Op
35-
36- %************************************************************%
37- %--------- Valeurs Experimentales des Gains et ---------%
38- %---------------
--------------- Constantes de Temps ---------------------%
----------------
39- %************************************************************%
40-
41- TM = 5; %constante de temps identifiée
42- GM = 30; %Gain de vitesse de la simutlation en petits
signaux linaires
43- TML = 2*TM; %Constante de temps des petits signaux
44- Jt= TM*Ke*Kc/R; %Inertie globale théorique
45- JT1 = TML*Ke*Kc/R; %Inertie Globale equivalente en petits
signaux

-13-
Commande des systèmes
46-
47- %************************************************************%
48- %---------------------
--------------------- Frotemments secs ---------------------%
---------------
49- %************************************************************%
50-
51- Id = 0.053; %Courant de demarrage en A à vitesse nulle
52- Intmn = 0.108; %Courant à vide à la vitesse N t/mn
53- Ntmn = 1035; %Nombres de tours à vide
54-
55- Csec = Id*Kc;
56- Pente=((Intmn
Pente=((Intmn-Id)*Kc*60)/(2*pi*Ntmn);
57-
58- %Calcul des matrices A,B,C,D a partir du modele
59- [A,B,C,D]=linmod(
[A,B,C,D]=linmod('ModelisationFTBO')
60-
61- %Calcul des matrices A,B,C,D a partir du modele
62- %[A,B,C,D]=linmod('Modelisationtest')
63-
64- %Calcul des poles
65- pole=eig(A)
66-
67- p=[-1-j -1+j]
1+j]
68-
69- P2=-(Kc*Ke)/(R*Jt)
(Kc*Ke)/(R*Jt)
70-
71- %Calcul des parametres K
72- K=place(A,B,p)
73-
74- %Vérification des paramètres K théoriques
75- K3=((5*R*Jt)/Kc)
K3=((5*R*Jt)/Kc)-Ke
76- K4=(8*R*Jt)/(ro*Cs*Kc)
77- Ki=-(6*R*Jt)/(ro*Cs*Kc)
(6*R*Jt)/(ro*Cs*Kc)
78-
79- Gain=-C*inv
C*inv (A-B*K)*B
(A
80-
81- Kg=1/Gain

-14-
Commande des systèmes
-15-
Commande des systèmes

You might also like