Vous êtes sur la page 1sur 21

Université Aix Marseille

Faculté des Sciences

MASTER 1
Filière :

« Electronique, Energie Electrique et Automatique »

- EEEA -

Travaux Pratiques

TP2 : Commande par retour d’état

Réalisé par :
GHEZBOURY Abdellah
KHELFA Walid

Année Universitaire : 2021/2022


Objectif du TP

L’objectif de ce TP est de la détermination d’une commande par retour d’état en poursuite


d’un système sur lequel nous faisons la manipulation pratique.

1. Partie A

Pour déterminer le modèle du système, on utilise la méthode de Broida. Pour cela, on excite le
système par un échelon de commande d’amplitude convenable. D’abord, nous avons extrait
l’entrée u(t) et la sortie y(t) ainsi que le temps t en utilisant les commandes Matlab suivantes :

Par suite, nous avons visualisé les deux signaux u(t) et y(t) :
Après avoir extraire les signaux, nous avons appelé la fonction « ident » pour déterminer le
modèle du système. Comme ce dernier est stable en boucle ouverte, alors la méthode utilisée
est celle de Broida dont la forme de la fonction de transfert est :
𝐾𝑒 −𝑡𝑎𝑢∗𝑝
𝐻(𝑝) =
1 + 𝑇𝑝

En utilisant les mesures réelles, nous avons déterminé les valeurs de K, T, tau :
Le schéma bloc du modèle sous Simulink est de la forme suivante :

Avec :

En comparant les deux réponses obtenues du système et celle du modèle, on voit bien que les
deux systèmes ont le même comportement que ce soit en régime transitoire ou bien permanent.
Donc, nous pouvons valider notre modèle (précision très grande presque 98%).
Comme on a posé la sortie y du système est égale à x1, alors en visualisant y et x1, on trouve les
réponses ci-dessous (Scope 2) :
La dérivée d’une réponse indicielle est une réponse impulsionnelle. En effet, si on dérive la
sortie y(t) par rapport le temps on obtient :

x1= y (x1)’= y’= x2

Alors, en visualisant y’ et x2 par le scope3, on a obtenu les résultats suivants :

On peut conclure que si on applique la dérivée à un signal quelconque, elle amplifiée le bruit.

Ensuite, nous allons étudier la stabilité du système. En effet, nous allons calculer les pôles de
la fonction de transfert et les valeurs propres de la matrice A :
Pour les pôles de la fonction de transfert, nous avons trouvé les valeurs suivantes :

P1 = −458.09
P2 = −9.2367
Pour les valeurs propres de la matrice A, nous les avons calculés en utilisant la commande
suivante sur Matlab :
[P, A_tilde]=eig(A);

En effet :

Alors, d’une part on peut déduire que les pôles de la fonction de transfert se sont les mêmes
que les valeurs propres de la matrice A. Par suite, comme ces derniers sont à parties réelles
strictement négatives, alors le système est stable.
 Pour étudier maintenant la commandabilité du système, il suffit de calculer sa matrice de
commandabilité. Pour utiliser Matlab, il suffit de taper la commande suivante :

Comme la matrice de commandabilité a un déterminant non nul, alors le système est


commandable.

 Pour étudier l’observalité du système, il suffit de calculer sa matrice d’observalité :

Comme la matrice d’observalité possède un déterminant non nul, alors le système est
observable.
2. Partie B
L’objectif est de chercher une commande u = -Ku(t) par retour d’état amenant y(t) sur des
valeurs de consigne constantes yc.
Ceci revient à chercher un vecteur gain K= [k1 k2] tel que la loi de commande s’écrive :

u = -Kx(t) + Myc

Alors le système en boucle fermé devient :

x’(t) = A*x(t)+ B*[-Kx(t) + Myc]


x’(t) = [ A- BK]*x(t) + BMyc
y(t)=C*x(t)

Le schéma bloc de cette représentation est donné sous la forme suivante :


Calculons maintenant le gain K par placement de pôles par la commande suivante avec Vo est
un vecteur qui contient Les pôles imposés du système en BF :

Vo=[-12 -460];
K=place(A, B,Vo);

On trouve :

Pour calculer la matrice M, on suppose que le système est asymptotiquement stable, on aura :

Avec Matlab, le calcul de M nous donne :


M=-1/(C*(inv(A-B*K))*B);

Nous simulons notre système en choisissant comme consigne yc un échelon unitaire et par
suite, nous visualisons la réponse du système et la commande calculée:
Au début, nous avons visualisé chaque réponse toute seule pour que ça soit claire.

Réponse du système

Réponse du commande
En utilisant le même scope pour afficher la réponse du système et de la commande, nous avons
obtenus les résultats suivants :

Nous avons remarqué que les deux réponses sont totalement confondues, ce qui fait que l’erreur
statique est presque nul :
L’erreur statique et presque nul

Pratiquement, la valeur de M peut être sensible à des variations de paramètres dans le


modèle, mais surtout, toute perturbation en échelon située dans cette partie du système ne
sera pas rejetée en régime permanent.
Alors, d’un point de vue pratique, afficher une consigne constante revient juste à déplacer le
point d’équilibre du système. Dans ce qui suit, on prendra :

Yc=0 d’où U= -K*x


En réalité, seule une partie de l’état est mesurable x1(t), la deuxième partie x2(t) n’est pas
mesurable. Donc, si on veut établir une commande par retour d’état, il faut utiliser un observateur
d’état.
La mise en œuvre de la commande par retour d'état u(x) a besoin de capteurs permettant de
donner à chaque instant t une valeur approximative de l'état x(t) . Deux types de capteurs de
natures différentes sont utilisés. Le premier est celui des capteurs physiques, provenant de
l'instrumentation. Ces capteurs sont parfois trop coûteux ou difficiles à réaliser pour des raisons
techniques.
On peut donc être amené à concevoir un second type de capteurs, des capteurs logiciels,
appelés plus communément des observateurs. Ces derniers sont des algorithmes fondés sur un
modèle du système et utilisant une information pertinente donnée par des capteurs physiques.
Ces capteurs logiciels délivrent à chaque instant t une estimation en ligne des variables d'état non
mesurées du système.
La structure de cet observateur est la suivante :

x̂’(t)=A* x̂(t) + Bu(t) + L(y(t)- ŷ(t))


ŷ(t)=C* x̂’(t)

Le schéma bloc du système et de l’observateur est donné sous la forme suivante :


Pour calculer le gain de l’observateur L, on utilise la commande suivante sur Matlab :

Vob=5*Vo;
L=place(A',C',Vob)';

On trouve :

Si on applique cet observateur au système, nous obtient les résultats suivants :

Visualisation de y et ŷ
Il se peut que y et ŷ ne seront pas identiques pour 2 raisons principals : le premier c’est que les
matrices A, B, et C sont des approximations du vrai système et le deuxieme c’est qu’on ne connais
pas l’état initial du système( on ne connait pas x à l’instant 0 ).

Si par exemple il y a un différence entre y et ŷ, nous allons utiliser cette différence pour corriger
le système. En effet, nous allons injecter ces deux signaux dans une matrice de gain L en la ajoutant
au commande du système. C’est pour cela nous avons trouvé dans la figure ci-dessus ŷ est très
proche de y. Dans ce cas, nous pouvons considérer que x̂ est très proche de x.

Alors l’erreur d’estimation converge vers 0 comme il est montré dans la figure ci-dessous.

Parce que évidemment x̂ nous pouvons le sortir de l’observateur alors que x est dans le système
donc, on ne peut pas le voir.

Visualisation de l’erreur d’estimation e(t)

Conclusion :
Le terme additionnel L(y(t)- ŷ(t)) permet de compenser les imprécisions du modèle (A, B, C)
ainsi que la méconnaissance de l’état initiale x(0).
En commande analogique classique, l’annulation de l’erreur statique en réponse à un échelon
s’effectue via un correcteur intégral. Il est possible de mettre en œuvre une correction similaire
dans l’espace d’état en considérant une variable d’état :𝑒(𝑡) = ∫(𝑦𝑐 − 𝑦)𝑑𝑡 = ∫(𝑦𝑐 − 𝐶𝑥(𝑡))𝑑𝑡
𝑥(𝑡)
Pour cela, nous considérons l’équation d’état du système augmenté : 𝑍(𝑡) = {
𝑒(𝑡)
Nous appliquons cette loi de commande à notre système, le schéma bloc sous Simulink est de la
forme suivante :

Vous aimerez peut-être aussi