Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

XCOS: W praktyce

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:KLIKImplementacji takiego silnika w programach typu xcos/simulink może być parę np. w postaci równań różniczkowychKLIKJa 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 SPSW 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. 

oprogramowanie programowanie inne

Komentarze

0 nowych
McDracullo   16 #1 02.04.2012 17:58

Model pierwszego rzędu -> Model inercyjny pierwszego rzędu ;)

"Twój tekst odnośnika" -> No to chyba trzeba poprawić ;)

Za dużo automatyki ;) Ale pomocny wpis (chciałem pisać o simulinku, ale nie chciało mi się opisywać wszystkiego ;) ). Duży +. :)

revcorey   6 #2 02.04.2012 18:43

Jestem od automatyki także :) Do napisania skłoniła mnie bliskość matur i ludzie nie wiedzą co robić później a to pokazuje czym się człowiek zajmuje na wydziale elektrycznym(i może mechanicznym nieco). Jeśli idzie o wzory chciałem je dać na zewnątrz bo ten model silnika można potraktować dwojako. Ktoś chce może potraktować go jako black-box czyli powiedzmy kupił sobie silnik i go bada a nie ważne co tam w środku jest, daje napięcie i obciążenie a później sobie wykreśla, w sam raz dla ucznia lo/technikum bo tak normalnie człek nie wie jak wygląda pobór prądu takiego silnika. A jeśli ktoś chce poznać silnik od środka poczyta sobie linki zewnętrzne :)

tfl   8 #3 02.04.2012 21:55

Po zagajce na stronie blogow bylem zdruzgotany. Jezyk polski w formie razacej niczym granat rozpryskowy. Przecinkow brak lub postawione w miejscach, ktorych bym sie niespodziewal. Tymczasem bardzo dobre rozwiniecie i kawal dobrej roboty.

revcorey   6 #4 02.04.2012 22:17

@tfl bardzo słabo piszę dlatego ćwiczę pisaniem bloga :)

  #5 03.04.2012 08:15

@tfl
Pamiętaj, że jak już kogoś pouczasz o poprawności pisowni języka polskiego, to przydało by się, abyś sam się do tego stosował.

Gdzie znaki diakrytyczne?

  #6 09.04.2012 21:47

Bardzo ciekawy wpis, dzięki Tobie moja nauka na kolokwium z podstaw automatyki nabrała kolorów :p

  #7 04.06.2012 00:10

Mam problem: Zasymulowałem taki silnik ale zrobiłem to tak że po kilku sekundach od załączenia obciążenia wyłączam zasilanie. Za wykresie "Prędkość obrotowa" wartość wędruje poniżej wartości 0

revcorey   6 #8 05.06.2012 19:31

Ustala się czy leci dalej w dół?
Podejrzewam ze tak. Chodzi o to że obciążenie może być interpretowane jako moment napędzający. Spróbuj oprócz zasilania wyłączyć jednocześnie obciążenie.

revcorey   6 #9 05.06.2012 19:32

Odnośnie momentu obciążenia napisałem
"Chodzi o to że obciążenie może być interpretowane jako moment napędzający"
Powinienem napisać
"Chodzi o to że obciążenie może być interpretowane jako moment napędzający(w przeciwnym kierunku)"

  #10 22.01.2013 14:18

@tfl nie spodziewał, nie niespodziewał

  #11 22.01.2013 22:05

Mam prośbę, mógłbyś mi pomóc w xcosie? Chodzi mi o schemat dla 2 oczek stanu niesustalonego.

revcorey   6 #12 23.01.2013 22:04

witaj ciężko z czasem ale. Powiem tak. Jak dwa oczka i stan nieustalony. To mam rozumieć że chcesz mierzyć prądy i napięcia? To normalnie bierzesz bloki z Elektrycznych i wrzucasz. Jak wyrysowujesz/wrzucasz do workspace. Pamiętaj xcos jest bardoz czuły an wielkość buforów i lubi się wykrzaczyć jak coś mu nie gra. Najlepiej żeby wielkość bufora była przeciwnego znaku jak krok. Jak krok minimalny to 10^-6 to bufor 10^6. Ponadto stany nieustalone trwają krótko wiec krok musi być mały i metody rozwiązania będą miały wpływ na to. Rób najlepiej na najnowszym scilab 5.4