Matlab tehtäviä 1. Muodosta seuraavasta differentiaaliyhtälöstä siirtofuntio. Tämä differentiaaliyhtälö saattaisi kuvata esimerkiksi yksinkertaista vaimennettua jousi-massa systeemiä, johon on liitetty ulkoinen voima. ( help tf ) ii i () + () + () = () y t y t y t u t. Laske edellisen tehtävän järjestelmän askelavaste ( help step). 3. Laske tehtävän 1 järjestelmän impulssivaste ( help impulse ). 4. Tehtävän yksi järjestelmää kuvaa tilamalli i 0 1 0 x = x+ u 1. y = [ 1 0] x Muodosta mallista Matlabin tilamalli ja simuloi sitä. ( help ss ) 5. Laske edellisen tilamallin ja siirtofunktiomallin nollat ja navat. Ovatko ne samoja? (help pzmap) 6. Mitä lsim-komennolla voidaan tehdä? Kokeile. 7. Diskretoi tehtävän yksi siirtofuntio eri menetelmmillä sekä simuloi ja piirrä askelvasteet samaan kuvaan jatkuvan ajan signaalin kanssa. Diskretointiväli T s = 1. ( help cd ) 8. Piirrä tehtävän yksi järjestelmän Boden diagrammi. ( help Bode ) 9. Määritä tehtävän yksi järjestelmän vaihe- ja vahvistusvarat. ( help margin ) 1/7
Matlab tehtäviä Vastaukset 1. Ennen kuin voimme muodostaa siirtofunktiosta Matlab-objektin on meidän tiedettävä, mikä on oikea siirtofunktio. Siirtofunktio saadaan differentiaaliyhtälöstä Laplace muuntamalla sekä asettamalla alkuarvot nolliksi. Tämä on helppo tehdä, kun muistaa, että derivointia vastaa s:llä kertominen. ii i () + () + () = () sy( s) sy( s) Y( s) U( s) Y( s) G( s) U( s) s + s+ y t y t y t u t + + = = = Nyt voimme muodostaa siirtofunktiosta Matlab objektin tf -komennolla. Gs=tf([], [1 1 ]) Transfer function: ----------- s^ + s +. Askelvasteen laskemiseen on monta tapaa. Helpoin ja kätevin on tehdä se suoraan valmiin komennon step avulla. Komennolle annetaan parametriksi järjestelmää kuvaava lineaarinen malli, joita tf komennon tuottamat mallit ovat. step(gs) Kuva 1. Tehtävän 1 järjestelmän askelvaste. Toinen ja monimutkaisempi tapa laskea askelvaste olisi ollut Simulinkin mallin käyttäminen. Asiaan voi tutustua tarkemmin kurssilla AS-74.101 Tietokonesimulointi. /7
3. Impulssivasteella tarkoitetaan järjestelmän ulostuloa kun sisäänmenona on impulssi. Impulssi on äärettömän korkea ja kapea signaali, jonka pinta-ala on yksi. Aivan samalla tavalla kuin edellisesä tehtävässä impulssivaste saadaan laskettua komennolla impulse. impulse(gs) Kuva. Impulssivaste. 4. Säätötekniikassa ei ole yhtä ainoata tapaa esittää järjestelmän mallia. Kussakin tavassa on omat hyvät ja huonot puolensa. Tilamallin muodostaminen on aivan yhtä suoraviivaista kuin siirtofunktiomallin. Järjestelmää kuvaa tilamalli i 0 1 0 x = Ax + Bu = x + u 1 y = Cx + Du = [ 1 0] x + 0 Voimme lukea tämän Matlab:in komennolla ss(...). A=[0 1;- -1];B=[0;];C=[1 0];D=0; sp=ss(a, B,C,D); Nyt simuloinnin voi suorittaa avian samalla tavalla kuin tehtävässä ja 3. Mallin paikalle laitamme vain määrittelemämme tilamallin sp. 5. Järjestelmän nollien ja erityisesti napojen sijainnilla kompleksitasossa on suuri merkitys järjestelmän käyttäytymisessä. Jos kaikki navat ovat vasemmassa puolitasossa, niin järjestelmä on stabiili. Navat vastaavat siirtofunktiossa nimittäjän eli karakteristisen polynomin nollakohtia. Tilamallissa napoja vastaa matriisin A eli systeemimatriisin ominaisarvot. Matlabissa on valmis komento pzmap napa-nolla kuvion laskemiseen. Piirretään seuraavaksi molempien tila- ja siirtofunktiomallin napa-nolla kuviot. pzmap(gs) 3/7
pzmap(sp) Kuva 3. Järjestelmän napa-nolla kuvio. Huomaamme, että molemmista malleista piirretyt napa-nolla kuviot ovat samanlaisia aivan niin kuin pitääkin. 6. Lsim-komennolla voidaan simuloida lineaarisen mallin käyttäytymistä mielivaltaisella inputilla. Tarkat tiedot komennon käytöstä saa helpeistä: help lsim. Aluksi on muodostettava sisään menevä signaali. Kokeillaan, miten järjestelmä käyttäytyy, jos inputtina on aluksi aikayksikköä ramppi ja sen jälkeen nolla: t=0:0.1:10; input1=t(1:0) ; input=zeros(81,1); input=[input1; input]; plot(t, input) Kuva 4. Input. 4/7
Nyt voimme käyttää lsim-komentoa. lsim(gs, input, t) plot(t, input) Kuva 5. Järjestelmän ulostulo. Järjestelmän käyttäytyy aivan niin kuin oli odotettavissa. Differentiaaliyhtälö saattaisi olla peräisen järjestelmästä, missä on vaunuun kytketty ulkoinen voima sekä vaimentava sylinteri ja jousi. Aluksi ulkoinen voima vetää vaunua puoleensa niin kauan kuin voima loppuu ( t = s ). Tämän jälkeen jouseen on varastoitunut energiaa, mikä vetää vaunua takaisin kohti tasapainopistettä. Nopeuteen verrannollinen veimennus kuluttaa enegiaa, jolloin vaunu lopulta asettuu tasapainopisteeseensä. 7. Joskus on tarpeen käsitellä diskreettejä siirtofunktioita jatkuvan ajan sijaan. Syy tähän on tietokoneiden nopea lisääntyminen ja yleistyminen osana säätäjää. Voi olla tarpeen suunnitella säädin suoraan diskreetiksi, jolloin myös prosessi on diskretoitava. Matlabissa on oma funktio cd, joka on tarkoitettu jatkuvan lineaarisen mallin diskretointiin. Kokeillaan käyttää komentoa tehtävän yksi järjestelmään ja vertaillaan jatkuvan sekä diskreettien järjestelmien askelvasteita. Aluksi piirretään jatkuvan ajan asklevsate. step(gs) Koska haluamme piirtää samaan kuvaan myös muut vasteet, annetaan komento hold on. hold on Nyt voimme diskretoida siirtofunktion Gs ja piirtää diskreetit askelvasteet suoraan stepkomennolla. Gzoh=cd(Gs, 1, 'zoh'); step(gzoh) Gfoh=cd(Gs, 1, 'foh'); step(gfoh) 5/7
Gtustin=cd(Gs, 1, 'tustin'); step(gtustin) Tuloksena saamme seuraavan kuvan. Kuva 6. Askelvasteiden vertailua. 8. Boden diagrammin piirtämiseen on valmis komento Bode(...). Tämä piirtää vahvistus- ja vaihekäyrän logaritmisella asteikolla. bode(gs) grid Komennolla grid saadaan apuviivat. Kuva 7. Tehtävän yksi järjestelmän Boden-diagrammi. 6/7
9. Useimmiten emme piirrä Boden diagrammia pelkän piirtämisen ilosta, vaan haluamme tietää, mitkä ovat vahvistus- ja vaihevara. Komennolla margin saamme laskettua nämä arvot. margin(gs) Kuva 8. Vahvistus- ja vaihevara. Huomaamme, että vahvistusvara on ääretön sekä vaihevara 60 astetta. Tämä saavutetaan taajuudella 1.73 rad/s. 7/7