Przeglądaj wersję html pliku:

Modelowanie i Symulacja, Wprowadzenie do środowiska Matlab-Simulink


Laboratorium Modelowania i symulacji

2008 r.

Wydział Elektryczny Zespół Automatyki (ZTMAiPC) ZERiA

LABORATORIUM MODELOWANIA I SYMULACJI Ćwiczenie 1
Wprowadzenie do środowiska Matlab-Simulink. 1. Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się ze środowiskiem obliczeniowym Matlab-Simulink oraz zdobycie praktycznych umiejętności przeprowadzania symulacji modeli dynamicznych w środowisku MatlabSimulink.

2. Wprowadzenie.
Pakiet Matlab (Matrix Laboratory) jest interakcyjnym i otwartym środowiskiem obliczeniowym integrującym analizę numeryczną, działania na macierzach, i przetwarzanie sygnałów z grafiką, co bardzo ułatwia jego wykorzystanie. Podstawową strukturę danych stanowi macierz (rzeczywista lub zespolona), której rozmiarów nie trzeba uprzednio deklarować. W istocie Matlab jest językiem programowania bardzo wysokiego poziomu. Zalety i moŜliwości Matlaba poszerzają tzw. przyborniki (toolboxes) będące wyspecjalizowanymi funkcjami (m-plikami) przeznaczonymi do rozwiązywania określonych zagadnień z dziedziny teorii regulacji i sterowania, chemii, matematyki, przetwarzania obrazów i inne. Niewątpliwym uzupełnieniem Matlaba, waŜnym szczególnie z punktu widzenia automatyki, jest przybornik (biblioteka) Simulink, który słuŜy do analizy i syntezy ciągłych, dyskretnych i dyskretnociągłych układów dynamicznych. Simulink jest środowiskiem, w którym symulację systemów dynamicznych wykonuje się w oparciu o schemat blokowy budowany z wykorzystaniem predefiniowanych bloków bibliotecznych.

2.1 Matlab - Środowisko pracy.
Program Matlab jest zintegrowanym środowiskiem obliczeniowym ukierunkowanym szczególnie na obliczenia numeryczne. Nie wyklucza to jednak obliczeń symbolicznych – moŜliwych z zastosowaniem odpowiedniego przybornika (Symbolic Toolbox). Funkcjonalność Matlab’a jest związana przede wszystkim z ogromną biblioteką elementarnych i specjalnych funkcji matematycznych, operatorów macierzowych oraz duŜą liczbą przyborników (bibliotek funkcji) wykorzystywanych do zastosowań specjalistycznych. Po uruchomieniu pakietu (poleceniem matlab.exe) ukazuje się główne okno programu, będące jednocześnie obliczeniowym centrum sterowania. Edycja poleceń przypomina system DOS. Polecenia wpisywane są w linii komend i zatwierdzane klawiszem <ENTER>. To jeden z dwóch dostępnych trybów pracy w środowisku Matlab – tryb pracy bezpośredni. Alternatywnie, moŜliwe jest zamknięcie grupy poleceń wewnątrz struktur zwanych dalej skryptami i funkcjami (tryb pracy pośredni). Skrypty – stanowią sekwencję poszczególnych poleceń zapisaną w pliku tekstowym. Zmienne modyfikowane wewnątrz skryptu są dostępne po jego wykonaniu w przestrzeni roboczej (workspace). Skrypty jako takie nie zwracają wartości, a jedyną moŜliwością parametryzacji ich działania jest wcześniejsze zainicjowanie odpowiednich zmiennych (parametrów). Funkcje – w odróŜnieniu od skryptów, definiowane są jako zamknięte fragmenty algorytmu obliczeniowego. Posiadają listę parametrów wejściowych, zwracają wartość (lub wartości przez zastosowanie macierzy). Zmienne wewnętrzne są tworzone na czas wykonania się funkcji i nie są dostępne z poziomu przestrzenie roboczej. Okno główne programu Matlab przedstawia rys.1.
Ćwiczenie 1 – Środowisko Matlab-Simulink. Wprowadzenie -1-

Laboratorium Modelowania i symulacji

2008 r.

Rys. 1. Okno Główne programu Matlab. W programie Matlab na uwagę zasługuje system pomocy. Pomoc ta dostępna jest jako zestaw funkcji wewnętrznych (help, lookfor, helpdesk i in.) jak i dokumentacja w formie PDF lub HTML umieszczona w katalogu C:\MATLAB6p5p1\help. Oprócz obliczeń numerycznych, program Matlab umoŜliwia wizualizację wyników obliczeń. Do dyspozycji jest wiele funkcji graficznych wspomagających prezentacje danych i analiz. Podstawowe z nich, to: plot(x,y), subplot(m,n,p), fplot(fun, lims), grid i inne. Przykładowy wykres utworzony z wykorzystaniem funkcji plot(x,y) pokazano na rys. 2

Rys 2. Przykładowy wykres uzyskany z wykorzystaniem funkcji plot(x,y). Dodatkowym rozszerzeniem moŜliwości graficznych jest zbiór funkcji umoŜliwiających tworzenie wykresów dwu- i trójwymiarowych. Przykładowy wykres utworzony funkcją surfl pokazano na rys. 3.

Ćwiczenie 1 – Środowisko Matlab-Simulink. Wprowadzenie

-2-

Laboratorium Modelowania i symulacji

2008 r.

Rys. 3. Powierzchnia wykreślona za pomocą funkcji surfl. 2.2 Nakładka Simulink.
Biblioteka Simulink dołączana do pakietu Matlab jest graficznie zorientowanym środowiskiem projektowym wyposaŜonym w funkcje: • Konstrukcji modeli dynamicznych • Analizy działania modeli dynamicznych przy róŜnych wymuszeniach • Prezentacji wyników symulacji W pełni interaktywne środowisko pracy Simulink umoŜliwia budowę modeli dynamicznych na bazie predefiniowanych bloków funkcjonalnych dołączanych wraz z pakietem. Funkcje edycyjne ułatwiają szybkie tworzenie modeli oraz ich modyfikację. W celu umoŜliwienia symulacji nakładkę Simulink wyposaŜono w zestaw bloków modelujących sygnały wejściowe. Podstawowe to: step, const, ramp. MoŜliwa jest teŜ symulacja dla bardziej złoŜonych wymuszeń, w tym zdefiniowanych przez uŜytkownika. Symulacji układów sterowania moŜna dokonywać dla róŜnych metod całkowania, zadanych parametrów (krok, rząd metody, czas symulacji, solver i in.). Przykładowy ekran nakładki Simulink pokazano na rys 5 (Przykład 2)

Rys 5. Przykładowy ekran roboczy pakietu Simulink (Przykład 2) Prezentacja wyników symulacji w nakładce Simulink jest moŜliwa dzięki bogatej bibliotece bloków wyjściowych. Najprostsze z nich to: display, scope, to workspace i in. Dzięki temu wyniki symulacji
Ćwiczenie 1 – Środowisko Matlab-Simulink. Wprowadzenie -3-

Laboratorium Modelowania i symulacji

2008 r.

mogą być przesłane np. do przestrzeni roboczej Matlab’a i tam poddane dalszemu przetwarzaniu. MoŜliwości nakładki Simulink mogą zostać rozszerzone przez dodatkowe biblioteki bloków funkcjonalnych (blocksets). Przykładowe biblioteki to: Nonlinear Control Design Blockset – wspomaganie projektowania nieliniowych układów sterowania, Power System Blockset – wspomaganie projektowania układów sterowania systemami maszyn i napędów duŜych mocy. DSP Blockset – wspomaganie projektowania systemów wykorzystujących cyfrowe przetwarzanie sygnałów. Jedną z bibliotek funkcji pakietu Matlab wykorzystywanych najczęściej przy projektowaniu układów sterowania jest biblioteka control toolbox. UmoŜliwia ona budowę modeli dynamicznych o róŜnych postaciach (transmitancja, równania stanu, postać kanoniczna) a takŜe symulację działania tychŜe modeli dla róŜnych typów wymuszeń. Biblioteka control toolbox ściśle współpracuje z środowiskiem Simulink umoŜliwiając szybką i efektywną konstrukcję modeli dynamicznych. Modele dynamiczne mogą być przy tym ciągłe i dyskretne. Dzięki nakładce Simulink moŜliwe jest takŜe modelowanie układów nieliniowych.

3. Podstawy programowania
W głównym oknie Matlaba polecenia podaje się po tzw. znaku zachęty >> i zatwierdza klawiszem Enter. Nazwa zmiennej musi rozpoczynać się literą i moŜe stanowić dowolnej długości ciąg liter, liczb i znaków podkreślenia. JeŜeli na końcu polecenia umieszczony zostanie średnik to potwierdzenie wykonania polecenia nie zostanie bezpośrednio wyświetlone. Sprawdzenie zawartości zmiennej moŜna uzyskać poprzez wpisanie nazwy zmiennej w oknie poleceń (ans-standardowa zmienna robocza, w której przechowywany jest wynik operacji gdy nie zdefiniowano nazwy zmiennej wynikowej). Liczby w MATLAB-ie moŜna wpisywać w postaci:

- stałozycyjnej (kropka dziesiętna) np. -2,46 >> a= -2.46 10,38 >> b=10.38 - zmiennopozycyjnej (znak e poprzedza wykładnik potęgi10) np. >> c= 1.63e3 1,63·103 3,51·10-6 >> d= 3.51e-6 Liczby zespolone moŜna wprowadzać na dwa sposoby: >> z = 7 + 2j lub >> z = 7 + 2i Przy wyświetlaniu część urojona zawsze występuje z literą i.
_

Więcej informacji – patrz DODATEK

4. Program ćwiczenia
Wykonać poszczególne polecenia i zanotować wyniki.

1) Macierze
a) Definiowanie i generowanie macierzy - wprowadzić wektor wierszowy w i kolumnowy k w następujący sposób: >> w=[1 2 3 4]; >> w >> s=[7,6,5,2] - wprowadzić wektor kolumnowy k w następujący sposób: >> k=[4;5;6;7]; >>k - wprowadzić macierz m w następujący sposób: >> m=[2 3 1 1; 4 3 2 1 ; 4 1 5 6; 1 3 1 2]; >> m - wygenerować wektor wierszowy n którego elementami są liczby całkowite z przedziału <1,5>: >> n=1:5 - wygenerować wektor wierszowy n1 którego elementami są liczby całkowite z przedziału <1,3> zmieniające wartości o krok 0,5 :
Ćwiczenie 1 – Środowisko Matlab-Simulink. Wprowadzenie -4-

Laboratorium Modelowania i symulacji

2008 r.

>> n1=1:0.5:3 b) Odwołania do elementów macierzy i operacje na macierzach - przetransponować wektor kolumnowy k w wierszowy w następujący sposób: >> k=k’; >> k - zmienić wartość parametru macierzy m w 1 wierszu i 3 kolumnie: >> m(1,3)=16; >> m - odwrócić macierz m w następujący sposób: >> m^(-1) - wyznaczyć rząd macierzy m, >> rank(m) - wyznaczyć ślad macierzy m, >> trace(m) - wyznaczyć macierz odwrotną do m, >> inv(m) - wyznaczyć macierz trójkątną górną macierzy m >> triu(m) wyznaczyć macierz trójkątną dolną macierzy m >> tril(m) - wyznacznik macierzy m, >> det(m) 2) mnoŜenie Dla macierzy m oraz A i B wykonaj następujące operacje i podaj róŜnice >> A=[4 2;3 –2;-1 6] >> B=[2 –1;2 5;2 –2] >> A+B >> A.*B >> m^2 >> m.^2 >> A\B >> A.\B >> A+3 >> B/2 >> B\2 >> B.\2
NALEśY PAMIĘTAĆ O SKOPIOWANIU WSZYSTKICH OPERACJI Z OKNA COMMAND WINDOW !

3) Informacje o zmiennych, usuwanie zmiennych, zapis i odczyt zmiennych. a) wyczyścić okno poleceń MATLABA: >> clc; b) wyświetlić informacje o zmiennych w następujący sposób: >> who >> whos c) usunąć z przestrzeni roboczej zmienne k i w, w następujący sposób: >> clear k w; >> who d) zapisać macierz m w pliku dyskowym i odczytać w następujący sposób: - zapis z dowolnym rozszerzeniem >> save m.ala m -mat następnie usunąć zmienną m z przestrzeni roboczej poleceniem: >> clear m; >> who i wprowadzić ponownie do przestrzeni roboczej (odczyt z pliku) >> load m.ala m –mat
Ćwiczenie 1 – Środowisko Matlab-Simulink. Wprowadzenie -5-

Laboratorium Modelowania i symulacji

2008 r.

>> disp(m) - zapis w formacie Matlaba >> save m m następnie usunąć zmienną m z przestrzeni roboczej poleceniem: >> clear m; >> who i wprowadzić ponownie zmienną m do przestrzeni roboczej (odczyt z pliku) >> load m m - zapis w formacie ASCII >> save m.txt m -ascii następnie usunąć zmienną m z przestrzeni roboczej poleceniem: >> clear m; >> who i wprowadzić ponownie zmienną m do przestrzeni roboczej (odczyt z pliku) >> load m.txt m -ascii 4) Operacje na łańcuchach a) Wprowadzanie i wyświetlanie tekstu >> s=’To jest tekst’; >> disp(s) b) Wprowadzanie danych >> x=input(‘Podaj liczbę: ‘) 5) Podstawowe operacje graficzne a) Wprowadzić wektor wartości zmiennej niezaleŜnej >> t=-pi:.01:pi; oraz wyznaczyć wartości funkcji sinus dla zadanego wektora wartości zmiennej niezaleŜnej >> y=sin(t); b) Wykreślić wykres funkcji sinus dla zadanych wektorów argumentów i wartości >> plot(t,y); c) Dostosować skalę wykresu do zadanego przedziału zmienności funkcji >> axis([-pi-0.1 pi+0.1 –1.1 1.1]); d) Wprowadzanie opisów osi, opisów wykresu: - włączenie wyświetlania siatki współrzędnych >> grid on - tytuł wykresu >> title(’tutaj naleŜy wprowadzić tytuł wykresu’); - opis osi x, który pojawi się pod osią poziomą >> xlabel(’tutaj naleŜy wprowadzić opis osi x’); - opis osi y, który pojawi się obok osi pionowej >> ylabel(’tutaj naleŜy wprowadzić opis osi y’); - umieszczenie legendy na bieŜącym wykresie >> legend(’wprowadzić nazwę parametru przedstawionego na wykresię,2); - umieszczenie na rysunku podanego tekstu w miejscu o współrzędnych x, y: >> text(1,0.2,’komentarz do wykresu’); 6) Tworzenie skryptów. a) Otworzyć m-file editor poleceniem File>New>M-File b) W kolejnych wierszach skryptu wpisać następujące polecenia: d=[4 2 –1;3 –2 5;-1 6 –2] g=[4 31 –19]’ x=g^(-1)*d c) Zapisać skrypt na dysku pod nazwą lin.m uŜywając polecenia File>Save As d) Wyczyścić okno poleceń MATLABa poleceniem clc i następnie wprowadzić polecenie: >> lin
Ćwiczenie 1 – Środowisko Matlab-Simulink. Wprowadzenie -6-

Laboratorium Modelowania i symulacji

2008 r.

Skrypt moŜna równieŜ uruchomić z poziomu m-file editor poleceniem Debug>Run. e) Napisz następujący skrypt. Przeanalizuj jego działanie.: % początek skryptu ilosc=1 a=rand(1,1) b=round(a*10) disp('Wylosowano liczbę z przedziału [1,10].') x=input('Podaj jaka to moŜe być liczba: ' ); while (x~=b), x=input('Podaj jeszcze raz: ' ); ilosc=ilosc+1; end disp(['Trafiłeś za ', num2str(ilosc),' razem']) % koniec skryptu

Zadanie 1 Określ działanie następujących poleceń: >> tt=[1:1:5;1:2:10] >> m(:,2) >> m(:,1:3) >> m(3,:) >> m(3,4) >> m(:) >> m(9) >> m(5:9) >> m=[m;w] >> z(:,[3,4])=m(:,1:2) >> m(5,:)=[]

Zadanie 2 Napisać skrypt, którego wynikiem będzie wygenerowanie na jednym rysunku dwóch wykresów funkcji y1=sin(t) i y2=2*cos(3*t+1) w przedziale t=-pi:0.01:pi. KaŜdy przebieg powinien być wykreślony innym kolorem linii, osie powinny posiadać odpowiednie opisy, na odpowiednio zeskalowanym rysunku powinna znajdować się legenda. Zadanie 3 Napisać skrypt sprawdzający ile spośród 6 dowolnych liczb wprowadzonych przez uŜytkownika mieści się w przedziale <1,20>.

Literatura 1. B. Mrozek, Z. Mrozek: MATLAB i Simulink: poradnik uŜytkownika. Helion, Gliwice, 2004. 2. A. Zalewski, R. Cegieła: Matlab - obliczenia numeryczne i ich zastosowania.Wydawnictwo Nakom, Poznań, 2000. 3. J. Brzózka, L. Dorobczyński: Programowanie w Matlab. Wydawnictwo Mikom,Warszawa, 1998.

Ćwiczenie 1 – Środowisko Matlab-Simulink. Wprowadzenie

-7-

Laboratorium Modelowania i symulacji

2008 r.

DODATEK
help - system pomocy help temat - podaje listę wszystkich poleceń odnoszących się do danej grupy (np. help ops - operatory i specjalne znaki. help general – polecenia ogólne clear all - usunięcie wszystkich zmiennych z przestrzeni roboczej

Definiowanie formatu wyświetlania liczb format - powrót do standardowych ustawień format short - 5 cyfr, reprezentacja stałoprzecinkowa format long - 15 cyfr, reprezentacja stałoprzecinkowa format short e - 5 cyfr, reprezentacja zmiennoprzecinkowa format long e - 15 cyfr, reprezentacja zmiennoprzecinkowa format rat - wypisywanie liczb w postaci ułamka Operatory arytmetyczne dodawanie + odejmowanie – mnoŜenie * dzielenie / potęgowanie ^ Funkcje matematyczne – argumentami funkcji mogą być liczby lub macierze
FUNKCJA OPIS

sin(x), cos(x), tan(x), cot(x)

sqrt(x) log(x) log2(x) log10(x) exp(x) abs(x) angle(x) real(x) imag(x) conj(x)

Funkcje trygonometryczne: sinus, cosinus, tangens, cotangens; argument podawany jest w radianach (stała pi określa liczbę π) pierwiastek kwadratowy logarytm naturalny ln x logarytm o podstawie 2 log2(x) logarytm dziesiętny log10(x) ex wartość bezwzględna lub moduł liczby zespolonej argument liczby zespolonej część rzeczywista liczby zespolonej część urojona liczby zespolonej liczba zespolona sprzęŜona

Operacje na macierzach: • operacje macierzowe – wykonywane na całych macierzach zgodnie z regułami algebry, • operacje tablicowe – wykonywane na poszczególnych elementach macierzy.
_

Jeśli jeden z argumentów jest skalarem to mówimy o operacjach tablicowych.

operacja macierzowa dodawanie + odejmowanie – mnoŜenie * ^ potęgowanie dzielenie prawostronne / dzielenie lewostronne \
_

tablicowa + – .* .^ ./ .\

uwagi

A./B => A(i,j)/B(i,j) A.\B => B(i,j)/A(i,j)
-8-

Ćwiczenie 1 – Środowisko Matlab-Simulink. Wprowadzenie

Laboratorium Modelowania i symulacji

2008 r.

Funkcje do konstruowania macierzy
FUNKCJA OPIS

eye(x) ones(x) rand(x) rands(x) zeros(x)

Macierz jednostkowa (jedynki na przekątnej) Macierz o elementach równych 1 Macierz losowa o rozkładzie równomiernym Macierz losowa o rozkładzie normalnym Macierz z elementami zerowymi

WyraŜenia logiczne
WyraŜenia logiczne słuŜą do porównania wartości zmiennych o tych samych rozmiarach. Gdy porównywane są skalary to jeśli wyraŜenie logiczne jest prawdziwe zwracana jest wartość 1, jeśli fałszywe - wartość 0. Operatory relacyjne operator znaczenie x == y x = y x ~= y x ≠y x < y x < y x > y x > y x <= y x ≤y x >= y x ≥y Operatory logiczne operator znaczenie x | y x lub y (OR) x & y x i y (AND) ~x nie x (NOT)

Grafika Okna graficzne
figure - tworzy nowe okno graficzne, figure(n) - tworzy nowe okno graficzne o numerze n, close - zamyka aktywne okno graficzne, close all - zamyka wszystkie okna graficzne, clf - czyści zawartość aktywnego okna graficznego, subplot(m,n,p) - dzieli okno graficzne na mniejsze prostokątne okienka umieszczając je w mwierszach i n-kolumnach, p – numer aktywnego okienka, w kaŜdym okienku moŜna umieścić odrębny wykres.

Wykresy dwuwymiarowe (przykłady) nazwa opis
plot loglog bar hist rose polar stairs semilogx semilogx fplot Skala liniowa obu osi Skala logarytmiczna obu osi Wykres słupkowy histogram Histogram kołowy Wykres kołowy Wykres schodkowy Skala logarytmiczna osi x Skala logarytmiczna osi y Wykres funkcji ciągłej

Ćwiczenie 1 – Środowisko Matlab-Simulink. Wprowadzenie

-9-

Laboratorium Modelowania i symulacji

2008 r.

plot(x,y) - rysuje wykres y = f(x), plot(y) - rysuje wykres elementów wektora y, przyjmując za x kolejne numery indeksów elementów wektora zaczynając od 1, plot(x,y,’kolor_rodzaj_linii’) - rysuje wykres y = f(x) z określeniem sposobu rysowania linii, plot(x1,y1,x2,y2,...) - rysuje w jednym oknie wiele wykresów, plot(x1,y1,’kolor_rodzaj_linii1’,x2,y2,’kolor_rodzaj_linii2’, ...) - rysuje w jednym oknie wiele wykresów z określeniem sposobu rysowania linii kaŜdego z nich. hold on - powoduje dodanie nowego wykresu do wykresu juŜ istniejącego title(’tekst’,’FontSize’,10) – wprowadzenie tytułu wykresu czcionką o wielkości 10 pkt

Zestawienie kolorów i rodzajów linii symbol kolor Ŝółty y karmazynowy m turkusowy c czerwony r zielony g niebieski b biały w czarny k

symbol
-: -. + * . o x

rodzaj linii
ciągła (domyślna) kreskowana kropkowana kreska-kropka krzyŜyk gwiazdka kropka kółko iks

Instrukcja warunkowa
if wyraŜenie polecenia elseif wyraŜenie polecenia else polecenia end WyraŜenia są relacją lub wyraŜeniem logicznym. Wynik wyraŜeń uŜytych po if oraz elseif musi być liczbą.

Instrukcje iteracyjne
Nieokreślona liczba obiegu pętli
while wyraŜenie polecenia end Ścisle określona liczba obiegu pętli

for zmienna= wyraŜenie polecenia end

Ćwiczenie 1 – Środowisko Matlab-Simulink. Wprowadzenie

- 10 -

 
statystyka