Wykład 8
Transkrypt
Wykład 8
Metody komputerowe w obliczeniach inżynierskich dr inż. Marcel Luzar [email protected] p. 325 A-2 www.issi.uz.zgora.pl Pakiet symulacyjny SIMULINK • • • • Wstęp do SIMULINKa Biblioteka bloków Tworzenie nowego modelu Użyteczne techniki obróbki danych Wstęp do Simulinka • Simulink – część pakietu numerycznego MATLABA. • Służy do przeprowadzania symulacji komputerowych. • Modele w Simulinku buduje się w postaci graficznej, układając bloki funkcyjne i łącząc je miedzy sobą. • W celu rozszerzenia możliwości programu stosowane są tzw. blocksety, realizujące operacje związane z wybraną dziedziną nauki lub techniki. • Przy pomocy Simulinka można przeprowadzać zarówno symulacje z czasem dyskretnym jak i ciągłym. Wstęp do Simulinka • Prezentacja narzędzia – krótki film https://www.youtube.com/watch?v=c7hhZuyW4vQ&t=102s Wstęp do Simulinka • Simulinka uruchamia się poprzez wpisanie w Command Window polecenia simulink lub poprzez kliknięcie ikony Simulink Library w menu głównym MATLABa. • Zostaje wyświetlone okno biblioteki bloków. • Aby utworzyć nowy model, należy kliknąć ikonę i wybrać jedną z dostępnych opcji: • • Utworzenie nowego pustego modelu Utworzenie nowej biblioteki bloków Utworzenie nowego modelu z wykorzystaniem wzorca Po wybraniu opcji wykorzystującej szablon, można zdecydować, który wzorzec zostanie użyty. Galeria szablonów oferuje wzorce dot. Systemów komunikacyjnych, układów hydraulicznych i pneumatycznych, systemów wizyjnych itp. Biblioteka bloków • Biblioteka możliwych do użycia bloków przedstawiona jest w postaci rozwijanego drzewa wyboru. • Podstawowe bloki znajdują się w bibliotece o nazwie Simulink. Pozostałe biblioteki oferują dedykowane bloki do m.in. symulowanie układów aerodynamicznych, modelowania neuronowego, sterowania rozmytego itd. • Najczęściej używane bloki zgrupowano w bibliotece o nazwie Commoly Used Blocks. • Nazwa biblioteki odpowiada funkcjom bloków w niej zawartych, np. biblioteka Sources zawiera bloki imitujące źródła danych wejściowych, Math Operation zawiera bloki realizujące funkcje matematyczne itd. • Szczegółowy opis bloków i bibliotek znajduje się w pliku pomocy. Budowanie modeli • Budowanie modeli z bloków odbywa się metodą przeciągnijupuść łącząc ich wyjścia i wejścia strzałkami. • Połączenie wykonuje się klikając na wyjście lub wejście bloku i przeciągając kursor do wejścia lub wyjścia innego bloku. • Inny sposobem łączenia bloków jest zaznaczenie bloku wyjściowego i trzymając wciśnięty klawisz ctrl kliknięcie na blok wejściowy. • Możliwe jest też wykonywanie połączeń pomiędzy wejściem bloku a strzałką, tworząc w ten sposób rozgałęzienie. • Aby utworzyć przykładowy model, należy użyć bloków Sine Wave i Scope. Budowanie modeli • Po utworzeniu modelu, można go zapisać wybierając z menu File->Save lub klikając ikonę . • Utworzony plik modelu może posiadać rozszerzenia *.slx lub *.mdl. Pliki slx pojawiły się w nowszych wersjach Simulinka, dlatego jeżeli trzeba uruchamiać plik na starszych wersjach, warto zapisać je w formacie mdl. • Klikając dwukrotnie na użytych blokach, otwiera się okno ich właściwości. Np. w bloku Sine Wave, który generuje sygnał sinusoidalny, można zmieniać m.in. jego amplitudę, częstotliwość, przesunięcie fazowe, bias itd. • Szczegółowy opis funkcji każdego bloku można uzyskać wciskając przycisk Help w oknie właściwości. Personalizacja schematu • Każdy ze wstawionych bloków ma swoją domyślną nazwę, którą można edytować. • Liczba wejść i wyjść bloków w niektórych przypadkach jest również edytowalna. • Można wstawiać podpisy linii, w celu ich łatwiejszej identyfikacji. • Należy pamiętać, żeby nie używać w nazwach polskich znaków, które mogą generować błędy kompilacji trudne do wykrycia. • Zmiana nazwy bloku oraz linii następuje po dwukrotnym kliknięciu na: • Nazwie bloku; • Linii. Symulacja • Uruchamianie symulacji odbywa się poprzez wciśnięcie ikony lub wciśnięcie skrótu klawiszowego ctrl+t. • Czas trwania symulacji ustawia się w polu obok przycisku uruchamiania. Domyślnie jest to wartość 10.0 • Dodatkowe, zaawansowane parametry symulacji można zmieniać wybierając z menu Simulation->Model Configuration Parameters. • Po wykonaniu symulacji, rezultat można zaobserować klikając dwukrotnie blok Scope (Oscyloskop). • Gdy przebieg całego sygnału nie jest widoczny, należy go przeskalować klikając ikonę Autoscale • W zależności od wersji Simulinka, ikony przycisków mogą się różnić. Pierwsza symulacja Budowanie modeli c.d. • Linie wyjściowe z bloków można rozdzielać, aby zrównoleglić wynik, np. jednocześnie pokazując go na oscyloskopie oraz wyświetlaczu. • W tym celu należy wykonać operację „od tyłu”, tj. od wejścia bloku prowadzić linię i dołączyć ją do linii istniejącej. Eksport danych do MATLABA • Simulink jest integralną częścią MATLABA, więc nie ma problemu z przenoszeniem wyników symulacji. • Do tego celu służy dedykowany blok To Workspace. • Po otworzeniu jego właściwości należy zmienić nazwę zmiennej, pod jaką będzie widoczny wynik w przestrzeni roboczej MATLABA (domyślnie simout). • Dodatkowo ważnym parametrem jest pole Save format: . W nim należy wybrać format zapisu danych. Do wyboru są 4 opcje: Timeseries, Structure with Time, Structure i Array. • Format zapisu zależy od tego, co później dzieje się z tą zmienną (tj. czy będzie rysowany wykres, będzie ona używana do obliczeń itd.). • Pozostałe opcje bloku To Workspace są dla zaawansowanych zastosowań i większości przypadków pozostają niezmienione. Opcje bloku To Workspace Eksport danych do MATLABA c.d. • • Istnieje alternatywny sposób eksportu danych do MATLABA. W niektórych blokach wyjściowych istnieje możliwość zaznaczenia opcji zapisu wyniku do przestrzenie roboczej. Takim blokiem jest np. Scope. Po wykonaniu symulacji, można w parametrach tego bloku ustawić opcję zapisu narysowanego przebiegu pod postacią zmiennej w przestrzeni roboczej MATLABA. Wykresy wyeksportowanych danych • Wyeksportowane dane można narysować korzystając z podstawowych narzędzi MATLABA. Dzięki temu można dodać legendę, tytuł wykresu itp. • Sposób rysowania zależy od formatu, w jakim zapisano wyeksportowane dane. • Dane typu TimeSeries i Array są obsługiwane przez polecenie plot, natomiast pozostałe nie. Należy się do nich odpowiednio odnieść, stosując notacje poznane na wykładzie dot. typów danych (Wykład nr 6). • Dla zbudowanego schematu polecenia rysowania wyglądają następująco: dla danych typu TimeSeries dla danych typu Struct. Budowanie modeli c.d. • Zdarza się, że potrzeba jest narysowania wielu sygnałów na jednym oscyloskopie (ale nie na dwóch wykresach). • W tym celu należy połączyć wiele sygnałów w jeden (tzw. szyna). Taki sygnał można później odpowiednio rozdzielić. • To tych operacji służą bloki Mux i Demux. • Bloki te są w bibliotece Signal Routing. • Liczbę wejść i wyjść tych bloków można dowolnie zmieniać. Symulacja c.d. • Symulację systemu w Simulinku można uruchomić nie otwierając samego Simulinka, tylko zrobić to z poziomu MATLABA. • W tym celu należy użyć komend MATLABA, pisząc je w edytorze lub w Command Window. • Przykładowe wywołanie symulacji zbudowanego systemu przedstawia się następująco: • Otworzenie modelu poleceniem open_system nie jest wymagane, do przeprowadzenia symulacji. • Więcej informacji o parametrach funkcji sim dostępna w pliku pomocy. Operatory matematyczne • Korzystając z bloków Simulinka można realizować funkcje matematyczne. • Do tego celu służą bloki w bibliotece Math Operations. • Budowanie operacji matematycznych z pojedynczych bloków jest żmudne, jednak pozwala w znakomity sposób zobrazować kolejność wykonywanych działań. • Np. równanie można zrealizować następująco: Przekazywanie zmiennych • Simulink może korzystać ze zmiennych zapisanych w przestrzeni roboczej MATLABA. • W blokach zamiast wartości można podawać nazwy zmiennych, znajdujących się w Workspace. • Dzięki temu, można szybko zmienić wiele wartości w modelu zmieniając tylko jedną wartość w Workspace. • Próba uruchomienia symulacji bez zdefiniowanych zmiennych spowoduje błąd. Blok Signal Builder • Często istnieje potrzeba wzbudzenia systemu sygnałem o losowym kształcie lub kształcie dopasowanym do wzbudzanego układu. • Istnieją gotowe bloki generujące sygnał wejściowy sinusoidalny, piłokształtny, kwadratowy itp. • W celu utworzenia własnego sygnału wejściowego należy użyć bloku Signal Builder z biblioteki Sources. • W tym bloku można dowolnie kształtować wartości sygnału korzystając z edytora graficznego. Blok Signal Builder Blok Signal Builder • Nowe sygnały dodaje się z menu Signal->New. • Do wyboru jest kilka rodzajów podstawowych sygnałów, które można dowolnie edytować zmieniając położenie punktów na wykresie. • W zależności od ilości dodanych sygnałów, zmienia się liczba wyjść z bloku. • Nazwy wyjść można edytować poprzez zmianę nazwy samego sygnału w polu Name. Symulacja systemu 2-tank • W celu wykazania skuteczności Simulinka w zadaniu symulacji układów regulacji, można posłużyć się przykładem systemu dwóch zbiorników z książki prof. M. Witczaka. • Równania stanu dwóch zbiorników: Symulacja systemu 2-tank • Numeryczne wartości parametrów to: g=9.81, A=4.2929, k1=0.3646, k2=0.2542, gdzie g to przyciąganie grawitacyjne, A to przekrój zbiornika, k1 to przekrój zwężki pomiędzy zbiornikami a k2 to przekrój zwężki odpływu z drugiego zbiornika. • Wartości te można dodać do przestrzeni roboczej poprzez utworzenie nowego m-pliku skryptowego. • Po tym można przejść do budowania schematu w Simulinku Symulacja systemu 2-tank • Do budowy schematu realizującego równania stanu dwóch zbiorników, używa się następujących bloków: Symulacja systemu 2-tank • Gotowy schemat przedstawia się następująco: Tworzenie podsystemu • Schemat złożony z wielu bloków można połączyć w jeden blok, który realizuje wszystkie wewnętrzne operacje. • Czynność ta nazywana jest tworzeniem podsystemu (ang. Create Subsystem). • Aby utworzyć taki podsystem, należy zaznaczyć komponenty, które mają wchodzić w jego skład, a następnie klikając PPM wybrać opcję Create Subsystem from Selection. Tworzenie podsystemu • Utworzony podsystem ma tyle wejść i wyjść, ile zaznaczonych było komponentów In i Out i zajmuje znacznie mniej miejsca niż poprzedni model. • Aby zobaczyć, co kryje się pod podsystemem, należy dwukrotnie na niego kliknąć. • Podmieniając komponenty In i Out przy systemie na bloku Constant i Scope, można zadawać sygnały wejściowe i odczytywać wartości wyjściowe. • Dopisując poniższe linie do skryptu można uruchomić symulację. Symulacja systemu 2-tank • Poziomy napełniania cieczą zbiorników można obserwować na oscyloskopach. • W celu narysowania wykresu w MATLABIE, należy dodać omawiane wcześniej bloki To Workspace i wyeksportować wyniki do przestrzeni roboczej. Maskowanie podsystemu • Można zmieniać wygląd bloku podsystemu, nakładając tzw. maskę. • Dzięki niej można również personalizować blok, umożliwiając wpisywanie wartości parametrów użytkownikowi bez ingerencji w schemat układu. • Aby utworzyć maskę, należy kliknąć PPM na blok systemu i wybrać Mask->Create Mask. • Zostanie otwarte okno Edytora Maski, zawierające 4 zakładki • W zakładce Icon & Ports możliwa jest edycja wyglądu bloku oraz jego portów wejściowych i wyjściowych Maskowanie podsystemu • W zakładce Parameters & Dialog ustawiane są elementy maski, które zostaną wyświetlone po dwukrotnym kliknięciu na blok. • Można dodać pola edycyjne, w których użytkownik może wpisywać wartości parametrów. • Dla przykładu dwóch zbiorników, mogą to być np. parametry A, k1, k2 i g, które są przypisywane w skrypcie. • W tym celu z panelu Control należy kliknąć na Edit i ustawić jego wartości tak jak pokazano poniżej. • Domyśle wartości parametrów można wpisać w Value. Maskowanie podsystemu • Klikając przycisk można podglądnąć, jak będzie wyświetlana utworzona maska. • W analogiczny sposób należy dodać wartości k1, k2, g i x0. • Można teraz przeprowadzić symulację bez uruchamiania skryptu.