Skrypt – Regulator PID
Katedra Automatyki Napędu i Urządzeń Przemysłowych
1
L
ABORATORIUM
T
EORII
S
TEROWANIA I
T
ECHNIKI
R
EGULACJI
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:
dt
de(t)
K
e(t)dt
K
e(t)
K
u(t)
d
T
0
i
p
∫
+
+
=
,
( 1 )
gdzie:
!" K
p
– współczynnik części proporcjonalnej
!" K
i
– współczynnik części całkującej
K
i
= 1/T
i
T
i
– czas zdwojenia
!" K
d
– współczynnik części różniczkującej
K
d
= T
d
T
d
– 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ę:
s
K
s
K
s
K
s
K
s
K
K
s
T
s
T
1
K
E(s)
U(s)
(s)
G
i
p
2
d
d
i
p
d
i
p
PID
+
+
=
+
+
=
+
+
=
=
.
( 2 )
W literaturze spotyka się również inne postacie zapisu prawa sterowania regulatora PID, np.:
s
T
K
s
T
K
K
s)
T
s
T
1
1
(
K
E(s)
U(s)
(s)
G
D
p
I
p
p
D
I
p
PID
+
+
=
+
+
=
=
( 3 )
gdzie:
!" T
I
= K
p
T
i
!" T
D
= T
d
/K
p
Człon różniczkujący realizowany w praktyce zawiera niedużą inercję
τ
<< T
d
(np.:
τ
= 0,001). Zatem jego
transmitancja przyjmuje postać:
1
τs
s
T
(s)
G
d
d
+
=
,
( 4 )
stąd:
s
τs
K
τ)s
K
(K
τ)s
K
(K
1
τs
s
K
s
K
K
1
τs
s
T
s
T
1
K
E(s)
U(s)
(s)
G
2
i
i
p
2
p
d
d
i
p
d
i
p
PID
+
+
+
+
+
=
+
+
+
=
+
+
+
=
=
( 5 )
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:
rys. 1
e(t)
u(t)
+
+
+
E(s)
U(s)
K
p
K
i
s
1
1
τs
Td s
+
Skrypt – Regulator PID
Katedra Automatyki Napędu i Urządzeń Przemysłowych
2
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 weźmy układ masa, sprężyna i amortyzator (problem tłumienia
drgań):
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:
u(t)
ky(t)
(t)
y
b
(t)
y
M
=
+
+
!
!!
⇒
k
bs
Ms
1
U(s)
Y(s)
2
+
+
=
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:
20
s
10
s
1
U(s)
Y(s)
2
+
+
=
.
2.1 Wpływ współczynników: K
p
, K
i
, K
d
, na: czas narastania, przeregulowanie
i błąd w stanie ustalonym.
!" Obiekt w układzie otwartym – odpowiedź na skok jednostkowy
Utwórz m-plik Matlaba:
M = 1;
b = 10;
k = 20;
u = 1;
num=u;
den=[M b k];
step(num,den)
title('Układ otwarty
- odp. na skok jednostkowy')
disp('Naciśnij klawisz
---->'), pause
y(t)– przemieszczenie
M – masa
F(t) = u(t) – siła wymuszająca
b – współczynnik tłumienia lepkościowego
k – stała sprężyny
(t)
y
b!
y(t)
k
u(t)
F(t)
=
M
Skrypt – Regulator PID
Katedra Automatyki Napędu i Urządzeń Przemysłowych
3
Wzmocnienie stałe obiektu wynosi 1/20 tj. 0,05, jest to wartość, na której ustala się odpowiedź 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
Transmitancja układu zamkniętego
)
K
20
(
s
10
s
K
p
2
p
+
+
+
.
Kp=300;
num=[Kp*u];
den=[M b k+Kp];
t=0:0.01:2;
figure(2)
step(num,den,t)
title('Układ zamknięty
- odp. na skok jednostkowy Reg P')
disp('Naciśnij klawisz
---->'), pause
lub z instrukcją
cloop()
num=[u];
den=[M b k];
[numCL,denCL]=cloop(Kp*num,den);
figure(3)
step(numCL, denCL,t)
title('Układ zamknięty
- odp. na skok jednostkowy Reg P')
disp('Naciśnij klawisz
---->'), pause
Zwróć uwagę jakie nastąpiły zmiany.
!" Regulator proporcjonalno-różniczkujący (idealny)
Transmitancja układu zamkniętego
)
K
20
(
)s
K
10
(
s
K
s
K
p
d
2
p
d
+
+
+
+
+
.
Kd=10;
num=[Kd Kp];
den=[M b+Kd k+Kp];
figure(3)
step(num,den,t)
title('Układ zamknięty
- odp. na skok jednostkowy Reg PD')
disp('Naciśnij klawisz
---->'), pause
Zwróć uwagę jakie nastąpiły zmiany.
!" Regulator proporcjonalno-całkujący
Transmitancja układu zamkniętego
i
p
2
3
i
p
K
)s
K
20
(
s
10
s
K
s
K
+
+
+
+
+
.
Kp=30;
Ki=70;
num=[Kp Ki];
den=[M b k+Kp Ki];
step(num,den,t)
t
itle('Układ zamknięty
- odp. na skok jednostkowy Reg PI')
disp('Naciśnij klawisz
---->'), pause
Zwróć uwagę jakie nastąpiły zmiany.
!" Regulator proporcjonalno-całkująco-różniczkujący (idealny)
Transmitancja układu zamkniętego
i
p
2
d
3
i
p
2
d
K
)s
K
20
(
)s
K
10
(
s
K
s
K
s
K
+
+
+
+
+
+
+
.
Kp=350;
Ki=300;
Kd=50;
num=[Kd Kp Ki];
den=[M b+Kd k+Kp Ki];
figure(4)
t=0:0.01:2;
step(num,den,t)
title('Układ zamknięty
- odp. na skok jednostkowy Reg PID')
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)
Skrypt – Regulator PID
Katedra Automatyki Napędu i Urządzeń Przemysłowych
4
2.3 Metoda Ziglera i Nicholsa
Jednym ze sposobów doboru nastaw parametrów regulatora PID dla obiektów nie zawierających opóźnień 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 G
m
– margines amplitudy,
ω
–180
– wspomniana częstotliwość, to nastawy Ziglera i Nicholsa dla
regulatorów są następujące:
PID:
K
p
=0,6 G
m
180
i
T
−
=
ω
π
4
T
T
i
d
=
PI:
K
p
=0,45 G
m
180
i
3
5
T
−
=
ω
π
P:
K
p
=0,5 G
m
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
[G
m
,P
m
,
ω
cg
,
ω
cp
] = margin(L,M) obliczającej margines (zapas) wzmocnienia G
m
i fazy P
m
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
s
5
)(
1
s
20
)(
1
s
30
(
1
(s)
G
O
+
+
+
=
.
3. Jaki jest efekt zmiany wartości K
p
, K
i
, K
d
na odpowiedź układu z rys.2 (czas narastania t
r
, przeregulowanie
M
o
, czas ustalenia t
s
, błąd w stanie ustalonym e
ss
) oraz na charakterystyki Bodego (szerokość pasma, moduł
rezonansowy M
p
i odpowiadająca mu częstotliwość
ω
p
(Aneks C)) przy wymuszeniu skokiem
jednostkowym. Zinterpretuj wyniki. Skorzystaj z funkcji:
[M
o
,t
p
,t
r
,t
s
,e
ss
] = tstats(t,y,ref) (Aneks A) oraz [bw,e
rr
] = bwcalc(db,omega,lfg_db) (Aneks B).
Transmitancja obiektu i pętli sprzężenia zwrotnego:
1
0,05s
1
H(s)
,
)
1
s
5
,
0
)(
1
s
2
(
4
)
s
(
G
o
+
=
+
+
=
Czas narastania
t
r
[s]
Przeregulowanie
M
o
[%]
Czas ustalenia
t
s
[s]
Błąd w stanie
ustalonym
e
ss
[%]
Szerokość pasma
bw [rad/s]
K
p
K
i
K
d
4. Na podstawie układu rys.2 wyznacz transmitancję
D(s)
Y(s)
oraz przebieg y(t) przy d(t) = 1(t), ref(t) = 0
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
Skrypt – Regulator PID
Katedra Automatyki Napędu i Urządzeń Przemysłowych
5
Aneks
A)
np.:
t = 0:0.1:2
y = step(L,M,t),
ref = 1
function [M
o
,t
p
,t
r
,t
s
,e
ss
] = tstats(t,y,ref)
argumenty prawostronne (wejściowe):
t – wektor czasu symulacji
y – wektor odpowiedzi
ref – poziom sygnału referencyjnego w stanie
ustalonym
argumenty lewostronne (wyjściowe):
M
o
– przeregulowanie [%]
t
p
– czas osiągnięcia wartości maksymalnej
t
r
– czas narastania
t
s
– czas ustalenia (2%)
e
ss
– błąd w stanie ustalonym [%]
B)
np.:
lfg = dcgain(L,M)
lfg_dB = 20*log10(lfg)
function [bw,e
rr
] =
bwcalc(db,omega,lfg_db)
Określa szerokość pasma układu
zarówno otwartego, jak i zamkniętego
przez:
– obliczenie odpowiedzi
częstotliwościowej dla danego wektora
częstotliwości omega
– znalezienie częstotliwości, przy której
amplituda spada o 3dB poniżej
amplitudy sygnału stałego (lfg)
argumenty prawostronne (wejściowe):
db – wektor amplitud w dB
omega – wektor częstotliwości
lfg_db – wzmocnienie sygnału
stałego w dB – funkcja
dcgain(L,M)
argumenty lewostronne
(wyjściowe):
bw – szerokość pasma
e
rr
– flaga błędu:
1-amplituda przy najniższej
częstotliwości
< lfg – 3.0[dB]
2-amplituda przy wszystkich
częstotliwościach
> lfg – 3.0[dB]
C)
[M
p
,i] = max(mag)
ω
p
= w(i)
Listing m-pliku Matlaba regpid.m
% OZNACZENIA
% dla obiektu
% n,d - obiekt: mianownik,licznik
% z,p,k - obiekt: zera, bieguny, wzmocnienie
% a,b -
obiekt: odpowiedź na skok jednostkowy
% e,f - obiekt: ch-ka Bodego
% cyfra na końcu oznaczenia oznacza kolejno:
1-reg.P, 2-reg.PD, 3-reg.PI, 4-reg.PID
% dla regulatora P
% rl1,rm1 - regulator
% nro1,dro1 -
obiekt+regulator ukł.otw.
% nrz1,drz1 -
obiekt+regulator ukł.zamk. z
pętlą ujemnego sprzężenia zwrotnego
% zrz1,prz1,krz1 - zera, bieguny i wzmocnienie
dla ukł.zamk. z reg
.P
% a1,b1,c1,d1, - odpowiedzi na skok jednostkowy
% g1,h1 - ch-ki Bodego dla regulatora
% i1,j1 - ch-ki Bodego dla obiekt+regulator
ukł.otw.
% k1,l1 - ch-ki Bodego dla obiekt+regulator
ukł.zamk. z pętlą ujemnego sprzężenia zwrotnego
% dla regulatora PD PID indeks "i" oznacza
regulator idealny
%Kp=350;
%Ki=300;
%Kd=50;
%inKd=.01; %tau
clear
clc
%==============================================
set(gcf,'DefaultAxesFontSize',9)
set(gcf,'DefaultTextFontSize',9)
t=0:0.01:4;
w=logspace(-2,2,200);
Kp=input('Wpro
wadź Kp= ');
Kd=input('Wprowadź Kd= ');
Ki=input('Wprowadź Ki= ');
inKd=input('Wprowadź inercję dla różniczki
inKd= ');
%=============================================
% Odpowiedź obiektu
n=1; d=[1,10,20];
clc
'Transmitancja obiektu'
printsys(n,d)
[z,p,k]=tf2zp(n,d)
subplot(3,1,1)
step(n,d,t)
[a,b]=step(n,d,t);
xlabel(''), ylabel('Amplituda Czas [s]'),
title('Odpowiedź obiektu')
disp('---->'), pause
%#############################################
% Reg. P
%Kp=300;
rl1=[Kp]; rm1=[1];
clc
'Transmitancja regulatora P'
printsys(rl1,rm1)
[zr1,pr1,kr1]=tf2zp(rl1,rm1)
disp('---->'), pause
Skrypt - Regulator PID
Katedra Automatyki Napędu i Urządzeń Przemysłowych
6
% Odpowiedź układu otwartego z reg.
P
[nro1,dro1]=series(rl1,rm1,n,d);
clc
'Transmitancja układu otwartego z reg.
P'
printsys(nro1,dro1)
[zro1,pro1,ko1]=tf2zp(nro1,dro1)
subplot(3,1,2)
step(nro1,dro1,t)
[a1,b1]=step(nro1,dro1,t);
xlabel(''), ylabel('Amplituda Czas [s]'),
title('Odpowiedź ukłau otwartego z reg.
P')
disp('---->'), pause
% Odpowiedź układu zamkniętego z reg. P
[nrz1,drz1]=cloop(nro1,dro1,-1);
clc
'Transmitan
cja układu zamkniętego z reg. P
-
ujemne sprzężenie zwrotne'
printsys(nrz1,drz1)
[zrz1,prz1,kz1]=tf2zp(nrz1,drz1)
subplot(3,1,3)
step(nrz1,drz1,t)
[c1,d1]=step(nrz1,drz1,t);
xlabel(''), ylabel('Amplituda, Czas [s]'),
title('Odpowiedź ukłau zamkniętego z re
g. P -
ujemne sprzężenie zwrotne')
disp('---->'), pause
%=============================================
clc
disp('Charakterystyki częstotliwościowe Bodego
dla ukł. z reg. P'), pause
% obiekt
[e,f,w]=bode(n,d,w);
% regulator
[g1,h1,w]=bode(rl1,rm1,w);
% o
biekt+regulator ukł. otw.
[i1,j1,w]=bode(nro1,dro1,w);
% obiekt+regulator ukł. zamk.
[k1,l1,w]=bode(nrz1,drz1,w);
figure(2)
subplot(4,2,1)
semilogx(w,20*log10(e)),grid
title('obiekt')
subplot(4,2,3)
semilogx(w,f),grid
subplot(4,2,2)
semilogx(w,20*log10(g1)),grid
title('regulator P')
subplot(4,2,4)
semilogx(w,h1),grid
subplot(4,2,5)
semilogx(w,20*log10(i1)),grid
title('obiekt+regulator P otw.')
subplot(4,2,7)
semilogx(w,j1),grid
subplot(4,2,6)
semilogx(w,20*log10(k1)),grid
title('obiekt+regulator P zam.')
subplot(4,2,8)
semilogx(w,l1),grid
disp('---->'), pause
%############################################
clc
disp('Regulator PD---->'), pause
figure(3)
subplot(4,1,1)
step(n,d),xlabel(''), ylabel('Amplituda Czas
[s]'), title('
Odpowiedź obiektu')
% reg. PD
%Kp=300;
%Kd=10;
rl2i=[Kd, Kp]; rm2i=[0, 1];
rl2=[Kd, Kp]; rm2=[inKd, 1];
clc
'Transmitancja regulatora z inercją PD'
printsys(rl2,rm2)
[zr2,pr2,kr2]=tf2zp(rl2,rm2)
'Transmitancja idealnego regulatora PD'
printsys(rl2i,rm2i)
disp('---->'), pause
% Odpowiedź układu otwartego z reg.
PD
[nro2,dro2]=series(rl2,rm2,n,d);
clc
'Transmitancja układu otwartego z reg.
PD'
printsys(nro2,dro2)
[zro2,pro2,ko2]=tf2zp(nro2,dro2)
subplot(4,1,2)
step(nro2,dro2,t)
[a2,b2]=step(nro2,dro2,t);
xlabel(''), ylabel('Amplituda Czas [s]'),
title('Odpowiedź ukłau otwartego z reg.
PD')
disp('---->'), pause
% Odpowiedź układu zamkniętego z reg. PD
[nrz2,drz2]=cloop(nro2,dro2,-1);
clc
'Transmitancja układu zamkniętego z reg. PD
-
ujemne sprzężenie zwrot
ne'
printsys(nrz2,drz2)
[zrz2,prz2,kz2]=tf2zp(nrz2,drz2)
subplot(4,1,3)
step(nrz2,drz2,t)
[c2,d2]=step(nrz2,drz2,t);
xlabel(''), ylabel('Amplituda, Czas [s]'),
title('Odpowiedź ukłau zamkniętego z reg. PD
-
ujemne sprzężenie zwrotne')
disp('---->'), pause
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
% Odpowiedź układu otwartego z reg. PD idealnym
[nro2i,dro2i]=series(rl2i,rm2i,n,d);
clc
'Transmitancja układu otwartego z reg. PD
idealnym'
printsys(nro2i,dro2i)
[a2i,b2i]=step(nro2i,dro2i,t);
% Odpowiedź układu zamkniętego z reg. PD
idealnym
[nrz2i,drz2i]=cloop(nro2i,dro2i,-1);
'Transmitancja układu zamkniętego z reg. PD
idealnym -
ujemne sprzężenie zwrotne'
printsys(nrz2i,drz2i)
subplot(4,1,4)
step(nrz2i,drz2i,t)
[c2i,d2i]=step(nrz2i,drz2i,t);
Skrypt - Regulator PID
Katedra Automatyki Napędu i Urządzeń Przemysłowych
7
xlabel(''), ylabel('Amplituda, Czas [s]'),
title('Odpowiedź ukłau zamkniętego z reg. PD
idealnym -
ujemne sprzężenie zwrotne')
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
disp('---->'), pause
%=============================================
clc
disp('Charakterysty
ki częstotliwościowe Bodego
dla ukł. z reg.
PD'), pause
% regulator PD
[g2,h2,w]=bode(rl2,rm2,w);
% obiekt+regulator ukł. otw.
[i2,j2,w]=bode(nro2,dro2,w);
% obiekt+regulator ukł. zamk.
[k2,l2,w]=bode(nrz2,drz2,w);
figure(4)
subplot(4,2,1)
semilogx(w,20*log10(e)),grid
title('obiekt')
subplot(4,2,3)
semilogx(w,f),grid
subplot(4,2,2)
semilogx(w,20*log10(g2)),grid
title('regulator PD')
subplot(4,2,4)
semilogx(w,h2),grid
subplot(4,2,5)
semilogx(w,20*log10(i2)),grid
title('obiekt+regulator PD otw.')
subplot(4,2,7)
semilogx(w,j2),grid
subplot(4,2,6)
semilogx(w,20*log10(k2)),grid
title('obiekt+regulator PD zam.')
subplot(4,2,8)
semilogx(w,l2),grid
disp('---->'), pause
%##############################################
clc
disp('Regulator PI---->'), pause
figure(5)
subplot(3,1,1)
step(n,d),xlabel(''), ylabel('Amplituda Czas
[s]'), title('Odpowiedź obiektu')
% Reg. PI
%Kp=30;
%Ki=70;
rl3=[Kp, Ki]; rm3=[1, 0];
clc
'Transmitancja regulatora PI'
printsys(rl3,rm3)
[zr3,pr3,kr3]=tf2zp(rl3,rm3)
disp('---->'), pause
% Odpowiedź układu otwartego z reg.
PI
[nro3,dro3]=series(rl3,rm3,n,d);
clc
'Transmitancja układu otwartego z reg.
PI'
printsys(nro3,dro3)
[zro3,pro3,ko3]=tf2zp(nro3,dro3)
subplot(3,1,2)
step(nro3,dro3,t)
[a3,b3]=step(nro3,dro3,t);
xlabel(''), ylabel('Amplituda Czas [s]'),
title('Odpowiedź ukłau otwartego z reg.
PI')
disp('---->'), pause
% Odpowiedź układu zamkniętego z reg. PI
[nrz3,drz3]=cloop(nro3,dro3,-1);
clc
'Transmitancja układu zamkniętego z reg. PI
-
ujemne sprzężenie zwrotne'
printsys(nrz3,drz3)
[zrz3,prz3,kz3]=tf2zp(nrz3,drz3)
subplot(3,1,3)
step(nrz3,drz3,t)
[c3,d3]=step(nrz3,drz3,t);
xlabel(''), ylabel('Amplituda, Czas [s]'),
title('Odpowiedź ukłau zamkniętego z reg. PI
-
ujemne sprzężenie zwrotne')
disp('---->'), pause
%=============================================
clc
disp('Charakterystyki częstotliwościowe Bodego
dla ukł. z reg.
PI'), pause
% regulator PI
[g3,h3,w]=bode(rl3,rm3,w);
% obiekt+regulator ukł. otw.
[i3,j3,w]=bode(nro3,dro3,w);
% obiekt+regulator ukł. zamk.
[k3,l3,w]=bode(nrz3,drz3,w);
figure(6)
subplot(4,2,1)
semilogx(w,20*log10(e)),grid
title('obiekt')
subplot(4,2,3)
semilogx(w,f),grid
subplot(4,2,2)
semilogx(w,20*log10(g3)),grid
title('regulator PI')
subplot(4,2,4)
semilogx(w,h3),grid
subplot(4,2,5)
semilogx(w,20*log10(i3)),grid
title('obiekt+regulator PI otw.')
subplot(4,2,7)
semilogx(w,j3),grid
subplot(4,2,6)
semilogx(w,20*log10(k3)),grid
title('obiekt+regulator PI zam.')
subplot(4,2,8)
semilogx(w,l3),grid
disp('---->'), pause
%#############################################
clc
disp('Regulator PID---->'), pause
figure(7)
subplot(4,1,1)
step(n,d),xlabel(''), ylabel('Amplituda Czas
[s]'), title('Odpowiedź obiektu')
% Reg. PID
Skrypt - Regulator PID
Katedra Automatyki Napędu i Urządzeń Przemysłowych
8
%Kp=350;
%Ki=300;
%Kd=50;
rl4i=[Kd, Kp, Ki]; rm4i=[0, 1, 0];
rl4=[Kd, Kp, Ki]; rm4=[inKd, 1, 0];
clc
'Transmitancja regulatora PID'
printsys(rl4,rm4)
[zr4,pr4,kr4]=tf2zp(rl4,rm4)
%printsys(rl4i,rm4i)
disp('---->'), pause
% Odpowiedź układu otwartego z reg.
PID
[nro4,dro4]=series(rl4,rm4,n,d);
clc
'Transmitancja układu otwartego z reg.
PID'
printsys(nro4,dro4)
[zro4,pro4,ko4]=tf2zp(nro4,dro4)
subplot(4,1,2)
step(nro4,dro4,t)
[a4,b4]=step(nro4,dro4,t);
xlabel(''), ylabel('Amplituda Czas [s]'),
title('Odpowiedź ukłau otwartego z reg.
PID')
disp('---->'), pause
% Odpowiedź układu zamkniętego z reg.
PID
[nrz4,drz4]=cloop(nro4,dro4,-1);
clc
'Transmitancja układu zamkniętego z reg. PID
-
ujemne sprzężenie zwrotne'
printsys(nrz4,drz4)
[zrz4,prz4,kz4]=tf2zp(nrz4,drz4)
subplot(4,1,3)
step(nrz4,drz4,t)
[c4,d4]=step(nrz4,drz4,t);
xlabel(''), ylabel('Amplituda, Czas [s]'),
title('Odpowiedź ukłau zamkniętego z reg. PID
-
ujemne sprzężenie zwrotne')
disp('---->'), pause
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
% Odpowiedź układu zamkniętego z reg. PID
idealnym
clc
'Transmitancja układu otwartego z reg. P
ID
idealnym'
[nro4i,dro4i]=series(n,d,rl4i,rm4i);
printsys(nro4i,dro4i)
clc
'Transmitancja układu zamkniętego z reg. PID
idealnym -
ujemne sprzężenie zwrotne'
[nrz4i,drz4i]=cloop(nro4i,dro4i,-1);
printsys(nrz4i,drz4i)
subplot(4,1,4)
step(nrz4i,drz4i,t)
xlabel(''), ylabel('Amplituda, Czas [s]'),
title('Odpowiedź ukłau zamkniętego z reg. PID
idealnym -
ujemne sprzężenie zwrotne')
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
disp('---->'), pause
%=============================================
clc
disp('C
harakterystyki częstotliwościowe Bodego
dla ukł. z reg.
PID'), pause
% regulator PID
[g4,h4,w]=bode(rl4,rm4,w);
% obiekt+regulator ukł. otw.
[i4,j4,w]=bode(nro4,dro4,w);
% obiekt+regulator ukł. zamk.
[k4,l4,w]=bode(nrz4,drz4,w);
figure(8)
subplot(4,2,1)
semilogx(w,20*log10(e)),grid
title('obiekt')
subplot(4,2,3)
semilogx(w,f),grid
subplot(4,2,2)
semilogx(w,20*log10(g4)),grid
title('regulator PID')
subplot(4,2,4)
semilogx(w,h4),grid
subplot(4,2,5)
semilogx(w,20*log10(i4)),grid
title('obiekt+regulator PID otw.')
subplot(4,2,7)
semilogx(w,j4),grid
subplot(4,2,6)
semilogx(w,20*log10(k4)),grid
title('obiekt+regulator PID zam.')
subplot(4,2,8)
semilogx(w,l4),grid
disp('---->'), pause
%#############################################
clc
disp('porównanie odpowiedzi czasowych na skok
jednostkowy'), pause
figure(9)
subplot(4,2,1)
plot(t,a1),grid
title('Odpowiedzi czasowe na skok jed. ukł.
otw. i zamk. dla:')
subplot(4,2,3)
plot(t,a2),grid
subplot(4,2,5)
plot(t,a3),grid
subplot(4,2,7)
plot(t,a4),grid
subplot(4,2,2)
plot(t,c1),grid
title(' P, PD, PI, PID')
subplot(4,2,4)
plot(t,c2),grid
subplot(4,2,6)
plot(t,c3),grid
subplot(4,2,8)
plot(t,c4),grid
disp('---->'), pause
%#############################################
clc
disp('porównanie ch-yk Bodego'), pause
figure(10)
subplot(4,2,1)
semilogx(w,20*log10(g1)),grid
title('Ch-ki Bodego dla: P')
subplot(4,2,3)
semilogx(w,h1),grid
Skrypt - Regulator PID
Katedra Automatyki Napędu i Urządzeń Przemysłowych
9
subplot(4,2,2)
semilogx(w,20*log10(g2)),grid
title('PD')
subplot(4,2,4)
semilogx(w,h2),grid
subplot(4,2,5)
semilogx(w,20*log10(h3)),grid
title('PI')
subplot(4,2,7)
semilogx(w,h3),grid
subplot(4,2,6)
semilogx(w,20*log10(g4)),grid
title('PID')
subplot(4,2,8)
semilogx(w,h4),grid
[g2i,h2i,w]=bode(rl2i,rm2i,w);
[g4i,h4i,w]=bode(rl4i,rm4i,w);
%#############################################
clc
disp('porównanie ch-yk Bodego - PD, PID
idealne'), pause
figure(11)
subplot(2,2,1)
semilogx(w,20*log10(g2i)),grid
title('Ch-ki Bodego dla: idealnego PD')
subplot(2,2,3)
semilogx(w,h2i),grid
subplot(2,2,2)
semilogx(w,20*log10(g4i)),grid
title('idelany PID')
subplot(2,2,4)
semilogx(w,h4i),grid
%#############################################
set(gcf,'DefaultAxesFontSize',get(0,'DefaultAxe
sFontSize'));
set(gcf,'DefaultTextFontSize',get(0,'DefaultTex
tFontSize'));
disp('Czy zamknąć wszystkie wykresy'), pause
close all