0% ont trouvé ce document utile (0 vote)
128 vues6 pages

Cours 3

Ce document décrit la commande par retour d'état d'un système dynamique non linéaire représenté par un pendule simple. Il présente la modélisation mathématique du système, la linéarisation autour d'un point de fonctionnement, puis détaille la commande par retour d'état avec et sans action intégrale pour placer les pôles et assurer une erreur statique nulle.

Transféré par

Thinhinane Kaguya
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
128 vues6 pages

Cours 3

Ce document décrit la commande par retour d'état d'un système dynamique non linéaire représenté par un pendule simple. Il présente la modélisation mathématique du système, la linéarisation autour d'un point de fonctionnement, puis détaille la commande par retour d'état avec et sans action intégrale pour placer les pôles et assurer une erreur statique nulle.

Transféré par

Thinhinane Kaguya
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

UNIVERSITE DES SCIENCES ET DE LA TECHNOLOGIE D’ORAN « MOHAMED BOUDIAF »

Faculté de génie électrique Département d’automatique


1ème Année Master Automatique et Informatique Industrielle Les systèmes non linéaire

Commande par retour d'état d’un système dynamique

I. Le système : « Pondue simple »

𝑥̇ 1 (𝑡) = 𝑥2 (𝑡)
{ 1 𝑘𝑓 𝑔
𝑆𝑁𝐿 ∶ 𝑥̇ 2 (𝑡) = 𝑢(𝑡) − 𝑥2 (𝑡) − 𝑠𝑖𝑛(𝑥1 (𝑡))
𝑚 𝑟2 𝑚 𝑟2 𝑟
{ 𝑦(𝑡) = 𝑥1 (𝑡) Fig. 1 – Un pondue simple

Ou :
𝑦(𝑡) = 𝜃(𝑡) ; 𝑢(𝑡) = 𝐶𝑚 (𝑡) ; 𝑥(𝑡) = [𝑥1 (𝑡) 𝑥2 (𝑡)]𝑇 = [𝜃(𝑡) 𝜃̇(𝑡)]𝑇 ;

L’équation linéarisée autour du point de fonctionnement : 𝑦 ∗ = 𝜃 ∗ = 0

𝑥̇ (𝑡) = 𝐴 𝑥(𝑡) + 𝐵 𝑢(𝑡)


{ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (01)
𝑦(𝑡) = 𝐶 𝑥(𝑡)
Avec :
0 1 0
𝐴=( ); 𝐵 = ( ); 𝐶 = (1 0); 𝐷 = (0) . . . (02)
−9.81 −0.4 4

La Fig. 2 représente le schéma-bloc détaillé du système.

Fig.2 – Schéma fonctionnel et schéma-bloc détaillé.

1
II. Commande par retour d’état :
a) Equation de placement de pôles

 On considère le pondue simple

𝑥̇ (𝑡) = 𝐴 𝑥(𝑡) + 𝐵 𝑢(𝑡)


{
𝑦(𝑡) = 𝐶 𝑥(𝑡)

 Loi de commande
Pour 𝑢(𝑡) = 𝑦𝑐 (𝑡) − 𝐾𝑐 𝑥(𝑡)

 Le système bouclé

𝑥̇ (𝑡) = 𝐴 𝑥(𝑡) + 𝐵 𝑢(𝑡) 𝑥̇ (𝑡) = 𝐴 𝑥(𝑡) + 𝐵(𝑦𝑐 (𝑡) − 𝐾𝑐 𝑥(𝑡))


{ ⟹{
𝑦(𝑡) = 𝐶 𝑥(𝑡) 𝑦(𝑡) = 𝐶 𝑥(𝑡)

𝑥̇ (𝑡) = (𝐴 − 𝐵𝐾𝑐 ) 𝑥(𝑡) + 𝐵𝑦𝑐 (𝑡) 𝒙̇ (𝒕) = 𝑨𝒃𝒇 𝒙(𝒕) + 𝑩𝒃𝒇 𝒚𝒄 (𝒕)
{ ⟹ 𝑺𝒚𝒔𝒃𝒇 = {
𝑦(𝑡) = 𝐶 𝑥(𝑡) 𝒚(𝒕) = 𝑪𝒃𝒇 𝒙(𝒕)
Avec :
𝑨𝒃𝒇 = (𝑨 − 𝑩𝑲𝒄 ); 𝑩𝒃𝒇 = 𝑩; 𝑪𝒃𝒇 = 𝑪

Il est légitime de vouloir choisir la matrice de régulation 𝐾𝑐 de façon à imposer les pôles du système bouclé.
Ce problème est équivalent à imposer le polynôme caractéristique du système. Soit 𝑃𝑐𝑜𝑚 (𝑠) le polynôme désiré,
que l’on supposera bien sûr de degré 𝑛. Il nous faut résoudre l’équation polynomiale

det(𝑠𝐼 − 𝐴𝑏𝑓 ) = det(𝑠𝐼 − (𝑨 − 𝑩𝑲𝒄 )) = 𝑃𝑐𝑜𝑚 (𝑠)

b) Résolution de l’équation de placement de pôles

Considérons par exemple le système


0 1 0
𝑥̇ (𝑡) = ( ) 𝑥(𝑡) + ( ) 𝑢(𝑡)
{ −9.81 −0.4 4
𝑦(𝑡) = (1 0) 𝑥(𝑡)
que l’on cherche à stabiliser ce système par un retour d’état de la forme 𝑢(𝑡) = 𝑦𝑐 (𝑡) − 𝐾𝑐 𝑥(𝑡)
Avec : 𝐾𝑐 = [𝑘1 𝑘2 ]

Cherchons 𝐾𝑐 de façon à ce que ce polynôme caractéristique 𝑃𝑐𝑜𝑚 (𝑠) du système en boucle fermée
ait pour racines −2.1991 + 2.2435 𝑖, −2.1991 − 2.2435 𝑖, c’est-à-dire,
𝑃𝑐𝑜𝑚 (𝑠) = (𝑠 + 2.1991 − 2.2435 𝑖)(𝑠 + 2.1991 + 2.2435 𝑖)
𝑃𝑐𝑜𝑚 (𝑠) = 𝑠 2 + 4.3982 𝑠 + 9.8692

L’équation de placement de pôles s’écrit


det(𝑠𝐼 − 𝐴𝑏𝑓 ) = det(𝑠𝐼 − (𝑨 − 𝑩𝑲𝒄 )) = 𝑃𝑐𝑜𝑚 (𝑠)

2
𝑠 0 0 1 0 𝑠 −1
det (( ) − (( ) − ( ) ( 𝑘1 𝑘2 ))) = det ( ) = 𝑃𝑐𝑜𝑚 (𝑠)
0 𝑠 −9.81 −0.4 4 9.81 + 4𝑘1 𝑠 + 0.4 + 4𝑘2

𝑠 −1
det ( ) = 𝑃𝑐𝑜𝑚 (𝑠) ⟹ 𝑠 2 + (0.4 + 4𝑘2 ) 𝑠 + 9.81 + 4𝑘1 = 𝑠 2 + 4.3982 𝑠 + 9.8692
9.81 + 4𝑘1 𝑠 + 0.4 + 4𝑘2

Par identification :
0.4 + 4𝑘2 = 4.3982 𝑘1 = 0.0148
{ ⟹ {
9.81 + 4𝑘1 = 9.8692 𝑘2 = 0.9995

Nous aurions obtenir directement ce résultat en utilisant l’instruction place (pole placement) de MatLab en
tapant
clc
clear all
close all

%% I.1. Création du système

A=[0 1;-9.81 -0.4];


B =[0;4];
C =[1 0];
D=0;
N_bo,D_bo] = ss2tf(A,B,C,D);
G_bo=tf(N_bo,D_bo);
ss(A,B,C,D);

%% I.2. Pôles et valeurs propres


P_bo=eig(A);
P_bo1=pole(G_bo);

%% II. Commande par retour d’état:


% La matrice de commandabilité Co

Co=ctrb(A,B);

% Le rang de la matrice Co

r=rank(Co); n=size(A);
if r == n
disp('Le système est comondable')
else
disp('Le système est non comondable')
end

%% La matrice de retour K par placement de pôle

% Proposer des valeurs propres pour la matrice d’état de sys_bf

Wn=2*pi/2;
Z=0.7;
[N2,D2]=ord2(Wn,Z);
sys2=tf(N2,D2);
%step(sys2);grid
K2=dcgain(sys2);
sys2=sys2/K2;
%step(sys2);grid
P2=pole(sys2);

3
% La matrice de retour Kc

Kc=place(A,B,P2)
Abf=(A-B*Kc);
[Nbf,Dbf]=ss2tf(Abf,B,C,D);
sys_bf=tf(Nbf,Dbf);

c) Simulation :

4
III. Commande par retour d’état avec action intégrale

On s’intéresse dans cette section à la commande d’un pondue simple pour différentes raisons :
 Le stabiliser,
 Obtenir de meilleures performances de suivi de consigne : erreur statique nulle, dynamique sans
oscillation, etc.
 Rejeter les effets des perturbations éventuelles.
On a vu que la matrice de retour 𝐾𝑐 permet d’améliorer la dynamique du système bouclé. Pour annuler l’erreur
statique, nous avons utilisé une action intégrale. Le schéma-bloc du système bouclé utilisé est représenté par la
Fig.3, dans lequel 𝐾𝑖 désigne la matrice de gain de l’intégrateur.

FIG.3 – Schéma-bloc du système bouclé

D’après la Fig.3, on a :
𝑥̇ (𝑡) = 𝐴 𝑥(𝑡) + 𝐵 𝑢(𝑡)
{ 𝑧̇ (𝑡) = 𝑦𝑐 (𝑡) − 𝐶 𝑥(𝑡) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (03)
𝑦(𝑡) = 𝐶 𝑥(𝑡)
En prenant comme nouveau vecteur d’état [𝑥(𝑡) 𝑧(𝑡)]𝑇 , on obtient le nouveau modèle d’état, appelé système
augmenté, suivant :
𝑥̇ (𝑡) 𝐴 [0] 𝑥(𝑡) 𝐵 [0]
( )=( )( ) + ( ) 𝑢(𝑡) + ( ) 𝑦𝑐 (𝑡)
𝑧̇ (𝑡) −𝐶 [0] 𝑧(𝑡) [0] 𝐼
{
𝑥(𝑡) . . . . . . . . . . . . . . . . . . . . . . (04)
𝑦(𝑡) = (𝐶 [0]) ( )
𝑧(𝑡)
Par ailleurs, toujours d’après la Fig.3, on a : 𝑢(𝑡) = −(𝐾𝑐 𝑥(𝑡) + 𝐾𝑖 𝑧(𝑡)) . . . . . . . . . . . . . . (05)

C’est-a-dire :
𝑥(𝑡)
𝑢(𝑡) = −(𝐾𝑐 𝐾𝑖 ) ( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (06)
𝑧(𝑡)

Ainsi, on a un modèle d’état défini par l’équa.4 et bouclé par un gain de retour 𝐾 = (𝐾𝑐 𝐾𝑖 ). Les matrices
du système augmenté sont :
𝐴 [0] 𝐵
𝐴𝑎𝑢𝑔 = ( ); 𝐵𝑎𝑢𝑔 = ([0]) ; 𝐶𝑎𝑢𝑔 = (𝐶 [0]) . . . . . . . . . . . . . . . . . . . . . . (07)
−𝐶 [0]

Le système bouclé aura pour représentation :

𝑥̇ (𝑡) 𝐴 [0] 𝑥(𝑡) 𝐵 𝑥(𝑡) [0]


( )=( )( ) − ( ) (𝐾𝑐 𝐾𝑖 ) ( ) + ( ) 𝑦𝑐 (𝑡)
𝑧̇ (𝑡) −𝐶 [0] 𝑧(𝑡) [0] 𝑧(𝑡) 𝐼 . . . (08)
{
𝑥(𝑡)
𝑦(𝑡) = (𝐶 [0]) ( )
𝑧(𝑡)

5
Ou encore :
𝑥̇ (𝑡) 𝐴 − 𝐵 𝐾𝑐 −𝐵 𝐾𝑖 𝑥(𝑡) [0]
( )=( )( ) + ( ) 𝑦𝑐 (𝑡)
𝑧̇ (𝑡) −𝐶 [0] 𝑧(𝑡) 𝐼
{ . . . . . . . . . . . . . . . . . . . . . . . . . . . (09)
𝑥(𝑡)
𝑦(𝑡) = ( −𝐶 [0] ) ( )
𝑧(𝑡)

Le but est donc de chercher le gain de retour 𝐾 = (𝐾𝑐 𝐾𝑖 ) pour obtenir de valeurs propres convenables pour la
nouvelle matrice d’état notée 𝐴𝑏𝑓 , telle que :

𝐴 − 𝐵 𝐾𝑐 −𝐵 𝐾𝑖 . . . . . . . . . . . . . . . . . . . . . . . . . . . (10)
𝐴𝑏𝑓 = ( )
−𝐶 [0]
En ce qui concerne l’erreur statique, on peut la calculer lorsque (𝑥̇ (𝑡) 𝑧̇ (𝑡))𝑇 = [0]. Appliquant cette
condition au système d’équa.4, on obtient :
(𝐴 − 𝐵𝐾𝑐 ) 𝑥(𝑡) = 𝐵 𝐾𝑖 𝑧(𝑡)
{ 𝐶 𝑥(𝑡) = 𝑦𝑐 (𝑡) . . . . . . . . . . . . . . . . . . . . . . . . . . . (11)
𝑦(𝑡) = 𝐶 𝑥(𝑡)
Les deux dernières équations du système d’équa.11 affirme que 𝑦(𝑡) = 𝑦𝑐 (𝑡), c’est-à-dire l’erreur statique est
automatiquement nulle.

%% Commande par retour d’état avec action intégrale :


% Les matrices du système augmenté :

Aaug=[A zeros(2,1);-C zeros(1,1)];


Baug=[B;zeros(1,1)];
Caug=[C zeros(1,1)];

% Proposer des valeurs propres pour la matrice d’état de sys_bf

sys3 = zpk([],[P2 ;-8],[1])


K3=dcgain(sys3);
sys3=sys3/K3;
%step(sys2,sys3,'--');grid

% Les matrices de retour Kc Ki


K=place(Aaug,Baug,[P2;-4]);
Kc=K(:,1:2)
Ki=K(:,3)
Abf=[A-B*Kc -B*Ki;-C 0];
Bbf=[0;0;1];
Cbf=[-C 0];
Dbf=0;
[Nbf,Dbf]=ss2tf(Abf,Bbf,Cbf,Dbf);
sys_bf=tf(Nbf,Dbf) ;
Pbf=pole(sys_bf)

Vous aimerez peut-être aussi