Documente Academic
Documente Profesional
Documente Cultură
LUCRAREA nr. 2
Implementarea în Matlab a sistemelor de reglare convenţională
Scopul lucrării
Lucrarea prezintă modul de implementare în Matlab a sistemelor de reglare
convenţională, folosind variantele discrete a algoritmilor de reglare tipizați obținute prin mai
multe metode de discretizare (vezi Lucrarea 1). Partea fixă va fi descrisă prim modele de
ordinul I și II, fară și cu timp mort. Se va face o analiză comparativă a comportării sistemelor
implementate în funcție de tipul algoritmilor implementați, precum și de metoda de
discretizare utilizată.
p(t)
Fig. 2.1.
unde:
(i) dispozitivele componente sunt:
- regulatorul, reprezentat prin funcţia de transfer HR(s);
- partea fixă, reprezentată prin funcţia de transfer HF(s) şi care este ansamblul element de
execuţie + instalaţie tehnologică + traductor,
iar
(ii) semnificaţiile semnalelor sunt:
- v(t) reprezintă semnalul de referinţă pe care trebuie să-l urmărească mărimea de ieşire
y(t);
- (t) reprezintă eroarea sistemului, (t) = v(t) – y(t);
- u(t) reprezintă semnalul de comandă furnizat de regulator către partea fixă;
- y(t) este semnalul de ieşire din partea fixă sau mărimea care se reglează;
- p(t) este semnalul perturbator care tinde să modifice valoarea mărimii de ieşire y(t).
În acestă lucrare se propune analiza rezultatelor obţinute prin simularea numerică a
sistemului de reglare din Fig. 2.1, considerând că partea fixă este descrisă prin funcţii de
transfer de ordinul I şi ordinul II. Algoritmii de reglare vor fi implementaţi utilizând variantele
lor discrete prezentate în Lucrarea nr.1, iar pentru partea fixă vom folosi forma sa discretizată
ce va fi prezentată în paragraful următor.
2.2. Discretizarea părţii fixe
Precizăm că pentru discretizarea parţii fixe se pot folosi metode de discretizare directe
prezentate în Cap. 4 din curs. În acest paragraf, vom prezenta discretizarea parţii fixe folosind
aproximarea operatorului de derivare prin diferenţă înainte (FD).
2-1
2.2.1. Element aperiodic de ordinul I, fără zerou
Considerăm un element aperiodic de ordinul I fără timp mort descris prin funcţia de
transfer:
K1 Y ( s)
H F ( s) (2.1)
T1 s 1 U ( s )
Din (2.1) se obţine că:
K1
Y (s) U ( s ) sau (T1 s 1) Y ( s ) K 1U ( s ) (2.2)
T1 s 1
Aplicând transformarea Laplace inversă, în domeniul timp, relaţia (2.2) devine:
1 K
y (t ) y (t ) 1 u (t ) (2.3)
T1 T1
unde y (t ) L1{sY ( s )} , iar u (t ) L1{U ( s)} .
La momentul t kT , unde T 0 reprezintă intervalul de discretizare sau perioada de
eşantionare, iar k Z , relaţia (2.3) devine:
y[(k 1)T ] y (kT ) 1 K
y (t ) t kT y (kT ) 1 u (kT ) (2.4)
T T1 T1
Renunţând în această ecuaţie la variabila T din paranteze, forma discretă a elementului
aperiodic de ordinul I fără timp mort este dată de relaţia:
T T
y (k 1) 1 y (k ) K 1 u (k ) , k Z (2.5)
T1 T1
T T
Notând a 0 1 şi b0 K 1 , relaţia (2.5) devine:
T1 T1
y (k 1) a 0 y (k ) b0 u (k ) , k Z (2.6)
2-2
y[(k 1)T ] y (kT ) 1 u (kT ) u[(k 1)T ] K 1
y (t ) t kT y (kT ) K 1 u (kT )
T T1 T1 T T1
(2.10)
Renunţând în această ecuaţie la variabila T din paranteze, forma discretă a elementului
aperiodic de ordinul I fără timp mort, cu un zero real, este dată de relaţia:
T T
y (k 1) 1 y (k ) K 1 u (k ) K 1 u (k 1) , k Z (2.11)
T1 T1 T1 T1
T T T
Notând a 0 1 , b0 K 1 şi b1 K 1 , relaţia (2.11) devine:
T1 T1 T1 T1
y (k 1) a 0 y (k ) b0 u (k ) b1u (k 1) , k Z (2.12)
sau
T (T1 T2 ) T (T1 T2 ) T 2 T2
y[(k 2)T ] 2
y[(k 1)T ] 1 y (kT ) K 2 u (kT )
T1T2 T1T2 T1T2 T1T2
(2.16)
Renunţând în această ecuaţie la variabila T din argumentul variabilelor, forma discretă a
elementului aperiodic de ordinul II fără timp mort, cu poli reali, este dată de relaţia:
T (T1 T2 ) T (T1 T2 ) T 2 T2
y (k 2) 2 y (k 1) 1 y (k ) K 2 u (k ) (2.17)
T1T2 T1T2 T1T2 T1T2
2-3
T (T1 T2 ) T (T1 T2 ) T 2 T2
Notând: a1 2 , a 0 1 , b0 K 2 , relaţia
T1T2 T1T2 T1T2 T1T2
(2.17) devine:
y (k 2) a1 y (k 1) a0 y (k ) b0 u (k ) , k Z (2.18)
De notat că trebuie preciyate valorile y(0) şi y(1).
2-4
T (T1 T2 ) T (T1 T2 ) T 2 T
a1 2 , a 0 1 , b1 K 2 ,
T1T2 T1T2 T1T2 T1T2
T T2
b0 K 2 ,
T1T2 T1T2
relaţia (2.17) devine:
y (k 2) a1 y (k 1) a 0 y (k ) b1u (k 1) b0 u (k ) , k Z . (2.24)
De notat că trebuie preciyate valorile y(0) şi y(1).
2-5
Fig. 3.2. Răspunsul sistemului de ordinal I.
2-6
2.4. Simularea numerică a sistemelor de reglare convenţională
Folosind formele discretizate atât ale părţii fixe cât şi ale algoritmilor numerici PID
prezentaţi în Cap. 2, prin simularea numerică, s-a analizat în detaliu comportarea sistemului
de reglare convenţională prezentat din Fig. 3.1.
S-a considerat că partea fixă este descrisă prin funcţii de transfer de ordinul I şi ordinul II,
a căror formă discretizată a fost prezentată în paragraful 3.1.
Algoritmii de reglare au fost implementaţi utilizând variantele lor discrete prezentate în
subcapitolul 2.6.
S-a considerat că asupra părţii fixe acţionează o perturbaţie p(t ) tip treaptă aplicată la un
anumit moment de timp. Pentru procesele de ordinul I s-a considerat ca perturbatia actionează
fie la intrarea părţii fixe, fie la ieşirea acesteia. Pentru procesele de ordinul II s-a considerat că
perturbatia acţionează fie la intrarea părţii fixe, fie la ieşirea acesteia, dar şi în interiorul părţii
fixe, împărţind practic sistemul de ordin II într-o conexiune a două sisteme de ordin I.
În acest paragraf vom prezenta numai rezultatele obţinute prin simularea numerică a
acestui sistemului de reglare din Fig. 3.1, considerând că partea fixă este descrisă printr-o
funcţie de transfer de ordinul II strict proprie.
% Program Sr_procII.m: Simularea unui sistem de reglare in care partea fixa
% este descrisa printr-o functie de transfer de ordinul II
clear
clf
figure(gcf); tp=1;
t0 = 0; tfinal = 400; t1 = 200;
T = 0.1;
P0 = 0.5; % Perturbatia
q = tfinal/T; q1 = t1/T;
% Parametrii procesului
k2 = 5; T1 = 7; T2 = 2;
% Parametrii regulatorului
Kr = 0.1; Ti = 4; Td = 7; Tg = 3;
v0 =1.5; % Referinta
uf1 = 0; y0 = 0; y1 = 0; y2 = 0;
x(1) = 0;
% Perturbatia actioneaza la intrarea partii fixe
for k = 1 : q,
v(k) = v0;
eps(k) = v(k)-y0;
y(k) = Kr*eps(k);
u0 = Kr*eps(k); ur(k) = u0;
if k < q1, p(k) = 0;
else p(k) = P0; end
uf(k) = ur(k) + p(k);
y0=(exp(-T/T1)+exp(-T/T2))*y1-exp(-T/T1)*exp(-T/T2)*y2+k2/(T1-T2)*(exp(-
T/T1)-exp(-T/T2))*uf1; y(k) = y0;
t(k)=k*T;
y2=y1; y1=y0; uf1=uf(k);
end
plot(t,v,t,y); grid; xlabel('Timp'); ylabel('Referinta v, Iesirea y');
title('Lege de tip-P. Perturbatia actioneaza la intrarea partii fixe'); pause
plot(t,ur,t,eps); grid; xlabel('Timp'); ylabel('Comanda u, Eroarea eps');
title('Lege de tip-P. Perturbatia actioneaza la intrarea partii fixe'); pause
%%
for k = 1 : q,
v(k) = v0;
eps(k) = v(k)-y0;
x(k+1) = x(k)+Kr*T/Ti*eps(k);
u0 = x(k)+Kr*eps(k); ur(k) = u0;
if k < q1, p(k) = 0;
else p(k) = P0; end
uf(k) = ur(k)+p(k);
2-7
y0=(exp(-T/T1)+exp(-T/T2))*y1-exp(-T/T1)*exp(-T/T2)*y2+k2/(T1-T2)*(exp(-
T/T1)-exp(-T/T2))*uf1; y(k) = y0;
t(k) = k*T;
y2 = y1; y1 = y0; uf1 = uf(k);
end
plot(t,v,t,y); grid; xlabel('Timp'); ylabel('Referinta v, Iesirea y');
title('Lege de tip-PI. Perturbatia actioneaza la intrarea partii fixe'); pause
plot(t,ur,t,eps); grid; xlabel('Timp'); ylabel('Comanda u, Eroarea eps');
title('Lege de tip-PI. Perturbatia actioneaza la intrarea partii fixe'); pause
%%
for k = 1 : q
v(k) = v0;
eps(k) = v(k)-y0;
x(k+1) = x(k)-T/Tg*x(k)+Kr*T/Tg*(1-Td/Tg)*eps(k);
u0 = x(k)+Kr*Td/Tg*eps(k); ur(k) = u0;
if k < q1, p(k) = 0;
else p(k) = P0; end
uf(k) = ur(k)+p(k);
y0 = (exp(-T/T1)+exp(-T/T2))*y1-exp(-T/T1)*exp(-T/T2)*y2+k2/(T1-T2)*(exp(-
T/T1)-exp(-T/T2))*uf1; y(k)=y0;
t(k)=k*T;
y2=y1; y1=y0; uf1=uf(k);
end
plot(t,v,t,y); grid; xlabel('Timp'); ylabel('Referinta v, Iesirea y');
title('Lege de tip-PD. Perturbatia actioneaza la intrarea partii fixe'); pause
plot(t,ur,t,eps); grid; xlabel('Timp'); ylabel('Comanda u, Eroarea eps');
title('Lege de tip-PD. Perturbatia actioneaza la intrarea partii fixe'); pause
%%
x1(k) = 0; x2(k) = 0;
for k = 1 : q,
v(k) = v0;
eps(k) = v(k)-y0;
x1(k+1) = x1(k)+Kr*T/Ti*eps(k);
x2(k+1) = x2(k)-T/Tg*x2(k)+Kr*T/Tg*(1-Td/Tg)*eps(k);
u0 = x1(k)+x2(k)+Kr*Td/Tg*eps(k); ur(k) = u0;
if k < q1, p(k) = 0;
else p(k) = P0; end
uf(k) = ur(k)+p(k);
y0=(exp(-T/T1)+exp(-T/T2))*y1-exp(-T/T1)*exp(-T/T2)*y2+k2/(T1-T2)*(exp(-
T/T1)-exp(-T/T2))*uf1; y(k) = y0;
t(k) = k*T;
y2 = y1; y1 = y0; uf1 = uf(k);
end
plot(t,v,t,y); grid; xlabel('Timp'); ylabel('Referinta v, Iesirea y');
title('Lege de tip-PID. Perturbatia actioneaza la intrarea partii fixe'); pause
plot(t,ur,t,eps); grid; xlabel('Timp'); ylabel('Comanda u, Eroarea eps');
title('Lege de tip-PID. Perturbatia actioneaza la intrarea partii fixe'); pause
2-8
y0=(exp(-T/T1)+exp(-T/T2))*y1-exp(-T/T1)*exp(-T/T2)*y2+k2/(T1-T2)*(exp(-
T/T1)-exp(-T/T2))*ur1;
yf(k+1) = y0+p(k);
t(k+1) = k*T;
y2 = y1; y1 = y0; ur1 = ur(k);
end
v(q+1) = v(q); ur(q+1) = ur(q); eps(q+1) = eps(q);
plot(t,v,t,yf); grid; xlabel('Timp'); ylabel('Referinta v, Iesirea y');
title('Lege de tip-P. Perturbatia actioneaza la iesirea partii fixe'); pause
plot(t,ur,t,eps); grid; xlabel('Timp'); ylabel('Comanda u, Eroarea eps');
title('Lege de tip-P. Perturbatia actioneaza la iesirea partii fixe'); pause
%%
for k = 1 : q
v(k) = v0;
eps(k) = v(k)-yf(k);
x(k+1) = x(k)+Kr*T/Ti*eps(k);
u0 = x(k)+Kr*eps(k);
ur(k) = u0;
if k < q1, p(k) = 0;
else
p(k) = P0; end
y0 = (exp(-T/T1)+exp(-T/T2))*y1-exp(-T/T1)*exp(-T/T2)*y2+k2/(T1-T2)*(exp(-
T/T1)-exp(-T/T2))*ur1;
yf(k+1) = y0+p(k);
t(k+1) = k*T;
y2 = y1; y1 = y0; ur1 = ur(k); eps(q+1) = eps(q);
end
v(q+1) = v(q); ur(q+1) = ur(q);
plot(t,v,t,yf); grid; xlabel('Timp'); ylabel('Referinta v, Iesirea y');
title('Lege de tip-PI. Perturbatia actioneaza la iesirea partii fixe'); pause
plot(t,ur,t,eps); grid; xlabel('Timp'); ylabel('Comanda u, Eroarea eps');
title('Lege de tip-PI. Perturbatia actioneaza la iesirea partii fixe'); pause
%%
for k = 1 : q,
v(k) = v0;
eps(k) = v(k)-yf(k);
x(k+1) = x(k)-T/Tg*x(k)+Kr*T/Tg*(1-Td/Tg)*eps(k);
uo = x(k)+Kr*Td/Tg*eps(k); ur(k) = uo;
if k < q1, p(k) = 0;
else p(k) = P0;
end
y0=(exp(-T/T1)+exp(-T/T2))*y1-exp(-T/T1)*exp(-T/T2)*y2+k2/(T1-T2)*(exp(-T/T1)-
exp(-T/T2))*ur1;
yf(k+1) = y0+p(k);
t(k+1) = k*T;
y2 = y1; y1 = y0; ur1 = ur(k);
end
v(q+1) = v(q); ur(q+1) = ur(q); eps(q+1) = eps(q);
plot(t,v,t,yf); grid; xlabel('Timp'); ylabel('Referinta v, Iesirea y');
title('Lege de tip-PD. Perturbatia actioneaza la iesirea partii fixe'); pause
plot(t,ur,t,eps); grid; xlabel('Timp'); ylabel('Comanda u, Eroarea eps');
title('Lege de tip-PD. Perturbatia actioneaza la iesirea partii fixe'); pause
%%
Kr = 0.1; Ti = 3.5; k2 = 6; T1 = 7; T2=9;
x(1) = 0; y1(1) = 0; p0 = 1; yf(1) = 0;
v0 = 1.7;
for k = 1 : q,
v(k) = v0;
eps(k) = v(k)-yf(k);
x(k+1) = x(k)+Kr*T/Ti*eps(k);
u0 = x(k)+Kr*eps(k); u(k) = u0;
y1(k+1)=(1-T/T1)*y1(k)+T/T1*u0;
if k < q1; p(k) = 0;
else p(k) = p0; end
u1(k) = y1(k)+p(k);
2-9
yf(k+1) = (1-T/T2)*yf(k)+k2*T/T2*u1(k);
t(k+1) = k*T;
end
v(q+1) = v(q); u(q+1) = u(q); eps(q+1) = eps(q);
plot(t,v,t,yf); grid; xlabel('Timp'); ylabel('Referinta v, Iesirea y');
title('Lege de tip-PI. Perturbatia actioneaza in interiorul partii fixe');
pause
plot(t,ur,t,eps); grid; xlabel('Timp'); ylabel('Comanda u, Eroarea eps');
title('Lege de tip-PI. Perturbatia actioneaza in interiorul partii fixe');
pause
2 - 10
2 - 11
2 - 12