Instytut Automatyki
Zakład Teorii Sterowania
Krzysztof Marzjan
Podstawowe problemy automatyki
2
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
3
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
4
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)
5
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
6
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
7
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
8
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
9
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)
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
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)
+
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
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
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)
15
zastosowanie Matlab-
a do rozwiązywania prostych zadań automatyki
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
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)'
)
18
zastosowanie Matlab-
a do rozwiązywania prostych zadań automatyki
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])
20
zastosowanie Matlab-
a do rozwiązywania prostych zadań automatyki
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)
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)]'
)
23
zastosowanie Matlab-
a do rozwiązywania prostych zadań automatyki
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
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'
)
26
zastosowanie Matlab-
a do rozwiązywania prostych zadań automatyki
xlabel(
'log \omega'
)
ylabel(
'\phi(\omega)'
)
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ą:
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
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)