Introduksjon til MATLAB ® Høgskolen i Agder Regulerings

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 −