Vous êtes sur la page 1sur 14

Commande Prédictive

Note de cours n° 5 : Contraintes

J.Richalet Guy Lavielle Joëlle Mallet

1) Position du problème
Vous conduisez votre automobile et soudain un obstacle imprévu surgit sur la
route, vous freinez immédiatement avec toute la puissance de freinage
disponible : le futur est alors joué et la distance d’arrêt est fixée.
Il convient donc de freiner de façon anticipative. Si la puissance de freinage
n’était pas limitée, il suffirait de freiner sur l’obstacle, avec une décélération
infinie, et dans ce cas il ne serait pas nécessaire de prédire.
« Contrainte implique prédiction ».

a) Contraintes sur la variable manipulée MV


Les contraintes ou limitations qui affectent un processus industriel sont de
natures diverses.
- Contraintes subies
Ce sont des contraintes qui viennent de la conception de l’unité e.g : limitations
en amplitude et en vitesse liées à la puissance maximale des actionneurs. Si
l’unité a été surdimensionnée par rapport à son objectif nominal de production,
les variables d’action ne seront pas contraintes, mais le coût de l’unité sera au
delà de ce qui est nécessaire. Il convient donc de pouvoir fonctionner en étant, si
la loi de commande l’exige, sur les contraintes induites par la capacité limitée de
l’unité de production.
- Contraintes volontaires
Il arrive que dans certaines circonstances on limite volontairement la vitesse ou
l’amplitude de la variable manipulée, pour ne pas « violenter » le processus ou
la source d’énergie des actionneurs.

b) Contraintes sur une variable d’état du processus.


Prenons l’exemple du traitement thermique d’une pièce métallique dans un four,
Il convient que la température à cœur Tc d’une pièce métallique suive un certain
profil temporel fixé par le métallurgiste.(Fig1a)

1
Ta

Tc Ts

Fig1a. Four de traitement thermique

On agit par un organe de chauffe quelconque sur la température de l’air Ta,


avec un régulateur de niveau 0, qui peut avoir lui-même ses propres contraintes.
Si l’on veut augmenter la production en diminuant le temps de traitement, la
température Ta va avoir des excursions de plus en plus grandes. Mais la
température de surface de la pièce Ts, intermédiaire entre la température d’air
Ta et la température à cœur Tc, ne doit pas être trop grande sinon la surface du
métal sera oxydée et endommagée.(Tc<Ts <Ta).
Ta agit donc, à travers deux systèmes de dynamiques différentes, sur deux
températures qui doivent respecter l’une, une consigne ConsTc et l’autre, une
contrainte Tsmax. (Fig 1b)

Ts
P2

Tc
Consigne Ta
R P1

2
Fig 1b. Commande de la température à cœur

Ce second problème est théoriquement plus difficile, mais une solution sous-
optimale est heureusement possible, car il se rencontre en fait dans
pratiquement toutes les industries de production.

3
2) Contrainte sur la MV
- Commande directe
Reprenons le cas élémentaire de la commande d’un processus du 1er ordre de
gain K et de constante de temps T, de variable manipulée MV(n) et de variable
régulée CV (n).
[Consigne − CV(n)].lh+ sm(n).bh
MV(n)=
K.bh

sm(n) =sm(n-1).a + b.MV(n-1)

tech tech.3.h
a = exp(− ) ,b=1-a, bh =1-ah, lh = 1 − exp(− )
T TRBF
où tech est la période d’échantillonnage, h le point de coïncidence, et sm(n) la
sortie du modèle :
La MV est contrainte :
δmin ≤ MV(n) - MV(n-1) ≤ δmax : contrainte en vitesse
MVmin ≤ MV (n) ≤ MV max : contrainte en amplitude

On passe donc la MV(n) calculée à travers ces deux limiteurs et l’on obtient la
MV(n)* qui respecte la plus stricte de ces 4 contraintes. La procédure consiste
alors à appliquer MV(n)* au processus, et à l’entrée du modèle interne au lieu
de MV(n). (Fig2a)
sm(n) =sm(n-1).a + b.MV*(n-1)

Consigne MV MV* CV
R P

SML SM
M

Fig 2a. Commande avec prise en compte de la contrainte sur la MV

4
C O M M A N D E A V E C P R I S E E N C O M P T E D E L A C O N T R A IN T E M V

350

300

250

200
M V c a lc u lé e n o n c o n tra in t e

150

100
M V p ré -c o n t ra in t e p u is a p p liq u é e
50 CV

0 sec
50 100 150 200 250 300 350 400

Fig 2b. Commande avec contrainte sur la MV prise en compte


C O M M A N D E S A N S P R I S E E N C O M P T E D E L A C O N T R A IT E M V

350

300

250

200
M V c a lc u lé e n o n c o n tra in t e

150

100
M V c o n t ra in t e p h y s iq u e m e n t
50 CV

0 sec
50 100 150 200 250 300 350 400

Fig 2c. Commande avec contrainte physique sur la MV non prise en


compte.

La prédiction du modèle interne sera donc faite avec l’entrée MV*(n) qui a été
physiquement appliquée. Si l’on appliquait la commande MV(n) et laissait le
processus faire physiquement la limitation lui-même, le régulateur n’en serait
pas informé, la prédiction du modèle interne serait fausse, et la commande ne
serait pas pertinente. Par contre en alimentant le modèle interne avec MV*(n) on
reste à la frontière du domaine non linéaire du processus, et c’est alors le
régulateur qui devient momentanément non linéaire.
La figure 2 montre la différence de comportement du processus avec ou sans la
prise en compte a priori des contraintes physiques de l’actionneur. (Fig.2b/c)

5
- Commande en cascade

Nous verrons ultérieurement le montage en cascade, où l’on a 2 régulations


emboîtées (Fig 3), cas très fréquent dans l’industrie de production, une
régulation interne R1 / P1 d’un processus et une régulation externe
R2 / P2.

MV2 MV2*
MV1 MV1* CV1 CV2
Cons
R2 R1 P1 P2
sm2 sm1

cv1
M2
sm1 M1
Sm1
MV1*

Fig 3. Commande cascade

L’actionneur physique est donc dans la boucle interne.


Le régulateur interne R1 propose donc une MV1(n) qui, passée à travers les
limiteurs amplitude / vitesse de P1, devient MV1*(n).
Il convient là aussi d’informer le régulateur externe R2 de cette limitation ; en
effet, son modèle interne qui est donc le produit du transfert du processus interne
bouclé par P2 est faux, car tant que MV1(n) est sur une contrainte le processus
P2 est en boucle ouverte et le modèle interne n’est plus prédictif.
Il faut donc procéder à un « transfert de contrainte », dit aussi «back
calculation », pour modifier l’entrée du modèle interne de R2. La bonne
stratégie du régulateur externe R2 aurait été de calculer une MV2(n), consigne
du régulateur R1, telle que celle ci amène le régulateur à calculer
MV1(n)=MV1(n)*, afin que le modèle interne de R2 soit alimenté, à
l’échantillonnage suivant, par une entrée compatible avec les contraintes.
Reprenons le régulateur R1 :

[Consigne1(n)− CV1(n)].lh1+ sm1(n).bh1


MV1(n)=
K1.bh1

sm1(n) =sm1(n-1).a1 + b1.MV1(n-1)

MV1(n) passée à travers les limiteurs devient MV1(n)*.

6
La « bonne » Consigne1(n)= MV2*(n) aurait dû être solution de :

[MV2*(n)− CV1(n)].lh1+ sm1(n).bh1


MV1*(n)=
K1.bh1
d’où:
[MV1*(n).K1.bh1− sm1(n).bh1]
MV2*(n)= CV1(n)+
lh1
L’interprétation physique est donc simple : le régulateur externe R2 calcule une
Consigne1(n) de R1 qui n’est pas suivie, mais le modèle interne de R2 en est
informé, et le calcul de MV2=Consigne1, au point suivant, prend en compte
dans son modèle interne cette modification de l’ordre Consigne1(n).
Notons que le régulateur R2 peut lui aussi avoir des contraintes propres sur sa
MV2 (n), indépendantes des contraintes de R1.
Ne pas utiliser cette procédure de transfert de contraintes peut amener à des
comportements fortement erronés. Fig 4

A V E C T R A N S F E R T D E C O N T R A IN T E : M V 1 M A X = 6 0

120

100

CV
80

M V1
60

M V2
40

20

sec
0
50 100 150 200 250 300 350 400 450 500

Fig 4a. Commande cascade avec transfert de contrainte

7
S A N S T R A N S F E R T D E C O N S T R A IN T E : M V 1 M A X = 6 0

120
CV

100

80

M V2
M V1
60

40

20

sec
0
50 100 150 200 250 300 350 400 450 500

Fig 4b. Commande cascade sans transfert de contrainte

3 ) Contrainte sur une variable d’état

Rappelons l’exemple du four de traitement thermique: il faut réguler la


température à l’intérieur de la pièce métallique Tc, tout en respectant la
température de surface Ts, en agissant par un organe chauffe ( brûleur à gaz ? )
sur la température d’air Ta.

Supposons que l’on doive piloter le processus P1 vers une consigne Cons1 par
un régulateur R1 qui produit une action MV1(n). Mais cette MV1(n) agit aussi
sur un processus dynamique P2 dont la sortie CV2 doit respecter une contrainte,
prise ici comme CV2(n) ≤ CV2max pour simplifier.

Ts Contrainte :
P2 Ts<TsMax

Tc
Consigne Ta
R P1

8
SM2
M2
CV2
(b)
CV2 Contrainte

Cons2=CONT2
R2 P2
(a)

t
MV2

Superviseu CV1

R1 MV1
r CONS1
Cons1
P1
CV1

t
SM1
M1

Fig 5 Commande avec contrainte sur une variable

La stratégie consiste à calculer un projet habituel de MV1(n+i) qui satisfasse le


TRBF demandé au régulateur R1, et qui peut, de plus, avoir ses propres
contraintes, qui seront traitées par la procédure précédente.

Ce projet MV1(n+i) doit dans le futur provoquer une sortie CV2(n+i) qui
respecte la contrainte CV2max. On simule donc la sortie future CV2(n+i) par
la même procédure que celle utilisée pour prendre en compte un retard pur :
CV2*(n+i) =CV2(n)+ sm2(n+i)- sm2(n)
où sm2(i) est la sortie du modèle de CV2, alimenté par le projet : MV1(n+i).

Cette procédure est répétée théoriquement jusqu’au TRBO du processus P2, en


pratique on calcule jusqu’à un temps limité hl compris entre h (point de
coïncidence du régulateur du processus P1) et le TRBO du processus P2.

Si CV2*(n+i) < CV2max pour tout i tel que : 1< i ≤ hl,


le projet est acceptable car la contrainte est respectée et la MV1(n) proposée est
alors appliquée (cas a figure 5).
Si pour une certaine valeur de i, CV2(n+i) ≥ CV2max, le projet n’est pas
acceptable (cas b figure 5). Il convient alors de trouver MV2(n) qui amènerait
au mieux CV2 sur sa valeur limite CV2max. Cette opération est réalisée par un
régulateur auxiliaire qui aurait comme consigne Cons2 = CV2max et dont le
modèle interne est alimenté par la dernière variable manipulée, quelle que soit
son origine, issue soit de R1 ou de R2.

9
La stratégie est alors d’avoir 2 régulateurs fonctionnant en permanence en
parallèle :
- R1 : consigne Cons1, pilotant CV1, donnant MV1
- R2 : consigne Cons2= CV2max, pilotant CV2, donnant MV2
- Calculer CV2*(n+i) i=1……hl
- Si CV2*(n+i) < CV2max appliquer :
MV(n)= MV1(n), sinon MV(n)=MV2(n)
- Les modèles internes des 2 régulateurs sont alimentés en permanence par la
valeur MV(n) retenue par le superviseur logique.
On considère l’exemple suivant :
Processus P1 : 1er ordre : T=70 s, Kp= 0.99, TRBF =120s.
Processus P2 : 3ième ordre : T1=25s, T2=47 s; T3=50s, Tnum=110s
TRBF =190s, h=30.
Les réponses en boucle ouverte sont données fig.6a, on note la réponse
surtensive à un échelon de valeur 100.
Les boucles fermées doivent être réglées sans dépassement de consigne fig6b

R E P O N S E S B O U C LE S O U V E R TE S M V 1= M V 2= 100 C V 1 / C V 2

160

140

CV2
120

M V 1/ M V 2
100

80
CV1
60

40

20

0
100 200 300 400 500 600 700 800

Fig 6a. Réponses en boucle ouverte

10
RE P O NS E S B O UCLE S FE RM E E S ConsCV 1=100 / ConsCV =127

160
M V1

140

CV2
120

100
CV1

80
M V2

60

40

20

sec
0
100 200 300 400 500 600 700 800

Fig 6b. Réponses en boucle fermée CV1 /CV2

La figure 6c montre que, dès le changement de consigne, la MV2 qui pilote le


processus contraint à la valeur maximale de 137 est active, la CV2 reste sur sa
contrainte autour de l’instant 300, puis la MV1 est active et fait tendre CV1 vers
sa consigne de valeur 100. Une perturbation de valeur -20 arrive à l’instant 600
et MV2 redevient active pour contrer cette perturbation tout en respectant la
contrainte 127 et MV1 reprend la main quand il s’agit de revenir sur la
consigne.
C O N S IG N E C V 1 = 1 0 0 / C O N T R A IN T E S U R C V 2 = 1 2 7

160
M V1
140
C O N T R A IN T E C V 2
120
CV2
100

80
M V2
CV1
60

40

M V 2 a c t iv e
20
M V 1 a c tive
0
PERT
-2 0
100 200 300 400 500 600 700 800

Fig 6c. Réponse de CV1 avec respect de la contrainte CV2<127

La procédure peut être généralisée à plusieurs contraintes. Il faut s’assurer que le


champ de contrainte ne soit pas vide, sinon il n’y aurait pas de solution et il
faudrait alors hiérarchiser les contraintes et abandonner celles qui sont les moins
critiques.

11
Cette procédure dite «Commande multi-régulateurs», présente l’avantage de
pouvoir être mise en œuvre avec uniquement des blocs élémentaires : deux
régulateurs standard, un simulateur et une décision logique élémentaire.

4 ) Conclusion

La prise en compte des contraintes sur la variable manipulée ou sur des variables
d’état du processus (sorties secondaires) est possible d’une manière certes sous-
optimale, mais facilement implantable dans des automates industriels.
L’optimisation d’une régulation, amenant souvent à toucher les contraintes, est
donc possible, grâce à la capacité de prédiction apportée par le modèle interne.

C’est un atout fort de la commande prédictive.

%com_MVcira

clear all
close all
tf=400;w=1:1:tf;
tech=1;
% constante de temps = 30s
taum=30;am=exp(-tech/taum);bm=1-am;
%gain statique =1
k=1;
%trbf choisi = 45s
lh=1-exp(-tech*3/45);

MVL=zeros(1,tf) ;
%sp : sortie process, sm sortie modèle
sp=MVL;MV=MVL;sm=MVL;
%contraintes
MVMAX=120 ; MVMIN= -120
% contrainte sur les taux d'évolution de la MV
DM =2; %DMIN=-2
fl=input('1 avec constrainte 0 sans constrainte :');
for ii=2:1:tf
% sortie process
sp(ii)=sp(ii-1)*am+bm*MVL(ii-1)*k;%processus alimentée par MV toujours
contrainte ou précontrainte
%sortie modèle
if fl == 1 %avec contraintes
sm(ii)=sm(ii-1)*am+bm*k*MVL(ii-1)*fl;%le modèle interne est alimenté par
la MV précontrainte
else %sans contraintes
sm(ii)=sm(ii-1)*am+bm*k*(1-fl)*MV(ii-1);%le modèle interne est alimenté
par la MV calculée
end
%calcul de la commande
d=( 100-sp(ii))*lh +sm(ii)*bm;
MV(ii)=d/(k*bm);
%-------conraintes
MVL(ii)=MV(ii);%MV mv non contrainte
if MVL(ii)>MVMAX ;MVL(ii)=MVMAX;end
if MVL(ii)<MVMIN;MVL(ii)=-MVMAX;end

12
if MVL(ii)>=MVL(ii-1)+DM;MVL(ii)=MVL(ii-1)+DM;end
if MVL(ii)<MVL(ii-1)-DM;MVL(ii)=MVL(ii-1)-DM;end

end
figure(1)
plot( w,sp,'r',w,MV,'k',w,MVL,'b',w,ones(1,tf)*100,'r' );
grid on
zoom
hold on
if fl==1 ;title ('COMMANDE AVEC PRISE EN COMPTE DE LA CONTRAINTE MV ');
%if fl==1 ;title ('CONTROL RESPECTING CONSTRAINT ON MV ');
text(25,191,'MV calculée non contrainte')
text(60,50,'CV')
text(25,75,'MV pré-contrainte puis appliquée ')
text (360,5,'sec')
axis([1 tf 0 375])

end

%Contrainte sur CV2


%cont_CV

clear all
close all
tf=800; tech=1;w=1:1:tf;
T1=25; T2=50;T3=47;T=110;;%process 3ième order plus num
KK=1.2;%gain
%-----
A1=1/(1-(T2/T1));A2=1/(1-(T3/T1));%decomposition
A3=1/(1-(T1/T2));A4=1/(1-(T3/T2));
A5=1/(1-(T1/T3));A6=1/(1-(T2/T3));
B1=1-(T/T1);B2=1-(T/T2);B3=1-(T/T3);
K1=KK*B1*A1*A2; K2=KK*B2*A3*A4;K3=KK*B3*A5*A6;
a1=exp(-tech/T1);a2=exp(-tech/T2);a3=exp(-tech/T3);
b1=1-a1;b2=1-a2;b3=1-a3;
%---------------

u=zeros(1,tf); e1=u;sp2=u;sm1=u;sm2=u;sm3=u;sp1=u;e2=u;
contrainte=127;sm=u;E=u;v=u;pert=u;fl=zeros(1,tf);SM=fl;
Kp=0.99;a=exp(-tech/70);b=1-a;
h=30;bh=1-a^h;
h1=1;
bh1=1-a^h1;
lh2=1-exp(-tech*h*3/190);b1h=1-a1^h;b2h=1-a2^h;b3h=1-a3^h;
lh1=1-exp(-tech*h1*3/120);
%--------------------------
for k=1:1:10;% calcul des paramètres de la sortie prédite CV2
j=5+(k-1)*7;%nombre limité de points de prédicition de CV2
U1(k)=a1^j;U2(k)=a2^j;U3(k)=a3^j;
V1(k)=1-U1(k);V2(k)=1-U2(k);V3(k)=1-U3(k);
end

for ii=2:1:tf
if ii>500 & ii< 560;pert(ii)=-20;else;pert(ii)=0;end
sm1(ii)=sm1(ii-1)*a1+b1*K1*E(ii-1);%processus surtensif avec contrainte
sm2(ii)=sm2(ii-1)*a2+b2*K2*E(ii-1);
sm3(ii)=sm3(ii-1)*a3+b3*K3*E(ii-1);

13
sm(ii)=sm1(ii)+sm2(ii)+sm3(ii);
sp2(ii)=sm1(ii)+sm2(ii)+sm3(ii);
v(ii)=sp2(ii)-sm(ii);
d= (contrainte-sp2(ii))*lh2+sm1(ii)*b1h+sm2(ii)*b2h+sm3(ii)*b3h;
e2(ii)=d/(b1h*K1+b2h*K2+b3h*K3);%calcul MV2
% e2(ii)=100;
sp1(ii)=sp1(ii-1)*a+b*(E(ii-1)*Kp+pert(ii));%processus avec consigne
sm(ii)=sm(ii-1)*a+b*E(ii-1)*Kp;
%sp1(ii)=sp1(ii-1)*a+b*(e1(ii-1)*Kp+pert(ii));
%sm(ii)=sm(ii-1)*a+b*e1(ii-1)*Kp;
d=(100-sp1(ii))*lh1 +sm(ii)*bh1;
e1(ii)=d/(Kp*bh1);%MV1
if e1(ii)>160;e1(ii)=160;end;%contrainte max
%simul CV2 future
SMP=zeros(1,300);SPP=SMP;
Q=e1(ii);
for j=1:1:10;%calcul prédiction de CV2 avec e1
SPlach=sm1(ii)*U1(k)+sm2(ii)*U2(k)+sm3(ii)*U3(k)-sm(ii)*0;
SPForc=Q*(K1*V1(k)+K2*V2(k)+K3*V3(k));
SMP(k)=SPlach +SPForc;
SPP(k)=SMP(k)-v(ii);
end
SM(ii)=max(SPP);
if
SM(ii)>contrainte;E(ii)=e2(ii);fl(ii)=20;else;E(ii)=e1(ii);fl(ii)=0;end
end
figure(1)
plot(w,pert,'b',w,e1,'k',w,sp1,'r',w,e2,'b-
.',w,sp2,'m',w,E,'k:',w,fl,'r',...
w,contrainte*ones(1,tf)*1,'k',w,ones(1,tf)*100,'r',w,u,'r')
grid
zoom
axis ([1 tf -25 170 ])
title( ' CONSIGNE CV1=100 / CONTRAINTE SUR CV2 = 127')
text( 130,70,'CV1')
text( 130,110,'CV2')
text( 105,25,'MV2 active')
text( 380,8,'MV1 active')
text( 8,155,'MV1')
text( 8,75,'MV2')
text( 305,135,'CONTRAINTE CV2')
text( 505,-10,'PERT')

14

Vous aimerez peut-être aussi