Ćwiczenie 4.
Wprowadzenie do SIMULINKA
1.
WSTĘP
SIMULINK jest pakietem
oprogramowania służącym do modelowania, symulacji i analizowania układów
dynamicznych. Można implementować w nim układy liniowe jak i nieliniowe
modelowane w czasie ciągłym lub dyskretnym oraz w hybrydowym część układu
pracuje w czasie dyskretnym inna część w czasie ciągłym. Układy te mogą być również
uaktualniane w różnych chwilach czasowych.
SIMULINK wyposażony jest w
interfejs graficzny pozwalający w łatwy sposób budować modele
w postaci schematów blokowych przy użyciu myszki komputerowej. Przy użyciu tego
interfejsu można wykreślać modele w podobny sposób jak
to odbywa się przy użyciu kartki i ołówka. SIMULINK zawiera biblioteki źródeł i
rejestratorów sygnału, elementów liniowych i nieliniowych oraz połączeń między
nimi. Można również tworzyć swoje własne bloki przy użyciu S-Funkcji. Modele mają strukturę hierachiczną,
można przeglądać układ z najwyższego poziomu, klikając
dwukrotnie myszką na bloki przechodzi się na niższe poziomy zawierające więcej
szczegółów. Taka organizacja struktury modelu pozwala
na łatwe zorientowanie się w pracy systemu i w jaki sposób poszczególne części oddziaływują na siebie.
Po zdefiniowaniu modelu można przeprowadzać symulacje z użyciem wybranej
metody całkowania z poziomu menu SIMULINKA lub po wpisaniu odpowiednich poleceń
w oknie komend MATLABA. Menu SIMULINKA jest szczególnie dogodne przy pracy
interaktywnej, podczas gdy linia komend MATLABA przy uruchamianiu wielokrotnych
symulacji przy zmianie pewnych parametrów w szerokim zakresie.
Wykorzystując oscyloskopy lub
inne bloki wyświetlaczy można obserwować wyniki symulacji podczas uruchamiania
symulacji. Wyniki symulacji mogą być umieszczane w przestrzeni roboczej MATLABA
pozwalając w ten sposób na dalszą ich obróbkę.
2. BUDOWANIE PROSTEGO MODELU
Przykład ten ilustruje w sposób skrótowy w jaki sposób buduje się model w SIMULINKU. W modelu tym odbywa się wyznaczanie odpowiedzi skokowej na
podstawie transmitancji i wyświetlanie zarówno wymuszenia jak i wyników
symulacji.
Przykład 1
Wyznaczyć odpowiedź skokową układu o transmitancji
dla
wn = 1 oraz x = 0.5. Wyniki
symulacji wyświetlić na oscyloskopie.
Zadanie to zrealizowane zostanie w następującym układzie.
Rys. Kompletny model badanego układu
Aby utworzyć model,
najpierw należy wpisać polecenie simulink w oknie
komend MATLABA, pojawi się wówczas okno biblioteki SIMULINKA.
Rys. Okno bibliotek SIMULINKA
Aby utworzyć nowy model, należy wybrać opcję File/New/Model
lub odpowiednią ikonę w oknie biblioteki SIMULINKA i wówczas zostanie nowe
okienko do tworzenia modelu
Rys. Okno do tworzenia
nowego modelu
Aby utworzyć pożądany w tym
przykładzie model należy skopiować odpowiednie bloki z
następujących bibliotek SIMULINKA:
- Sources ( blok Step) wymuszenie skokowe
- Sinks ( blok Scope) oscyloskop
- Continuous ( blok Transfer Fcn) transmitancja
- Signals & Systems ( blok Mux) multiplekser
Aby skopiować z biblioteki blok
Step, najpierw należy rozwinąć drzewo biblioteki Sources
w celu wyświetlenia jej zawartości przez kliknięcie
na węzeł Sources, następnie należy kliknąć na węzeł Step
w celu wybrania go. Teraz przeciągając blok Step z biblioteki do okna modelu SIMULINK tworzy kopię tego bloku w punkcie, do
którego został przesunięty.
Rys. Skopiowanie bloku Step
do okna modelu
W podobny sposób dokonuje się skopiowania
do okna modelu pozostałych potrzebnych elementów
schematu z odpowiednich bibliotek SIMULINKA. Zmiany położenia bloku z jednego miejsca
w inne dokonuje się poprzez naciśnięcie myszką na blok i jego przesunięcie. Po skopiowaniu
wszystkich bloków model układu wygląda następująco:
Rys. Skopiowane wszystkie
bloki do realizacji schematu
Przeglądając ikony bloków widać,
że blok Step ma grot strzałki z prawej strony, natomiast blok Mux ma dwa z lewej i jeden z prawej. Symbol >
umieszczony na wyjściu bloku oznacza port wejścia (wejście) do bloku, natomiast jeśli symbol ten znajduje się na wyjściu wówczas
oznacza port wyjścia (wyjście) z bloku. Jeśli sygnał przekazywany jest z wyjścia
jednego bloku na wejście innego bloku wówczas odbywa się to poprzez linię łączącą.
Kiedy bloki zostaną ze sobą połączone, wówczas symbole portów znikną.
Teraz jest czas
aby połączyć bloki ze sobą. Połącz blok Step z górnym portem bloku Mux. Jeśliumieszczony zostanie
wskaźnik myszki na porcie wyjściowym z prawej strony bloku Step, wówczas znak
kursora zmieni swój kształt na krzyż. Naciśnij wówczas
przycisk myszy i przesuń kursor do górnego portu wejściowego bloku Mux. Zauważ, że gdy wciśnięty jest przycisk myszy, wówczas
linia łącząca bloki jest kreskowana, natomiast gdy
wskaźnik osiąga
blok Mux wówczas zmienia się kształt kursora na
podwójny krzyżyk.
Rys. Łączenie dwóch bloków
linią
Teraz po zwolnieniu przycisku
myszy bloki zostaną połączone. Z rysunku 1 widać, że są linie
które łączą ten sam port wyjściowy z dwoma różnymi portami wejściowymi.
Takie linie łączą port wyjściowy bloku Step z portem wejściowym bloku Mux i blokiem Transfer Fcn. Chcąc
założyć węzeł na linii łączącej blok Step i blok Mux
i poprowadzić linię do portu
wejściowego bloku Transfer Fcn należy:
- umieścić
wskaźnik kursora na linii pomiędzy blokami Step i Mux;
- wcisnąć
klawisz Ctrl (lub kliknąć na prawy
przycisk myszy);
- trzymając wciśnięty przycisk myszy przesunąć kursor do
portu wejściowego bloku Transfer Fcn;
- zwolnij przycisk myszy i SIMULINK narysuje linię pomiędzy
punktem początkowym i portem wejściowym bloku Transfer Fcn.
Wykonaj w ten sposób wszystkie
konieczne połączenia. Pozostaje jeszcze wprowadzenie parametrów badanej
transmitancji w tym celu kliknij dwukrotnie na blok Transfer Fcn
Rys. Wprowadzenie
parametrów badanej transmitancji
i wprowadź współczynniki licznika i mianownika
transmitancji. Uzyskany został model pokazany na
rysunku 1.
Teraz otwórz blok Scope (oscyloskop) do przeglądania wyników symulacji. Mając
otwarte okno oscyloskopu uruchom symulację na 10 sekund. Ustawianie parametrów
symulacji odbywa się w oknie Simulation Parameters z menu Simulation.
Rys. Wprowadzenie
parametrów symulacji
Zauważ, że w oknie dialogowym
domyślnie ustawiona jest wartość czasu końcowego (Stop time) na 10.0 sekund. Po ustawieniu parametrów symulacji kliknij na
przycisk OK. SIMULINK przyjmuje te wartości i zamyka okno dialogowe.
W menu Simulation
wybierz polecenie Start i obserwuj przebiegi w bloku Scope.
Rys. Okno oscyloskopu
Symulacja kończy się osiąga czas
końcowy (Step time) określony w oknie dialogowym Simulation
Parameters lub kiedy
zostanie wybrane polecenie Stop z menu Simulation.
Aby zachować ten model, wybierz
polecenie Save z menu File
i wprowadź nazwę i wybierz katalog w którym ma być umieszczony.
Plik ten zawiera opis modelu.
3. ZAPISYWANIE WYNIKÓW SYMULACJI
W SIMULINKU możliwe jest również przeprowadzanie symulacji
i zapisywanie wybranych zmiennych
do
pamięci roboczej MATLABA celem dalszej obróbki. Poniższy przykład ilustruje te
możliwości.
Przykład 2
Wyznaczyć odpowiedź skokową układu o transmitancji
dla
wn = 2 oraz x = 0.25. Czas
trwania symulacji 10 sekund. Wyniki symulacji wyświetlić na oscyloskopie oraz
zapisać do przestrzeni roboczej MATLABA i następnie:
- uzyskane
wyniki zapisać do pliku dyskowego pod nazwą odp_skokowa
- zamknąć
okno SIMULINKA
- wyczyścić
przestrzeń roboczą MATLABA poleceniem clear
- odczytać
umieszczone w pliku dyskowym dane i przedstawić je na wykresie
- uzyskany
wykres zamieścić w dokumencie Worda
Zadanie to zrealizowane zostanie w następującym układzie.
Rys. Model
układu z przykładu 2
W porównaniu z modelem z przykładu 1 w tym układzie zmianie uległa badana transmitancja
oraz umieszczone zostały dodatkowe bloki takie jak: Clok
(zegar), Mux (multiplekser) oraz To Workspace (zapis danych do przestrzeni roboczej MATLABA).
Po dwukrotnym kliknięciu myszką na blok To Workspace pojawi się okno dialogowe pokazane na poniższym
rysunku
Rys. Okno dialogowe bloku To Workspace
w oknie tym należy zmienić nazwę zbioru zapisywanego do
przestrzeni roboczej (Variable name)
na wyniki oraz ustawić typ zapisywanych danych (Save
format) na Array (tablicowe). Wcisnąć przycisk OK. i
zamknąć okno dialogowe bloku To Workspace.
Uzyskany model układu zachować pod
nazwą uklad_IIrz.mdl.
Otworzyć okno oscyloskopu (Scope) i przeprowadzić symulację. W przestrzeni roboczej MATLABA
umieszczony jest zbiór o nazwie wyniki, którego zawartość można obejrzeć po wpisaniu
w oknie komend MATLABA nazwy tego zbioru
>> wyniki
na ekranie pojawią się trzy kolumny zmiennych, w pierwszej kolunie jest czas w drugiej wymusznie
a w trzeciej odpowiedź wyjściowa badanej transmitancji.
Wykreślenie uzyskanych w
symulacji danych można uzyskać po zapisaniu następującego zestawu komend
>> t = wyniki(:,1) % Wektor czasu
>> u = wyniki(:,2) % Wektor wymuszenia
>> y = wyniki(:,3) % Wektor odpowiedzi
>> id1 = figure(1) %
>> plot( t, u, 'k:', t, y, 'k-')
>> xlabel('t [s]')
>> ylabel('y(t)')
>> title('Odpowiedź skokowa
układu II rzędu')
>> set( id1, 'Color', [1 1 1])
Uzyskany wykres przedstawiony został na poniższym rysunku
Rys. Uzyskany w MATLABIE rysunek z wynikami
symulacji
Wykres ten może być zachowany w pliku
dyskowym do późniejszego odczytania go w oknie graficznym MATLABA lub
skopiowany do dokumentu w Wordzie. Zapis do pliku
dyskowego odbywa się poleceniem File/Save as pod wprowadzoną nazwę z rozszerzeniem *.fig. Aby umieścić ten rysunek w dokumencie Worda należy
uruchomić program Word, następnie w okienku zawierającym rysunek wybrać polecenie
Edit/Copy Figure co spowoduje skopiowanie tego rysunku do pamięci
i następnie w dokumencie Worda ustawić kursor w miejscu gdzie ma być wstawiony
rysunek i wybrać polecenie Edycja/Wklej specjalnie. Rysunek zostanie
osadzony w dokumencie Worda.
4. STEROWANIE MODELEM SIMULINKA Z POZIOMU
KOMEND MATLABA
Są sytuacje w
których zachodzi potrzeba przeprowadzenia kilku symulacji w tym samym układzie
przy zmianie jakiegoś parametru. Zadanie takie najlepiej wykonać z poziomu MATLABA
poprzez napisanie odpowiedniego skryptu i sterowanie wykonywaniem symulacji w SIMULINKU
przy pomocy odpowiednich komend MATLABA. Problem ten
zrealizowany zostanie na przykładzie.
Przykład 3
Wyznaczyć odpowiedź skokową układu o transmitancji
dla
wn = 2 oraz x = = 0.25, 0.5, 0.75.
Czas trwania symulacji 10 sekund. Wyniki symulacji przedstawić na jednym
wykresie.
Do realizacji tak postawionego
zadania wykorzystany zostanie schemat pokazany na poprzednim rysunku i
przechowywany pod nazwą uklad_IIrz.mdl.
Skrypt wykonujący to zadanie jest następujący:
close all % Zamknięcie wszystkich okien
graficznych
clear % Wyczyszczenie pamieci roboczej Matlaba
open_system('uklad_IIrz') % Otwarcie modelu Simulinka
wn = 2; % Wartość częstotliwości drgań własnych
zeta = [ 0.25 0.5 0.75]; % Wartości współczynników tłumienia
for i=1:3, % Pętla for
set_param('uklad_IIrz/Transfer
Fcn','Numerator',num2str(wn^2),...
'Denominator','[1 2*zeta(i)*wn wn^2]') % Ustawienie
% parametrów transmitancji
sim('uklad_IIrz') % Wykonanie
symulacji
t(:,i)=wyniki(:,1); % Podstawienie wyników symulacji
u(:,i)=wyniki(:,2); % pod odpowiednią zmienną
y(:,i)=wyniki(:,3);
end; % Zakończenie pętli for
close_system % Zamknięcie
modelu Simulinka
id1 = figure(1) % Otwarcie okna
graficznego
plot(t(:,1),u(:,1),'k:',t(:,1),y(:,1),'k-',t(:,2),y(:,2),'k-',...
t(:,3),y(:,3),'k-') % Wykreślenie zmiennych na wykresie
xlabel('t [s]') % Opis osi x
ylabel('y(t)') % Opis osi y
title('Odpowiedzi skokowe układu II rzędu') % Tytuł wykresu
set( id1, 'Color',[1 1 1]) % Usunięcie marginesu
otaczającego wykresy
Kod tego programu zapisać w MATLABIE i zachować pod nazwą model_IIrz.m.
Uruchamiając ten skrypt uzyska się wykres pokazany na
rysunku
Rys. Wyniki symulacji z
przykładu 3.
5. MASKOWANIE PODUKŁADÓW MODELU SIMULINKA
Maskowanie jest własnością SIMULINKA
pozwalającą na wprowadzenie okna dialogowego oraz ikony dla podukładu. Przy użyciu
maskowania można:
- uprościć model poprzez zastąpienie pojedynczym oknem wielu okien
dialogowych występujących w podukładzie. Zamiast wprowadzania parametrów dla każdego
bloku w oddzielnym oknie dialogowym, te parametry są wprowadzane w oknie
dialogowym maski i wprowadzane do bloków w zamaskowanym podsystemie;
- zastosować bardziej
opisowy i użyteczny interfejs przez zdefiniowanie okna dialogowego ze swoimi własnymi
zmiennymi i ich opisem oraz tekstem pomocy;
-
zdefiniować komendy, które obliczają zmienne których
wartości zależą od parametrów bloku;
- utworzyć
ikonę bloku, która oznacza własności podsystemu
- zabezpieczyć przed
niezamierzonymi modyfikacjami podukładu poprzez ukrycie ich zawartości pod
wprowadzony interfejs.
Przykład 4
Dla układu opisanego w przykładzie 1, zamaskować blok z
transmitancją II rzędu
]
i ustawić wartości parametrów na ωn = 1 oraz ζ =
0.5.
Należy zbudować model pokazany na poprzednim rysunku.
Rys. Schemat modelu z zastąpionymi współczynnikami transmitancji na
zmienne
W bloku Transfer Fcn wartości liczbowe parametrów muszą zostać zastąpione
zmiennymi
Rys. Okno dialogowe bloku
transmitancji z wprowadzonymi zmiennymi
Teraz z bloku Transfer Fcn utworzony zostanie podukład co
realizuje się przez zaznaczenie tego bloku i wybraniu polecenia Edit/Create Subsystem. Spowoduje to zastąpienie bloku transmitancji
nową ikoną o nazwie Subsystem, którą to nazwę można
zmienić na inną.
Rys. Model
układu z utworzonym podukładem (Subsystem)
Klikając teraz dwukrotnie na ikonę bloku Subsystem
można otworzyć nowe okno z blokiem
transmitancji z której uczyniony został podukład.
Maskowanie bloku Subsystem odbywa się poprzez zaznaczenie jego ikony i
wybranie polecenia Edit/Mask
subsystem spowoduje pojawienie się edytora
maskowanego podukładu w edytorze tym wprowadzone zostaną zmienne, które występują
w podukładzie.
Rys. Okno edytora maski
podsystemu
Zmienne te (ωn ->
wn oraz ζ -> zeta ) wraz z opisami
wprowadzane są po wybraniu opcji Initialization.
W opcji Icon w postaci wektorowej wpisuje się rysunek,
który jest umieszczany na ikonie Subsystem, natomiast
w opcji Documentation wpisuje się komentarz
pomocniczy (help) opisujący co
dany zamaskowany podukład realizuje. Po wciśnięciu przycisku OK. w oknie
dialogowym edytora maski, podukład Subsystem zostanie
zamaskowany i po dwukrotnym kliknięciu na jego ikonę pojawi
się okno dialogowe zamaskowanego podukładu, do którego wpisuje się wartości
parametrów transmitancji w tym przypadku układu II rzędu czyli
ωn = 1
oraz ζ = 0.5.
Rys. Okno dialogowe
zamaskowanego podukładu
Teraz do zamaskowanego podukładu
dostęp jest możliwy po wybraniu opcji Edit/Look under mask.
ĆWICZENIA W SIMULINKU
Zbudować model pracujący w układzie
z poniższego rysunku
Rys. Schemat blokowy
W bloku obiekt należy zamaskować układ o poniższej
transmitancji:
w
której ma być dostęp do każdego parametru.
Po zamaskowaniu podstawić w
okienku dialogowym zamaskowanego bloku wartości liczbowe poszczególnych współczynników
transmitancji, wyznaczonych z liter imienia i nazwiska jednej z osób ćwiczących
w danej podgrupie i tak:
k = liczba liter w
imieniu
b = 0.1*(liczba liter w
nazwisku)
T = liczba spółgłosek
w imieniu
a2 = liczba spółgłosek w nazwisku
a0 = liczba samogłosek w nazwisku
a1 =
Dla tak utworzonego schematu przeprowadzić symulację.
LITERATURA
1. Mrozek B., MATLAB 5.0x, SIMULINK 2.x
poradnik użytkownika, Warszawa PLJ,
1998.