Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Matlab/Simulink - Funkcja warunkowa (signum)

swider69 24 Kwi 2013 13:57 3135 19
  • #1 24 Kwi 2013 13:57
    swider69
    Poziom 11  

    Witam. Chciałbym zaprojektować silnik szeregowy z zabezpieczeniem prądowo/napięciowym. Zabezpieczenie to będzie pracowało w trybie albo albo tzn. albo jako zabezpieczenie prądowe albo jako napięciowe. Wszystko jest ok do momentu kiedy muszę na schemacie blokowym w Simulink zrealizować funkcję:

    Code:
    Uwy jeżeli Uwy < 10 
    
    10 jeżeli Uwy > 10

    Funkcję tą chciałbym zrealizować przy pomocy bloku signum lecz nie potrafię wymyślić w jaki sposób. Dochodzę do momentu wstawienia bloku Signum i nie wiem co za nim. Czy byłaby możliwość pomocy ze strony forumowiczów ?

    Pozdrawiam Dawid

    0 19
  • #2 24 Kwi 2013 19:00
    Raphaw
    Poziom 20  

    swider69 napisał:
    Kod:
    Uwy jeżeli Uwy < 10
    10 jeżeli Uwy > 10

    A czemu nie blok Saturation?

    0
  • #3 24 Kwi 2013 19:16
    swider69
    Poziom 11  

    Jestem początkujący w tym programie. Tzn. początkujący w Simulinku bo w Matlabie ogólnie już działam od jakiegoś czasu. Czy mógłbyś mi przybliżyć ten blok ? Znalazłem jedynie informację dotyczącą tego że jest to blok o nazwie: nasycenie zmiennej. nie zupełnie wiem jak to wykorzystać. Ponieważ w tym bloku musiałbym na "sztywno" ustawić wartość Uwy co nie jest możliwe ponieważ Uwy będzie się zmieniało w czasie. Także wydaje mi się że ten blok tutaj nie zda egzaminu

    0
  • #5 24 Kwi 2013 20:31
    swider69
    Poziom 11  

    Przetestuję i pochwalę się wynikami bo doszedłem już do tego jak zrealizować tę funkcję na bloku Signum. Niestety nie jestem w stanie tego zrobić dzisiaj ale na pewno zrealizuję obie opcje przez weekend. Dziękuję za zainteresowanie tematem.
    Pozdrawiam

    Dodano po 1 [godziny]:

    Jednak znalazłem chwilkę czasu żeby przetestować blok o którym mówiłeś. Niestety nie ma się czym pochwalić ... Na wejście bloku Saturation dałem sygnał sinusoidalny o amplitudzie 20 i częstotliwości rad/sec 10. W samym bloku Saturation ustawiłem Upper oraz Lower limit na 10 oraz na wyjście z bloku Saturation dałem blok Time Scope na którym chciałem zaobserwować cokolwiek. Ku mojemu zdziwieniu nie zaobserwowałem nic oprócz stałej wartości 10 na wykresie. Proszę o pomoc w wytłumaczeniu tego zjawiska

    0
  • #6 24 Kwi 2013 20:48
    Raphaw
    Poziom 20  

    Cytat:
    When the Lower limit and Upper limit parameters have the same value, the block output is that value.


    Upper limit to górny dopuszczalny limit (Twoje 10) Lower limit to dolny limit. Jeśli nie chcesz ograniczać sygnału od dołu daj "-inf".
    Pozdrawiam

    0
  • #7 24 Kwi 2013 20:59
    swider69
    Poziom 11  

    A czy byłbyś w stanie powiedzieć mi jak zmienić szybkość wykonywania symulacji ?

    0
  • #8 24 Kwi 2013 21:01
    Raphaw
    Poziom 20  

    Nie wiem, co rozumiesz pod pojęciem "szybkość wykonywania symulacji"?
    W menu Simulation->configuration paramteres możesz ustalić czy symulacja ma być stało, czy zmiennokrokowa, oraz ustalić kkrok symulacji...

    0
  • #9 24 Kwi 2013 21:05
    swider69
    Poziom 11  

    Rozumiem to, że kiedy odpalam symulację to szubko pokazują mi się tylko kreski na Time Scope i mogę jedynie zaobserwować ostatnią fazę przebiegu.

    0
  • #10 24 Kwi 2013 21:29
    Raphaw
    Poziom 20  

    W opcjach scope (druga ikonka od lewej) w zakładce data history odznacz Limit data points.

    0
  • #11 24 Kwi 2013 21:50
    swider69
    Poziom 11  

    Po zastosowaniu twoich porad w końcu się coś ukazało. Ustawiłem amplitudę 15 ponieważ chciałem zobaczyć czy obetnie ją przy zastosowaniu swojego zabezpieczenia równego 10. Niestety nic się nie stało ... Ukazała się tylko sinusoida o amplitudzie 15 i częstotliwości 10 rad/sec

    0
  • #14 24 Kwi 2013 22:44
    Raphaw
    Poziom 20  

    Źle dobrane parametry symulacji (czasami domyślne sobie zbyt dobrze nie radzą).
    Wciśnij ctrl+E ustaw Type: fixed-step i Fixed-step size: 0.001

    0
  • #15 24 Kwi 2013 22:54
    swider69
    Poziom 11  

    Nic to nie zmieniło :(

    Dodano po 4 [minuty]:

    Ok działa. Moja wina, ponieważ nie dałem na Scope sygnału sinusoidalnego żeby było widać odcięcie :) dziękuję za pomoc :)

    0
  • #16 24 Kwi 2013 22:56
    Raphaw
    Poziom 20  

    Zmieniło zmieniło ;P wyskaluj wykres (ikonka lornetki w scope), jeśli nie pomogło zmniejsz trochę częstotliwość sinusa będzie lepiej widać

    0
  • #17 24 Kwi 2013 23:13
    swider69
    Poziom 11  

    Niestety nic to nie zmieniło :P Tak jak mówiłem na osi Y maksymalna wartość to 10 ale wiem co jest przyczyną. Dziękuję jeszcze raz za pomoc :) Postaram się to teraz wykorzystać do mojego zabezpieczenia :)

    0
  • #18 28 Maj 2013 18:01
    swider69
    Poziom 11  

    Witam ponownie. Chciałbym odświeżyć nieco ten temat ponieważ mam do wykonania podobną funkcją którą muszę zrealizować na funkcji signum. Otóż do zrealizowania jest funkcja:

    Code:

           Uwyn gdy |Uwyn| < 10
    Uzi=   10   gdy |Uwyn| > 10 i Uwyn > 0
           -10  gdy |Uwyn| > 10 i Uwyn < 0


    Posiadam pewien pomysł jednak nie działa on poprawnie. Przesyłam link do tego pomysłu zrealizowany w Matlab Simulink. Bardzo prosiłbym o sprawdzenie i ewentualną pomoc ze zrealizowaniem tej funkcji.

    Funkcja

    0
  • #19 28 Maj 2013 18:04
    Raphaw
    Poziom 20  

    Naprawdę, dokładnie taką funkcję spełnia blok saturation.

    0
  • #20 28 Maj 2013 20:56
    swider69
    Poziom 11  

    Tylko, że dostałem polecenie zrealizowania tego na funkcji signum :( Chyba, że byłbyś tak pomocny i może pomógłbyś mi zrealizować tę funkcję na bloku saturation?

    Po kilku próbach pojawił mi się błąd i nie wiem jak go ominąć:

    Code:
    Unable to determine signal dimensions. There is a loop consisting of 'silnik_obcowzobny2/Add26' that cannot be resolved because signal dimensions are defined by a cyclic relationship. Specifying the signal dimensions on Inport, Mux, Selector, Demuxes will help resolve signal dimensions in the loop. You can also use the Signal Specifications to define the signal dimensions.


    Byłbyś w stanie powiedzieć w czym problem ?

    Dodano po 2 [godziny] 49 [minuty]:

    Temat do zamknięcia. Układ został zrealizowany.

    0