Etude Du Moteur À Courant Continu Par Retour D'état PDF
Etude Du Moteur À Courant Continu Par Retour D'état PDF
Etude Du Moteur À Courant Continu Par Retour D'état PDF
_______
AUTOMATIQUE
Par
POIRET Clément
______
Travaux pratiques
_______
-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
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.Ω
Ro : Réducteur mécanique
méc Kc : Constante de couple
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
-3-
Commande des systèmes
Système du premier ordre :
Ω& = 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
Ω
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
A =
0 0.1592
0 -0.2000
-4-
Commande des systèmes
B =
0
5.9347
C =
1 0
D =
λ 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.
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.
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é.
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
Kc.( Ke + K 2) Ro.Cs.Kc.K1
λ2 + λ+
RJ RJ
(λ + 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
pole=
-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
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é.
-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.
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.
-9-
Commande des systèmes
Résultat de la simulation :
7- Action intégrale
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
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
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
-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
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