Transcript
MATLAB SEGÉDLET SZABÁLYOZÁSTECHNIKAI SZÁMÍTÁSOKHOZ (MATLAB 7.0.1) FONTOSABB TUDNIVALÓK ÉS UTASÍTÁSOK GYŰJTEMÉNYE 1. Bevezető tudnivalók: A MATLAB a nagybetűk és a kisbetűk között különbséget tesz, ékezet nem használható. Az utasítások között a fel-le nyíl-billentyűk segítségével lépegethetünk. Ezáltal lehetségessé válik, hogy utasítást ismételjünk meg változatlan vagy módosított formában. Ha az utasítást pontosvesszővel lezárjuk, a program nem írja ki az eredményt. Ha az utasítás után nem teszünk írásjelet, a program az eredményt is kiírja. A MATLAB programban a változók mátrixok. A vektorok és a skalár mennyiségek a mátrixok elfajuló eseteként jelennek meg. Ha szükséges, a MATLAB létrehoz egy változót, amelynek a neve ans, a név az answer szóból származik. Inf jelentése: végtelen. NaN jelentése: 0 / 0 vagy / alakú. 2. Sorvektor bevitele: Pl. az a = [ 3 5 4] sorvektoré: a = [ ] 3. Folytonos idejű (Laplace-átviteli függvénnyel jellemezhető) átviteli tag létrehozása a/ Létrehozás polinom/polinom alakban: 0,02 s+ 2 Pl. Y() s = 0,1 s+ 1 szam=[0.02 2]; (A számlálóbeli együtthatók sorvektora.) nev=[0.1 1]; (A nevezőbeli együtthatók sorvektora.) y=tf(szam,nev) (Átviteli függvény.) Az együtthatókat mindkét polinomnál s csökkenő hatványainak sorrendjében kell megadni. Ha valamelyik hatvány hiányzik, ott az együttható nulla. A létrehozás egy lépésben is lehetséges: y=tf([0.02 2],[0.1 1]) b/ Létrehozás polinom/polinom alakban, képletbeírással: s=tf('s'); y=2*(1+s*0.05) /(1+s*0.5) (Beírás bármilyen alakban.) c/ Létrehozás gyöktényezős alakban: s Pl. Y() s = 0,2 s + 10 z=[-100]; p=[-10]; k=0.2; y2=zpk(z,p,k) Egy lépésben: y2=zpk([-100], [-10], 0.2) (Zérusok sorvektora.) (Pólusok sorvektora.) (Gyöktényezős, nem időállandós(!) átviteli tényező.) (Átviteli függvény.) - 1 - d/ Létrehozás gyöktényezős alakban, képletbeírással: s=zpk('s'); y=5*(1+s*0.1) /(1+s*12) (Beírás bármilyen alakban.) e/ Holtidős tag létrehozása: Pl. T H = 0,01 s y= y.inputdelay=0.01 (Az átviteli függvény bevitele holtidő nélkül.) (A holtidő bevitele.) f/ Holtidős tag létrehozása Padé-közelítéssel: Pl. T H = 0,01 s y= (Az átviteli függvény bevitele holtidő nélkül.) y.inputdelay=0.01 (A holtidő bevitele.) y=pade(y,3) (3-adrendű Padé-közelítéses alak.) (n-edrendű: y=pade(y,n)) g/ Arányos (ideális arányos) tag létrehozása: Pl. Y ( s) = 5 y=tf(5) vagy y=tf(5,1) Megj.: s=tf('s') után y = 5 képletbeírás helytelen, mert nem átviteli függvényt eredményez (nem tagot hoz létre), hanem egyszerű változót! 4. Diszkrét idejű (z-átviteli függvénnyel jellemezhető) átviteli tag létrehozása: Értelemszerű módosításokkal ugyanazok az utasítások, mint a folytonos idejű átviteli tagok esetében, de számszerűen meg kell adni a mintavételezési idő értékét is. Pl. T = 0,01s esetén T megadása és azok az utasítások, amelyekben T szükséges: T=0.01 y=tf(szam,nev,t) z=tf('z',t) y=zpk(z,p,k,t) z=zpk('z',t) 5. Átviteli függvény kiíratása a/ Kiíratás abban az alakban, ahogyan a tagot létrehoztuk: y y1,y2 b/ Kiíratás polinom/polinom alakban: tf(y) c/ Kiíratás gyöktényezős alakban: zpk(y) Konjugált komplex gyökpár (lengő összetevő) esetén a nevezőben a másodfokú polinomot írja ki, két valós gyök (aperiodikus összetevő) esetén a szorzatokra bontott, gyöktényezős alakot. d/ Kiíratás időállandós alakban: - 2 - Az időállandós alak közvetlen kiíratására nincs mód. Alkalmazható azonban az a fogás, hogy behívjuk a Siso Design Tool -t (l. alább), és importáljuk az átviteli függvényt a kompenzáló tag C tömbjébe; ott ugyanis a program alapértelmezésben az időállandós kiíratást alkalmazza. 6. Átviteli függvény adatainak kiíratása a/ A szam, nev sorvektorok tartalmának lekérdezése: [szam,nev]=tfdata(y,'v') Csak [szam] lehet, csak [nev] nem. z -transzformált átviteli függvény esetében kiegészíthető a mintavételezési idővel is: [szam,nev,t]=tfdata(y,'v') b/ A z, p, k adatok lekérdezése: [z,p,k]=zpkdata(y,'v') z -transzformált átviteli függvény esetében kiegészíthető a mintavételezési idővel is: [szam,nev,t]=zpkdata(y,'v') c/ Átviteli függvény pólusainak kiíratása: p=pole(y) (A p változóba.) pole(y) (Az ans változóba.) d/ Átviteli függvény nevezőjére érvényes ω 0 és ζ adatok (sarokkörfrekvencia és csillapítási tényező) lekérdezése: [w0,ze]=damp(y) Ha az utasítást a damp(y) alakban alkalmazzuk, akkor a program a nevezőbeli gyökök értékét is kiírja. A damp utasítás polinomra is kiadható. e/ Átviteli függvény ω = 0 -nál érvényes K 0 időállandós körerősítésének kiíratása: K0=dcgain(y) (A K0 változóba.) dcgain(y) (Az ans változóba.) Inf jelentése végtelen. 7. Racionális törtfüggvény részlettörtekre bontása: [r,p,k]=residue(szam,nev) szam: a számláló együtthatóinak sorvektora, fokszáma: m nev: a nevező együtthatóinak sorvektora, fokszáma: n r: a részlettörtek állandóinak oszlopvektora p: a pólusok oszlopvektora k: a maradéktag (ez m n esetén nulla, csak m=n esetén különbözik nullától) A részlettörtes alak felírása Laplace-transzformált, felbontandó függvényt feltételezve: 10 0, pl. r = ; p = és k = 0 esetén Y() s = ,2 s + 0,25 s+ 0,2 5 0,2 pl. r = 5 ; p = 0 és k = 0 esetén Y () s = s+ 0,2 s s k 0esetén k a kifejezésekhez hozzáadandó. A residue utasítás kiadása előtt léteznie kell a szam, nev sorvektoroknak! - 3 - 8. Átviteli függvény egyszerűsítése a számláló és a nevező egyforma szorzat-tényezőivel: y: átviteli függvény y=minreal(y) (A kiejtendő tényezőket az alapértelmezett hibahatáron belül tekinti egyformának.) 7 y=minreal(y,1e-7) (A kiejtendő tényezőket = ± 1 10 hibahatáron belül tekinti egyformának. más értékű is lehet.) 9. Inverz Laplace-transzformáció: Pl. a visszatranszformálandó Laplace-transzformált függvény: 3 () ( 1+ s 5) V s = 1+ s 10 syms s t (Az s, t szimbolikus változók létrehozása.) V=3*(1+s*5)/(1+s*10) (V(s) beírása képletként ezen (!) a helyen.) v=ilaplace(v) A kapott függvény egyszerűsítésére szükség lehet. 10. Negatívan visszacsatolt tagok eredő átviteli függvényének (a Matlab által ajánlott) számítása: ye: az előrevezető ág átviteli függvénye yv: a visszavezető ág átviteli függvénye w: az eredő átviteli függvény w=feedback(ye,yv) 11. Átmeneti függvény, Bode-diagram, Nyquist-diagram felrajzoltatása automatikus beállításokkal: y: átviteli függvény step(y) bode(y) nyquist(y) 12. Gyök-helygörbe felrajzoltatása automatikus beállításokkal: yf: a felnyitott kör átviteli függvénye A felrajzoltatást a vizsgálandó függvény 1-es erősítésű alakjára célszerű elvégezni, mert ekkor az ábráról leolvasott gain nevű paraméterek közvetlenül erősítést jelentenek. Mivel az időállandós és a gyöktényezős alak közül a gyöktényezős íratható ki, egyszerűbb a gyöktényezős alakkal dolgozni. Ez esetben yf bevitele után yf gyöktényezős (zpk) alakját kell kiíratni, majd a függvényt a megjelenő k gyöktényezős erősítés értékkel osztva, a felrajzoltató utasítást a k-val osztott, yf/k alakra kell alkalmazni. Természetesen ekkor a leolvasott erősítés is gyöktényezős erősítést jelent. A felrajzoltató utasítás: rlocus(yf/k) 13. Egyváltozós függvény képének ábrázolása a plot utasítással: a/ A függvénykép felrajzoltatása: plot(x,y) x: az ábrázolandó függvény x-koordinátáiból alkotott sorvektor y: az ábrázolandó függvény y-koordinátáiból alkotott, ugyanolyan elemszámú sorvektor - 4 - Az x sorvektor a legegyszerűbben az alsó határ, a lépésköz és a felső határ megadásával állítható elő. Pl.: x = pi : 0.1: pi ; Az y sorvektort x ismeretében függvényutasítással kaphatjuk meg. Pl.: y = sin( x) ; Megj.: Az x és y változó lehet ugyanolyan elemszámú oszlopvektor is. Oszlopvektor létrehozható pl. sorvektor transzponáltjaként: x = ( pi : 0.1 : pi)' ; Lehetséges az is, hogy az x és az y közül az egyik sor-, a másik ugyanolyan elemszámú oszlopvektor. b/ Alkalmazási példa: átmeneti függvény felrajzoltatása 2 s időtartamra: y: átviteli függvény t = 0 : : 2 ; (sorvektor) f=step(y,t); (oszlopvektor) plot(t,f) c/ A kapott ábra szerkesztése: A legegyszerűbb mód: Az Edit Plot -ikonra (ferde nyíl) kattintunk, és utána jobb gombos menüsort alkalmazunk külön az ábrára és külön magára a görbére. A Figure ábra az Edit/Copy Figure menüponttal a vágólapra menthető. 14. Transzformációk diszkrét idejű rendszerekben a/ Átviteli tag z-átviteli függvényének meghatározása zérusrendű tartószerves esetben: z Elvi képlet: Y() z = Z[ L { Y() s }]. s z nt y: Laplace-transzformált (folytonos idejű) átviteli függvény yz: tartószerves z-transzformált (diszkrét idejű) átviteli függvény Mintavételezési idő: pl. T=0,01 s T=0.01 yz = c2d( y,t) ( continouos to discret, to= two ) vagy yz = c2d y,t,'zoh' ( ) b/ Transzformáció a z síkról a w síkra: yw: w-transzformált átviteli függvény yw = d2c yz,'tustin' ( ) c/ Transzformáció a w síkról a z síkra: yz = c2d yw, T,'tustin' ( ) d/ Inverz z-transzformáció: Pl. a visszatranszformálandó z-transzformált függvény: 5z F() z = z 1 syms z n (Az z, n szimbolikus változók létrehozása.) F=5*z/(z-1) (F(z) beírása képletként ezen (!) a helyen.) f=iztrans(f) (Az f[n] diszkrét idejű jel.) - 5 - 15. Az LTI Viewer nevű vizsgáló eszköz használata a/ Az LTI Viewer indítása: ltiview b/ A vizsgálandó átviteli tag bevitele: A File/Import menüpontokra való kattintás után a tag átviteli függvényét tartalmazó változó kiválasztásával és az OK gombra való kattintással. c/ A jobb-gombos menü pontjai: Plot Types : Megváltoztatható az ábrázolás típusa, pl. az átmeneti függvényről ( step ) a Bode-diagramra. Systems : Lekérdezhetők, s egyben kiválaszthatók és törölhetők is a vizsgált átviteli függvények. Characteristics : Adatokat szolgáltat az ábrázolt függvényekről. Stb. d/ Adatleolvasás a görbékről: A kívánt helyen a görbére kattintunk. A megjelenő adatablak a görbén húzható, ha az egér nyilát a fekete négyzet fölé visszük, és az egér bal gombját megnyomjuk. Az adatablak törlődik, ha az ábrába kattintunk. Az adatablaknak saját jobb gombos menüje is van. e/ A vizsgálati feltételek megváltoztatása: Az Edit/Viewer Preferences menüpontban. f/ Szerkeszthető ábra készítése: Az LTI Viewer képe a File/Print to Figure menüponttal küldhető át olyan szerkeszthető ábrába, amilyet a plot utasítás készít. A szerkesztés módját illetően l. a 13.c/ pontot. 16. A Siso Design Tool tervező eszköz használata a/ Az Siso Design Tool indítása: sisotool b/ A szabályozóköri tagok bevitele az eszközbe: A File/Import menüpontokra való kattintás után a tag átviteli függvényét tartalmazó változó kiválasztásával, ennek a hatásvázlat megfelelő helyére történő irányításával, és az OK gombra való kattintással. c/ A zárt kör átmeneti függvényének a felrajzoltatása: Az Analysis/Response to Step Command menüponttal (kék görbe). Vagy az Analysis/Other Loop Responses menüpontból a beállított alapesetként: step Closed Loop r to y. d/ A kompenzáló tag (szabályozó) paramétereinek a megváltoztatása: A legegyszerűbben a Current Compensator ablakban. Itt az átviteli függvény alapbeállításban időállandós alakban jelenik meg. 17. A Simulink programcsomag használata a/ A Simulink indítása: - 6 - simulink vagy a menüsoron lévő Simulink-ikonnal. b/ Új modell létrehozása: A File/New menüpontból v. a menüsor New -ikonjával. Ekkor egy ablak jelenik meg, amelyben a hatásvázlat a tömbvázlat megrajzolható. c/ A hatásvázlat megrajzolása: A simulink utasítás hatására megjelenik egy könyvtár, amelynek alkönyvtárai tartalmazzák az alkalmazható tömböket (blokkokat). A megfelelő alkönyvtárból a szükséges tömb (blokk) az egér bal gombjának lenyomva tartásával a rajzoló ablakba áthúzható. A blokkok összekötése: a nyilat az egérrel az illető be- vagy kimenet fölé visszük, a kereszt megjelenése után az egér bal gombját lenyomjuk, majd a gomb nyomva tartásával a vonalat a kívánt helyre húzzuk, végül a gombot felengedjük. Elágazás létrehozása: a nyilat a vonal kívánt helyére visszük, a Ctrl gomb lenyomása mellett az egér bal gombját lenyomjuk, majd a bal gomb nyomva tartásával a vonalat a kívánt helyre húzzuk, végül a gombot felengedjük. d/ Néhány fontosabb blokk helye: Folytonos idejű lineáris modell (polinom/polinomos): Simulink/Continuous/Transfer Fcn; Egységugrás jelforrás: Simulink/Sources/Step; Különbségképző: Simulink/Math Operations/Sum ± paraméterbeállítás; Erősítés: Simulink/Math Operations/Gain; Integrátor: Simulink/Continuous/Integrator; Oszcilloszkóp: Simulink/Sinks/Scope; A Command Window -ban már létrehozott lineáris (LTI) átviteli tag: Control System Toolbox/LTI System; Holtidőt létrehozó (késleltető) tag: Simulink/Continuous/Transport Delay; A Workspace -re kivitt változó: Simulink/Sinks/To Workspace; Multiplexer: Simulink/Signal Routing/Mux; Alrendszer: Simulink/Ports & Subsystems; A felsoroltak közül több blokk megtalálható a Simulink/Commonly Used Blocks-ban is. e/ A blokkok paramétereinek beállítása: A blokkra való kettős kattintás után, a megjelenő ablakban. f/ A szimuláció végrehajtása: Beállítása a Simulation/Configuration Parameters menüpontban. Indítása a Simulation/Start menüpontból vagy a kis fekete háromszög alakú Runikonnal. g/ A szimulációs eredmények vizsgálata: A Simulinkon belül a legegyszerűbb a Scope blokkal. A képernyő megjelenítése kettős kattintással lehetséges. Az y-tengelyen lévő határok jobb gombos kattintás után az Axes properties pontban állíthatók át. A kijelzett időtartomány határa a Parameters/General menüpont Time range ablakában módosítható. Az idő leolvasásához a Time offset előjelhelyesen nézve: hozzáadással figyelembe veendő. Az oszcilloszkópon alapértelmezésben egy időtengely van, de egynél több időtengely is beállítható, beállítási hely: Parameters/General menüpont Number of axes ablak Egy időtengelyen egy jel egyszerű csatlakoztatással vizsgálható, de egy időtengelyre több jel is felvihető a Mux (Multiplexer) elem segítségével. A Mux elemen a jelek száma kettős kattintás után állítható be. Ha az oszcilloszkóp-képernyőt a tálcára tesszük, a képernyő a következő futtatásnál az előző görbéket is megőrzi, amíg az oszcilloszkóp beállításain nem változtatunk. h/ Eredmény kirajzoltatása a MATLAB-ban: Az eredmények vizsgálata lehetséges a MATLAB-ban is: 1. A szimuláció futtatásakor a Workspace -ben létrejön egy tout nevű változó, az eredmények automatikus elemszámú idővektora, amely oszlopvektor. 2. Az idő függvényében ábrázolni kívánt jelre To Workspace blokkot kell tennünk, ez a jelet változóként a Workspace -re kiviszi. A blokkot kettős kattintás után array - ként kell megadni, ekkor a változója ugyanolyan elemszámú oszlopvektor, mint a tout. Az előjövő ablakban a változó neve is megváltoztatható. 3. A kirajzoltató utasítás, ha az ábrázolni kívánt jel x : plot(tout,x) Természetesen több To Workspace elem is alkalmazható. Két ábrázolandó jel esetén pl. a kirajzoltató utasítás, ha a jeleket x1, ill. x2 jelöli: plot(tout,x1, tout,x2) i/ Jel-felirat elhelyezése a hatásirányt jelző vonalon: A vonal kijelölése után Edit/Signal Properties. j/ Felirat elhelyezése a modell ábráján: A kívánt helyen történő kettős kattintás után. Bezárás: máshová kattintással. k/ Karakterkód: A Simulink-modell ékezetes karakterekkel történő használatához beleértve az ékezetes nevű felhasználói fiókokat is meg kell változtatni a karakterkódot. A szükséges utasítások a modell elkészítése vagy ékezetesen készült modell megnyitása előtt: bdclose all slcharacterencoding ('ISO ') Meglévő modellnél is át lehet állni az ékezetes karakterekre. A szükséges utasítás: set_param('modellnév','savedcharacterencoding', 'ISO ') Kapcsolódó irodalom: 1./ Gecsey László Neszveda József: Automatika I. laboratórium, BMF KVK 2042, jegyzet 2./ A Matlab Help menüje és dokumentációi. 3./ Hetthésy Jenő Bars Ruth Barta András: Szabályozástechnika Matlab gyakorlatok, Villamosmérnöki, 2005, BME honlap, pdf file - 8 -