regulator PID


Skrypt  Regulator PID Katedra Automatyki Napędu i Urządzeń Przemysłowych
LABORATORIUM TEORII STEROWANIA I TECHNIKI REGULACJI
Regulator PID  charakterystyki czasowe
i częstotliwościowe
1 Wprowadzenie
Regulator PID jest to element układu regulacji realizujący w przypadku idealnym następujące prawo sterowania:
T
de(t)
u(t) = K e(t) + Ki e(t)dt +Kd , ( 1 )
p +"
dt
0
gdzie:
Kp  współczynnik części proporcjonalnej
Ki  współczynnik części całkującej Ki = 1/Ti Ti  czas zdwojenia
Kd  współczynnik części różniczkującej Kd = Td Td  czas wyprzedzenia
e(t)  E(s)  uchyb regulacji (błąd) e(t) = ref(t)  y(t)
u(t)  U(s)  sygnał sterujący podawany na obiekt (generowany przez regulator)
ref(t)  Ref(s)  sygnał odniesienia (referencyjny)
y(t)  Y(s)  sygnał wyjściowy
d(t)  D(s)  sygnał zakłócenia
Po przekształceniu Laplace a otrzymano transmitancję:
Kd s2 + K s + Ki
U(s) 1 Ki
p
GPID(s) = = K + + Td s = K + + Kd s = . ( 2 )
p p
E(s) Tis s s
W literaturze spotyka się również inne postacie zapisu prawa sterowania regulatora PID, np.:
K
U(s) 1
p
GPID(s) = = K (1 + + TDs) = K + + K TDs ( 3 )
p p p
E(s) TI s TI s
gdzie:
TI = KpTi
TD = Td/Kp
CzÅ‚on różniczkujÄ…cy realizowany w praktyce zawiera niedużą inercjÄ™ Ä << Td (np.: Ä = 0,001). Zatem jego
transmitancja przyjmuje postać:
Td s
Gd(s) = , ( 4 )
Äs + 1
stÄ…d:
(Kd + K Ä)s2 + (K + KiÄ)s + Ki
U(s) 1 Td s Ki Kd s
p p
GPID(s) = = K + + = K + + = ( 5 )
p p
E(s) Tis Äs + 1 s Äs + 1 Äs2 + s
Ponadto jeśli uwzględni się możliwości techniczne (wejście wzmacniacza operacyjnego w stan nasycenia),
to rzeczywisty regulator PID można przedstawić za pomocą następującego schematu blokowego:
Kp
+
E(s) U(s)
1
+
Ki
s
e(t) u(t)
+
Td s
Äs + 1
rys. 1
1
Skrypt  Regulator PID Katedra Automatyki Napędu i Urządzeń Przemysłowych
Instrukcja ćwiczenia laboratoryjnego
2 Przykład
Będziemy rozważać następujący układ automatycznej regulacji z ujemną pętlą sprzężenia zwrotnego:
rys. 2
Dla powyższego układu (rys.2) jako obiekt wezmy układ masa, sprężyna i amortyzator (problem tłumienia
drgań):
y(t)
y(t) przemieszczenie
by(t)
M  masa
F(t) = u(t)
F(t) = u(t)  siła wymuszająca
M
b  współczynnik tłumienia lepkościowego
k  stała sprężyny
k
rys. 3
Modelem matematycznym powyższego obiektu jest równanie różniczkowe drugiego rzędu, które po
przekształceniu Laplace a można przedstawić w postaci transmitancji:
Y(s) 1
My(t) + by(t) + ky(t) = u(t) Ò! =
U(s) Ms2 + bs + k
gdzie:
M = 1 [kg], b = 10 [N s/m], k = 20 [N/m],
H(s) =1  jednostkowa pętla sprzężenia zwrotnego,
ref(t) = 1(t) Ò! Ref(s) = 1/s  wymuszenie, D(s) = 0,
stÄ…d:
Y(s) 1
= .
U(s) s2 + 10s + 20
2.1 Wpływ współczynników: Kp, Ki, Kd, na: czas narastania, przeregulowanie
i błąd w stanie ustalonym.
Obiekt w układzie otwartym  odpowiedz na skok jednostkowy
Utwórz m-plik Matlaba:
M = 1; num=u;
b = 10; den=[M b k];
k = 20; step(num,den)
u = 1; title('Układ otwarty - odp. na skok jednostkowy')
disp('Naciśnij klawisz ---->'), pause
2
Skrypt  Regulator PID Katedra Automatyki Napędu i Urządzeń Przemysłowych
Wzmocnienie stałe obiektu wynosi 1/20 tj. 0,05, jest to wartość, na której ustala się odpowiedz obiektu.
Odpowiada to błędowi w stanie ustalonym 0,95. Czas narastania i czas ustalenia wynoszą odpowiednio
ok. 1 [s] i 1,5 [s]. Zaprojektujemy regulator, który zredukuje czas narastania i czas ustalenia oraz wyeliminuje
błąd w stanie ustalonym.
Regulator proporcjonalny
K
p
Transmitancja układu zamkniętego .
s2 + 10s + ( 20 + K )
p
Kp=300; figure(2)
num=[Kp*u]; step(num,den,t)
den=[M b k+Kp]; title('Układ zamknięty - odp. na skok jednostkowy Reg P')
t=0:0.01:2; disp('Naciśnij klawisz ---->'), pause
lub z instrukcjÄ… cloop()
num=[u]; step(numCL, denCL,t)
title('Układ zamknięty - odp. na skok jednostkowy Reg P')
den=[M b k];
[numCL,denCL]=cloop(Kp*num,den); disp('Naciśnij klawisz ---->'), pause
figure(3)
Zwróć uwagę jakie nastąpiły zmiany.
Regulator proporcjonalno-różniczkujący (idealny)
Kd s + K
p
Transmitancja układu zamkniętego .
s2 + ( 10 + Kd )s + ( 20 + K )
p
Kd=10; step(num,den,t)
num=[Kd Kp]; title('Układ zamknięty - odp. na skok jednostkowy Reg PD')
den=[M b+Kd k+Kp]; disp('Naciśnij klawisz ---->'), pause
figure(3)
Zwróć uwagę jakie nastąpiły zmiany.
Regulator proporcjonalno-całkujący
K s + Ki
p
Transmitancja układu zamkniętego .
s3 + 10s2 + ( 20 + K )s + Ki
p
Kp=30; step(num,den,t)
Ki=70; title('Układ zamknięty - odp. na skok jednostkowy Reg PI')
num=[Kp Ki]; disp('Naciśnij klawisz ---->'), pause
den=[M b k+Kp Ki];
Zwróć uwagę jakie nastąpiły zmiany.
Regulator proporcjonalno-całkująco-różniczkujący (idealny)
Kd s2 + K s + Ki
p
Transmitancja układu zamkniętego .
s3 + ( 10 + Kd )s2 + ( 20 + K )s + Ki
p
Kp=350; figure(4)
Ki=300; t=0:0.01:2;
Kd=50; step(num,den,t)
num=[Kd Kp Ki]; title('Układ zamknięty - odp. na skok jednostkowy Reg PID')
den=[M b+Kd k+Kp Ki]; disp('Naciśnij klawisz ---->'), pause
Zwróć uwagę jakie nastąpiły zmiany.
2.2 Uruchom m-plik regpid.m.
Zapoznaj się z odpowiedzią na skok jednostkowy i charakterystykami Bodego (obiekt jw.) dla różnych wartości
parametrów regulatorów: P, PD, PI, PID:
układu otwartego
układu z regulatorem proporcjonalnym
układu z regulatorem proporcjonalno-różniczkującym (rzeczywistym i idealnym)
układu z regulatorem proporcjonalno-całkującym
układu z regulatorem proporcjonalno-całkująco-różniczkującym (rzeczywistym i idealnym)
3
Skrypt  Regulator PID Katedra Automatyki Napędu i Urządzeń Przemysłowych
2.3 Metoda Ziglera i Nicholsa
Jednym ze sposobów doboru nastaw parametrów regulatora PID dla obiektów nie zawierających opóznień jest
inżynierska metoda Ziglera i Nicholsa. Wymaga ona obliczenia marginesu wzmocnienia i częstotliwości
odpowiadającej wzmocnieniu krytycznemu, tj. takiemu, przy którym faza jest równa  180 stopni. Jeśli
oznaczymy Gm  margines amplitudy, É 180  wspomniana czÄ™stotliwość, to nastawy Ziglera i Nicholsa dla
regulatorów są następujące:
Ä„ Ti
PID: Kp=0,6 Gm
Ti = Td =
É-180 4
5Ä„
PI: Kp=0,45 Gm
Ti =
3É-180
P: Kp=0,5 Gm
Należy zaznaczyć, że uzyskane nastawy nie są optymalne i można je w sposób arbitralny skorygować.
3 Zadania do wykonania
1. Wykaż, że regulatory typu P i PD w przeciwieństwie do PI, PID nie zapewniają likwidacji uchybu
ustalonego.
2. Dobierz parametry regulatora PID według metody Ziglera i Nicholsa. Skorzystaj z funkcji
[Gm,Pm,Écg,Écp] = margin(L,M) obliczajÄ…cej margines (zapas) wzmocnienia Gm i fazy Pm dla ukÅ‚adu
opisanego równaniami stanu lub transmitancją (L  licznik, M  mianownik) oraz odpowiadające im
czÄ™stotliwoÅ›ci graniczne  odpowiednio Écg (w180) i Écp. Przedstaw przebiegi. Transmitancja obiektu:
1
GO(s) = .
( 30s + 1)( 20s + 1)( 5s + 1)
3. Jaki jest efekt zmiany wartości Kp, Ki, Kd na odpowiedz układu z rys.2 (czas narastania tr, przeregulowanie
Mo, czas ustalenia ts, błąd w stanie ustalonym ess) oraz na charakterystyki Bodego (szerokość pasma, moduł
rezonansowy Mp i odpowiadajÄ…ca mu czÄ™stotliwość Ép (Aneks C)) przy wymuszeniu skokiem
jednostkowym. Zinterpretuj wyniki. Skorzystaj z funkcji:
[Mo,tp,tr,ts,ess] = tstats(t,y,ref) (Aneks A) oraz [bw,err] = bwcalc(db,omega,lfg_db) (Aneks B).
4 1
Transmitancja obiektu i pętli sprzężenia zwrotnego: Go( s ) = , H(s) =
( 2s + 1)( 0,5s + 1) 0,05s + 1
BÅ‚Ä…d w stanie
Czas narastania Przeregulowanie Czas ustalenia Szerokość pasma
ustalonym
tr [s] Mo [%] ts [s] bw [rad/s]
ess [%]
Kp
Ki
Kd
Y(s)
4. Na podstawie układu rys.2 wyznacz transmitancję oraz przebieg y(t) przy d(t) = 1(t), ref(t) = 0
D(s)
dla regulatora P, PI, PID. Zinterpretuj otrzymane wyniki i porównaj z przebiegiem y(t) i ref(t) = 1(t)
przy d(t) = 0(t).
4 PID  Literatura
[1] Frederick D. K., Chow J. H.:  Feedback control problems using Matlab and the Control System Toolbox ,
PWS Publishing Company, 1995
[2] Markowski A., Kostro J., Lewandowski A.:  Automatyka w pytaniach i odpowiedziach , WNT, Warszawa,
1979
[3] Shahian B., Hassul M.:  Control system design using Matlab , Prentice Hall, 1992
[4] www.engin.umich.edu/group/ctm/
[5] Zalewski A., Cegieła R.:  Matlab  obliczenia numeryczne i ich zastosowania , Nakom, Poznań, 1996
4
Skrypt  Regulator PID Katedra Automatyki Napędu i Urządzeń Przemysłowych
Aneks
omega  wektor częstotliwości
A) B)
lfg_db  wzmocnienie sygnału
np.: np.:
stałego w dB  funkcja
t = 0:0.1:2 lfg = dcgain(L,M)
dcgain(L,M)
y = step(L,M,t), lfg_dB = 20*log10(lfg)
ref = 1
argumenty lewostronne
function [bw,err] =
(wyjściowe):
function [Mo,tp,tr,ts,ess] = tstats(t,y,ref) bwcalc(db,omega,lfg_db)
bw  szerokość pasma
argumenty prawostronne (wejściowe): Określa szerokość pasma układu
err  flaga błędu:
t  wektor czasu symulacji zarówno otwartego, jak i zamkniętego
1-amplituda przy najniższej
y  wektor odpowiedzi przez:
częstotliwości
ref  poziom sygnału referencyjnego w stanie  obliczenie odpowiedzi
< lfg  3.0[dB]
ustalonym częstotliwościowej dla danego wektora
2-amplituda przy wszystkich
częstotliwości omega
częstotliwościach
argumenty lewostronne (wyjściowe):  znalezienie częstotliwości, przy której
> lfg  3.0[dB]
Mo  przeregulowanie [%] amplituda spada o 3dB poniżej
tp  czas osiągnięcia wartości maksymalnej amplitudy sygnału stałego (lfg)
C)
tr  czas narastania
ts  czas ustalenia (2%) argumenty prawostronne (wejściowe): [Mp,i] = max(mag)
ess  błąd w stanie ustalonym [%] db  wektor amplitud w dB
Ép = w(i)
Listing m-pliku Matlaba regpid.m
% OZNACZENIA t=0:0.01:4;
% dla obiektu w=logspace(-2,2,200);
% n,d - obiekt: mianownik,licznik
% z,p,k - obiekt: zera, bieguny, wzmocnienie Kp=input('Wprowadz Kp= ');
% a,b - obiekt: odpowiedz na skok jednostkowy Kd=input('Wprowadz Kd= ');
% e,f - obiekt: ch-ka Bodego Ki=input('Wprowadz Ki= ');
% cyfra na końcu oznaczenia oznacza kolejno: inKd=input('Wprowadz inercję dla różniczki
1-reg.P, 2-reg.PD, 3-reg.PI, 4-reg.PID inKd= ');
% dla regulatora P
% rl1,rm1 - regulator %=============================================
% nro1,dro1 - obiekt+regulator ukł.otw. % Odpowiedz obiektu
% nrz1,drz1 - obiekt+regulator ukł.zamk. z n=1; d=[1,10,20];
pętlą ujemnego sprzężenia zwrotnego clc
% zrz1,prz1,krz1 - zera, bieguny i wzmocnienie 'Transmitancja obiektu'
dla ukł.zamk. z reg.P printsys(n,d)
% a1,b1,c1,d1, - odpowiedzi na skok jednostkowy [z,p,k]=tf2zp(n,d)
% g1,h1 - ch-ki Bodego dla regulatora
% i1,j1 - ch-ki Bodego dla obiekt+regulator subplot(3,1,1)
ukł.otw. step(n,d,t)
% k1,l1 - ch-ki Bodego dla obiekt+regulator [a,b]=step(n,d,t);
ukł.zamk. z pętlą ujemnego sprzężenia zwrotnego xlabel(''), ylabel('Amplituda Czas [s]'),
% dla regulatora PD PID indeks "i" oznacza title('Odpowiedz obiektu')
regulator idealny
disp('---->'), pause
%Kp=350; %#############################################
%Ki=300; % Reg. P
%Kd=50; %Kp=300;
%inKd=.01; %tau rl1=[Kp]; rm1=[1];
clc
clear 'Transmitancja regulatora P'
clc printsys(rl1,rm1)
%============================================== [zr1,pr1,kr1]=tf2zp(rl1,rm1)
set(gcf,'DefaultAxesFontSize',9)
set(gcf,'DefaultTextFontSize',9) disp('---->'), pause
5
Skrypt - Regulator PID Katedra Automatyki Napędu i Urządzeń Przemysłowych
% Odpowiedz układu otwartego z reg. P clc
[nro1,dro1]=series(rl1,rm1,n,d); disp('Regulator PD---->'), pause
clc
'Transmitancja układu otwartego z reg. P' figure(3)
printsys(nro1,dro1) subplot(4,1,1)
[zro1,pro1,ko1]=tf2zp(nro1,dro1) step(n,d),xlabel(''), ylabel('Amplituda Czas
subplot(3,1,2) [s]'), title('Odpowiedz obiektu')
step(nro1,dro1,t)
[a1,b1]=step(nro1,dro1,t); % reg. PD
xlabel(''), ylabel('Amplituda Czas [s]'), %Kp=300;
title('Odpowiedz ukłau otwartego z reg. P') %Kd=10;
rl2i=[Kd, Kp]; rm2i=[0, 1];
disp('---->'), pause rl2=[Kd, Kp]; rm2=[inKd, 1];
clc
% Odpowiedz układu zamkniętego z reg. P 'Transmitancja regulatora z inercją PD'
[nrz1,drz1]=cloop(nro1,dro1,-1); printsys(rl2,rm2)
clc [zr2,pr2,kr2]=tf2zp(rl2,rm2)
'Transmitancja układu zamkniętego z reg. P - 'Transmitancja idealnego regulatora PD'
ujemne sprzężenie zwrotne' printsys(rl2i,rm2i)
printsys(nrz1,drz1)
[zrz1,prz1,kz1]=tf2zp(nrz1,drz1) disp('---->'), pause
subplot(3,1,3)
step(nrz1,drz1,t) % Odpowiedz układu otwartego z reg. PD
[c1,d1]=step(nrz1,drz1,t); [nro2,dro2]=series(rl2,rm2,n,d);
xlabel(''), ylabel('Amplituda, Czas [s]'), clc
title('Odpowiedz ukłau zamkniętego z reg. P - 'Transmitancja układu otwartego z reg. PD'
ujemne sprzężenie zwrotne') printsys(nro2,dro2)
[zro2,pro2,ko2]=tf2zp(nro2,dro2)
disp('---->'), pause subplot(4,1,2)
step(nro2,dro2,t)
%============================================= [a2,b2]=step(nro2,dro2,t);
clc xlabel(''), ylabel('Amplituda Czas [s]'),
disp('Charakterystyki częstotliwościowe Bodego title('Odpowiedz ukłau otwartego z reg. PD')
dla ukł. z reg. P'), pause
disp('---->'), pause
% obiekt
[e,f,w]=bode(n,d,w); % Odpowiedz układu zamkniętego z reg. PD
% regulator [nrz2,drz2]=cloop(nro2,dro2,-1);
[g1,h1,w]=bode(rl1,rm1,w); clc
% obiekt+regulator ukł. otw. 'Transmitancja układu zamkniętego z reg. PD -
[i1,j1,w]=bode(nro1,dro1,w); ujemne sprzężenie zwrotne'
% obiekt+regulator ukł. zamk. printsys(nrz2,drz2)
[k1,l1,w]=bode(nrz1,drz1,w); [zrz2,prz2,kz2]=tf2zp(nrz2,drz2)
subplot(4,1,3)
figure(2) step(nrz2,drz2,t)
subplot(4,2,1) [c2,d2]=step(nrz2,drz2,t);
semilogx(w,20*log10(e)),grid xlabel(''), ylabel('Amplituda, Czas [s]'),
title('obiekt') title('Odpowiedz ukłau zamkniętego z reg. PD -
subplot(4,2,3) ujemne sprzężenie zwrotne')
semilogx(w,f),grid
disp('---->'), pause
subplot(4,2,2)
semilogx(w,20*log10(g1)),grid %^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
title('regulator P') % Odpowiedz układu otwartego z reg. PD idealnym
subplot(4,2,4) [nro2i,dro2i]=series(rl2i,rm2i,n,d);
semilogx(w,h1),grid clc
'Transmitancja układu otwartego z reg. PD
subplot(4,2,5) idealnym'
semilogx(w,20*log10(i1)),grid printsys(nro2i,dro2i)
title('obiekt+regulator P otw.') [a2i,b2i]=step(nro2i,dro2i,t);
subplot(4,2,7)
semilogx(w,j1),grid % Odpowiedz układu zamkniętego z reg. PD
idealnym
subplot(4,2,6) [nrz2i,drz2i]=cloop(nro2i,dro2i,-1);
semilogx(w,20*log10(k1)),grid 'Transmitancja układu zamkniętego z reg. PD
title('obiekt+regulator P zam.') idealnym - ujemne sprzężenie zwrotne'
subplot(4,2,8) printsys(nrz2i,drz2i)
semilogx(w,l1),grid subplot(4,1,4)
step(nrz2i,drz2i,t)
disp('---->'), pause [c2i,d2i]=step(nrz2i,drz2i,t);
%############################################
6
Skrypt - Regulator PID Katedra Automatyki Napędu i Urządzeń Przemysłowych
xlabel(''), ylabel('Amplituda, Czas [s]'), subplot(3,1,2)
title('Odpowiedz ukłau zamkniętego z reg. PD step(nro3,dro3,t)
idealnym - ujemne sprzężenie zwrotne') [a3,b3]=step(nro3,dro3,t);
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ xlabel(''), ylabel('Amplituda Czas [s]'),
title('Odpowiedz ukłau otwartego z reg. PI')
disp('---->'), pause
disp('---->'), pause
%=============================================
clc % Odpowiedz układu zamkniętego z reg. PI
disp('Charakterystyki częstotliwościowe Bodego [nrz3,drz3]=cloop(nro3,dro3,-1);
dla ukł. z reg. PD'), pause clc
'Transmitancja układu zamkniętego z reg. PI -
% regulator PD ujemne sprzężenie zwrotne'
[g2,h2,w]=bode(rl2,rm2,w); printsys(nrz3,drz3)
% obiekt+regulator ukł. otw. [zrz3,prz3,kz3]=tf2zp(nrz3,drz3)
[i2,j2,w]=bode(nro2,dro2,w); subplot(3,1,3)
% obiekt+regulator ukł. zamk. step(nrz3,drz3,t)
[k2,l2,w]=bode(nrz2,drz2,w); [c3,d3]=step(nrz3,drz3,t);
xlabel(''), ylabel('Amplituda, Czas [s]'),
title('Odpowiedz ukłau zamkniętego z reg. PI -
figure(4) ujemne sprzężenie zwrotne')
subplot(4,2,1)
semilogx(w,20*log10(e)),grid disp('---->'), pause
title('obiekt')
subplot(4,2,3) %=============================================
semilogx(w,f),grid clc
disp('Charakterystyki częstotliwościowe Bodego
subplot(4,2,2) dla ukł. z reg. PI'), pause
semilogx(w,20*log10(g2)),grid
title('regulator PD') % regulator PI
subplot(4,2,4) [g3,h3,w]=bode(rl3,rm3,w);
semilogx(w,h2),grid % obiekt+regulator ukł. otw.
[i3,j3,w]=bode(nro3,dro3,w);
subplot(4,2,5) % obiekt+regulator ukł. zamk.
semilogx(w,20*log10(i2)),grid [k3,l3,w]=bode(nrz3,drz3,w);
title('obiekt+regulator PD otw.')
subplot(4,2,7) figure(6)
semilogx(w,j2),grid subplot(4,2,1)
semilogx(w,20*log10(e)),grid
subplot(4,2,6) title('obiekt')
semilogx(w,20*log10(k2)),grid subplot(4,2,3)
title('obiekt+regulator PD zam.') semilogx(w,f),grid
subplot(4,2,8)
semilogx(w,l2),grid subplot(4,2,2)
semilogx(w,20*log10(g3)),grid
disp('---->'), pause title('regulator PI')
subplot(4,2,4)
%############################################## semilogx(w,h3),grid
clc
disp('Regulator PI---->'), pause subplot(4,2,5)
semilogx(w,20*log10(i3)),grid
figure(5) title('obiekt+regulator PI otw.')
subplot(3,1,1) subplot(4,2,7)
step(n,d),xlabel(''), ylabel('Amplituda Czas semilogx(w,j3),grid
[s]'), title('Odpowiedz obiektu')
subplot(4,2,6)
% Reg. PI semilogx(w,20*log10(k3)),grid
%Kp=30; title('obiekt+regulator PI zam.')
%Ki=70; subplot(4,2,8)
rl3=[Kp, Ki]; rm3=[1, 0]; semilogx(w,l3),grid
clc
'Transmitancja regulatora PI' disp('---->'), pause
printsys(rl3,rm3)
[zr3,pr3,kr3]=tf2zp(rl3,rm3) %#############################################
clc
disp('---->'), pause disp('Regulator PID---->'), pause
% Odpowiedz układu otwartego z reg. PI figure(7)
[nro3,dro3]=series(rl3,rm3,n,d); subplot(4,1,1)
clc step(n,d),xlabel(''), ylabel('Amplituda Czas
'Transmitancja układu otwartego z reg. PI' [s]'), title('Odpowiedz obiektu')
printsys(nro3,dro3)
[zro3,pro3,ko3]=tf2zp(nro3,dro3) % Reg. PID
7
Skrypt - Regulator PID Katedra Automatyki Napędu i Urządzeń Przemysłowych
%Kp=350; % regulator PID
%Ki=300; [g4,h4,w]=bode(rl4,rm4,w);
%Kd=50; % obiekt+regulator ukł. otw.
rl4i=[Kd, Kp, Ki]; rm4i=[0, 1, 0]; [i4,j4,w]=bode(nro4,dro4,w);
rl4=[Kd, Kp, Ki]; rm4=[inKd, 1, 0]; % obiekt+regulator ukł. zamk.
clc [k4,l4,w]=bode(nrz4,drz4,w);
'Transmitancja regulatora PID'
printsys(rl4,rm4) figure(8)
[zr4,pr4,kr4]=tf2zp(rl4,rm4) subplot(4,2,1)
%printsys(rl4i,rm4i) semilogx(w,20*log10(e)),grid
title('obiekt')
disp('---->'), pause subplot(4,2,3)
semilogx(w,f),grid
% Odpowiedz układu otwartego z reg. PID
[nro4,dro4]=series(rl4,rm4,n,d); subplot(4,2,2)
clc semilogx(w,20*log10(g4)),grid
'Transmitancja układu otwartego z reg. PID' title('regulator PID')
printsys(nro4,dro4) subplot(4,2,4)
[zro4,pro4,ko4]=tf2zp(nro4,dro4) semilogx(w,h4),grid
subplot(4,1,2)
step(nro4,dro4,t) subplot(4,2,5)
[a4,b4]=step(nro4,dro4,t); semilogx(w,20*log10(i4)),grid
xlabel(''), ylabel('Amplituda Czas [s]'), title('obiekt+regulator PID otw.')
title('Odpowiedz ukłau otwartego z reg. PID') subplot(4,2,7)
semilogx(w,j4),grid
disp('---->'), pause
subplot(4,2,6)
semilogx(w,20*log10(k4)),grid
% Odpowiedz układu zamkniętego z reg. PID title('obiekt+regulator PID zam.')
[nrz4,drz4]=cloop(nro4,dro4,-1); subplot(4,2,8)
clc semilogx(w,l4),grid
'Transmitancja układu zamkniętego z reg. PID -
ujemne sprzężenie zwrotne' disp('---->'), pause
printsys(nrz4,drz4)
[zrz4,prz4,kz4]=tf2zp(nrz4,drz4) %#############################################
subplot(4,1,3) clc
step(nrz4,drz4,t) disp('porównanie odpowiedzi czasowych na skok
[c4,d4]=step(nrz4,drz4,t); jednostkowy'), pause
xlabel(''), ylabel('Amplituda, Czas [s]'),
title('Odpowiedz ukłau zamkniętego z reg. PID - figure(9)
ujemne sprzężenie zwrotne') subplot(4,2,1)
plot(t,a1),grid
disp('---->'), pause title('Odpowiedzi czasowe na skok jed. ukł.
otw. i zamk. dla:')
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ subplot(4,2,3)
% Odpowiedz układu zamkniętego z reg. PID plot(t,a2),grid
idealnym subplot(4,2,5)
clc plot(t,a3),grid
'Transmitancja układu otwartego z reg. PID subplot(4,2,7)
idealnym' plot(t,a4),grid
[nro4i,dro4i]=series(n,d,rl4i,rm4i);
printsys(nro4i,dro4i) subplot(4,2,2)
clc plot(t,c1),grid
'Transmitancja układu zamkniętego z reg. PID title(' P, PD, PI, PID')
idealnym - ujemne sprzężenie zwrotne' subplot(4,2,4)
[nrz4i,drz4i]=cloop(nro4i,dro4i,-1); plot(t,c2),grid
printsys(nrz4i,drz4i) subplot(4,2,6)
plot(t,c3),grid
subplot(4,1,4) subplot(4,2,8)
step(nrz4i,drz4i,t) plot(t,c4),grid
xlabel(''), ylabel('Amplituda, Czas [s]'), disp('---->'), pause
title('Odpowiedz ukłau zamkniętego z reg. PID
idealnym - ujemne sprzężenie zwrotne') %#############################################
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ clc
disp('porównanie ch-yk Bodego'), pause
disp('---->'), pause
figure(10)
%============================================= subplot(4,2,1)
clc semilogx(w,20*log10(g1)),grid
disp('Charakterystyki częstotliwościowe Bodego title('Ch-ki Bodego dla: P')
dla ukł. z reg. PID'), pause subplot(4,2,3)
semilogx(w,h1),grid
8
Skrypt - Regulator PID Katedra Automatyki Napędu i Urządzeń Przemysłowych
disp('porównanie ch-yk Bodego - PD, PID
subplot(4,2,2) idealne'), pause
semilogx(w,20*log10(g2)),grid
title('PD') figure(11)
subplot(4,2,4) subplot(2,2,1)
semilogx(w,h2),grid semilogx(w,20*log10(g2i)),grid
title('Ch-ki Bodego dla: idealnego PD')
subplot(4,2,5) subplot(2,2,3)
semilogx(w,20*log10(h3)),grid semilogx(w,h2i),grid
title('PI')
subplot(4,2,7) subplot(2,2,2)
semilogx(w,h3),grid semilogx(w,20*log10(g4i)),grid
title('idelany PID')
subplot(4,2,6) subplot(2,2,4)
semilogx(w,20*log10(g4)),grid semilogx(w,h4i),grid
title('PID')
subplot(4,2,8) %#############################################
semilogx(w,h4),grid
set(gcf,'DefaultAxesFontSize',get(0,'DefaultAxe
[g2i,h2i,w]=bode(rl2i,rm2i,w); sFontSize'));
[g4i,h4i,w]=bode(rl4i,rm4i,w); set(gcf,'DefaultTextFontSize',get(0,'DefaultTex
tFontSize'));
%#############################################
clc disp('Czy zamknąć wszystkie wykresy'), pause
close all
9


Wyszukiwarka