Introduksjon til MATLAB ® 1 ___________________________________________________________________ Introduksjon til MATLAB ® Høgskolen i Agder Regulerings teknikk 2005 Morten Ottestad 2 1.5 1 0.5 0 10 5 0 250 M.Ottestad 200 −1− 150 100 50 0 Introduksjon til MATLAB ® 2 ___________________________________________________________________ 1. BLOKKREDUKSJON I MATLAB_____________________________________ 3 1.1 Parallell G1(s) G2(s) _____________________________________________________ 3 1.2 serie G1(s) G2(s) ________________________________________________________ 3 1.3 Luket sløyfe ____________________________________________________________ 4 1.4 Tilbakekopling _________________________________________________________ 4 1.5 Eksempel på et sammensatt system ________________________________________ 4 2. Simulering i tidsplanet_______________________________________________ 6 2.1 Sprang respons _________________________________________________________ 6 2.2 Impuls respons _________________________________________________________ 7 2.3 Responsen til et tilfeldig inngangs signal ____________________________________ 7 2.4 Sprangresponsen til et anneordens system med varierende verdier på ξ __________ 8 3. Frekvensplan analyse _______________________________________________ 8 3.1 Bode diagrammet _______________________________________________________ 8 3.2 Fase og amplitude margin ________________________________________________ 9 4. S-plan analyse ____________________________________________________ 11 4.1 ANENORDENS SYSTEM PÅ STANDARDFORM(K, ξ , ω0 ) _________________ 11 4.2 Samenhengen mellom Polenes plasering og systemets sprangrespons ___________ 11 4.3 Rotlocus metoden ______________________________________________________ 12 5. Tilstansdrom modeller ______________________________________________ 14 6. Forskjelige representasjon av lineære systemer i Matlab __________________ 20 7. Introduksjon til simulink ____________________________________________ 23 M.Ottestad −2− Introduksjon til MATLAB ® 3 ___________________________________________________________________ 1.BLOKKREDUKSJON I MATLAB %1. prosess G1(s) num1=[1]; den1=[1 10]; %2. prosess G2(s) num2=[1 1]; den2=[1 6]; Printsys(num1,den1) Printsys(num2,den2) num/den = num/den = %Slik setter vi inn teller polynomet 1⋅s0 %Slik setter vi inn nevner polynomet 1⋅s1 +10⋅s0 %Slik setter vi inn teller polynomet 1⋅s1 +1⋅s0 %Slik setter vi inn nevner polynomet 1⋅s1 +6⋅s0 %skriver ut G1(s) %Skriver ut G2(s) 1 -----s + 10 s + 1 ----s + 6 1.1 Parallell G1(s) G2(s) [nump,denp]=parallel(num1,den1,num2,den2); printsys(nump,denp) num/den = s^2 + 12 s + 16 --------------s^2 + 16 s + 60 1.2 serie G1(s) G2(s) [nums,dens]=series(num1,den1,num2,den2); %Serie kopler G1(s)med G2(s) printsys(nums,dens) %Skriver utt resultat num/den = M.Ottestad s + 1 --------------- −3− Introduksjon til MATLAB ® 4 ___________________________________________________________________ s^2 + 16 s + 60 1.3 Luket sløyfe [numl,denl]=cloop(nums,dens); printsys(numl,denl) num/den = %Finner lukket sløyfe transferfunksjon s + 1 --------------s^2 + 17 s + 61 1.4 Tilbakekopling [numf,denf]=feedback(num1,den1,num2,den2); %Finner lukket sløyfe transferfunksjon når det er dynamikk i %tilbakekoplingen printsys(numf,denf) num/den = s + 6 --------------s^2 + 17 s + 61 1.5Eksempel på et sammensatt system Trinn 1:sett transferfunksjonene inn i matlab Trinn 2:Flytt H2 bak G4 Trinn 3:Eliminere G3G4H1 sløyfen Trinn 4:Eliminere sløyfen som inneholder H2 Trinn 5.Eliminere den siste sløyfen M.Ottestad −4− Introduksjon til MATLAB ® 5 ___________________________________________________________________ ng1=[1]; dg1=[1 10]; %trinn1 ng2=[1]; dg2=[1 1]; ng3=[1 0 1]; dg3=[1 4 4]; ng4=[1 1]; dg4=[1 6] ; nh1=[1 1]; dh1=[1 2]; nh2=[2]; dh2=[1]; nh3=[1]; dh3=[1]; [n1,d1]=series(nh2,dh2,dg4,ng4); %trinn2 [n2a,d2a]=series(ng3,dg3,ng4,dg4); %trinn3 [n2,d2]=feedback(n2a,d2a,nh1,dh1,+1); [n3a,d3a]=series(ng2,dg2,n2,d2); %trinn4 [n3,d3]=feedback(n3a,d3a,n1,d1); [n4,d4]=series(ng1,dg1,n3,d3); %trinn5 [num,den]=cloop(n4,d4); printsys(num,den) num/den = s^5 + 4 s^4 + 6 s^3 + 6 s^2 + 5 s + 2 ---------------------------------------------------------------12 s^6 + 205 s^5 + 1066 s^4 + 2517 s^3 + 3128 s^2 + 2196 s + 712 M.Ottestad −5− Introduksjon til MATLAB ® 6 ___________________________________________________________________ Figur 7 viser hvordan en trinnvis blokkreduksjoner foretas samt resulterende transferfunktion 2. Simulering i tidsplanet 2.1 Sprang respons 5s + 2 Vi ser s + 3 ⋅ s + 12 hvordan utgangen til prosessen vil reagere på et enhets sprang på inngangen Sprang respons til en transfer funksjon fines på følgende måte: Sprang responsen til en prosessen med transferfunksjon H ( s) = num=[5 2]; den=[1 3 12]; printsys(num,den) step(num,den) grid %teller transferfunksjn %nevner transferfunksjn %plot sprang respons %tegner ruter num/den = 5 s + 2 -------------s^2 + 3 s + 12 1 0.9 0.8 0.7 Amplitude 0.6 0.5 0.4 0.3 0.2 0.1 0 Av sprang responsen kan vi finne 1 Oversvings faktoren 2 Stigetid 3 Innstillingtid 4 svingefrekvens M.Ottestad −6− 2 Introduksjon til MATLAB ® 7 ___________________________________________________________________ 2.2 Impuls respons Impuls responsen til prosessen med transferfunksjon H(s) viser Hvordan utgangen til prosessen vil reagere på en enhets impuls på inngangen 7 Impuls respons til en transfer funksjon H ( s) = 2 fines på følgende måte: s + 0.6 ⋅ s + 4 num=[7]; den=[1 0.6 4]; impulse(num,den) grid %teller transferfunksjn %nevner transferfunksjn %plot impuls respons %tegner ruter 3 2.5 2 Amplitude 1.5 1 0.5 0 -0.5 -1 -1.5 -2 0 5 10 Time (secs) 15 20 2.3 Responsen til et tilfeldig inngangs signal Responsen til en prosess når den påtrykkes et tilfeldig inngangs signal fines på følgende måte: t=0:0.01:4*pi; u=sin(3*t); num=1; den=[1 0.6 1]; [x,y]=lsim(num,den,u,t); plot(t,[u' x]); grid %Definerer simulerings tid %Genererer inngangssignal sin( t) %Teller transferfunksjn %Nevner transferfunksjn %Simulerer 1 M.Ottestad −7− Introduksjon til MATLAB ® 8 ___________________________________________________________________ 2.4Sprangresponsen til et anneordens system med varierende verdier på ξ t=[0:0.1:20]; i=1; for del =0.1:0.1:1 n=1; d=[1 2*del 1]; y(:,i)=step(n,d,t); i=i+1; end mesh(y,[-120 30]) 2 1.5 1 0.5 0 10 5 0 250 200 150 100 50 0 3.Frekvensplan analyse 3.1 Bode diagrammet Når et system påtrykkes en ren sinus på inngangen vil det etter en tid gi en ren sinus på utgangen,men denne vil oftest ha en annen amplitude og fase en inngangen. I avsnitt 2.3 så vi at inngangs signalet hadde en amplitude på 1 mens utgangs signalet innstiller seg på en amplitude på ca 0.1 (0.1 =-20 dB)og en fase dreining på nær 180 . Avsnitt 2.3 gir informasjon om amplitude og fase ved en enkelt frekvens ( =3).Mens Bode diagrammet gir informasjon om 1 Forsterkningen til systemet ved forskjellige frekvenser 2 Fase dreiningen gjennom systemet ved forskjellige frekvenser num=1; den=[1 0.6 1]; bode(num,den) M.Ottestad %Teller transferfunksjn %Nevner transferfunksjn %tegner bode plot for H(s) −8− Introduksjon til MATLAB ® 9 ___________________________________________________________________ Gain dB 20 0 -20 -40 -1 10 0 1 10 Frequency (rad/sec) 10 Phase deg 0 -90 -180 -1 0 10 1 10 Frequency (rad/sec) 10 ved å sammenholde figur 11 og 12 ser vi at di er i god overensstemmelse ved ω =3 i fig 12 har vi en demping på ca -20dB og en fase dreining på nær 180° . 3.2 Fase og amplitude margin Der som vi påtrykker en prosess et sinus signal med varierende frekvenser(fig 13) vil vi ved en gitt frekvens kunne få 180° fase dreining gjennom prosessen. 500 3 s +15s 2+50s Signal Generator Transfer Fcn Scope Dersom vi ved denne frekvens har en forsterkning F ≥ 1 ( F ≥ 0 dB)ser vi av fig 14 at signalet på utgangen vil være større eller lik signalet på inngangen samtidig som det er 180° grader etter i fase + 500 Dersom vi luker sløyfen som i fig 15 samtidig som vi slår av signalgeneratoren vil prosessen fremdeles ha same eller større inngangs signal som før.[(-) tegnet i sumatoren gir 180 ° fasedreining i tillegg til di 180° vi hadde fra prosessen,Totalt gir dette 360° eller 0° fase dreining] M.Ottestad −9− Introduksjon til MATLAB ® 10 ___________________________________________________________________ Signal Generator 500 + Sum s 3 + 15s 2 + 50s Scope Transfer Fcn Vi har nå en tibakekoplet prosess som leverer sit eget inngangs signal slik at den vil bli stående å svinge med konstant amplitude,eller verre den vil svinge med stadig større amplitude,vi har en ustabil prosess Ut fra dette kan vi sette opp stabilitetsbetingelsene for et tilbake koplet system i åpen sløyfe stabilitetsbetingelsene Når vi har en fasedreining på 180° må forsterkningen være mindre en 1 (0 db) for å finne fase og forsterknings marginen til en prosess gjør vi som følger: Gain dB num=500; %Teller transferfunksjn den=[1 15 50 0]; %Nevner transferfunksjn margin(num,den) Warning: Divide by zero Gm=3.522 dB, (w= 7.071) Pm=11.42 deg. (w=5.716) 50 0 -50 -100 -1 10 0 1 10 10 Frequency (rad/sec) 2 10 Phase deg 0 -90 -180 -270 -360 -1 10 0 10 1 10 2 10 Som vi ser av fig 16. har vi Pm =FASEMARGIN φm = 11,42 ved ωc = 5.715 Gm =FORSTERKNINGSMARGIN ∆K =3.52 dB ved ω180 = 7.071 M.Ottestad − 10 − Introduksjon til MATLAB ® 11 ___________________________________________________________________ 4. S-plan analyse 4.1ANENORDENS SYSTEM PÅ STANDARDFORM(K, ξ , ω0 ) K = forstekning ξ= relativdempningsfaktor ω0= udempet resonans frekvens [rad/sek] K ⋅ ω 20 H (s) = 2 La oss finne systemets poler uttrykt ved ω0 og ξ s + 2 ⋅ ξ ⋅ ω 0 s + ω 20 s 2 + 2 ⋅ ξ ⋅ ω 0 s + ω 20 = 0 som gir følgende poler : P1 , P2 = −ξ ⋅ ω 0 ± ω 0 ξ 2 − 1 = −ξ ⋅ ω 0 ± Jω 0 1 − ξ 2 Vi ser at polene kan bli komplekse når ξ har en verdi som ligger mellom 0 og 1 Sammenhengen mellom ξ og polplaseringen s planet rotutrykk Relativdempning Polplasering 2 1−ξ ≤ 0 0 ≤ ξ <1 Kompleks konjugerte poler 2 1−ξ = 1 ξ =1 Reele og samenfallende poler 2 1−ξ > 0 ξ >1 Reelle og forskjelige poler Vi kan tegne banen polene vil bevege seg på når går fra 0 til 1 og ω0 holdes konstant vi ser av figuren at lengden på vektoren er ω0 og vinkelen α = sin-1( ζ) Vinkelen kalles også fase forskyvningen 4.2Samenhengen mellom Polenes plasering og systemets sprangrespons KARAKTERISTISKE STØRELSER FOR SPRANGRESPONSEN Responstid Tr: Er den tiden det tar for utgangen å nå 90 % av den verdien ugangen vil ha når tiden går mot uendelig eller sasjonærverdien 1.3 Tr = ω0 ⋅ 1− ξ2 Ovessvingstid To:Er den tiden det tar for for utgangen å nå sin maksimale verdi (denne finnes ved å sette den deriverte av sprangresponsen til null) Tr = M.Ottestad π ω0 ⋅ 1− ξ2 − 11 − Introduksjon til MATLAB ® 12 ___________________________________________________________________ Periodetid Tp:Er den tiden mellom to påhverandre føgende topper i sprangresponsen 1.3 Tr = ω0 ⋅ 1− ξ2 Innstilingstid Ti : Er den tiden det tar før sprangresponsen er innenfor et bånd som begrenses av ±ε % av stasjonærverdien − ln(ε ⋅ 1 − ξ 2 ) Tr = ω 0 ⋅ξ Oversvings faktor δ: Er forholdet mellom maks oversving og stasjonærverdien til sprangresponsen. ξ ⋅π δ =e 1−ξ 2 eller ξ = − ln(δ ) π + (ln(δ )) 2 2 4.3 Rotlocus metoden På figur 19 ser vi et tilbakekoplet system med en prosess H(s).Avvikssignalet forsterkes med en forsetkning Kp 1 Vi kan nå finne transferfunksjonen til den lukede sløyfen Transferfunksjomen for luket sløyfe 1 H (s) = 3 s + 3s 2 + 2 s Røtene til nevneren i T(s) vil endres med endret verdi på Kp Dersom vi endrer Kp i små trin vil vi se at røtene(polene) M.Ottestad − 12 − Introduksjon til MATLAB ® 13 ___________________________________________________________________ til T(s) vil bevege seg langs en bane en bane i s-planet se fig 18 Dersom vi nå tegner inn linjene for =[0.1 0.2 0.3 ...0.9 1] og linjene for 0 Dersom vi nå velger den Kp Verdien som liger i sjeringspunktet mellom rotbanen og =0.6 linjen vil luketsløyfe få en relativdempning på 0.6 EKSEMPEL num=1; den=[1 3 2 0]; rlocus(num,den) sgrid %Teller i transfer funksjn %Nevner i transferfunksjn % Tegner rot banene % Tegner linjer for ξ og ω0 4 3 2 Imag Axis 1 0 -1 -2 -3 -4 -4 -3 -2 -1 0 1 Real Axis 2 3 4 Select a point in the graphics window % Nårdu har valg punktet får du fløgende opplysninger k = 1.4157 %Kp = p= % Polene er plasert -2.4145 -0.2927 + 0.7076i -0.2927 - 0.7076i M.Ottestad − 13 − Introduksjon til MATLAB ® 14 ___________________________________________________________________ 5.Tilstansdrom modeller Matlab introduksjon Kap 1 Intro til Matlab, step response Eksempel 1 vi skal se hva som skjer når et hjuloppheng utsettes for et sprang (fortaus kant )i figuren under ser du en prinsip skise av et hjuloppheng For å simulere systemet må vi ha en matematisk model av hjulopphenget X m 2 V 2 X1=vertikal posisjon nav x2=vertikal posisjon bil V1=vertikal hastighet nav V2=vertikal hastighet bil U=vertikal posisjon vei m1 = 10 [kg] m2 = 250[kg] Kw = 500000[N/m] Ks = 10000[N/m]; b = 10000[Ns/m] 2 K s b X 1 m V 1 1 K w U Kraft balanse nav ⋅ m1 ⋅ V1 = K W ⋅ (U − X1 ) − K s ⋅ ( X1 − X 2 ) − B ⋅ (V1 − V2 ) ⋅ KW K B ⋅ (U − X1 ) − s ⋅ ( X1 − X 2 ) − ⋅ (V1 − V2 ) m1 m1 m1 Kraftbalanse bil V1 = M.Ottestad − 14 − Introduksjon til MATLAB ® 15 ___________________________________________________________________ ⋅ m2 ⋅ V2 = K s ⋅ ( X1 − X 2 ) + B ⋅ (V1 − V2 ) ⋅ Ks B ⋅ ( X1 − X 2 ) + ⋅ (V1 − V2 ) m2 m2 Samenheng mellom hastighet og posisjon V2 = ⋅ X1 = V1 ⋅ X 2 = V1 Vi har nå fire ligninher som beskriver hjulophenget: ⋅ X1 = V1 ⋅ V1 = KW K B ⋅ (U − X1 ) − s ⋅ ( X1 − X 2 ) − ⋅ (V1 − V2 ) m1 m1 m1 ⋅ X2 = V ⋅ Ks B ⋅ ( X1 − X 2 ) + ⋅ (V1 − V2 ) m2 m2 Ved å ordne lit på ligningene kan vi 0 X1 1 ⋅ V1 ⎡ X. ⎤ ⎡ ( ) K K + b1 − ⎢ w ⎢ .1 ⎥ X1 − s ⋅ V1 ⎢ ⎢ V1 ⎥ m1 m1 ⎢ . ⎥=⎢ 0 X1 0 ⋅ V1 ⎢ X2 ⎥ ⎢ K b s ⎢ V. ⎥ ⎢ ⋅ V1 X1 ⎣ 2 ⎦ ⎢⎣ m2 m2 V2 = få dem på følgende form; 0 ⋅ X2 0 ⋅ V2 ⎤ −Ks b1 ⎥ ⎡ 0 ⎤ ⋅ X2 ⋅ V2 ⎥ ⎢ K w ⋅U⎥ m1 m1 ⎥ + ⎢ m1 ⎥ 0 ⋅ X2 1 ⋅ V2 ⎥ ⎢ 0 ⎥ Ks −b ⎥ ⎢ ⋅ X2 ⋅ V2 ⎥ ⎣ 0 ⎦ ⎥⎦ m2 m2 Ligning A Vi har nå en beskrivelse av alle systemets tilstander som første ordens dif ligninger Denne måten å beskrive lineæresystemet kalles tilstandsrom form eller state space form I state space for beskrives altid ligningene på følgende form: ⋅ X = A ⋅ X + B ⋅U Y = C⋅X Ligning B der X er tilstands vektoren ,A er systemmatrisen, B pådrags matrisen C er måle matrisen i hjulophenget velger vi bilens posisjon X1 til være utgangen Y Da blir 0 1 0 0 ⎤ ⎡ ⎡ 0 ⎤ ⎡ X1 ⎤ ⎢− ( K s + K w ) − b1 − K s b1 ⎥ ⎢ Kw ⎥ ⎥ ⎢ ⎢ V1 m1 m1 m1 m1 ⎥ ⎢ m1 ⎥ ⎢ ⎥ A=⎢ 0 0 0 1 ⎥,, X = ⎢ X 2 ⎥,, B = ⎢ 0 ⎥,, C = [1 0 0 0] ⎢ Ks Ks b −b ⎥ ⎥ ⎢ ⎢V ⎥ ⎢ ⎥ ⎣ 2⎦ ⎣ 0 ⎦ m2 m2 m2 m2 ⎥⎦ ⎢⎣ Sett disse verdiene inn i ligning 2 multipliser ut å sjek at resultatet er i overenstemmelse med ligning 1 M.Ottestad − 15 − Introduksjon til MATLAB ® 16 ___________________________________________________________________ Du kan enten skrive komandoene ret inn matlab command window eller du kan skrive alle komandoene inn i en m-fil og så kjøre filen. legg m-filene i same direktory som du kjører matlab fra Lag en m-fil i Notepad som du kaller test1.m tast inn følgende linjer: m1 = 10; m2 = 250; Kw = 500000; Ks = 10000; b = 10000; Dette programet definerer en rekke konstantene Gå over i matlab command window og skriv : test1 Matlab vil nå lese inn innholdet av filen "test1.m" Du vil ikke få noen respons fra matlab når du kjører "test1" dersom du ikke har glemt et semikolon i programet, men konstantene er definert i matlab slik at du kann bruke dem Dette kan du teste ved å skrive Kw Matlab vil da svare med Kw = 500000 Gå tilbake til notepad Vi skal nå skrive matrisene A,B,C,D inni m-filen test1 skriv inn følgende linjer A = [0 1 0 0 -(Ks+Kw)/m1 -b/m1 Ks/m1 b/m1 0 0 0 1 Ks/m2 b/m2 -Ks/m2 -b/m2]; B = [0 Kw/m1 0 0]; C = [1 0 0 0]; D = [0]; husk å lagre filen NÅ Leg merke til at det må være space melom hvert tall i en matrise og at rekkene adskiles med linjeskift.Dersom du ønsker å benytte linjeskift uten at det skal oppfates som en ny linje må du avslutte linjen med tre punktum (...) Eksempel , Skriv følgende inn i matlab list = [1 2 3 ... 4 5 6] (ikke avslut linjen med semi kolon) og samenlign dette med list = [1 2 3 4 5 6] En ekvivalent måte å skrive inn matriser på er å skile rekkene med semikolon B = [0; Kw/m1; 0; 0]; Du kunne også ha benyttet transponer opperatoren(') får å skrive inn B matrisen B = [0 Kw/m1 0 0]' ; Kjør m-filen test1 for å få lest A,B,C,D inn i matlab Du vil fremdeles ikke se noen respons fra malab når du kjører filen Vi har nå nok informasjon til å finne sprangresponsen til systemet.Skriv innen siste linje i programet test1: step(A,B,C,D,1) M.Ottestad − 16 − Introduksjon til MATLAB ® 17 ___________________________________________________________________ 1.4 1.2 Amplitude 1 0.8 0.6 0.4 0.2 0 0 0.05 0.1 Time (secs) 0.15 0.2 "1" i komandoen step betyr at du skal benytte pådraget i systemet (i dette tilfelet de eneste) Kjør m-filen din igjen og du vil få opp en skjerm som vil se ut som figuren over Den viser sprang responsen til til systemet i de 0.2 første sekunnene La oss for søke å se sprangresponsen for 1 sekun . Gå til bake til m-filen å skriv t = 0:0.01:1; på linjen over step komandoen denne komandoen genererer en vektor som første ellementet er 0 siste er 1 de melomligende har lik avstand 0.01, t =0 ,0.01 ,0.02.......1 . Modifiser step komandoen til step(A,B,C,D,1,t) 1.4 1.2 1 M.Ottestad − 17 − Introduksjon til MATLAB ® 18 ___________________________________________________________________ Når du nå kjører m-filen din vil du få et resultat som i figuren ovver Istede for å plote sprangresponsen kan vi lagre den i en variabel y som vi kan plote senere y = step(A,B,C,D,1,t); Vi kan nå plotte y som funksjon av t ved å benytte plot komandoen plot(t,y) 1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 0.2 0.4 0.6 0.8 1 Vi ser av figuren over at første variabel (t)kommer på horisontal aksen og andre variabel (y)kommer på vertikal aksen .Vi kan skifte linje stil ved å endre på plotkomandoen plot(t,y,':') 1.4 1.2 1 M.Ottestad − 18 − Introduksjon til MATLAB ® 19 ___________________________________________________________________ Vi ser at linjen blir dottet Vi kan endre farge på linjene ved plot(t,y,'r:') Andre muligheter du kan prøve er solid red r dashed -green g dotted : blue b dashdot -. white w Eller prøv help plot for mer informasjon Merking av akser Vi kan sette navn på akkser og titel på plotet ved å skrive inn føgende linger i m-filen . plot(t,y) xlabel('Tid i sekunner'); ylabel('Hjul posisjon i meter'); title('Sprangrespons for bilhjul -- b = 10000 -- M.Ott, Regtek , test1'); Sprangrespons for bilhjul -- b = 10000 -- M.Ott, Regtek , test1 1.4 Hjul posisjon i meter 1.2 1 0.8 0.6 0.4 0.2 0 0 0.2 0.4 0.6 Tid i sekunner 0.8 1 Vi har nå plottet hjulets posisjon Whew! The wheel position after the step input is done.: Vi kan nå plote bilens posisjon ved å endre målematrisen C Cbil = [0 0 1 0]; ybil = step(A,B,Cbil,D,1,t); plot(t,y,'r--',t,ybil,'g-'); xlabel('Tid i sekunner'); ylabel('Hjul posisjon i meter'); title('Sprangrespons for bilhjul og bil -- b = 10000 -- M.Ott, Regtek ,test1') text(0.15,1.1,'Bilens posisjon') text(0.1,1.3,'hjulets posisjon') M.Ottestad − 19 − Introduksjon til MATLAB ® 20 ___________________________________________________________________ Sprangrespons for bilhjul og bil -- b = 10000 -- M.Ott, Regtek ,test1 1.4 hjulets posisjon 1.2 Hjul posisjon i meter Bilens posisjon 1 0.8 0.6 0.4 0.2 0 0 0.2 0.4 0.6 Tid i sekunner 0.8 1 Som vi ser av figuren har vi fått tekst inn i figuren ved hjelp av komandoene text(0.15,1.1,'Bilens posisjon') text(0.1,1.3,'hjulets posisjon') 6.Forskjelige representasjon av lineære systemer i Matlab Det er flere måter å beskrive linære systemer state-space representation er git av ligningen: . x = Ax + Bu y = Cx +Du Hvor x er en n-vektor, A er en nxn matrise B er en n-vektor, u og y er skalare størelse, og C er en n-reke vektorr. ( vektor x blir kalt tilstander state). Matlab brukker forkortelsen ss for state-space. Fra foregående kapitel har vi en ss representasjon av et hjuloppheng 0 1 0 0 ⎤ ⎡ ⎡ 0 ⎤ ⎡ X1 ⎤ K + K − K ( ) − b b w s 1 1 ⎥ ⎢− s ⎢ Kw ⎥ ⎥ ⎢ ⎢ V1 m1 m1 m1 m1 ⎥ ⎢ m1 ⎥ ⎢ ⎥ A=⎢ 0 0 0 1 ⎥,, X = ⎢ X 2 ⎥,, B = ⎢ 0 ⎥,, C = [1 0 0 0] ⎢ Ks Ks b −b ⎥ ⎥ ⎢ ⎢V ⎥ ⎢ ⎥ 0 ⎦ 2 ⎦ ⎣ ⎣ m m m m ⎥ 2 2 2 2 ⎦ ⎣⎢ M.Ottestad − 20 − Introduksjon til MATLAB ® 21 ___________________________________________________________________ Matrisene på foregående side skrives i matlab som sist; A = [0 1 0 0 -(Ks+Kw)/m1 -b/m1 Ks/m1 b/m1 0 0 0 1 Ks/m2 b/m2 -Ks/m2 -b/m2]; B = [0 Kw/m1 0 0]; C = [1 0 0 0]; D = [0]; Transferfunksjonen til et system er Laplace transformasjonen av inngangen dividert på utgangen Y(s) b0 sm + b1 s(m-1) + ... + bm H(s) = ------ = -----------------------------------------U(s) sn + a1 s(n-1) + ... + a(n-1) s + an I matlab forkortes transferfunksjon med tf I matlab representeres transferfunksjonen ved hjep av to vektorer som inneholder i teller og nevner polynomet teller = [b0 b1 ... bm] nevner = [a0 a1 a2 ... an] transfer funksionen til hjulopphenget fra del1 kan vi finne vef hjelp av komandoen ss2tf som tar ss representasjonen og gjør den om til tf legg følgende komandoene til m-filen test1 og kjør den: [teller,nevner] = ss2tf(A,B,C,D); step(teller,nevner,t) 1.4 1.2 Amplitude 1 0.8 0.6 0.4 02 Som vi ser av figuren over blir resultatet det samme som simuleringen vi gjore i forige kapitel step(A,B,C,D,1,t) .Vi kan verifisere dette ved å plote begge i samme vindu subplot(2,1,1); step(A,B,C,D,1,t); title('Sprangrespons for state-space ligning'); [teller,nevner] = ss2tf(A,B,C,D); subplot(2,1,2); step(teller,nevner,t); M.Ottestad − 21 − Introduksjon til MATLAB ® 22 ___________________________________________________________________ title('Sprang response for transfer funkson'); Sprangrespons for state-space ligning Amplitude 1.5 1 0.5 0 0 0.2 0.4 0.6 0.8 Timefor (secs) Sprang response transfer funkson 1 0.2 1 Amplitude 1.5 1 0.5 0 0 0.4 0.6 Time (secs) 0.8 Som vi ser ga det samme resultat.En trede måte å representere et lineært system er ved å faktorisere teller og nevner slik at vi finner poler og nulpunktene til transferfunksjonen (s - p_1)(s - p_2) ... (s - p_m) H(s) = k -----------------------------------(s - z_1)(s - z_2) ... ... (s - z_n) Polene og nullpunktene til systemet kan vi finne ved hjelp av følgende matlab komando tf2zp eller ss2zp [z,p,k] = tf2zp(teller,nevner); [z2,p2,k2] = ss2zp(A,B,C,D); M.Ottestad − 22 − Introduksjon til MATLAB ® 23 ___________________________________________________________________ 7. Introduksjon til simulink Simulink er et grafisk verktøy for simulering av dynamiske system, Simulink startes fra matlab command window ved å skrive SIMULINK Simulink består av flere bibiliotek med blokker som kan knyttes sammen, bibilioteket er bygget opp som verktøyskister (sources,Sinks,...osv) Ved å dobbelt klikke på en vektøyskiste vil du få se de blokkene som kisten inneholder Sources Sinks Discrete Linear Nonlinear Connections SIMULINK Block Library (Version 1.3c) dersom du dobbelt klikker på Sources vil følgende vindu åpne seg Signal Source Library 12:34 Clock Signal Generator Digital Clock 1 Constant Sine Wave Step Input untitled.mat [T,U] From File Random Number Repeating Sequence Pulse Generator From Workspace Chirp Signal Band-Limited White Noise Prøv å åpne di forsjkelge verktøys kistene å se på innholdet i dem M.Ottestad − 23 − Extras Introduksjon til MATLAB ® 24 ___________________________________________________________________ Linear Library . + + Sum Inner Product 1 Scope du/dt Derivative 1/s Integrator Gain Signal Sinks Library K 1.317 Matrix Gain Slider Gain 1 s+1 Transfer Fcn (s-1) s(s+1) Zero-Pole yout To Workspace untitled.mat Graph To File STOP Auto-Scale Stop Simulation Graph Connections Library 1 Inport 1 Outport Mux Mux Demux x' = Ax+Bu y = Cx+Du XY Graph Hit Crossing Demux State-Space Før vi kann begyne å simulere med simulink må vi opprete en arbeidstavle. Dette gjøe vi ved å gå inn på menyen File i simulink og velger NEW Vi vil da få en blank arbeisd tavle Vi kann nå åpne de forskjelige verktøskistene og dra de blokkene vi ønsker inn inn på arbeidstavla .(Vi brukker musa dra og slip) M.Ottestad − 24 − Introduksjon til MATLAB ® 25 ___________________________________________________________________ Ved hjelp av musa kan vi så trekke forbindelserMellom di forskjelige blokkene Signal Generator + Sum 1 s+1 Transfer Fcn Mux Mux Auto-Scale Graph Vi kann endre innholdet i blokkene ved å dobbelt klikke på dem for eksempel kan vi dobbelt klikke på transfer Fcn og følgende bilde dukker opp Ved å endre Numerator til [1 1] og Denominator til [1 0.7 1] vil bliokkskjemaet endres til Signal Generator + Sum s+1 2 s +0.7s+1 Transfer Fcn Mux Mux Auto-Scale Graph Før vi kan begyne å simulere må vi gå inn i menyen SIMULATION og velge noen hensiktsmessige parameter (se fig på neste side) Vi må velge Integrasjons metode (Øverste felt) Lin sim Simuleringstid (stopptid-Starttid ) 9.9-0 Skritlengde (Max step size) 0.1 M.Ottestad − 25 − Introduksjon til MATLAB ® 26 ___________________________________________________________________ Simuleringen av over stående system gav følgende resultat: 1 0.5 0 -0.5 -1 M.Ottestad − 26 −
© Copyright 2024