Projektowanie układów automatyki – MATLAB

background image

Wykład

Komputerowe wspomaganie projektowania

CAD

Projektowanie układów automatyki – MATLAB

Robert Kazała

26 czerwiec 2004

ver. 1.01

background image

Wstęp

Matlab jest programem przeznaczonym do wykonywania różnorodnych obliczeń

numerycznych. Na całość pakietu składają się następujące elementy:

interpretator języka programowania wraz z bibliotekami podstawowych działań i obliczeń

na macierzach,

standardowe biblioteki procedur napisanych w języku programu Matlab – realizują one m.

in. przekształcenia macierzy, obliczenie wartości funkcji elementarnych i specjalnych,

całkowanie numeryczne, rozwiązywanie układów równań różniczkowych zwyczajnych,

biblioteki dodatkowe „toolbox” zawierające procedury wspomagające obliczenia

numeryczne wykonywane w różnych zastosowaniach m. in. w projektowaniu układu

sterowania, cyfrowym przetwarzaniu sygnału, metodach identyfikacji i optymalizacji, w

sieciach neuronowych i wielu innych,

nakładki – są to dodatkowe programy napisane w języku programu Matlab ułatwiające

realizację obliczeń określonego rodzaju. Przykładem takiej nakładki jest Simulink

umożliwiający interakcyjne definiowanie struktury układu sterowania oraz wygodną jego

symulację.

Control System Toolbox jest biblioteką narzędzi przeznaczonych do modelowania,

analizy i syntezy układów liniowych dynamicznych ciągłych i dyskretnych niezmiennych w

czasie oraz mieszanych dyskretno-ciągłych.

Układy te mogą być opisane za pomocą:

transmitancji,

iloczynu zer, biegunów i wzmocnienia

jak również w postaci równań stanu.

Funkcje Control System Toolbox umożliwiają:

tworzenie obiektów LTI ciągłych i dyskretnych w dowolnej z zdefiniowanych postaci

dokonanie wzajemnej konwersji różnych postaci modeli ciągłych i dyskretnych,

upraszczanie modeli zbudowanych z różnych bloków poprzez łączenie ich w różny

sposób,

wyznaczanie charakterystyk czasowych

wyznaczanie charakterystyk częstotliwościowych

określanie parametrów dynamicznych modeli

przekształcanie modeli opisanych w przestrzeni stanów

projektowanie regulatorów metodą miejsc geometrycznych pierwiastków

projektowanie estymatorów i regulatorów optymalnych dla modeli opisanych w

przestrzeni stanów

background image

1. Tworzenie modeli obiektów liniowych ciągłych i dyskretnych

Układem liniowym można nazwać układ, w którym spełniona została zasada

superpozycji – odpowiedź na sumę wymuszeń jest równa sumie odpowiedzi na każde

wymuszenie z osobna. Układ liniowy ze względu na charakter występujących w nim

sygnałów można podzielić na:

- układ ciągły, w którym sygnały przesyłane są w sposób ciągły a sam układ dynamiczny

można opisać równaniami różniczkowymi,

- układ dyskretny, w którym przynajmniej jeden sygnał ma charakter dyskretny a sam

układ dynamiczny można opisać równaniami różnicowymi.

Układ liniowy w systemie MATLAB rozumiany jest jako obiekt, niżej oznaczany jako SYS i

możemy wykorzystać różne funkcje do jego tworzenia.

1.1. Modele opisane transmitancją

Najpopularniejszym sposobem opisu układów liniowych jest opis za pomocą transmitancji
będącej ilorazem wielomianów licznika i mianownika. W przypadku obiektu
jednowymiarowego opisuje się go za pomocą jednego równania. W przypadku układów
wielowymiarowych konieczne jest utworzenie macierzy transmitancji opisującej zależności
pomiędzy każdym wejściem i każdym wyjściem.

1.1.1. Obiekty SISO z jednym wejściem i jednym wyjściem

Obiekty opisane transmitancją

)

(

)

(

)

(

s

M

s

L

s

G

=

Do utworzenia transmitancji należy wykorzystać komendę tf

h = tf(num,den) tworzy układ ciągły

h = tf(num,den,T) tworzy układ dyskretny z czasem próbkowania T.

Przykład Tworzenie układu o transmitancji

2

2

15

9

)

(

2

3

2

+

+

+

=

s

s

s

s

s

s

G

W tym celu należy wykonać następujące wywołania:

num=[1 9 15];

den=[1 -2 -1 2];

h=tf(num, den)

background image

lub

h=tf([1 9 15], [1 -2 -1 2])

Obiekty można także tworzyć poprzez zdefiniowanie specjalnej zmiennej s (od wersji 5.3)

s = tf('s')

i podanie transmitancji postaci

H=s/(s^2+2*s+10)

Zmienna s jest tworzona tylko raz.

Obiekty MIMO z wieloma wejściem i wieloma wyjściami

h11=tf([-1 1],[1 1]);

h21=tf([1 2],[1 4 5]);

lub

s=tf('s')

h11=(s-1)/(s+1);

h21=(s+2)/(s^2+4*s+5);

macierz wynikowa ma postać

H=[h11; h21]

Transmitancje można też tworzyć poprzez podanie tablic współczynników

N = {[1 –1];[1 2]};

D = {[1 1];[1 4 5]};

H=tf(N,D)

1.2. Opis poprzez podanie wzmocnień, zer i biegunów

ZPK ( zero-pole-gain ) układ opisany przez iloczyn zer, biegunów i wzmocnień.

 SYS = ZPK(Z,P,K) tworzy układ ciągły.

 SYS = ZPK(Z,P,K,T) tworzy układ dyskretny z czasem próbkowania T.

background image

h=zpk(0,[1-i 1+i 2],-2)

tworzy

-2s

---------------
(s-2)(s^2-2s+2)

Korzystając z operatora s

s=zpk('s')

H=-2s/((s-2)*(s^2+2*s+2));

Obiekty MIMO

Z = {[],-5;1-i 1+i] []};

P = {0, [-1 –1];[1 2 3],[]}

K = [-1 3;2 0];

H=zpk(Z,P,K)

tworzy macierz

+

+

+

=

0

)

3

(

2

)(

1

(

)

2

2

(

2

)

1

(

)

5

(

3

1

)

(

2

s

s

s

s

s

s

s

s

s

G

1.3. Opis równaniem stanu

SS ( state-space ) układ opisany za pomocą równań stanu.

 SYS = SS(A,B,C,D) tworzy układ ciągły.

 SYS = SS(A,B,C,D,T) tworzy układ dyskretny z czasem próbkowania T.

dla macierzy

=

2

5

1

0

A

,

=

3

0

B

,

[

]

1

0

=

C

,

0

=

D

sys = ss([0 5;-5 –2],[0;3],[0 1],0)

background image

1.4. Opis w postaci filtru

FILT układ dyskretny opisany w formacie DSP :

( )

( )

( )

1

1

1

=

z

DEN

z

NUM

z

H

(4.1.1)

 H = FILT(NUM,DEN) tworzy układ dyskretny bez uwzględnienia czasu próbkowania.

 H = FILT(NUM,DEN,TS) tworzy układ dyskretny z uwzględnieniem czasu próbkowania

TS.

2

1

1

1

3

2

1

5

.

0

1

)

(

+

+

+

=

z

z

z

z

H

h=filt([1 0.5],[1 2 3])

1.5. Łączenie obiektów

W celu uproszczenia obliczeń oraz zwiększenia przejrzystości schematu blokowego

można z minimum dwóch układów złożyć jeden obiekt. Funkcje systemu MATLAB

przedstawione poniżej, pozwalają na złączenie układów połączonych szeregowo, równolegle,

pętlą sprzężenia zwrotnego lub w gwiazdę, przy czym można łączyć zarówno całe wektory

wejść i wyjść jak i ich wybrane elementy. Złożenie układów jest możliwe nawet wtedy, gdy

są one opisane różnymi metodami.

APPEND łączy dwa systemy w jeden większy przez odpowiednie łączenie wektorów wejść i

wyjść jako elementów o różnych składowych

 SYSOUT = APPEND(SYS1,SYS2, ...) wywołanie to jest jednoznaczne z powiązaniem

wektorów wejść i wyjść układów SYS1, SYS2,... w następujący sposób:

=

SysN

Sys

Sys

SysOut

...

0

0

...

....

...

...

0

...

2

0

0

...

0

1

 [A,B,C,D] = APPEND(A1,B1,C1,D1,A2,B2,C2,D2) wywołanie to dołącza do układu

opisanego równaniami stanu określonymi macierzami A1, B1, C1, D1 układ o równaniach

stanu wyznaczonych przez macierze A2, B2, C2, D2. Daje to łączne równanie stanu w

następującej postaci:

background image

+

=



2

1

2

0

0

1

2

1

2

0

0

1

2

1

.

.

u

u

B

B

x

x

A

A

x

x

PARALLEL tworzy układ wypadkowy z równolegle połączonych dwóch układów

 SYS = PARALLEL(SYS1,SYS2) wywołanie to tworzy system z dwóch układów

połączonych równolegle

 SYS = PARALLEL(SYS1,SYS2,INP1,INP2,OUT1,OUT2) wywołanie to tworzy system

z dwóch układów SYS1 i SYS2 połączonych równolegle w taki sposób że: INP1 zawiera

indeksy wejść układu SYS1, które mają zostać podłączone do odpowiadających im wejść

układu SYS2, co określa w ten sam sposób wektor INP2 natomiast OUT1 zawiera indeksy

wyjść układu SYS1, które mają zostać zsumowane z odpowiadającymi im wyjściami

układu SYS2, określonymi przez wektor OUT2.

Rys. 4.1 Schemat blokowy równoległego połączenia dwóch układów.

SERIES tworzy układ wypadkowy z szeregowo połączonych dwóch układów

 SYS = SERIES(SYS1,SYS2,OUT1,INP2) wywołanie to łączy dwa układy w szereg tak,

że wyjścia układu SYS1 określone przez OUT1 są połączone z wejściami układu SYS2

określonymi przez INP2 w sposób pokazany na rysunku.

Jeżeli OUT1 i INP2 są pominięte, SERIES łączy SYS1 i SYS2 w kaskadę i zwraca

SYS = SYS1 * SYS2 .

Rys. 4.2 Schemat blokowy połączenia szeregowego dwóch układów.

background image

FEEDBACK tworzy układ wypadkowy z układów połączonych w układ sprzężenia

zwrotnego.

 SYS = FEEDBACK(SYS1,SYS2,SIGN) wywołanie to łączy układy w sprzężeniu

zwrotnym pokazane na rysunku. Jeśli SIGN =1 to sprzężenie zwrotne jest dodatnie,

natomiast jeśli SIGN = -1 to sprzężenie zwrotne jest ujemne. Pominięcie SIGN oznacza

użycie ujemnego sprzężenia zwrotnego.

Rys. 4.3 Schemat blokowy dwóch układów w sprzężeniu zwrotnym.

 SYS = FEEDBACK(SYS1,SYS2,FEEDIN,FEEDOUT,SIGN) wywołanie to łączy układy

poprzez odpowiednie połączenie niektórych z ich wejść i wyjść w sposób pokazany na

Rys. 4.4.

Wektor FEEDIN zawiera indeksy wejść u układu SYS1 które są wykorzystywane przy

połączeniu sprzężeniem zwrotnym, podobnie wektor FEEDOUT zawiera indeksy wyjść y

układu SYS1 które są wykorzystywane przy połączeniu sprzężeniem zwrotnym z układem

SYS2.

Rys. 4.4 Schemat blokowy połączenia dwóch układów.

STAR tworzy układ wypadkowy z dwóch układów połączonych w gwiazdę

background image

 SYS = STAR(SYS1,SYS2,NU,NY) wywołanie to łączy dwa układy SYS1 i SYS2 w

jeden system w sposób pokazany na rys. 4.5.

Rys. 4.5 Schemat blokowy połączenia dwóch układów.

To sprzężenie zwrotne łączy pierwsze wyjście układu SYS2 z ostatnim wejściem układu

SYS1 (sygnał u) zawartymi w wektorze NU a ostatnie wyjście układu SYS1 z pierwszym

wejściem układu SYS2 (sygnał y) zawartymi w wektorze NY. W rezultacie otrzymujemy

układ SYS z wektorem wejść [w1;w2] i wektorem wyjść [z1;z2].

1.6. Metody konwersji obiektów

MATLAB określa układ za pomocą równań stanu, transmitancji oraz biegunów i zer. W
bibliotekach programu są opisane poniżej funkcje pozwalające na przekształcenie układu na
dowolny system zapisu, zamianę układu z ciągłego na dyskretny i odwrotnie przy
zastosowaniu różnych metod dyskretyzacji.

SS, ZPK, TF umożliwiają przekształcenie zapisu układu do określonej przez nie postaci:

równań stanu, zer i biegunów czy transmitancji.

Przykład: dany układ opisany przez zera, bieguny i wzmocnienie

)

5

)(

3

(

)

1

)(

2

(

2

+

=

s

s

s

s

SYS

należy przekształcić do postaci transmitancji SYS1 oraz opisać go równaniami stanu

SYS2.

W tym celu należy wykonać następujące wywołania:

>>

SYS = ZPK([-2 1],[3 5],2);

>> SYS1 = TF(SYS)

>> SYS2 = SS(SYS)

background image

W wyniku ich realizacji otrzymamy transmitancję takiego układu i macierze równań

stanu:

Transfer function:

2 s^2 + 2 s - 4

---------------

s^2 - 8 s + 15

a = x1 x2

x1 8.00000 -3.75000

x2 4.00000 0

b = u1

x1 5.65685

x2 0

c = x1 x2

y1 3.18198 -1.50260

d = u1

y1 2.00000

C2D umożliwia przekształcenie układu ciągłego na dyskretny.

 SYSD = C2D(SYSC,TS,METHOD) wywołanie to przekształca układ ciągły na dyskretny

z czasem próbkowania TS. Pole METHOD pozwala na dobór odpowiedniej metody

dyskretyzacji :

'zoh'

ekstrapolator zerowego rzędu,

'foh'

aproksymacja trójkątna (modyfikacja ekstrapolatora pierwszego

rzędu),

'tustin'

aproksymacja bilinearna używa przekształcenia:

1

1

2

'

+

=

z

z

T

s

s

(4.5.1)

'prewarp'

aproksymacja Tustina z uprzednim przekształceniem

częstotliwości:

(

)

1

1

2

'

+

=

z

z

T

tan

s

s

ω

ω

.

(4.5.2)

Częstotliwość krytyczna WC jest podana jako ostatnia w

wywołaniu C2D(SYSC,TS,'prewarp',WC),

'matched'

dopasowany do metody zer i biegunów tylko dla układów SISO.

Jeżeli nie zostanie wybrana żadna metoda program zastosuje ekstrapolator zerowego

rzędu.

background image

D2C umożliwia przekształcenie układu dyskretnego na ciągły.

 SYSC = D2C(SYSD,METHOD) wywołanie to przekształca układ dyskretny na ciągły z

czasem próbkowania TS. Pole METHOD pozwala na dobór odpowiedniej metody

dyskretyzacji :

'zoh'

ekstrapolator zerowego rzędu.

'foh'

aproksymacja trójkątna (modyfikacja ekstrapolatora pierwszego

rzędu)

'tustin'

aproksymacja bilinearna używa przekształcenia:

2

/

1

2

1

'

s

s

sT

sT

z

+

=

(4.5.3)

'prewarp'

aproksymacja Tustina z uprzednim przekształceniem

częstotliwości. Częstotliwość krytyczna WC jest podana jako

ostatnia w wywołaniu C2D(SYSD,TS,'prewarp',WC).

'matched'

dopasowany do metody zer i biegunów tylko dla układów SISO

Jeżeli nie zostanie wybrana żadna metoda program zastosuje ekstrapolator zerowego

rzędu.

D2D umożliwia zmianę czasu próbkowania lub dodanie opóźnienia na wejście.

 SYS = D2D(SYS,TS) wywołanie to przepróbkowywuje układ dyskretny w celu

utworzenia układu dyskretnego z nowym czasem próbkowania TS.

SS2SS zmienia współrzędne stanu układu przestrzeni stanu

 SYS = SS2SS(SYS,T) wywołanie to wykonuje podstawienie

Tx

x

=

w równaniach stanu

w wyniku czego następuje odpowiednie ich przekształcenie:

Du

Cx

y

Bu

Ax

x

+

=

+

=

&

 →

=

Tx

x

Du

x

CT

y

TBu

x

TAT

x

+

=

+

=

1

1

&

(4.5.4)

CANON realizuje postać kanoniczną przestrzeni stanu.

 CSYS = CANON(SYS,TYPE) wywołanie to oblicza postać kanoniczną przestrzeni stanu.

Pole TYPE określa postać kanoniczną :

'modal' – modalna postać kanoniczna gdzie wartości własne układu ukazane są na

przekątnej, macierz stanu A musi być diagonalna

'companion' – pierwsza postać kanoniczna gdzie wartości charakterystyczne

wielomianu ukazane są w prawej kolumnie

background image

1.7. Odczytywanie informacji o obiektach

Układy, na których wykonuje się obliczenia podlegają różnym przekształceniom, w związku z

tym zmieniają się ich parametry. Zależnie od sposobu zapisu układu można użyć

przedstawionych niżej funkcji aby odczytać równania układu, jego bieguny, zera i

wzmocnienia czy wartości własnych. MATLAB dzięki funkcjom GET i SET pozwala też na

odczyt i modyfikację poszczególnych parametrów bez wykonania dodatkowych obliczeń.

SSDATA umożliwia odtworzenie macierzy opisujących system

 [A,B,C,D] = SSDATA(SYS) wywołanie to zwraca wartości z macierzy A, B, C, D. Jeśli

SYS nie jest modelem opisanym równaniami stanu to następuje jego konwersja do postaci

przestrzeni stanu.

 [A,B,C,D,TS,TD] = SSDATA(SYS) wywołanie to zwraca również czas próbkowania TS i

opóźnienie TD na wejściu. Dla układów ciągłych TD jest wektorem wierszowym, w

którym element TD(j) określa ile sekund opóźnienia ma j-te wejście. Dla układów

dyskretnych TD jest macierzą pustą.

ZPKDATA umożliwia odtworzenie zer, biegunów i wzmocnienia układu.

 [Z,P,K] = ZPKDATA(SYS) wywołanie to zwraca zera, bieguny i wzmocnienie z każdego

kanału I/O układu.

 [Z,P,K,TS,TD] = ZPKDATA(SYS) wywołanie to zwraca również czas próbkowania TS i

opóźnienia na wejściu, dla układów ciągłych TD jest wektorem wierszowym, w którym

element TD(j) określa ile sekund opóźnienia ma j-te wejście a dla układów dyskretnych

TD jest macierzą pustą.

 [Z,P,K] = ZPKDATA(SYS,'V') wywołanie to zwraca zera i bieguny jako wektory

kolumnowe z podaniem ich wartości.

TFDATA umożliwia odtworzenie licznika i mianownika transmitancji opisującej system.

 [NUM,DEN] = TFDATA(SYS) wywołanie to zwraca licznik i mianownik transmitancji.

 [NUM,DEN,TS,TD] = TFDATA(SYS) wywołanie to zwraca również czas próbkowania

TS i opóźnienia na wejściu, dla układów ciągłych TD jest wektorem wierszowym, w

którym element TD(j) określa ile sekund opóźnienia ma j-te wejście a dla układów

dyskretnych TD jest macierzą pustą.

 [NUM,DEN] = TFDATA(SYS,'V') wywołanie to zwraca licznik i mianownik jako

wektory kolumnowe z podaniem ich wartości.

SET wyświetla i modyfikuje własności układu.

 SET(SYS) wywołanie to wyświetla wszystkie własności układu

 SET(SYS,'PROPERTY') wywołanie to wyświetla możliwe wartości tej własności układu

background image

 SET(SYS,'PROPERTY',VALUE) wywołanie to przypisuje nową wartość VALUE

własności układu podanej w polu PROPERTY.

 SET(SYS,'PROPERTY1',VALUE1,'PROPERTY2',VALUE2,...) wywołanie to

przypisuje podane wartości odpowiednim własnościom układu w jednym wywołaniu.

GET odczytuje zadane własności układu.

 VALUE = GET(SYS,'PROPERTY') wywołanie to podaje wartość wybranej własności

PROPERTY układu SYS.

GET(SYS) wywołanie to wyświetla wszystkie własności układu z podaniem ich wartości.

1.8. Generowanie przykładowych modeli

System MATLAB umożliwia utworzenie przypadkowych, stabilnych układów ciągłych

bądź dyskretnych jeżeli zachodzi potrzeba przetestowania metod obliczeniowych na układzie

określonego rzędu.

DRSS tworzy przypadkowy stabilny i dyskretny układ opisany równaniami stanu.

 SYS = DRSS(N) wywołanie to tworzy N-rzędowy układ SISO.

 SYS = DRSS(N,P) wywołanie to tworzy N-rzędowy jednowejściowy układ z wyjściami

P.

 SYS = DRSS(N,P,M) wywołanie to tworzy N-rzędowy układ z wyjściami P i

wejściami M.

DRMODEL tworzy przypadkowy stabilny i dyskretny N-rzędowy układ testowy.

 [NUM,DEN]=DRMODEL(N) wywołanie to tworzy N-rzędowy układ SISO opisany

transmitancją.

 [NUM,DEN]=DRMODEL(N,P) wywołanie to tworzy N-rzędowy jednowejściowy

układ z wyjściami P opisany transmitancją.

 [A,B,C,D]=DRMODEL(N) wywołanie to tworzy N-rzędowy układ SISO opisany

równaniami stanu.

 [A,B,C,D]=DRMODEL(N,P,M) wywołanie to tworzy N-rzędowy układ z wyjściami P

i wejściami M opisany równaniami stanu.

RSS tworzy przypadkowy, stabilny i ciągły układ opisany równaniami stanu

 SYS = RSS(N) wywołanie to tworzy N-rzędowy układ SISO.

background image

 SYS = RSS(N,P) wywołanie to tworzy N-rzędowy jednowejściowy układ z wyjściami

P.

 SYS = RSS(N,P,M) wywołanie to tworzy N-rzędowy układ z wyjściami P i wejściami

M.

RMODEL przypadkowy stabilny i ciągły N-rzędowy układ testowy.

 [NUM,DEN]=RMODEL(N) wywołanie to tworzy N-rzędowy układ SISO opisany

transmitancją.

 [NUM,DEN]=RMODEL(N,P) wywołanie to tworzy N-rzędowy jednowejściowy

układ z wyjściami P opisany transmitancją.

 [A,B,C,D]=RMODEL(N) wywołanie to tworzy N-rzędowy układ SISO opisany

równaniami stanu.

 [A,B,C,D]=RMODEL(N,P,M) wywołanie to tworzy N-rzędowy układ z wyjściami P i

wejściami M opisany równaniami stanu.

ORD2 układ oscylacyjny 2-go rzędu

 [A,B,C,D] = ORD2(WN, Z) wywołanie to zwraca A, B, C, D reprezentujące układ

oscylacyjny 2-go rzędu gdzie WN jest częstotliwością rezonansową, a Z

współczynnikiem tłumienia.

 [NUM,DEN] = ORD2(WN,Z) wywołanie to zwraca wielomiany reprezentujące

licznik i mianownik układu oscylacyjnego 2-go rzędu.

2. Charakterystyki modeli

2.1. Określanie właściwości układu

EIG, POLE znajduje bieguny układu.

 P = EIG(SYS) lub P = POLE(SYS) wywołanie to zwraca bieguny układu jako wektor

kolumnowy P.

TZERO znajduje zera układu.

 Z = TZERO(SYS) wywołanie to zwraca zera układu jako wektor kolumnowy Z.

[Z,GAIN] = TZERO(SYS) wywołanie to dla układu SISO zwraca zera i podaje jego

wzmocnienie.

 Z = TZERO(A,B,C,D) wywołanie to zwraca zera pracując bezpośrednio na

macierzach przestrzeni stanu.

background image

PZMAP oblicza bieguny i zera dla układów liniowych

 PZMAP(SYS) dla układów SISO oblicza bieguny i zera układu i kreśli na

płaszczyźnie zmiennej zespolonej bieguny oznaczone krzyżykami oraz zera

oznaczone kółkami natomiast w przypadku układu MIMO kreśli bieguny i przekazuje

zera układu.

 [P,Z] = PZMAP(SYS) to wywołanie umieszcza bieguny i zera układu w wektorach

kolumnowych P i Z, nie wywołuje natomiast wykresu.

Funkcje SGRID dla układu ciągłego lub ZGRID dla układu dyskretnego mogą być użyte

do nakreślenia na wykresie linii stałego współczynnika tłumienia i stałej częstotliwości

własnej.

DCGAIN określa wzmocnienie układu.

 K = DCGAIN(SYS) wywołanie to oblicza wzmocnienie układu w stanie ustalonym.

NORM oblicza normy wektorów i macierzy.

 NORM(SYS) wywołanie to oblicza normę H

2

dla układu ciągłego lub dyskretnego,

norma ta jest nieskończona jeśli układ jest niestabilny lub układ jest ciągły i ma

niezerowe wzmocnienie przy nieskończonej częstotliwości.

 NORM(SYS,2) wywołanie to jest równoważne NORM(SYS).

 NORM(SYS,INF) wywołanie to oblicza normę L

układu, norma ta jest nieskończona

jeśli układ ciągły ma bieguny w urojonej części płaszczyzny zespolone.

 NORM(SYS,INF,TOL) wywołanie to oblicza normę L

układu z żądaną względną

dokładnością.

 [N,FPEAK] = NORM(SYS,INF) wywołanie to zwraca również częstotliwość FPEAK

dla wzmocnienie o szczytowej wartości.

DAMP oblicza współczynniki tłumienia i pulsację drgań własnych.

 [WN,Z] = DAMP(SYS) wywołanie to zwraca wektor WN i Z zawierające

współczynniki tłumienia i pulsację drgań własnych układu. WN i Z są pustymi

wektorami jeśli czas próbkowania TS jest niezdefiniowany.

 [WN,Z,P] = DAMP(SYS) wywołanie to zwraca również bieguny układu w wektorze P

ESORT sortuje malejąco zespolone wartości własne.

background image

 S = ESORT(P) wywołanie to sortuje malejąco części rzeczywiste zespolonych

wartości własnych umieszczonych w wektorze P, niestabilne wartości własne

wpisywane są jako pierwsze.

 [S,NDX] = ESORT(P) wywołanie to zwraca również wektor NDX zawierający

indeksy sortowanych wartości własnych.

DSORT sortuje malejąco zespolone dyskretne wartości własne.

 S = DSORT(P) wywołanie to sortuje malejąco ze względu na moduł zespolone

dyskretne wartości własne zawarte w wektorze P, niestabilne wartości własne

wpisywane są jako pierwsze.

 [S,NDX] = DSORT(P) wywołanie to zwraca również wektor NDX zawierający

indeksy sortowanych wartości własnych.

2.2. Wyznaczanie odpowiedzi czasowych

Charakterystyki czasowe układu można określić jako charakterystyki w stanie

nieustalonym układu, będące odpowiedzią układu na zadany, stały w czasie, sygnał

wejściowy. Ze względu na rodzaj tego sygnału można rozróżnić odpowiedź skokową,

impulsową oraz odpowiedź na stan początkowy – przebiegi stanu i wyjścia jakie powstaną w

układzie przy braku pobudzenia z zewnątrz, dla danych warunków początkowych. Funkcje

przedstawione poniżej pozwalają wykreślić te charakterystyki jak również znaleźć odpowiedź

układu na utworzony przez użytkownika sygnał sinusoidalny, prostokątny bądź okresowo

impulsowy.

INITIAL wyznacza odpowiedź układu na zadane warunki początkowe.

 INITIAL(SYS,X0) wywołanie to kreśli odpowiedź układu na zadany warunek

początkowy X0, odpowiedź jest opisana przez następujące równanie:

Układ ciągły:

Ax

x

=

&

,

Cx

y

=

,

( )

0

0 x

x

=

Układ dyskretny:

x[k+1] = A x[k], y[k] = C x[k], x[0] = x0

Przedział czasu i liczba punktów są dobierane automatycznie.

 INITIAL(SYS,X0,TFINAL) wywołanie to symuluje odpowiedź dla podanego czasu,

dla układu dyskretnego TFINAL określa liczbę kroków.

 INITIAL(SYS,X0,T) wywołanie to wektor T określa czas symulacji odpowiedzi, dla

układu dyskretnego T ma postać Ti:Ts:Tf gdzie Ts określa czas próbkowania, dla

układu ciągłego T ma postać Ti:dt:Tf gdzie dt określa odstęp między kolejnym

próbkowaniem.

background image

 INITIAL(SYS1,SYS2,...,X0,T) wywołanie to kreśli odpowiedź impulsową dla wielu

układów na jednym wykresie z opcjonalnie użytym wektorem T, można też określić

kolor oraz styl linii dla każdego z układów np. initial(sys1,'r',sys2,'y--',sys3,'gx').

 [Y,T,X] = INITIAL(SYS,X0,...) wywołanie to dla układu przestrzeni stanu zwraca

również wektor stanu X z kolejnych chwil symulacji.

Przykład: dla danego układu SYS opisanego równaniami stanu należy wyznaczyć

czasową na zadany sygnał X(0):

=

2

1

2

1

0

7814

.

0

7814

.

0

5572

.

0

x

x

x

x

&

&

[

]

=

2

1

4493

.

6

9691

.

1

x

x

y

=

0

1

)

0

(

x

W tym celu należy wykonać następujące wywołania:

>> A = [-0.5572 –0.7814 ; 0.7814 0];

>> C = [1.9691 6.4493];

>> X0 = [1 ; 0];

>> SYS=SS(A, [], C, [] );

INITIAL(SYS,X0)

W wyniku ich realizacji otrzymamy odpowiedź układu:

Rys. 4.6 Odpowiedź układu na zadane warunki początkowe.

STEP wyznacza odpowiedź układu na skok jednostkowy.

 STEP(SYS) wywołanie to kreśli odpowiedź układu na skok jednostkowy podany na

wejście, przedział czasu i liczba punktów dobierane są automatycznie.

 STEP(SYS,TFINAL) wywołanie to symuluje odpowiedź skokową dla zadanego czasu

TFINAL, natomiast dla układu dyskretnego bez ustalonego czasu próbkowania

TFINAL jest interpretowany jako liczba próbkowań.

Time (sec.)

A

m

pl

itu

de

Initial Condition Results

0

5

10

15

20

-2

-1

0

1

2

3

4

5

background image

 STEP(SYS,T) wywołanie to wektor T określa czas symulacji odpowiedzi skokowej,

dla układu dyskretnego T ma postać Ti:Ts:Tf gdzie Ts określa czas próbkowania, dla

układu ciągłego T ma postać Ti:dt:Tf gdzie dt jest czasem próbkowania z dyskretnej

aproksymacji na układ ciągły.

 STEP(SYS1,SYS2,...,T) wywołanie to kreśli odpowiedź skokową dla wielu układów

na jednym wykresie z opcjonalnie użytym wektorem T, można też określić kolor oraz

styl linii dla każdego z układów np. (sys1,'r',sys2,'y--',sys3,'gx').

 [Y,T] = STEP(SYS,...) wywołanie to zwraca wyniki symulacji w postaci wektora

odpowiedzi skokowej Y oraz wektora czasu trwania symulacji T.

 [Y,T,X] = STEP(SYS,...) wywołanie to dla układu przestrzeni stanu zwraca również

wektor stanu X z kolejnych chwil symulacji.

IMPULSE wyznacza odpowiedź układu na impuls jednostkowy.

 IMPULSE(SYS) wywołanie to kreśli odpowiedź układu na impuls jednostkowy

podany na wejście, przedział czasu i liczba punktów dobierane są automatycznie.

 IMPULSE(SYS,TFINAL) wywołanie to symuluje odpowiedź impulsową dla

zadanego czasu TFINAL, natomiast dla układu dyskretnego bez ustalonego czasu

próbkowania TFINAL jest interpretowany jako liczba próbkowań.

 IMPULSE(SYS,T) wywołanie to wektor T określa czas symulacji odpowiedzi

impulsowej, dla układu dyskretnego T ma postać Ti:Ts:Tf gdzie Ts określa czas

próbkowania, dla układu ciągłego T ma postać Ti:dt:Tf gdzie dt jest czasem

próbkowania z dyskretnej aproksymacji na układ ciągły.

 IMPULSE(SYS1,SYS2,...,T) wywołanie to kreśli odpowiedź impulsową dla wielu

układów na jednym wykresie z opcjonalnie użytym wektorem T, można też określić

kolor oraz styl linii dla każdego z układów np. (sys1,'r',sys2,'y--',sys3,'gx').

 [Y,T] = IMPULSE(SYS,T) wywołanie to zwraca wyniki symulacji w postaci wektora

odpowiedzi skokowej Y oraz wektora czasu trwania symulacji T.

 [Y,T,X] = IMPULSE(SYS, ...) wywołanie to dla układu przestrzeni stanu zwraca

również wektor stanu X z kolejnych chwil symulacji.

LSIM symuluje odpowiedź czasową układu na zadany sygnał wejściowy.

 LSIM(SYS,U,T) wywołanie to kreśli odpowiedź czasową układu na sygnał wejściowy

określony przez U i T przy zerowych warunkach początkowych, parametr U powinien

zawierać wierszami wektory sterowań dla kolejnych chwil czasu określonych w

wektorze T, stąd liczba wierszy macierzy U musi być równa liczbie elementów

wektora czasu T np. T = 0:0.01:5; U = sin(t); lsim(sys,u,t) symuluje odpowiedź

układu na sygnał wejściowy U przez 5 sekund.

 LSIM(SYS,U,T,X0) wywołanie to dla układu opisanego równaniami stanu można

określić warunki początkowe X0.

background image

 LSIM(SYS1,SYS2,...,U,T,X0) wywołanie to symuluje odpowiedź kilku układów na

jednym wykresie przy czym warunki początkowe mogą ale nie muszą być określone,

każdemu układowi można przypisać odpowiedni kolor i rodzaj linii np.

lsim(sys1,'r',sys2,'y--',sys3,'gx',u,t).

 [Y,T] = LSIM(SYS,U,...) wywołanie to zapamiętuje przebieg symulacji zapisując

przebieg wyjścia Y dla danych chwil czasu zapisanych w wektorze T, przy czym

macierz Y ma tyle samo wierszy co liczba elementów wektora T oraz tyle kolumn ile

jest wyjść układu.

 [Y,T,X] = LSIM(SYS,U,...) wywołanie to dla układu opisanego równaniami stanu

zwraca też macierz stanów X, która ma tyle rzędów co liczba elementów wektora T i

tyle kolumn ile jest stanów układu.

Przykład: zasymulować i wykreślić odpowiedź danego układu SYS na zadany

sygnał prostokątny o okresie równym 4, czasie trwania 10 sekund i o czasie

próbkowania 0.1 sekundy:

5

1

2

+

+

=

s

s

s

SYS

W tym celu należy wykonać następujące wywołania:

>> [U,T]=GENSIG('SQUARE',4,10,0.1);

>> SYS=TF([1 -1],[1 1 5])

>> LSIM(SYS,U,T)

W wyniku ich realizacji otrzymamy odpowiedź układu:

Rys. 4.7. Odpowiedź układu na zadany sygnał wejściowy.

GENSIG tworzy sygnały wejściowe dla LSIM.

 [U,T] = GENSIG(TYPE,TAU) wywołanie to tworzy skalarny sygnał U z pola TYPE o

okresie TAU. Generowane sygnały mogą być funkcjami typu:

TYPE = 'sin'

--- sinusoidalna

Time (sec.)

A

m

pl

itu

de

Linear Sim ulation Results

0

2

4

6

8

10

-0.6

-0.5

-0.4

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

background image

TYPE = 'square'

--- prostokątna

TYPE = 'pulse'

--- okresowo-impulsowa

GENSIG zwraca wektor T z czasem próbkowania i wektor U z wartościami sygnału

dla tych próbkowań, wszystkie generowane sygnały mają amplitudę równą jeden.

 [U,T] = GENSIG(TYPE,TAU,TF,TS) wywołanie to dodatkowo można określić

długość trwania sygnału TF oraz czas próbkowania TS.

Przykład: utworzyć sygnał sinusoidalny o okresie równym 4, czasie trwania 10 sekund i o

czasie próbkowania 0.1 sekundy oraz przedstawić go na wykresie.

W tym celu należy wykonać następujące wywołania:

>> [U,T]=GENSIG('SIN',4,10,0.1);

>> plot(T,U)

>> AXIS([0 10 –1 2])

W wyniku ich realizacji otrzymamy następujący sygnał:

Rys. 4.8 Wykres zadanego sygnału sinusoidalnego.

2.3. Charakterystyki częstotliwościowe

Pełną informację o dynamice układu zawierają charakterystyki częstotliwościowe, które

są w zasadzie przeznaczone dla układów liniowych. Ilustrują one zależność stosunku

amplitud sygnału wyjściowego i wejściowego oraz przesunięcia fazowego tych sygnałów od

częstotliwości sygnału wejściowego harmonicznego. Przedstawione poniżej funkcje

programu MATLAB pozwalają wykreślić charakterystyki: Bodego, Nyquista, kartę Nicholsa,

obliczyć zapas modułu i fazy oraz wyznaczyć odpowiedź częstotliwościową dla zadanych

przez użytkownika częstotliwości.

BODE wyznacza odpowiedź częstotliwościową Bodego.

 BODE(SYS) wywołanie to kreśli charakterystykę Bodego, częstotliwość i liczba

punktów są dobierane automatycznie.

0

1

2

3

4

5

6

7

8

9

10

-1

-0.5

0

0.5

1

1.5

2

background image

 BODE(SYS,{WMIN,WMAX}) wywołanie to kreśli charakterystykę Bodego dla

częstotliwości pomiędzy WMIN a WMAX w radianach na sekundę.

 BODE(SYS,W) wywołanie to umożliwia samodzielne określenie częstotliwości w

radianach na sekundę dla których charakterystyka jest kreślona podanych w wektorze

W, do którego generowania można użyć funkcji LOGSPACE.

 BODE(SYS1,SYS2,...,W) wywołanie to kreśli, z możliwością wykorzystania wektora

W, charakterystyki Bodego dla wielu układów na jednym wykresie, można też

określić kolor oraz styl linii dla każdego z układów np. bode(sys1,'r',sys2,'y-,sys3,'gx').

 [MAG,PHASE,W] = BODE(SYS,...) wywołanie to zwraca wektor częstotliwości W

oraz odpowiadającym poszczególnym częstotliwościom macierze MAG i PHASE

zawierające odpowiednio wzmocnienie w dB oraz fazę w stopniach. Wywołanie to nie

kreśli wykresu. Jeżeli pominięty zostanie wektor W to funkcja określi go

samodzielnie.

Przykład:

W tym celu należy wykonać następujące wywołania:

>> SYS=TF([1 -1],[1 1 5])

>> BODE(SYS)

W wyniku ich realizacji otrzymamy odpowiedź układu:

Rys. 4.9 Charakterystyka częstotliwościowa Bodego.

NYQUIST wyznacza odpowiedź częstotliwościową Nyquista.

 NYQUIST(SYS) wywołanie to kreśli charakterystykę Nyquista dla układu,

częstotliwość i liczba punktów dobierane są automatycznie.

 NYQUIST(SYS,{WMIN,WMAX}) wywołanie to kreśli charakterystykę Nyquista dla

częstotliwości pomiędzy WMIN a WMAX w radianach na sekundę.

 NYQUIST(SYS1,SYS2,...,W) wywołanie to kreśli, z możliwością wykorzystania

wektora W, charakterystyki Nyquista dla wielu układów na jednym wykresie, można

Frequency (rad/sec)

P

ha

se

(d

eg

);

M

ag

ni

tu

de

(d

B

)

Bode Diagrams

-20

-10

0

10

10

-1

10

0

10

1

-100

0

100

200

background image

też określić kolor oraz styl linii dla każdego z układów np. bode(sys1,'r',sys2,'y--

',sys3,'gx').

 [RE,IM,W] = NYQUIST(SYS,...) wywołanie to zwraca wektor częstotliwości W i

macierze RE i IM z rzeczywistą i urojoną częścią płaszczyzny zespolonej, wywołanie

to nie kreśli wykresu.

Przykład: dla danego układu SYS opisanego transmitancją należy wyznaczyć

charakterystykę częstotliwościową Nyquista:

2

2

15

9

2

3

2

+

+

+

=

s

s

s

s

s

SYS

W tym celu należy wykonać następujące wywołania:

>> SYS=TF([1 9 15],[1 -2 -1 2])

>> NYQUIST(SYS);

W wyniku ich realizacji otrzymamy odpowiedź układu:

Rys. 4.10 Charakterystyka częstotliwościowa Nyquista.

NICHOLS wyznacza odpowiedź częstotliwościową wykreśloną na karcie Nicholsa.

 NICHOLS(SYS) wywołanie to kreśli charakterystykę Nicholsa dla układu,

częstotliwość i liczba punktów dobierane są automatycznie.

 NICHOLS(SYS,{WMIN,WMAX}) wywołanie to kreśli charakterystykę Nicholsa dla

częstotliwości pomiędzy WMIN a WMAX w radianach na sekundę.

 NICHOLS(SYS,W) wywołanie to umożliwia samodzielne określenie częstotliwości w

radianach na sekundę dla których charakterystyka jest kreślona podanych w wektorze

W, do którego generowania można użyć funkcji LOGSPACE.

 NICHOLS(SYS1,SYS2,...,W) wywołanie to kreśli, z możliwością wykorzystania

wektora W, charakterystyki Nyquista dla wielu układów na jednym wykresie, można

też określić kolor oraz styl linii dla każdego z układów np.

nichols(sys1,'r',sys2,'y--',sys3,'gx').

 [MAG,PHASE,W] = NICHOLS(SYS,...) wywołanie to zwraca wektor częstotliwości

W oraz odpowiadającym poszczególnym częstotliwościom macierze MAG i PHASE

Real Axis

Im

ag

in

ar

y

A

xi

s

Nyquist Diagrams

-1

0

1

2

3

4

5

6

7

8

-4

-3

-2

-1

0

1

2

3

4

background image

zawierające odpowiednio wzmocnienie w dB oraz fazę w stopniach. Wywołanie to nie

kreśli wykresu. Jeżeli pominięty zostanie wektor W to funkcja określi go

samodzielnie.

NGRID wywołanie to kreśli na karcie Nicholsa linie stałych wartości modułu i

argumentu.

Przykład: dla danego układu SYS opisanego transmitancją należy wyznaczyć

charakterystykę częstotliwościową Nicholsa:

2

2

15

9

2

3

2

+

+

+

=

s

s

s

s

s

SYS

W tym celu należy wykonać następujące wywołania:

>> SYS=TF([1 9 15],[1 -2 -1 2])

>> NICHOLS(SYS);

>> NGRID

W wyniku ich realizacji otrzymamy odpowiedź układu:

Rys. 4.11 Karta Nicholsa.

MARGIN oblicza zapas modułu i fazy.

 [GM,PM,WCG,WCP] = MARGIN(SYS) wywołanie to oblicza margines

wzmocnienia GM i fazy PM dla układu ciągłego SYS oraz odpowiadające im

częstotliwości graniczne odpowiednio WCG i WCP. Margines amplitudy jest

zdefiniowany jako

)

180

(

1

=

K

Gm

określający ile razy trzeba zwiększyć wzmocnienie by układ znalazł się na granicy

stabilności natomiast margines fazy jest podany w dB i liczony z równania

( )

Gm

10

log

20

.

 [GM,PM,WCG,WCP] = MARGIN(MAG,PHASE,W) wywołanie to określa zapas

fazy i wzmocnienia na podstawie zadanych wektorów wzmocnienia MAG, fazy

Open-Loop Phase (deg)

O

pe

n-

Lo

op

G

ai

n

(d

B

)

Nichols Charts

50

100

150

200

250

300

350

-80

-60

-40

-20

0

20

40

6 dB

3 dB

1 dB

0.5 dB

0.25 d B

0 dB

-1 dB

-3 dB

-6 dB

-12 dB

-20 dB

-40 dB

-60 dB

-80 dB

background image

PHASE oraz odpowiadającej im częstotliwości W pochodzących z charakterystyki

Bodego zarówno dla układów ciągłych jak i dyskretnych.

 MARGIN(SYS) wywołanie to kreśli charakterystyki Bodego z zaznaczonymi

marginesami amplitudy i fazy.

Przykład: dla danego układu SYS opisanego transmitancją należy wyznaczyć zapas

amplitudy i fazy na charakterystyce częstotliwościowej Bodego

2

2

15

9

2

3

2

+

+

+

=

s

s

s

s

s

SYS

W tym celu należy wykonać następujące wywołania:

>> SYS=TF([1 9 15],[1 -2 -1 2])

>> MARGIN(SYS);

W wyniku ich realizacji otrzymamy odpowiedź układu:

Rys. 4.12 Zapas modułu i fazy.

FREQRESP oblicza odpowiedź częstotliwościową układu dla zadanych częstotliwości.

 H = FREQRESP(SYS,W) wywołanie to oblicza odpowiedź częstotliwościową H

układu dla określonych w wektorze W pulsacji podanych jako liczby rzeczywiste w

radianach na sekundę.

Dla układu ciągłego opisanego transmitancją funkcja korzysta z przekształcenia s = j

ω

a dla

układu opisanego równaniami stanu korzysta z równania:

( )

(

)

B

A

I

j

D

j

H

1

+

=

ω

ω

(4.9.1)

natomiast dla układu dyskretnego przekształceniu ulega z = e

j

ω

Ts

gdzie T

s

jest czasem

próbkowania. Wyniki umieszczane są w trójwymiarowej tablicy H o wymiarach
liczba_wyjść

×

liczba_wejść

×

ilość_ elementów_ wektora_W.

Frequency (rad/sec)

P

ha

se

(d

eg

);

M

ag

ni

tu

de

(d

B

)

Bode Diagrams

-40

-20

0

20

Gm=11.5 dB (W cg=5.7); Pm=-58.2 deg. (W cp=2.6)

10

-1

10

0

10

1

10

2

0

100

200

300

background image

2.4. Interfejs graficzny LTIView

LTIVIEW udostępnia interakcyjny graficzny interfejs użytkownika dla porównań czasowych

i częstotliwościowych odpowiedzi układów.

 LTIVIEW(PLOTTYPE) wywołanie to generuje przypadkowy układ dla którego kreśli

odpowiedź. PLOTTYPE określa rodzaj odpowiedzi.

W pole PLOTTYPE można wstawić:

1) 'step’

2) 'impulse'

3) 'bode'

4) 'nyquist'

5) 'nichols'

6) 'sigma'

7) 'lsim'

8) 'initial'

 LTIVIEW(PLOTTYPE,SYS) wywołanie to kreśli zadany rodzaj odpowiedzi dla

zadanego układu.

 LTIVIEW(PLOTTYPE,SYS1,SYS2,...SYSN) wywołanie to kreśli odpowiedzi wielu

układów na jednym wykresie.

 LTIVIEW(PLOTTYPE,SYS1,PLOTSTR1,SYS2,PLOTSTR2,...SYSN,PLOTSTRN)

wywołanie to kreśli odpowiedzi wielu układów na jednym wykresie ale umożliwia

wybór koloru i rodzaju linii dla każdego z tych układów poprzez wpisanie

odpowiednich znaków w pole PLOTSTR.

 LTIVIEW(PLOTTYPE,SYS,OPTIONS) wywołanie to w polu OPTIONS pozwala

zadać użytkownikowi różne warunki dla których ma być nakreślona odpowiedź

układu np. jeśli odpowiedź ma być skokowa to w polu OPTIONS można umieścić

TFINAL określający czas trwania odpowiedzi.

3. Projektowanie regulatorów

3.1. Metoda miejsc geometrycznych pierwiastków

Projektując układ sterowania w dziedzinie częstotliwości koryguje się charakterystyki

częstotliwościowe układu tak, by po zamknięciu sprzężenia zwrotnego układ był stabilny, z

marginesami amplitudy i fazy o odpowiednich wartościach. W ten sposób pośrednio wpływa

background image

się na położenie zer i biegunów układu zamkniętego. System MATLAB oferuje metodę

polegającą na projektowaniu układów sterowania poprzez bezpośredni wpływ na położenie

zer i biegunów układu zamkniętego, składającego się z obiektu i kompensatora połączonych

pętlą sprzężenia zwrotnego. Dla danego obiektu i postaci kompensatora bieguny i zera będą

położone w różnych miejscach płaszczyzny zespolonej w zależności od wzmocnienia

kompensatora. Poprzez odpowiedni dobór wzmocnienia można wpływać na własności

układu. Analizę położenia zer i biegunów układu wspomagają opisane niżej funkcje.

RLOCUS kreśli położenie pierwiastków równania.

 RLOCUS(SYS) wywołanie to kreśli dla układów SISO opisanych transmitancją gdzie

N(s) jest licznikiem a D(s) mianownikiem położenie pierwiastków równania :

H(s) = D(s) + KN(s) = 0

(4.10.1)

dla dodatnich wzmocnień K, które zostaną utworzone w celu nakreślenia wykresu.

 RLOCUS(SYS,K) wywołanie to używa wektora wzmocnień K określonego przez

użytkownika.

 [R,K] = RLOCUS(SYS) lub R = RLOCUS(SYS,K) wywołania te pozwalają

obliczyć położenie pierwiastków równania i zapamiętać je wraz z odpowiadającymi

im wzmocnieniami. K jest wektorem kolumnowym zawierającym pulsacje, dla

których określano położenia biegunów. Bieguny układu zapamiętywane są w

macierzy R o liczbie wierszy równej liczbie elementów wektora K i liczbie kolumn

równej stopniowi mianownika transmitancji. W każdym wierszu macierzy R

pamiętane są bieguny odpowiadające danej wartości wzmocnienia.

Przykład: dla danego układu SYS opisanego transmitancją należy wyznaczyć zera i

bieguny układu.

2

2

15

9

2

3

2

+

+

+

=

s

s

s

s

s

SYS

W tym celu należy wykonać następujące wywołania:

>> SYS=TF([1 9 15],[1 -2 -1 2])

>> RLOCUS(SYS);

W wyniku ich realizacji otrzymamy rozmieszczenie zer ,,o’’ i biegunów ,,x’’ na

płaszczyźnie zespolonej :

-20

-15

-10

-5

0

5

-10

-8

-6

-4

-2

0

2

4

6

8

10

Real A xis

Im

ag

A

xi

s

background image

Rys. 4.13 Położenie zer i biegunów układu na płaszczyźnie zespolonej.

RLOCFIND znajduje położenie i wzmocnienie wybranych przez użytkownika biegunów.

 [K,POLES] = RLOCFIND(SYS,P) wywołanie to umożliwia wybranie myszką

żądanego bieguna układu SISO opisanego transmitancją lub równaniami stanu jeśli w

aktywnym oknie znajduje się wykres zależności położenia biegunów od wzmocnienia

uzyskany funkcją RLOCUS. Możliwe jest wybranie myszką zadanej przez parametr P

liczby biegunów. Pobrane wartości są zapamiętywane w wektorze K i macierzy

POLES analogicznej do macierzy R przedstawionej w opisie funkcji RLOCUS.

Punkty należy wybierać na lub w pobliżu trajektorii biegunów.

ACKER projektuje rozmieszczenie biegunów dla układu SISO.

 K = ACKER(A,B,P) wywołanie to oblicza używając formuły Ackermana macierz

wzmocnienia sprzężenia zwrotnego K dla układu z jednym wejściem opisanym

równaniem

Bu

Ax

x

+

=

ˆ

ze sprzężeniem zwrotnym u = -Kx i wartościami określonymi

w wektorze P = eig(A-B*K).

PLACE projektuje rozmieszczenie biegunów dla układu MIMO.

 K = PLACE(A,B,P) wywołanie to oblicza macierz sprzężenia zwrotnego K dla

wartości własnych określonych w wektorze P =EIG(A-B*K).

ESTIM oszacowuje stan dla przyjętego wzmocnienia.

 EST = ESTIM(SYS,L) wywołanie to tworzy oszacowanie stanu i wyjścia układu dla

układu opisanego równaniem stanu z oszacowanym wzmocnieniem L. Wszystkie

wejścia w układu są procesami stochastycznymi a wszystkie wyjścia są pomierzone.

Dla układu ciągłego opisanego równaniami stanu:

ω

B

Ax

x

+

=

&

(4.10.2)

ω

D

Cx

y

+

=

(4.10.3)

EST generuje oszacowanie stanu i wyjścia z równań :

(

)

x

C

y

L

x

A

x

ˆ

ˆ

ˆ

+

=

&

(4.10.4) oraz

x

I

C

x

y

ˆ

ˆ

ˆ

=

.

(4.10.5)

SGRID, ZGRID wykreśla linie stałego współczynnika wzmocnienia oraz stałej

częstotliwości własnej dla układu ciągłego i dyskretnego.

 SGRID wywołanie to kreśli linie stałego współczynnika wzmocnienia oraz stałej

częstotliwości własnej dla układu ciągłego

background image

 SGRID(‘NEW’) wywołanie to powoduje oczyszczenie okna graficznego przed

nakreśleniem linii

 SGRID(Z,WN) wywołanie to pozwala na podanie przez użytkownika współczynnika

tłumienia i częstotliwości, dla których linie te mają być nakreślone

Funkcja ZGRID ma analogiczne wywołania.

3.2. Regulatory optymalne

Układy optymalne zapewniają uzyskanie ekstremalnej wartości zadanego z góry

kryterium optymalności przy zachowaniu ograniczeń na sterowanie i składowe wektora stanu.

W celu wyznaczenia tego rozwiązania wykorzystuje się zagadnienia algebry liniowej

przedstawione w podrozdziale 4.12.

LQR projektuje liniowo-kwadratowy regulator dla układów ciągłych.

 [K,S,E] = LQR(A,B,Q,R,N) wywołanie to oblicza macierz sprzężeń zwrotnych K,

macierz S będącą rozwiązaniem równania Ricattiego:

(

)

(

)

0

1

=

+

+

+

+

Q

N

S

B

R

N

SB

SA

S

A

T

T

T

(4.11.1)

w którym macierze A, B są odpowiednio macierzą stanu i sterowania, a Q i R są

macierzami wag w optymalizowanym kryterium jakości o postaci:

( )

(

)

+

+

=

0

2

dt

Nu

x

Ru

u

Qx

x

u

J

T

T

T

(4.11.2)

dla układu ciągłego u = -Kx opisanego równaniem stanu

Bu

Ax

x

+

=

&

.

Pominięcie N zakłada wykonanie obliczeń dla N = 0.

Zwracany jest również wektor E zawierający wartości własne zamkniętej pętli sprzężenia

zwrotnego obliczone z wywołania : E = EIG(A-B*K).

DLQR projektuje liniowo-kwadratowy regulator dla układów dyskretnych.

 [K,S,E] = DLQR(A,B,Q,R,N) wywołanie to oblicza macierz sprzężeń zwrotnych K i

macierz S będącą rozwiązaniem równania Ricattiego:

(

)(

) (

)

0

1

=

+

+

+

+

Q

N

SA

B

R

XB

B

N

SB

A

S

SA

A

T

T

T

T

T

(4.11.3)

w którym macierze A, B są odpowiednio macierzą stanu i sterowania, a Q i R są

macierzami wag w optymalizowanym kryterium jakości o postaci

( )

[ ] [ ] [ ] [ ]

[ ] [ ]

(

)

=

+

+

=

1

2

n

T

T

T

n

Nu

n

x

n

Ru

n

u

n

Qx

n

x

u

J

(4.11.4)

dla dyskretnego układu u[n] = -Kx[n] opisanego równaniami stanu:

[ ]

[ ]

[ ]

n

Bu

n

Ax

n

x

+

=

+

1

.

(4.11.5)

background image

Pominięcie N zakłada wykonanie obliczeń dla N = 0.

Zwracany jest również wektor E zawierający wartości własne zamkniętej pętli sprzężenia

zwrotnego obliczone z wywołania : E = EIG(A-B*K).

LQRY projektuje liniowo-kwadratowy regulator z wagowym wyjściem.

 [K,S,E] = LQRY(SYS,Q,R,N) oblicza optymalną macierz sprzężenia zwrotnego K dla

układu :

- ciągłego u = -Kx opisanego równaniami stanu:

Bu

Ax

x

+

=

&

,

Du

Cx

y

+

=

(4.11.6)

dla wskaźnika jakości o postaci:

( )

(

)

+

+

=

0

2

dt

Nu

y

Ru

u

Qy

y

u

J

T

T

T

(4.11.7)

- dyskretnego u[n] = -Kx[n] opisanego równaniami stanu:

x[n+1] = Ax[n] + Bu[n], y[n] = Cx[n] + Du[n]

(4.11.8)

dla wskaźnika jakości o postaci:

( )

[ ] [ ] [ ] [ ]

[ ] [ ]

(

)

=

+

+

=

1

2

n

T

T

T

n

Nu

n

y

n

Ru

n

u

n

Qy

n

y

u

J

(4.11.9)

Pominięcie N zakłada wykonanie obliczeń dla N = 0. Zwracany jest również wektor S

z rozwiązaniem algebraicznego równania Riccatiego oraz wektor E zawierający

wartości własne zamkniętej pętli sprzężenia zwrotnego obliczone z wywołania : E =

EIG(A-B*K).

LQRD projektuje dyskretny liniowo-kwadratowy regulator dla dyskretnego wskaźnika

jakości.

 [K,S,E] = LQRD(A,B,Q,R,TS) wywołanie to oblicza optymalną macierz wzmocnienia

K dla dyskretnego układu u[n] = -Kdx[n] opisanego równaniami stanu:

x[n+1] = Ad x[n] + Bd u[n],

(4.11.10)

gdzie Ad i Bd wyznacza się z wywołania [Ad,Bd] = C2D(A,B,TS), dla wskaźnika

jakości o postaci :

( )

(

)

+

=

0

dt

Ru

u

Qx

x

u

J

T

T

.

(4.11.11)

Zwraca również rozwiązanie dyskretnego równania Riccatiego S oraz wektor wartości

własnych zamkniętej pętli z wywołania E = EIG(Ad-Bd*K).

KALMAN tworzy ciągły lub dyskretny estymator Kalmana.

 [KEST,L,P] = KALMAN(SYS,QN,RN,NN) wywołanie to projektuje estymator

Kalmana KEST dla ciągłego obiektu

SYS.

Mając dany układ ciągły opisany przez :

Gw

Bu

Ax

x

+

+

=

&

równanie stanu

background image

y = Cx + Du + Hw + v

równanie pomiaru

ze znanymi : wejściami u, przebiegiem białego szumu w, zmierzonym szumem v, i

kowariancjami szumu E(ww

T

) = QN, E(vv

T

) = RN, E(wv

T

) = NN można oszacować

stan xˆ dla minimalnej kowariancji błędu P określonej wzorem:

)

}

ˆ

}{

ˆ

({

lim

T

t

x

x

x

x

E

P

=

.

(4.11.12)

Optymalnym rozwiązaniem jest filtr Kalmana opisany równaniami :

)

ˆ

(

ˆ

ˆ

Du

x

C

y

L

Bu

x

A

x

u

+

+

=

&

(4.11.13)

u

D

x

I

C

x

y

+

=

0

ˆ

ˆ

ˆ

(4.11.14)

gdzie wzmocnienie filtru L jest zdeterminowane przez rozwiązanie algebraicznego

równania Riccatiego.

Ten estymator używa znanych wejść u i zmierzonych y

u

do generowania wyjścia i

oszacowania stanu xˆ oraz yˆ .

Rys. 4.14 Schemat blokowy estymatora Kalmana.

 [KEST,L,P,M,Z] = KALMAN(SYS,QN,RN,NN) wywołanie to projektuje estymator

Kalmana KEST dla dyskretnego plant SYS.

Mając dany układ dyskretny opisany równaniami :

x[n+1] = Ax[n] + Bu[n] + Gw[n]

(4.11.15)

y

v

[n] = Cx[n] + Du[n] + Hw[n] + v[n]

(4.11.16)

oraz mając dane kowariancje szumu :

E(w[n]w[n]

T

) = QN,

(4.11.17)

E(v[n]v[n]

T

) = RN,

(4.11.18)

E(w[n]v[n]

T

) = NN,

(4.11.19)

estymator Kalmana można opisać równaniami :

[

]

[

]

[ ]

[ ]

[

]

[ ]

(

)

n

Du

n

n

x

C

n

y

L

n

Bu

n

n

x

A

n

n

x

v

+

+

=

+

1

|

ˆ

1

|

ˆ

|

1

ˆ

(4.11.20)

[ ]

[ ]

(

)

[

]

(

)

[ ]

[ ]

+

=

n

y

n

u

M

MD

CM

D

CM

I

n

n

x

MC

I

MC

I

C

n

n

x

n

n

y

v

1

|

ˆ

|

ˆ

|

ˆ

(4.11.21)

background image

Macierze wzmocnienia L i M są wyprowadzone z rozwiązania dyskretnego równania

Riccatiego. Wzmocnienie M jest użyte do uaktualnienia predykcji

[

]

1

|

ˆ

n

n

x

użytej

do nowego pomiaru y

v

[n] :

[ ] [

]

[ ]

[

]

[ ]

(

)

n

Du

n

n

x

C

n

y

M

n

n

x

n

n

x

v

+

=

1

|

ˆ

1

|

ˆ

|

ˆ

(4.11.22)

KALMD tworzy dyskretny estymator Kalmana dla ciągłego obiektu.

 [KEST,L,P,M,Z] = KALMD(SYS,QN,RN,TN) wywołanie to wyznacza dyskretny

estymator Kalmana KEST o czasem próbkowania Ts dla ciągłego układu opisanego

przez:

Gw

Bu

Ax

x

+

+

=

&

równanie stanu

(4.11.23)

y = Cx + Du + v

równanie pomiaru

(4.11.24)

ze znanym przebiegiem i pomiarem szumów oraz ich kowariancjami :

E(w) = E(v) = 0,

(4.11.25)

E(ww

T

) = QN,

(4.11.26)

E(vv

T

) = RN,

(4.11.27)

E(wv

T

) = 0.

(4.11.28)

Wywołanie to zwraca estymator Kalmana KEST, macierze wzmocnień L i M oraz

błędy kowariancji P i Z.

LQGREG tworzy liniowo-kwadratowy Gaussowski regulator.

 RLQG = LQGREG(KEST,K) wywołanie to tworzy regulator LQG poprzez połączenie

estymatora Kalmana KEST zaprojektowanego przez polecenie KALMAN ze

wzmocnieniem sprzężenia zwrotnego K zaprojektowanego przez LQR, DLQR lub

LQRY :

background image

Rys. 4.15 Schemat blokowy regulatora LQR.

Regulator RLQG jest określony przez poniższe równania :

(

)

[

]

v

Ly

x

K

LD

B

LC

A

x

+

=

ˆ

ˆ&

(4.11.29)

oraz

x

K

u

ˆ

=

gdzie y

v

jest wektorem z mierzonymi wyjściami układu.

Zagadnienia algebry liniowej optymalnych układów sterowania.

LYAP rozwiązuje równanie Lapunowa dla układów ciągłych.

 X = LYAP(A,Q) wywołanie to rozwiązuje równanie macierzowe Lapunowa

przedstawione poniżej:

0

=

+

+

Q

XA

AX

T

(4.12.1)

 X = LYAP(A,B,C) wywołanie to rozwiązuje ogólne równanie macierzowe Lapunowa,

inaczej zwane równaniem Sylvestra przedstawione poniżej:

C

XB

AX

=

+

(4.12.2)

DLYAP rozwiązuje dyskretne równanie Lapunowa.

 X = DLYAP(A,Q) wywołanie to rozwiązuje dyskretne równanie macierzowe

Lapunowa przedstawione poniżej:

Q

X

XA

A

T

=

(4.12.3)

CARE rozwiązuje algebraiczne równanie Riccatiego dla układów ciągłych

 [X,L,G,RR] = CARE(A,B,Q) wywołanie to oblicza rozwiązanie X ciągłego

algebraicznego równania Riccatiego:

( )

0

=

+

+

=

Q

XBB

XA

X

A

X

Ric

T

T

.

(4.12.4)

Macierz X jest macierzą symetryczną związaną ze stabilnym rozwiązaniem równania

Eic(X) = 0. Zwracane są też:

- wartości własne L z A-BB

T

X ,

- macierz wzmocnienia G = B

T

X,

wartości względne residuów definiowane jako

background image

( )

F

F

X

X

Ric

RR

=

(4.12.5)

 [X,L,G,RR] = CARE(A,B,Q,R,S,E) wywołanie to oblicza rozwiązanie X ciągłego

algebraicznego równania Riccatiego:

( )

(

) (

)

0

1

=

+

+

+

+

=

Q

S

XE

B

R

S

XB

E

XA

E

XE

A

X

Ric

T

T

T

T

T

. (4.12.6)

Jeżeli pominięte zostaną R, S i E to obliczenia zostaną wykonane dla R=I, S=0, E=I.

Macierz wzmocnienia G obliczona jest ze wzoru:

(

)

T

T

S

XE

B

R

G

+

=

1

(4.12.7)

a wartości własne sprzężenia zwrotnego L=EIG(A-B*G,E).

DARE rozwiązuje dyskretne równanie Riccatiego.

 [X,L,G,RR] = DARE(A,B,Q,R) wywołanie to oblicza rozwiązanie X dyskretnego

równania Riccatiego:

( )

(

)

0

1

=

+

+

=

Q

XA

B

R

XB

B

XB

A

X

XA

A

X

Ric

T

T

T

T

. (4.12.8)

Macierz X jest macierzą symetryczną związaną ze stabilnym rozwiązaniem równania

Ric(X) = 0. Zwracane są też:

- wartości własne L z

(

)

XA

B

R

XB

B

B

A

A

T

T

cl

1

+

=

,

- macierz wzmocnienia G z

(

)

XA

B

R

XB

B

G

T

T

1

+

=

,

- wartości względne residuów definiowane jako

( )

F

F

X

X

Ric

RR

=

 [X,L,G,RR] = DARE(A,B,Q,R,S,E) wywołanie to oblicza jedyne symetryczne stabilne

rozwiązanie X dyskretnego równania Riccatiego:

0

)

(

)

)(

(

)

(

1

=

+

+

+

+

=

Q

S

XA

B

R

XB

B

S

XB

A

XE

E

XA

A

X

Ric

T

T

T

T

T

T

(4.12.9)

pominięcie R, S i E powoduje wykonanie obliczeń dla R = I, S = 0 i E = I. Zwraca

również macierz wzmocnienia jest obliczana ze wzoru:

)

(

)

(

1

T

T

T

S

XA

B

R

XB

B

G

+

+

=

,

(4.12.10)

wektor L z wartościami własnymi pętli sprzężenia z wywołania L=EIG(A-B*G,E)

oraz normę Frobeniusa z macierzy residuów.

3.3. Przykłady


Wyszukiwarka

Podobne podstrony:

więcej podobnych podstron