u(t)
A1
A2
R1 R2
h1 h2
Fig. L6.1. Schema bloc func ional simplificat a unui sistem cu douã rezervoare.
dh1 1
A1 = (h2 − h1 )u (t ) ,
dt R1
dh 1 1
A2 2 = − (h2 − h1 ) − h2 .
dt R1 R1
Considerând urm toarele valori ale parametrilor procesului condus: A1 = A2 = 1, R1 = 1/2, R2 = 1/3, se
cere:
A) sã se deduc func ia de transfer (f.d.t.) a procesului condus având ca mãrime de intrare debitul u şi
H ( s)
ca mãrime de ieşire nivelul h2 = y din rezervorul al doilea, G f ( s) = 2 ;
U (s)
B) sã se determine modelul ARX asociat f.d.t. determinate la punctul A), pentru o perioadã de
esantionare T = 0,1 sec;
C) sã se gãseascã predictorul de ordinul 3 asociat modelului de la punctul B);
D) sã se determine forma matricealã a predictorului considerându-se orizontul de predic ie p = 3.
Solu ie:
A) Aplicând transformarea Laplace în condi ii ini iale nule ecua iilor primare care descriu dinamica
sistemului, se ob in relatiil:
⎧sH 1 ( s ) = 2 H 2 ( s ) − 2 H 1 ( s ) + u ( s ) 2 1
⎨ ⇒ H 1 ( s) = H 2 (s) + U ( s) ,
⎩sH 2 ( s ) = −5 H 2 ( s ) + 2 H 1 ( s ) s+2 s+2
care conduc imediat la f.d.t. cãutatã:
2 H (s)
G f (s) = = 2 .
s + 7 s + 6 U ( s)
2
E1 = 1 .
F1 = 1.4536 − 0.4966q −1
Pentru polinoamele H1 şi G1, prin rezolvarea ecua iei diofantice:
E1 B = G1 + q −1 H 1 , cu:
G1 = g1,0 , nG1 = i − 1 = 0 ,
H 1 = h1,0 , n H1 = i − 1 = 0 ,
se ob ine:
0.008 + 0.0063q −1 = g1, 0 + h1, 0 q −1
⎧ g1, 0 = 0.008
⎨
⎩h1,0 = 0.0063 .
G1 = 0.0008
H 1 = 0.0063
Calculul polinoamelor E2, F2, H2 şi G2 pentru predictorul de ordinul 2.
Pentru i = 2, polinoamele E2 şi F2 devin:
E 2 = e2,0 + e2,1 q −1 , n E1 = i − 1 = 1 ,
F2 = f 2, 0 + f 2,1 q −1 , n F2 = n A − 1 = 1 ,
iar coeficien ii acestora se pot calcula cu formulele
e2 , 0 = 1
e2,1 = −e2, 0 a1 = 1.4536
,
f 2, 0 = −e2, 0 a 2 − e2,1 a1 = 1.6164
f 2,1 = −e2, 0 a3 − e2,1 a 2 = −1.4536 ⋅ 0.4966 = −0.7219
rezultând:
E 2 = 1 + 1.4536q −1 ,
F2 = 1.6164 − 0.7219q −1 .
Gãsirea expresiilor polinoamelor G2 şi H2 se face rezolvând urm toarea ecua ie diofanticã:
E 2 B = G2 + q −2 H 2 , cu:
G2 = g 2, 0 + g 2,1 q −1 , nG2 = i − 1 = 1 ,
H 2 = h2,0 , n H 2 = n B − 1 = 0 .
Ecua ia este particularizat sub forma:
(1 + 1.4536q −1 )(0.008 + 0.0063q −1 ) = g 2,0 + g 2,1 q −1 + h2,0 q −2
0.008 + 0.0063q −1 + 0.0011q −1 + 100091q − 2 ,
−1 −2 −1 −2
0.008 + 0.0179q + 0.0092q = g 2, 0 + g 2,1 q + h2, 0 q
ob inându-se coeficien ii:
⎧ g 2,0 = 0.008
⎪
⎨ g 2,1 = 0.0179 .
⎪h = 0.0092
⎩ 2, 0
În final rezult :
G2 = 0.008 + 0.0179q −1
.
H 2 = 0.0092
Calculul polinoamelor E3, F3, H3 şi G3 pentru predictorul de ordinul 3.
Aceste polinoame au fost ob inute la punctul C) al exemplului şi sunt urmãtoarele:
E3 = 1 + 1.4536q −1 + 1.6164q −2
F3 = 1.6277 + 0.8027q −1
G3 = 0.008 + 0.0179q −1 + 0.00221q −2
.
H 3 = 0.0102
) )
Cunoscând coeficien ii polinoamelor Gi, Fi şi Hi, i = 1 … 3, se pot construi matricele P şi Ψ :
⎡g 0 0 ⎤ ⎡ 0.008 0 0 ⎤
) ⎢ 1,0 ⎥ ⎢
P = ⎢ g 2,1 g 2, 0 0 ⎥ = ⎢0.0179 0.008 0 ⎥⎥ ,
⎢⎣ g 3, 2 g 3,1 g 3, 0 ⎥⎦ ⎢⎣ 0.0221 0.0179 0.008⎥⎦
⎡f f 1,1 h1, 0 ⎤ ⎡1.4536 − 0.4966 0.0063⎤
) ⎢ 1, 0 ⎥
Ψ = ⎢ f 2, 0 f 2,1 h2,0 ⎥ = ⎢⎢1.6164 − 0.7219 0.0092⎥⎥ ,
⎢⎣ f 3, 0 f 3,1 h3, 0 ⎥⎦ ⎢⎣1.6277 − 0.8027 0.0102⎥⎦
şi astfel se ob ine forma matricealã a predictorului:
)
⎡ y (k + 1) ⎤ ⎡ 0.008 0 0 ⎤ ⎡ u (k ) ⎤ ⎡1.4536 − 0.4966 0.0063⎤ ⎡ y (k ) ⎤
⎢ y) (k + 2)⎥ = ⎢0.0179 0.008 0 ⎥⎥ ⋅ ⎢⎢ u (k +!) ⎥⎥ + ⎢⎢1.6164 − 0.7219 0.0092⎥⎥ ⋅ ⎢⎢ y (k − 1) ⎥⎥
⎢) ⎥ ⎢
⎣⎢ y (k + 3) ⎦⎥ ⎣⎢ 0.0221 0.0179 0.008⎦⎥ ⎣⎢u (k + 2)⎦⎥ ⎣⎢1.6277 − 0.8027 0.0102⎦⎥ ⎣⎢ y (k − 2)⎦⎥
Fig. L6.2.
Fig. L6.3.
J=
1
[Bu(k ) + q(1 − A) y(k ) − r (k + 1)]2 + λ u 2 (k ) .
2 2
Prin minimizarea acestei func ii obiectiv în raport cu u(k) se gãşeste expresia legii de reglare:
∂J b0 qb (1 − A)
=0 => u (k ) = r (k + 1) − 0 y (k )
∂u (k ) b0 B + λ b0 B + λ
şi astfel regulatorul cu predictie va ob ine forma:
0.008(1.4536 + 0.4966q −1 )
u (k ) = ( ) y (k ) .
0.008
+ −
0.008(0.008 + 0.0063q −1 ) + λ 0.008(0.008 + 0.0063q −1 ) + λ
r k 1
S= =
(
qb0 (1 − A) 0.008 − 1.4536 + 0.4966q −1
=
)
0.0116
+
0.0039 −1
q .
b0 + λ 0.008 + λ 0.008 + λ 0.008 + λ
b0 c 0.008
T* = =
b0 + λ 0.008 + λ
Schema bloc informa ional standard a structurii de reglare automat cu predic ie rezult
conform fig. L6.4.
e(k)
r(k) r(k+1) 1 u(k) B y(k)
q
––– T* q −1
R A
–
S
Fig. L6.4.
C) Calculul valorii de regim sta ionar constant a erorii de reglare se face aplicând urm toarea formul :
λ λ λ
ε s = r (k + 1) − y s = r (k + 1) = = .
B (1) 0.0143 λ + 0.0026
λ+ b0 λ+ 0.008
A(1) 0.043
E. BIBLIOGRAFIE
Laz r, C.: Conducerea predictiv a proceselor cu model cunoscut, Editura Matrix Rom, Bucureşti,
1999.
Preitl, S. şi R.-E. Precup: Introducere în ingineria regl rii automate, Editura Politehnica, Timişoara,
2001.
M.-B. Radac, 2019
Partea a III-a. Folosirea predictorilor de ordin mai mare cu funcții obiectiv pe mai
mulți pași
Exemplu de calcul al predictorului de ordin mai mare decât unu și folosirea acestuia într-o problemă de
urmărire a traiectoriei de referință rezolvată în cadru MPC cu o funcție obiectiv pe mai mulți pași.
Fie predictorul de ordinul 3 al sistemului cu două rezervoare din Partea I.B a lucrării de laborator.
1) Să se implementeze și să se simuleze în Simulink o soluție de reglare de tip MPC pentru urmărirea
unei intrări de referință de tip treaptă care comută din 0 în 1 la 0.2 sec, și răspunsul sistemului de
reglare la o perturbație de amplitudine 0.2 care acționează la 0.6 sec. Funcția obiectiv MPC de
∑ (r (k + i) − y(k + i))
3
minimizat la fiecare pas de eșantionare este J ( k ) = 2
+ λu 2 (k + i − 1) cu
i =1
λ = 0.0001 .
Soluție. Predictorii vor fi calculați de această dată prin intermediul unui script Matlab care în prealabil
discretizează funcția de transfer a procesului de la intrare la ieșire pentru o perioadă de eșantionare de 0.1
sec și o aduce la forma ARX cunoscută: A(q −1 ) y(k ) = B(q −1 )u (k − 1) . Calculul fiecărui predictor se face
rezolvând ecuațiile diofantice aferente. Fie acest script redat mai jos:
1 COD 1
2 % ------------------date_init.m----------------------- %
3 s=tf('s');
4 pc=2/(s^2+7*s+6);
5 Ts=0.1;
6 pcd=c2d(pc,Ts,'zoh')
7 pcdf=filt(pcd.num{1},pcd.den{1},Ts);B=pcd.num{1}(2:3);A=pcd.den{1};
8 nA=2;nB=1; % forma ARX A(q^-1)*y(k)=B(q^-1)*u(k-1)
9
10 Tsim=20;
11 N=(Tsim/Ts);
12
13 Orizont=3;
14 Q=eye(Orizont);lambda=0.0001;
15 R=zeros(N+Orizont,1);R(21:end)=1;
16
17 %calcul forma matriceala predictor
18 %A=[1 a1*q^-1 a2*q^-2]=[1 a1 a2],B=[b0 b1*q^-1]
19 %predictor de ordin 3
20 e30=1;
21 E3=[e30 -A(2)*e30 A(2)*A(2)*e30-A(3)*e30]; %E3=[e30 e31 e32]
22 F3=[-A(2)*E3(3)-A(3)*E3(2) -A(3)*E3(3)]; %F3=[f30 f31];
23 tmp=conv(E3,B);
24 G3=tmp(1:3);H3=tmp(4);
25
26 %predictor de ordin 1
27 e10=1;E1=e10;F1=-e10*[A(2) A(3)];G1=B(1);H1=B(2);
28
29 %predictor de ordin 2
30 e20=1;E2=[e20 -e20*A(2)];F2=[-e20*A(3)-E2(2)*A(2) -E2(2)*A(3)];
31 tmp=conv(E2,B);G2=tmp(1:2);H2=tmp(3);
32
33 P=[G1 0 0;fliplr(G2) 0;fliplr(G3)];H=[F1 H1;F2 H2;F3 H3];
34
35 % to clear persistent vars in Fcn, call >>clear 'FcnName' in prompt
36 clear myMPC
37 %-----------------------------------------------------------%
M.-B. Radac, 2019
Apoi, se remarcă în primul rând faptul că forma matriceală a predictorului până la ordinul 3
inclusiv este:
)
y ( k + 1) y(k ) u ( k )
y) ( k + 2) = H y ( k − 1) + P u ( k + 1) =⇔ Y = Hξ + PU ,
)
y ( k + 3) u (k − 1) u ( k + 2)
cu matricele P și H calculate în linia 38 din COD 1. Funcția obiectiv adusă în forma matriceală este
J = (R s − Y) T (R s − Y) + λU T U = ... = U T (P T P + λI) U − 2(R s − Hξ) T PU + Ψ T Ψ care minimizată
1
424
3
Ψ
Implementarea în Simulink a soluției se face folosind schema din Fig. 2, în care este folosit un
bloc de tip Matlab (Embedded) Function care rulează la fiecare pas de eșantionare codul aferent. Esența
schemei de implementare are la bază vectorul ξ = [ y (k ), y (k − 1), u (k − 1)]T care trebuie reactualizat la
fiecare pas de eșantionare. În acest sens, ξ este construit prin cod din doi vectori
yPast = [ y (k ), y (k − 1)]T , uPast = [u (k − 1)]T care sunt actualizați cu ultimele valori ale intrărilor
blocului de tip Embedded (sau Matlab Function), a se vedea Fig. 2 de mai jos.
Este redat mai jos codul aferent blocului embedded care implementează soluția de reglare MPC:
1 COD 2
2 % ------------------myMPC.m----------------------- %
3 function u=myMPC(input,R,P,H,Q,nA,nB,lambda,Orizont)
4
5 % to clear persistent vars in Fcn, call >>clear 'FcnName' in prompt
6 %clear myMPC
7 persistent yPast uPast k
8
9 if isempty(yPast) % initializari variabile persistente la prima rulare
10 yPast=zeros(2,1);
11 uPast=zeros(1,1);
12 k=1;
13 end
14
15 % actualizare uPast
16 for i=length(uPast):-1:2
17 uPast(i)=uPast(i-1);
18 end
19 uPast(1)=input(1);
20 %%%%%%%%%%%%%%%%%%
M.-B. Radac, 2019
21
22 % actualizare yPast
23 for i=length(yPast):-1:2
24 yPast(i)=yPast(i-1);
25 end
26 yPast(1)=input(2);
27 %%%%%%%%%%%%%%%%%%
28
29 Rs=[R(k+1) R(k+1) R(k+1)]';
30 %eyeO=[1 0 0;0 1 0;0 0 1];
31
32 Sol=-inv(P'*Q*P + lambda*eye(3)) * P' * Q * (H*[yPast;uPast]-Rs);
33 u=Sol(1);
34
35 k=k+1; %salt la pasul urmator
36
37 end % end myMPC
38 %-----------------------------------------------------------%
Rămâne ca și exercițiu testarea mai multor variante de „încărcare” a vectorului referințelor viitoare
pentru a observa efectul asupra răspunsului de la ieșire (ieșirea poate anticipa modificarea viitoare a
referinței și să înceapă răspunsul mai devreme). Se va testa și efectul diverselor alegeri ale parametrului
λ = 0.0001 asupra soluției.
Tematica lucrării
Fie procesul condus redat prin schema bloc informațională de mai jos
cu valorile parametrilor kp=35 V/V, Ra=4.2 Ω, La=14.28 mH, ke=km=0.33, J=0.71·10-3 kg·m2. Se cere:
1) Să se calculeze de mînă și să se verifice apoi cu calculatorul, forma matriceală a predictorului până
la ordinul 3, folosind modelul intrare ieșire de forma ARX, pentru modelul în timp discret al
procesului rezultat în urma discretizării cu metoda r.i.s.t. pentru perioada de eșantionare de 0.01
sec.
2) Să se implementeze și să se simuleze în Simulink o soluție de reglare de tip MPC pentru urmărirea
unei intrări de referință de tip treaptă care comută din 0 în 1 la 0.2 sec, și răspunsul sistemului de
reglare la o perturbație de amplitudine 0.2 care acționează la 0.6 sec. Funcția obiectiv MPC de
minimizat la fiecare pas de eșantionare este J (k ) = ∑3 (r (k + i ) − y (k + i ) )2 + λu 2 (k + i − 1) cu
i =1
λ = 0 .1 .
Pe scenariul de test de mai sus, se vor nota observațiile privind
- influența parametrului parametrului λ asupra performanțelor de reglare,
- efectul modificării parametrului kp=25 V/V asupra performanțelor de reglare,
- efectul încărcării referințelor viitoare cu valoarea de la pasul curent sau cu valori de evoluție
cunoscute dinainte.
Bibliografie
Preitl, St., Precup, R.-E., Preitl, Zs.: Structuri şi algoritmi pentru conducerea automată a proceselor, vol. 2,
Editura Orizonturi Universitare, Timişoara, 2009.