background image

 

Skrypt – Regulator PID 

Katedra Automatyki Napędu i Urządzeń Przemysłowych 

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

+

background image

 

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 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

background image

 

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ę 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) 

background image

 

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óź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

 

 

 

 

 

K

 

 

 

 

 

K

 

 

 

 

 

 

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 
 

background image

 

Skrypt – Regulator PID 

Katedra Automatyki Napędu i Urządzeń Przemysłowych 

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 

 

background image

 

Skrypt - Regulator PID 

Katedra Automatyki Napędu i Urządzeń Przemysłowych 

 

% Odpowiedź układu otwartego z reg. 

[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); 

background image

 

Skrypt - Regulator PID 

Katedra Automatyki Napędu i Urządzeń Przemysłowych 

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 

background image

 

Skrypt - Regulator PID 

Katedra Automatyki Napędu i Urządzeń Przemysłowych 

%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 

background image

 

Skrypt - Regulator PID 

Katedra Automatyki Napędu i Urządzeń Przemysłowych 

 
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