Académique Documents
Professionnel Documents
Culture Documents
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 ».
1
Ta
Tc Ts
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
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
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
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
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
MV2 MV2*
MV1 MV1* CV1 CV2
Cons
R2 R1 P1 P2
sm2 sm1
cv1
M2
sm1 M1
Sm1
MV1*
6
La « bonne » Consigne1(n)= MV2*(n) aurait dû être solution de :
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
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
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
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).
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
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
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
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.
%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
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