Blog (16)
Komentarze (1.1k)
Recenzje (0)

Simulink: równania różniczkowe

@revcoreySimulink: równania różniczkowe19.02.2012 18:54

W niniejszym wpisie zakładam że czytelnikowi znane jest pojęcie „równanie różniczkowe” i całkowanie. Pierwotna wersja wpisu miała powstać przy użyciu XCOS wbudowanego w scilab. Niestety pojawiły się problemy. Uściślając za modelowanie prostego równania różniczkowego nie stanowiło problemu, aczkolwiek pojawiły się bardzo poważne problemy z stabilnością xcos. O ile sam scilab jest dość stabilny to moduł xcos już nie, wyłączanie się programu po symulacji czy w trakcie zdarzało się bardzo często na linuksie, a na windows już nie co rzadziej ale nadal było to normą. Niestety przyczyny mi nie są znane zważywszy na to że linuks korzystał z Openjre 6 a Windows oracle jre 7, zaryzykuję stwierdzenie że program jest stabilniejszy na wydaniu jre oracle ,aczkolwiek zauważmy oracle zapowiedział oparcie swoich wydań jre o openjre. Dodatkowo po za modelowaniu przykładu drugiego okazało się że wyniki nie są takie jak powinny być. Jeśli znajdzie się osoba która za modeluje przykład drugi w xcos i wyniki będą się zgadzały z wynikami z simulinka proszę o podesłanie pliku.

„...Mathematics is the language of nature...”

Powyższy cytat pochodzi z filmu PI i niesie w sobie niezwykle istotną informację. Zjawiska fizyczne mogą być opisane za pomocą równań(mniej lub bardziej dokładnie). Czytelniku jeśli nie wierzysz porównaj kształt huraganu z tzw. złotym podziałem.

Masa-Tłumik-Sprężyna

Zaczniemy od prostego przykładu układu II rzędu, który to w tego typu opracowaniach jest oklepany jak chabeta po westernie :) W poniższym dokumencie przykład 1 Link Przekształćmy równanie nieco(apostrofy to kolejne pochodne). F=mx''+cx'+kx F-siła m-masa c-stała tłumienia k-wsp. Sprężystości Nasuwa się pytanie jak przekształcić takie równanie aby można było je zapisać w simulinku. Otóż po jednej stronie musi zostać najwyższa pochodna a reszta po drugiej czyli: x''=1/m(F-cx'-kx) (1.1) Zapiszmy to teraz w simulinku:

Rozwiązanie równania 1.1
Rozwiązanie równania 1.1

Źródłem siły F jest blok Step czyli w chwili równej t=0, Pojawia się stały w czasie sygnał o wartości 1(po kliknięciu lpm, można zmienić wartość), następnie jest on przekazywany do sumatora, aby stworzyć odpowiedni sumator przeciągamy go z biblioteki(Math Operations) klikamy lpm po czym w list of signs wpisujemy |-+- ,a icon shape na rectangual. Przejdźmy do implementacji równania, w równaniu (1.1) mnoży się współczynniki w nawiasie przez odwrotność masy, w takim wypadku musimy skorzystać z bloku Gain, klikamy lpm na niego i wpisujemy po prostu 1/0.1 ,gdzie 0.1 to masa. Teraz każdy sygnał jaki do niego wejdzie(z sumatora) na wyjściu jest pomnożony przez ta wartość, następnie wyjście tego bloku musimy połączyć z Integratorem(będziemy to całkować), na wyjściu tego integratora pojawia się wtedy x' co musimy pomnożyć przez stałą c, czyli po raz kolejny Gain którego wejściem jest wyjście pierwszego integratora a wyjście wędruje do sumatora(nic innego jak sprzężenie zwrotne), dodatkowo z wyjścia pierwszego integratora ciągniemy do wejścia drugiego integratora na którego wyjściu pojawi się x czyli nasze rozwiązanie(konkretni położenie), z mnożeniem postępujemy tak jak wcześniej. Aby wykreślić rozwiązanie korzystamy z bloku Scope, po zakończeniu symulacji klikamy na niego.

A odpowiedź to:

Rozwiązanie równania 1.1
Rozwiązanie równania 1.1

Proponuje w celu polepszenia wyniku pobawić się solverem(ctr+e lub opcje konfiguracji).

Pokój

W niniejszym przykładzie zostanie pokazane krzywa temperatury nagrzewania się pokoju, zostanie także użyty regulator PI w celu polepszenia charakterystyki. Dlatego za nim pójdziesz dalej czytelniku zapoznaj się z regulatorami PID, opis znajduje się na Wikipedii a ponadto wiele uczelni udostępnia PDF'y wraz z opisem tego typu urządzeń.

Wzór i parametry pokoju
Wzór i parametry pokoju

Zacznijmy od implementacji równania, zauważmy że mamy tu układ równań. Stworzenie opisu w simulinku takich równań jest dość łatwe i podobne do poprzedniego. Używamy takich samych bloków jak poprzednio, zapewne zauważyłeś że wartości których szukamy są ze sobą połączone(Tg-temp. Grzejnika, Tp-temp. pomieszczenia) czyli mówiąc najoględniej wyjścia(czyli rozwiązania) są wejściami niektórych węzłów sumatorów. Zauważyłeś także zapewne że nie ma skąd pobrać wartości (Pg-moc grzania,tzew-temp. Zewnętrzna), dane te będą pochodziły z zewnątrz a nasza implementacja równań zostanie zamknięta w tzw. subsystemie czyli stworzymy tka jak by własny blok z 2 wejściami i wyjściami.

Zapis układu równań
Zapis układu równań

W bibliotece sources odnajdujemy blok In1(tylko jedno wyj.), potrzebne są dwa jeden z nich to zmienna Pg a drugi tzew. Teraz potrzebne są nam wyjścia Tp i Tg. W Sinks znajduje się blok Out1(tylko jedno wej.), potrzebne są dwa. Wyjście In łączymy do odpowiednich wejść sumatora a wyjścia do wyjść integrtorów. Teraz zaznaczamy wszystko i klikamy prawym przyciskiem i wybieramy create subsytem. Tada !

Mając pojedynczy blok opisujący równania Przystąpmy do stworzenia systemu sterowania. Potrzebny będzie blok Step symbolizujący zadaną temperaturę, sine wave(sinusoida) reprezentujący zmianę temperatury na zewnątrz(lpm i ustawiamy amplitudę na 5), Saturation który ograniczy sygnał(sygnał to moc grzejnika) ustawiamy wartość na 5000 a na koniec blok PI, możemy go zbudować sami(tak jak ma to zrobione) lub skorzystać z wbudowanego PID, aby otrzymać PI wartość D ustawiamy na zero. Skorzystamy także z bloku to workspace(wysłanie do matlaba) aby za pomocą polecenia plot wykreślić przebiegi(można też bezpośrednio w simulinku użyć scope i multipleksera), ustaw w save format bloku Array. Teraz łączymy wszystko jak na rysunku i symulujemy. Ustawienia symulacji to Type:fixed-step i ode1(Euler), 7000 sekund.

Kompletny uk. sterowania
Kompletny uk. sterowania

Celowo nie podaje nastaw PI. Spróbuj się pobawić czytelniku lub po prostu użyj jakieś metody doboru współczynników. Poniżej jest wykres w którym przedstawiam wyniki dla dwóch przykładów kiedy mamy do czynienia z regulatorem P tylko(nastawa P=5000) i regulatorem PI.

Rozwiązania, dwa reg. P i PI
Rozwiązania, dwa reg. P i PI
Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.