Vous êtes sur la page 1sur 24

Faculté de Technologie

Master 2 Automatique et Informatique


Industrielle

COMPTE RENDU TP N°2 COMMANDE AVANCÉE


Commande adaptative

Préparé par :

A S S E F Yanis
L A S L A Rayane

Année Universitaire : 2022/2023

Groupe : AII.1

Chargé du module : Mr. LEHOUCHE


Introduction

La Commande adaptative
La Commande adaptative est définie comme une commande permettant au
régulateur de s’adapter de lui-même aux changements du processus. En
conséquence, l’objectif adaptative est l’ajustement automatique en temps réel des
régulateurs des boucles de commande, afin de réaliser ou maintenir de façon
identique un certain niveau de performances, quand les paramètres du procédé à
commander varient dans le temps (en générale minimisation de l’erreur entre la
consigne et la sortie).

La commande adaptative peut être utilisé dans plusieurs cas tel que
la détection de défaut par la mise en évidence de variations anormales, Maintien
des performances du système de commande (comme cité précédemment) …

Dans la commande adaptative on retrouve le régulateur RST :

RÉGULATEUR RST
Un correcteur RST est synthétisé par une méthode de placement de pôles
algébrique, l’objectif de cette commande est de spécifier la loi de rejection de
perturbations indépendamment de celle de la poursuite de consigne. Et cela en
donnant le comportement d’un système décrit par une fonction de transfert
modèle, exprimée comme une fraction rationnelle en z-1, Usuellement cette
fonction est de deuxième ordre, et on prendra pour Am un polynôme Monique,
c’est-à-dire tel que Am(𝑧−1 = 0) = 1 (cela est toujours possible).

𝑇(𝑍 −1 ) 1 𝐶𝑁𝐴 𝐺(𝑝) y(t)


yc(k) - 𝑆(𝑍) u(k)

𝑅(𝑍 −1 ) 𝐶𝐴𝑁
-
𝜀(𝑡)

1
Partie 1 RST
Partie 1 :
RÉGULATEURS RST
Nous avons notre système à double intégrateur donné par la fonction de
transfert suivante :
1
𝐺 (𝑝) = 𝑝2

Equation de diophantienne :
On a: 𝐴− 𝑆 ′ + 𝐵− 𝑅′ = 𝐴𝑚 𝐴0
𝑇 = 𝐴+ 𝐵𝑚 𝐴0
Petit rappel

+ ′ +
𝐴+ = 1 et 𝐵+ = 1 Quand on n’a pas de pôle ou
𝑅 = 𝐴 𝑅 avec 𝐴 = 1 de zéro à compenser à l’aide du RST.
𝑆 = 𝐵+ 𝑆 ′ avec 𝐵+ = 1 𝐵+ = 𝑙𝑒𝑠 𝑧é𝑟𝑜𝑠 𝑞𝑢𝑖 𝑠𝑜𝑛𝑡 à 𝑙 ′ 𝑖𝑛𝑡é𝑟𝑖𝑒𝑢𝑟 𝑑𝑢 𝑐𝑒𝑟𝑐𝑙𝑒 𝑢𝑛𝑖𝑡é
𝐴+ = 𝑙𝑒𝑠 𝑝ô𝑙𝑒𝑠 𝑞𝑢𝑖 𝑠𝑜𝑛𝑡 à 𝑙 ′ 𝑖𝑛𝑡é𝑟𝑖𝑒𝑢𝑟 𝑑𝑢 𝑐𝑒𝑟𝑐𝑙𝑒 𝑢𝑛𝑖𝑡é

Ce qui nous donne: On a un temps fini alors :


𝑅 = 𝑅′ 𝐵(𝑍 −1 ) 𝐴𝑚 = 1 , 𝑇𝑒 = 1𝑠
𝐹𝑚 =
𝑆 = 𝑆′ 𝐴(𝑍 −1 ) Le système est commandable et pas de
perturbations donc : 𝐴0 = 1

1 𝐵(𝑍 −1 )
𝐺(𝑝) = 2
: Nous allons essayer de l’écrire sous forme d’un polynôme
𝑝 𝐴(𝑍 −1 )

𝐵(𝑍 −1 ) 𝐺(𝑝) 1
𝐺(𝑍 −1 ) = = (1 − 𝑍 −1 ) × 𝑍 ( )= (1 − 𝑍 −1 ) × 𝑍(𝑝3)
𝐴(𝑍 −1 ) 𝑝
𝑇𝑒
𝐵(𝑍 −1 ) 𝑇𝑒 𝑍 −1 (1 + 𝑍 −1 ) 𝐵− = × 𝑍 −1 (1 + 𝑍 −1 ) 𝐴+ = 1
𝐺(𝑍 −1 ) = = × 2
𝐴(𝑍 −1 ) 2 (1 − 𝑍 −1 )2
𝐴− = (1 − 𝑍)2 𝐵+ = 1

2
Partie 1 RST
𝐷𝑒𝑔(𝑆) = 𝐷𝑒𝑔(𝐵) − 1 = 2 − 1 = 1 => 𝑆(𝑍) = 𝑆0 + 𝑆1 𝑍 −1
𝐷𝑒𝑔(𝑅) = 𝐷𝑒𝑔(𝐴) − 1 = 2 − 1 = 1 => 𝑅(𝑍) = 𝑅0 + 𝑅1 𝑍 −1
Ce qui nous donne :
𝐴− 𝑆 ′ + 𝐵− 𝑅′ = 𝐴𝑚 𝐴0
𝐴− 𝑆 + 𝐵− 𝑅 = 1
𝑇𝑒 𝑇𝑒
(1 − 𝑍)2 (𝑆0 + 𝑆1 𝑍 −1 ) + 𝑍 −1 (1 + 𝑍 −1 ) = 1 𝑎𝑣𝑒𝑐 =1
2 2

Après résolution de l’équation nous aurons :


𝑆0 = 1 La Matrice crée :
−2𝑆0 + 𝑆1 + 0.5𝑅1 = 0 1 0 0 0 𝑆0 1
𝑆0 − 2𝑆1 + 0.5𝑅0 + 0.5𝑅1 = 0 −2 1 0 0.5 𝑆0 0
[ ][ ] = [ ]
1 −2 0.5 0.5 𝑅0 0
0.5𝑅1 + 𝑆1 = 0 0 1 0 0.5 𝑅1 0
M X V
Alors pour trouver les différents S et R
on les calculs directement par :
𝑋 = 𝑀−1 . 𝑉
Il nous reste plus qu’à simuler le tout sur MATLAB :

3
Partie 1 RST

PROGRAMME SOUS MATLAB


%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Régulateur RST %%%%
%%%%%%%%%%%%%%%%%%%%%%%%
clear all
clc
%% Affectations des valeurs %%
G=tf([1],[1 0 0]) % Fonction de transfert G(p)
Te=1;
Gz=c2d(G,Te) % Fonction de transfert discr?te
M=[1 0 0 0;-2 1 Te^2/2 0;1 -2 Te^2/2 Te^2/2;0 1 0 Te^2/2] % Matrice M
V=[1 0 0 0]' % Matrice V
X=inv(M)*V % Vecteur qui aura les valeurs des S et R
%% Affectation des valeurs de S et R %%
S0=X(1) ;
S1=X(2) ;
R0=X(3) ;
R1=X(4) ;
%% Réorganisation des vecteurs %%
S=[S0 S1]
R=[R0 R1]

Après l’exécution du programme nous aurons les résultats suivants :

RÉSULTATS DE SIMULATION
M = V =

G =
1.0000 0 0 0 1
1
--- -2.0000 1.0000 0.5000 0 0
s^2
1.0000 -2.0000 0.5000 0.5000 0

0 1.0000 0 0.5000 0

Gz =
S = R =
0.5 z + 0.5
-------------
z^2 - 2 z + 1
1.0000 0.7500 2.5000 -1.5000

4
Partie 1 RST
On peut donc directement tirer les valeurs des S et R :
𝑆0 = 1 , 𝑅0 = 2.5
𝑆1 = 0.75 , 𝑅1 = −1.5

On passe Maintenant on passe à la réponse vis-à-vis d’un échelon.


Pour cela nous allons ouvrir Simulink et crée notre système :

Graphe de l’Entrée et de la sortie (Entrée et Erreur (Différence entre l’entrée et la sortie)


Sortie)

5
Partie 1 RST
COMMENTAIRES SUR LES GRAPHS
À partir du graphe 1 la sortie
converge petit à petit vers la valeur de
l’entrée (échelon).
À partir du graphe 2 on remarque par
la suite que la valeur de l’erreur diminue
petit à petit, ce qui vérifie la fiabilité de la
méthode utilisé (RST) pour maintenir un
certain niveau de performance par rapport
au temps.
Finalement la commande appliquée
diminue s’adapte automatiquement elle
prend 1 puis directement -1
Commande appliquée

rampe unitaire avec un régulateur


Graph d entrée et de sortie d une
On peut essayer la même expérience
en modifié l’échelon en une rampe :
Ex :
EXEMPLE RAMPE UNITAIRE

RST
sortie d une rampe unitaire avec
Différence entre l entrée et la

un régulateur RST
On remarque que la sortie suit
l’entrée tant bien que mal avec une
certaine erreur qui se stabilise et
diminue lentement via le temps.

----------- Fin de l’exemple ----------

6
Partie 1 RST
Afin de mieux étudier la robustesse du régulateur RST nous allons étudier le
modèle de Bode de notre système, Soit en passe à la fonction de transfert en boucle
ouverte :
𝐵. 𝑅
𝐹𝐵𝑂 =
𝐴. 𝑆
*
PROGRAMME SOUS MATLAB
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Régulateur RST Bode (Suite) %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% Graphes %%
% Fonction de transfert en BO %
TF_BO=filt([1],[S0 S1])*filt([R0 R1],[1])*Gz %% En Z-1 %%
% On peut aussi utiliser la convolution pour la calculer %
A=[1 -2 1]; %% Coef de A (dénominateur) %%
B=[Te^2/2 Te^2/2 0]; %% Coef d B (numérateur) %%
Br=conv(B,R); %% Produit de convolution %%
As=conv(A,S);
TF_BO=tf(Br,As,-1) %% En Z %%
figure(1)
bode(TF_BO) %% Diagramme de Bode %%
margin(TF_BO) %% Marge de phase et de gain %%
[Gm,Pm,Wcg,Wcp]=margin(TF_BO) %% Affectation des valeurs en variables %%

On peut vérifier la validité de notre fonction en boucle ouverte en essayant


d’appliquer un échelon à l’équation de la FTBF en fonction de la FTBO à savoir
𝐹𝑇𝐵𝑂
𝐹𝑇𝐵𝐹 =
1 + 𝐹𝑇𝐵𝑂
Ce qui nous donnera :

Ça converge
vers un
step(F_bo/(1+F_bo)) ➔ échelon donc
c’est vérifier

7
Partie 1 RST

DIAGRAMME DE BODE
𝐺𝑚 = −319 𝑑𝐵
𝑃𝑚 = 102

RÉSULTAT MATLAB
TF_BO = TF_BO =

1.25 z^-1 + 0.5 z^-2 - 0.75 z^-3 1.25 z^3 + 0.5 z^2 - 0.75 z

------------------------------------ -----------------------------

1 - 1.25 z^-1 - 0.5 z^-2 + 0.75 z^-3 z^3 - 1.25 z^2 - 0.5 z + 0.75

Fin de la partie I

8
Partie 2 CSTR
Partie 2 :
RÉACTEUR CONTINU PA (parfaitement agité) (CSTR)
Pour cette partie du TP nous allons faire la simulation du système en boucle
ouverte.
Nous avons en premier lieu les équations d’état du système CSTR :

Bilan de Masse :
𝑑𝐶𝑎 (𝑡) 𝑄 −𝐸
( )
= (𝐶𝑎𝑜 − 𝐶𝑎 (𝑡)) − 𝑘𝑜 𝐶𝑎 (𝑡) 𝑒 𝑅𝑇(𝑡)
𝑑𝑡 𝑉

Bilan Energetique :
𝑑𝑇(𝑡) 𝑄 −𝐸 −𝑘3
( )
= (𝑇𝑜 − 𝑇(𝑡)) − 𝑘1 𝐶𝑎 (𝑡)𝑒 𝑅𝑇(𝑡) + 𝑘2 𝑞𝑐 (1 − 𝑒 𝑐(𝑡) )(𝑇𝑐𝑜 − 𝑇(𝑡))
(𝑡) 𝑞
𝑑𝑡 𝑉
𝑋1 = 𝐶𝑎 / 𝑋2 = 𝑇 / 𝑈 = 𝑞𝑐 / 𝑌 = 𝐶𝑎
Nous allons par la suite introduire et initialiser les paramètres sur MATLAB :
1- Implémentation

PROGRAMME SOUS MATLAB


%%%%%%%%%%%%%%%%%%%%%%%%% k1=-DH*k0/(ro*Cp);
%%%%% Initialisation %%%% k2=roc*Cpc/(ro*Cp*v);
%%%%%%%%%%%%%%%%%%%%%%%%% k3=ha/(roc*Cpc);
q=100; T_ini=438.544416413;
v=100; qc_ini=103.406555117;
k0=7.2E10-1.4E10; Ca_ini=0.08;
EzR=1E4;
T0=350;
Tc0=351;
DH=-2E5;
Cp=1;
Cpc=1;
ro=1E3;
roc=1E3;
ha=7E5;
Ca0=1+0.05;

9
Partie 2 CSTR

2- Schéma BLOC de la CSTR


Après l’implémentation des paramètres nous allons utiliser Simulink pour générer
un bloc diagramme qui va affecter les équations vues précédemment qui
définissent le comportement du système et on va lui associer 2 sorties une pour le
calcule de la concentration et l’autre pour le temps et une entrée qui va recevoir le
débit :
Sortie des valeurs
de concentrations
pin (1)

Valeurs de
l’entrée (à savoir
le débit reçu)

Sortie des valeurs


de températures
pin (2)

Ensuite nous allons ouvrir un autre modèle où nous allons implémenter notre
fonction en boucle ouverte, On va d’abord commencer par créer les valeurs de nos
signaux de références en se basant sur le tableau donné en régime stationnaire :

10
Partie 2 CSTR

Nous allons ensuite implémenter le modèle de CSTR en un bloc de donnée


comme suit :

11
Partie 2 CSTR

Nous allons ensuite prendre un temps de 600 pour simuler le tout (600 parce
que nous avons 15 valeurs pour les différents signaux avec une période de 10 ce
qui nous donnera 150 pour une période on va mettre 4 périodes pour laisser au
signal le temps de se stabiliser).
Notre schéma en boucle ouvert sera alors comme suit :

Représentation du graphe d’entrée (Débit)

12
Partie 2 CSTR

Représentation du graphe de concentration en boucle ouverte et de


notre concentration de référence

Représentation du graphe de température en boucle ouverte et de


notre température de référence

13
Partie 2 CSTR

On remarque par le biais des 2 schémas qu’au début les 2 graphes suivent
une même trajectoire avec quelques perturbations pour les sorties du CSTR puis
après un certain temps les sorties divergent (à peu près à 300) vers leurs valeurs en
régime permanent environ 350 pour la température et 1.02 pour la concentration.
Si on décide de faire l’expérience et enlever ½ des valeurs soit on se
retrouvera avec 8 valeurs au lieu de 15 on aura une instabilité plus sévère de notre
système mais sans autant qu’il diverge vers sa valeur finale comme le démontre les
graphes si dessous :

Concentration pour moins de


valeurs
Température pour moins de
valeurs

14
Partie 2 CSTR

On remarque aussi que si on modifie la dernière valeur de notre débit vers une
valeur légèrement plus grande nous aurons cette divergence par rapport au signal
de référence qui se produira.
Par exemple pour une valeur finale de 113.302 :

Pour une valeur finale de 113.402 :

15
Partie 2 CSTR

Même chose pour les températures :


Pour une Valeur finale 113.302

Pour une Valeur finale 113.402

On remarque alors que plus la valeur finale est grande plus le signal atteignera ça
valeur finale rapidement (divergera du signal de référence)

16
Partie 2 CSTR

On remarque d’ailleurs aussi dans tous les cas traités les signaux de températures
ne sont pas exactement centré avec celui du modèle de référence contrairement à la
concentration même s’ils suivent la même trajectoire (au début pour certains)
On peut voir cela en rajoutant un +5 aux valeurs de la sortie de la température pour
comparer les 2 trajectoires. (On remarque que c’est quasiment identique mise à
part pour les perturbations)

Représentation du graphe de température en régime stationnaire décaler


vers le haut de +5 et de notre système de référence en boucle ouverte

Commande adaptative du système :


Cette commande se compose de 2 parties (Identification & mise à jour des
paramètres (rajouter à ça les blocs de la CSTR & le programme de
l’implémentation) :

17
Partie 2 CSTR
Bloc d’identifications :

Schéma son entrée sont les


valeurs réels e l’entrée et de la
sortie du système et dont sa
sortie c’est les paramètres
identifiés qui vont être utilisées
pour l’équation de diophantienne

Bloc mise à jour des paramètres :

Schéma qui rafraichie et qui mets à jours les


paramètres identifiés

Bloc principale de la commande adaptative en plein


Bloc principale : dynamique qui regroupe les différents blocs et parties
précédentes

18
Partie 2 CSTR

Graphe de l’entrée et de la sortie du système par rapport à une entrée fixe (échelon)

On va modifier un peu notre commande au lieu de mettre comme entrée un


échelon nous allons affecter plusieurs valeurs discrètes (escalier).

19
Partie 2 CSTR

Pas 0.005 : [0.08 0.085 0.09 0.095 … 0.13 … 0.08]


Graphe de l’entrée et de la sortie du système par rapport à une entrée fixe pas : 0.005

Pas 0.01 : [0.08 0. 0.09 0.1 0.11 0.12 0.13 … 0.08]

Graphe de l’entrée et de la sortie du système par rapport à une entrée fixe pas : 0.01

20
Partie 2 CSTR

Pas 0.015 : [0.08 0. 0.095 0.11 0.12.5 … 0.08]


Graphe de l’entrée et de la sortie du système par rapport à une entrée fixe pas : 0.015
Même chose pour les autres : Température, débit, concentration :
Ex : Température

120 160

115
140
110

105 120

100
100
95

90 80

85
60
80

75 40
0 10 20 30 40 50 60 70 80 90 100 0 10 20 30 40 50 60 70 80 90 100

Température pas : 0.005 Température pas : 0.035

21
Partie 2 CSTR

Ex : Concentration
0.35 0.35

0.3 0.3

0.25 0.25

0.2 0.2

0.15 0.15

0.1 0.1

0.05 0.05

0 0
0 10 20 30 40 50 60 70 80 90 100 0 10 20 30 40 50 60 70 80 90 100

Concentration pas : 0.005 Concentration pas : 0.035

On remarque d’après les résultats des graphes obtenus que le pas le plus
optimale (adéquat) est le plus court à savoir (0.005) car les figures le système ayant
ce pas sont les plus aptes à se stabiliser et suivre une valeur sans trop de
perturbations.
On peut alors dire que l’augmentation du pas provoque une perte
d’information et plus notre pas est petit plus le signal de sortie sera fiable.

22
Conclusion

CONCLUSION
Au cours et après la réalisation de ce TP
nous avons pu implémenter la commande RST
et CSTR sur un système et visualiser
graphiquement l’efficacité de ces dernières à
compenser la stabilité et la non linéarité et
finalement nous les avons assembler sur un seul
même cas de figure en boucle fermée et on
conclue finalement que plus le pas est petit plus
notre sortie nous donne un meilleur suivi et un
meilleur résultat.

23

Vous aimerez peut-être aussi