background image

 

Instytut Automatyki 

Zakład Teorii Sterowania

 

 
 
 
 

 

 

 

 

 

Krzysztof Marzjan 

Podstawowe problemy automatyki 

background image

 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Transmitancja operatorowa 

Dana jest transmitancja operatorowa G(s

), którą można zapisać na dwa sposoby 

0

1

2

2

1

1

0

1

2

2

1

1

)

(

)

(

)

(

a

s

a

s

a

s

a

s

a

b

s

b

s

b

s

b

s

b

s

M

s

L

s

G

n

n

n

n

n

n

m

m

m

m

m

m

 

lub 

n

i

i

n

m

j

j

m

s

s

a

s

s

b

s

M

s

L

s

G

1

1

)

(

)

(

)

(

)

(

)

(

 

m

n

 

gdzie 

j

s

 - 

zera układu, 

i

s

 - 

bieguny układu, 

n

m

a

b

k

 - 

wzmocnienie układu (nie jest to wzmocnienie 

statyczne układu, ponieważ wzmocnienie statyczne 

0

0

)

0

(

a

b

G

).

 

Dla pulsacji 

4

5

10

 zapas 

fazy będzie równy 

8

ponieważ wypadkowe 
wzm

ocnienie układu dla tej 

pulsacji jest równe 

dB

j

G

50

)

(

log

20

0

to wypadkową charakterystykę 
amplitudową należy przesunąć 
do góry o 50dB, stąd 

 

316

10

2

5

log

50

log

20

2

5

p

p

p

k

k

k

 

 

Zapas fazy dla tego układu 

wynosi 

4

, zapas 

modułu 

dB

L

10

. Aby 

pulsacja odcięcia 

1

 

była 

równa pulsacji 

wypadkową charakterystykę 
amplitudową należy 
przesunąć do góry o 10dB
stąd 

16

,

3

10

2

1

log

10

log

20

2

1

p

p

p

k

k

k

 

background image

 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Jeżeli wykorzystujemy pierwszą postać transmitancji, to: 
współczynniki wielomianu L(s) począwszy od współczynnika przy najwyższej potędze zapisujemy w 
wektorze 

licz (num)

, 

zaś współczynniki wielomianu M(s)  w wektorze 

mian (den)

.

 

Transmitancj

ę operatorową G(s), można wpisać następująco: 

 

G=tf(licz,mian) 

 

Np.: 

 

s

s

s

s

s

G

08

,

0

48

,

0

4

,

0

1

,

0

)

(

2

3

 

 

% wpisanie transmitancji operatorowej 
% postaci G(s)=L(s)/M(s) do Matlab-a 

licz=[1 0.1]; 

% wielomian L(s)=s+0,1 

mian=[0.4 0.48 0.08 0];

 % wielomian M(s)=0,4s^3+0,48s^2+0,08s

 

G=tf(licz,mian)

 % transmitancja postaci G(s)=L(s)/M(s)

 

 

Odpowiedź MATLAB-a 

  

 

Transfer function: 
          s + 0.1 
--------------------------- 
0.4 s^3 + 0.48 s^2 + 0.08 s 

 

 

background image

 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Jeżeli wykorzystujemy drugą postać transmitancji, to 
wyznaczamy zbiór zer układu 

j

s

 

zbiór biegunów układu 

i

s

,  

współczynnik wzmocnienia.

n

m

a

b

W rozpatrywanym przykładzie mamy: 

 

)

1

(

)

2

,

0

(

)

1

,

0

(

5

,

2

08

,

0

48

,

0

4

,

0

1

,

0

)

(

2

3

s

s

s

s

s

s

s

s

s

G

 

 

zera układu 

j

s

1

,

0

1

s

b

ieguny układu 

i

s

1

,

2

,

0

,

0

3

2

1

s

s

s

 

współczynnik wzmocnienia: 

5

,

2

k

 

 

z=[-0.1];

 % zera układu 

p=[0 -0.2 -1];

 % bieguny układu 

k=2.5; 

% wzmocnienie

 

G=zpk(z,p,k) 

 

Odpowiedź MATLAB-a 

 

Zero/pole/gain: 
  2.5 (s+0.1) 
--------------- 
s (s+0.2) (s+1)

 

background image

 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Uwaga! Gdy L(s)=1, to: 

)

1

(

)

2

,

0

(

5

,

2

08

,

0

48

,

0

4

,

0

1

)

(

2

3

s

s

s

s

s

s

s

G

 

 

z=[ ];

 % zera układu – zbiór pusty 

p=[0 -0.2 -1];

 % bieguny układu 

k=2.5; 

% wzmocnienie

 

G=zpk(z,p,k) 

 

Zero/pole/gain: 
      2.5 
--------------- 
s (s+0.2) (s+1)

 

 

I jeszcze jedna 

możliwość: 

s=tf(

's'

);

% zmienna zespolona 

G=(s+0.1)/(0.04*s^3+0.48*s^2+0.08*s) 

 

Transfer function: 
          s + 0.1 
---------------------------- 
0.04 s^3 + 0.48 s^2 + 0.08 s

background image

 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Uwaga! Gdy stosujemy MATLAB-

a do wyznaczania zastępczej transmitancji operatorowej 

w różnych połączeniach wygodniej do wpisywania transmitancji używać instrukcji 

zpk 

Przyjmijmy: 

)

1

(

)

2

,

0

(

)

1

,

0

(

5

,

2

)

(

1

s

s

s

s

s

G

 ;  

s

s

G

1

)

(

2

 

 

Połączenie szeregowe 

G1=zpk([-0.1],[0 -0.2 -1],2.5); 
G2=zpk([],0,1); 
G=series(G1,G2)

 

 

Odpowiedź MATLAB-a 

 

Zero/pole/gain: 
   2.5 (s+0.1) 
----------------- 
s^2 (s+0.2) (s+1)

 

 

 

)

(

1

s

G

 

)

(

2

s

G

 

background image

 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Połączenie równoległe 

G1=zpk([-0.1],[0 -0.2 -1],2.5); 
G2=zpk([],0,1); 
G=parallel(G1,G2) 
 
Zero/pole/gain: 
s (s+3.574) (s+0.1259) 
---------------------- 
  s^2 (s+0.2) (s+1) 
 

  

G1=tf([1 0.1],[0.4 0.48 0.08 0]); 
G2=tf([1],[1 0]); 
G=parallel(G1,G2) 
 
Transfer function: 
 0.4 s^3 + 1.48 s^2 + 0.18 s 
----------------------------- 
0.4 s^4 + 0.48 s^3 + 0.08 s^2 

)

(

1

s

G

 

)

(

2

s

G

 

background image

 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Sprzężenie zwrotne 

G1=zpk([-0.1],[0 -0.2 -1],2.5); 
G2=zpk([],0,1); 
G=feedback(G1,G2) 
 
Zero/pole/gain: 
               2.5 s (s+0.1) 
------------------------------------------- 
(s+1.81) (s+0.1004) (s^2 - 0.7106s + 1.376) 
 
G1=tf([1 0.1],[0.4 0.48 0.08 0]); 
G2=tf([1],[1 0]); 
G=feedback(G1,G2) 
 
Transfer function: 
              s^2 + 0.1 s 
--------------------------------------- 
0.4 s^4 + 0.48 s^3 + 0.08 s^2 + s + 0.1

)

(

1

s

G

 

)

(

2

s

G

 

background image

 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Układ regulacji: 
 

 
 
 
 
 
 
 
 
 

 
 

 

Transmitancja uchybowa 

Transmitancja uchybowo-

zakłóceniowa 

)

(

)

(

1

1

)

(

s

G

s

G

s

G

OR

R

e

 

)

(

)

(

1

)

(

)

(

s

G

s

G

s

G

s

G

OR

R

OR

ez

 

Transmitancja nadążna 

Transmitancja zakłóceniowa 

)

(

)

(

1

)

(

)

(

)

(

s

G

s

G

s

G

s

G

s

G

OR

R

OR

R

 

)

(

)

(

1

)

(

)

(

s

G

s

G

s

G

s

G

OR

R

OR

z

 

 

Przyjmijmy 

)

1

(

)

2

,

0

(

)

1

,

0

(

5

,

2

)

(

s

s

s

s

s

G

OR

 ; 

s

s

G

R

1

)

(

G

R

(s)

 

x(s)

 

z(s)

 

G

OR

(s)

 

+

 

_

 

e(s)

 

_

 

u(s)

 

y(s)

 

background image

 

10 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Transmitancja nadążna 

GOR=zpk([-0.1],[0 -0.2 -1],2.5); 
GR=zpk([],0,1); 
G=feedback(series(GR,GOR),1) 
   
Zero/pole/gain: 
                2.5 (s+0.1) 
------------------------------------------- 
(s+1.81) (s+0.1004) (s^2 - 0.7106s + 1.376) 

 
 
Transmitancja uchybowa 

GOR=zpk([-0.1],[0 -0.2 -1],2.5); 
GR=zpk([],0,1); 
Ge=feedback(1,series(GOR,GR))

 

 

   
Zero/pole/gain: 
             s^2 (s+0.2) (s+1) 
------------------------------------------- 
(s+1.81) (s+0.1004) (s^2 - 0.7106s + 1.376)

)

(

)

(

1

1

)

(

s

G

s

G

s

G

OR

R

e

G

R

(s)

 

x(s)

 

G

OR

(s)

 

_

 

y(s)

 

G

OR

(s)

 

u(s)

 

G

R

(s)

 

_

 

e(s)

 

+

 

)

(

)

(

1

)

(

)

(

)

(

s

G

s

G

s

G

s

G

s

G

OR

R

OR

R

background image

 

11 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Transmitancja uchybowo 

– zakłóceniowa 

GOR=zpk([-0.1],[0 -0.2 -1],2.5); 
GR=zpk([],0,1); 
Gez=feedback(GOR,GR)

 

 

   
Zero/pole/gain: 
               2.5 s (s+0.1) 
------------------------------------------- 
(s+1.81) (s+0.1004) (s^2 - 0.7106s + 1.376)

 

 

 

 
 
 
 
 
 
 
 

)

(

)

(

1

1

)

(

)

(

)

(

1

)

(

)

(

s

G

s

G

s

G

s

G

s

G

s

G

s

G

OR

R

OR

OR

R

OR

ez

 

G

R

(s)

 

z(s)

 

G

OR

(s)

 

+

 

e(s)

 

_

 

-1

 

G

R

(s)

 

z(s)

 

G

OR

(s)

 

_

 

e(s)

 

+

 

background image

 

12 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Transmitancja zakłóceniowa 

GOR=zpk([-0.1],[0 -0.2 -1],2.5); 
GR=zpk([],0,1); 
Gez=-series(GOR,feedback(1,series(GOR,GR))) 
Zero/pole/gain: 
              -2.5 s^2 (s+0.2) (s+0.1) (s+1) 
----------------------------------------------------------- 
s (s+1.81) (s+1) (s+0.2) (s+0.1004) (s^2 - 0.7106s + 1.376)

 

 

 

 

 
 
 
 
 
 
 
 
 

)

(

)

(

1

1

)

(

)

(

)

(

1

)

(

)

(

s

G

s

G

s

G

s

G

s

G

s

G

s

G

OR

R

OR

OR

R

OR

z

 

G

R

(s)

 

z(s)

 

G

OR

(s)

 

_

 

y(s)

 

_

 

G

R

(s)

 

z(s)

 

G

OR

(s)

 

+

 

y(s)

 

_

 

-1

 

background image

 

13 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Odpowiedź impulsowa 

4

3

2

)

(

)

(

1

1

s

s

s

G

t

g

 

)

(

1

9

2

)

(

3

1

)

(

3

4

t

e

t

t

g

t

 

 
G=zpk([-2],[-4/3],1/3); 
impulse(G) 

 
 
 
 
 
Uwaga

Jeżeli stopień licznika jest równy 

stopniowi mianownika 

 

0

1

2

2

1

1

0

1

2

2

1

1

)

(

a

s

a

s

a

s

a

s

a

b

s

b

s

b

s

b

s

b

s

G

n

n

n

n

n

n

n

n

n

n

n

n

 

 

to w odpowiedzi impulsowej pojawia się 

impuls Diraca 

)

(t

a

b

n

n

którego MATLAB nie liczy 

L 

L 

background image

 

14 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Odpowiedź impulsową można wywołać w taki sposób, by można było dorysować impuls Diraca;: 

 

G=zpk([-2],[-4/3],1/3);

 % wpisanie transmitancji

 

[x,t]=impulse(G,6);

 % wyliczenie i zapisanie odpowiedzi impulsowej

 

% narysowanie części ciągłej odpowiedzi

 

plot(t,x) 
grid 

% dodanie impulsu Diraca 

hold on 
plot([0 0],[0 .35],

'r'

hold off 

% poprawienie zakresu rysunku 

axis([0 6 0 .4]) 

% opis rysunku 

title(

'odpowiedz impulsowa g(t)'

xlabel(

'czas [s]'

ylabel(

'g(t)'

% dodanie dodatkowych opisów 

text(0.1,0.25,

'\delta(t)'

,

'color'

,

'r'

,

'fontsize'

,12) 

background image

 

15 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

 

 

background image

 

16 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Odpowie

dź jednostkowa 

)

4

3

(

2

)

(

)

(

1

1

s

s

s

s

s

G

t

h

 

)

(

1

6

1

2

1

)

(

3

4

t

e

t

h

t

 

 
G=zpk([-2],[-4/3],1/3); 
step(G) 

L 

L 

background image

 

17 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Odpowiedź jednostkową podobnie jak impulsową można wywołać także w następujący sposób: 
 

% wpisanie transmitancji

 

G=zpk([-2],[-4/3],1/3); 

% wyliczenie i zapisanie odpowiedzi jednostkowej

 

[x,t]=step(G,6); 

% narysowanie wyliczonej części odpowiedzi

 

plot(t,x,

'r'

grid 

% dodanie początkowego skoku odpowiedzi 

hold on 
plot([0 0],[0 x(1)],

'r'

hold off 

% poprawienie zakresu rysunku 

axis([0 6 0 .6]) 

% opis rysunku 

title(

'odpowiedz jednostkowa h(t)'

xlabel(

'czas [s]'

ylabel(

'h(t)'

background image

 

18 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

 

background image

 

19 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Odpowiedź na dowolne wymuszenie 

 

% Transmitancja operatorowa obiektu regulacji 

Gor=tf([2],[0.04 0.5 1 0]); 

% zdefiniowanie sygnału zadającego 

t=0:pi/100:pi;u=sin(10*t); 

% Obliczenie odpowiedzi 

[y,t]=lsim(Gor,u,t); 
plot(t,y,

'm'

,t,u,

'b'

grid 
title(

'odpowiedz y(t) dla u(t)=sin(t)'

xlabel(

'czas [s]'

ylabel(

'u(t), y(t)'

legend(

'y(t)'

,

'u(t)'

,4) 

axis([0 pi -1.1 1.1]) 

 

background image

 

20 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

 

background image

 

21 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Charakterystyka amplitudowo 

– fazowa 

 

% Transmitancja operatorowa obiektu regulacji

 

G=tf([2],[0.04 0.54 1.5 1]); 

% Zakres częstotliwości 

w=logspace(-2,2,501); 

% charakterystyka amplitudowo - fazowa

 

nyquist(G,w) 

 

background image

 

22 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Funkcja 

nyquist

 

służy także do wyznaczenia części rzeczywistej i urojonej transmitancji 

widmowej dla zadanego przedziału częstotliwości. Sposób wywołania funkcji może zmienić jej 
przeznaczenie. Poniżej przedstawiono inne zastosowanie tej funkcji.  

 

G=tf([2],[0.04 0.54 1.5 1]); 
w=logspace(-3,2,501); 
[p1 q1]=nyquist(G,w); 
P1(1,:)=p1(1,1,:); 
Q1(1,:)=q1(1,1,:); 
plot(P1,Q1,-1,0,

'r+'

axis([-1.5 2.5 -1.4 .2]) 
title(

'charakterystyka amplitudowo-fazowa'

text(-1.2,0.05,

'(-1, j0)'

,

'color'

,

'r'

,

'fontsize'

,12) 

hold on 
plot([0 0],[-1.4 .2],

'k'

plot([-1.5 2.5],[0 0],

'k'

hold off 
grid 
xlabel(

'Re [G(j\omega)]'

ylabel(

'Im [G(j\omega)]'

background image

 

23 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

 

background image

 

24 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Charakterystyki logarytmiczne 

 

G=tf([2],[0.04 0.54 1.5 1]); 
w=logspace(-3,2,501); 

% charakterystyki Bodego

 

bode(G,w) 
grid 

 

background image

 

25 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

G=tf([2],[0.04 0.54 1.5 1]); 
w=logspace(-2,2,501); 
[amp,faza,w]=bode(G,w); 
A(1,:)=amp(1,1,:);F(1,:)=faza(1,1,:); 
subplot(211) 
plot(log10(w),20*log10(A),

'linewidth'

,2) 

grid 
set(gca,

'XTick'

,-2:2) 

set(gca,

'YTick'

,-100:20:40) 

title(

'logarytmiczna charakterystyka aplitudowa'

xlabel(

'log \omega'

ylabel(

'L(\omega)'

text(-1.5,15,{

'20logk'

},

'color'

,

'r'

,

'fontsize'

,12) 

text(1,-60,{

'-60dB/dek'

},

'color'

,

'r'

,

'fontsize'

,12) 

subplot(212) 
plot(log10(w),F,

'linewidth'

,2) 

axis([-2 2 -280 10]) 
grid 
set(gca,

'XTick'

,-2:2) 

set(gca,

'YTick'

,-315:45:45) 

title(

'logarytmiczna charakterystyka fazowa'

background image

 

26 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

xlabel(

'log \omega'

ylabel(

'\phi(\omega)'

 

 

background image

 

27 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Okno graficzne 

ltiview

, pozwala na analizę prostych liniowych i stacjonarnych obiektów 

opisanych np. transmitancją operatorową: 

 

 

background image

 

28 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Dane importujemy z przestrzeni roboczej Matlaba (Workspace) 

 

Okno graficzne można dzielić, w sposób pokazany poniżej. W wydzielonej części okna dostępne są 
opcje z rozwijanej listy 

 

background image

 

29 

zastosowanie Matlab-

a do rozwiązywania prostych zadań automatyki 

Wywołanie okna graficznego możliwe jest także z przestrzeni roboczej Matlaba. Poniższa instrukcja 
wywoła odpowiedź jednostkową i charakterystyki logarytmiczne elementu o transmitancji 
operatorowej G1 

ltiview({'step','bode'},G1)