XCOS: W praktyce
02.04.2012 | aktual.: 19.07.2013 20:27
XCOS W Praktyce. XCOS to darmowa alternatywa(tak naprawdę w niektórych dziedzinach tylko) dla matlabowskiego Simulinka. Dla nowych w tej dziedzinie ujmę to tak, program ten służy do graficznego zapisu różnego równań ponadto udostępnia różne elementy takie jak kondensatory,różnego rodzaju źródła sygnału itd. Wszystko wyjaśni się dalej. W przeciwieństwie do swojego dużego brata udostępnia tylko podstawowe bloki mimo to jednak można stosować go z powodzeniem, bo tu warto zauważyć że w zasadzie bloki w simulinku opisujące jakąś strukturę to nic innego jak równania matematyczne zamknięte w subsystem, czyli de facto można zaimplementować w XCOS podobnie działający blok jednak wymaga to nakładu pracy, ponadto posiada on mniej opcji jeśli idzie o same ustawienia obliczeń. I o dziwo nie wieszał mi się dziś w ogóle :)
Ten tekst kieruję raczej do studentów 1 roku kierunków automatyka i robotyka czy mechatronika, niemniej jednak uczniowie techników elektrycznych mogą uznać go za interesujący.
Obiekt inercyjny 1-rzędu
Aby zapoznać się z programem zaczniemy od prostego modelu pierwszego rzędu opisanego transmitancją: 1/(1+x*s) x- dowolna liczba(my przyjmiemy 0.5) Transmitancja otrzymywana jest za pomocą przekształcenia Laplaca. Stosuje się ją w celu ułatwienia rozwiązywania równań różniczkowo-całkowych, jest to odwzorowanie funkcji f(t) w funkcję F(s) czyli w dziedzinie s(przykładowo 1/s to całkowanie a mnożenie przez s to różniczkowanie)Dla zainteresowanych KLIK.
Zbadamy odpowiedź na skok jednostkowy czyli w czasie t=0 na wejście podawana jest jedynka. Uprzedzę nieco fakty i powiem że to człon opóźniający czyli jedynka na wyjściu pojawi się dopiero po pewnym czasie. Ktoś mógłby zadać pytanie 'dobrze a po co taka struktura?', posłużę się przykładem. W przyrodzie nic nie dzieje się natychmiast, istnieją opóźnienia, powiedzmy , rura doprowadzająca parę do turbogeneratora. Zmiana przepływu pary po zmianie otwarcia zaworów nie zmienia się skokowo tylko reakcja jest stopniowa. Ale przejdźmy do symulacji.
Teraz przerzuć elementy i połącz je tak jak na rysunku. Obiekt w czarnej ramce to tak zwany STEP_FUNCTION czyli skok jednostkowy(w zakładce źródła) po kliknięciu na niego lpm otworzą się opcje: STEP TIME- czas po którym sygnał ma być podany na wyjście bloku domyślnie 1 czyli po 1 sekundzie na wyjściu pojawi się wartość, my dajemy 0 INITIAL VALUE- wartość początkowa zanim minie STEP TIME FINAL VALUE- odpowiedź jaka pojawi się po upłynięciu STEP TIME często jest to 1 ale może być to dowolna wartość, my zostawiamy 1. Blok w ramce czerwonej to CLR(szukaj w systemy czasu ciągłego) czyli transmitancja, klikamy lpm i w oknie: Numerator- czyli licznik ustawiamy 1 Denominator-Mianownik zgodnie z transmitancją ustawiamy 1+0.5*s W ramce żółtej znajduje się CSCOPE(szukaj w sinks), służy on do szybkiego podglądu sygnałów wyjściowych, ma dwa wejścia, sygnał wyjściowy układu(czarny) i czas(czerwone wejście). Czas zostanie dostarczony z zewnętrznego bloku CLOCK, czas działania bloku jest równy czasowi symulacji. Klikamy na CSCOPE lpm, tu potrzebne jest parę zmian.
Outoput window number- czyli numer okna na wyjściu, można nie zmieniać Ymin,Ymax- wartości w osi Y, ustawiamy 0 i 1 Refresh Perion- czas po którym wykres zostanie odświeżony z nowym czasem np. gdy symulacja ma 4 sekundy a my ustawiliśmy 2 to po 2 sekundach symulacji oś x zacznie być numerowana od wartości 2 do 4. Ustawiamy 2. Buffer size- Bardzo ważna opcja, mówi ona ile CSCOPE może wyświetlić punktów, ja ustawiam dużą wartość(100000) abym widział wszystko. Name of Scope- nazwa okna, pokaże się w belce okna po wyświetleniu.
Kliknijmy teraz na CLOCK, w otwartym oknie ustawiamy wartości 0.0001, 0.0001. Dodałem jeszcze blok To workspace, pozwala on z interpretatora scilaba operować zmienną np. można ją wyświetlić ale o tym za chwilę, kliknijmy na blok lpm. Size Buffer- jak poprzednio dość duży potrzebny Scilab varible name- nazwa jaka będzie widoczna w workspace ja dałem odp Po symulacji można w scilab wpisać: plot(odp.time,odp.values) i zostanie wyświetlony wykres z wartością skoku jednostkowego czyli ciągle 1. Przejdźmy teraz do parametrów symulacji(symulacja=>ustawienia):
Ostateczny czas integracji- Jest to czas symulacji, ustawienie 2.0E00 oznacza że ustawiamy czas 2 sekundy, zapis 2.0E01 oznacza 20 sekund ponieważ operujemy tu na potęgach 10 czyli zapis 4.5E05 oznacza 4.5 * 10^5. My ustawmy 2 sekundy. Resztę możemy zostawić. Symulujmy, a odpowiedź naszego układu to:
Silnik Prądu Stałego
Za modelujmy silnik prądu stałego, a konkretniej silnik obcowzbudny. Model przydatny szczególnie dla studentów/uczniów mających przedmiot maszyny elektryczne, zabawy takim modelem pomagają w zapamiętywaniu charakterystyk maszyn. Teoria: KLIK Implementacji takiego silnika w programach typu xcos/simulink może być parę np. w postaci równań różniczkowych KLIK Ja użyję tu jednak rachunku operatorowego, a jak się okazało w internecie znajduje się instrukcja laboratoryjna także ona zostanie wykorzystana(można by rzec przerżnięta :) ale spokojnie tylko mam stamtąd parametry resztę sam wydedukowałem :P ) jako podstawa, później zbadamy rozruch. Instrukcja do SPS W XCOS model przedstawia się następująco.
W czerwonej ramce znajduje się sumator , klikamy lpm Number of inputs...- czyli liczba wejść, podawana jako wektor czyli postać [1;1;-1] powoduje że sumator ma trzy wejścia z czego dwa pierwsze to dodawanie a trzeci odejmowanie. My ustawiamy [1;‑1] Przed sumatorem znajduje się blok CONST czyli stała, 24 oznacza że podajemy na silnik 24 V.
W pierwszym bloku transmitancji znajduje się wartość 1/(1+0.02*s), jest to opis obwodu elektrycznego, cechuje on się pewną inercją(wyprowadzenia znajdują się w podanej wyżej instrukcji) czyli obiekt I rzędu opisany wcześniej, z kolei drugi blok(żółta ramka) to opis części mechanicznej silnika o postaci, 1/(0.003*s). Blok niebieski to step opisujący obciążenie na wale silnika o Step Time równym 1 czyli po jednej sekundzie podajemy obciążenie równe 1(można podać inną wartość). Mnożenie wyniku przez 9.55 jest potrzebne aby przejść z rad/s na obr/min. Jeśli idzie o CSCOPE to od lewej, prąd pobierany przez silnik,moment rozwijany przez silnik i prędkość. Ustawienia CSCOPE(ustawić sobie tylko nazwy w bloku aby wiadomo było co jest co),CLOCK i symulacji takie same jak wcześniej. A oto wyniki.
Jak widać prąd pobierany przez silnik podczas rozruch jest dość duży(pomimo krótkiego czasu jest to szkodliwe), istnieje parę sposobów zmniejszenia go. My spróbujmy regulować go za pomocą zmiany napięcia zasilania. Tzn. ustawimy 6 stopni zasilania od 4 V do 24 V skacząc do góry o 4 V co 0.020 sekundy. W tym celu użyjemy sumatora i paru bloków STEP, które będą się załączały z opóźnieniem co 0.020 sekundy. Oczywiście można by też posłużyć się członem opóźniającym pokazanym wcześniej, proszę poeksperymentować :D
Dodałem jednego CSCOPE aby było widać przełaczenia.Jak widać wartość prądu podczas rozruchu nieco spadła jednak czas rozruchu się wydłużył. Wyniki:
Proponuje także aby prąd,moment i prędkość wyprowadzić do workspace po czym zrobić sobie wykres prądu od prędkości itd. Ponieważ na egzaminach pytają o takie rzeczy :D Co więcej warto sobie to zrobić dla różnych wartości napięć czy obciążeń, po czym zamieścić na jednym wykresie.