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

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

(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