Lalace Fourer Bode lot - Matlab Een transferfuncte kan n het Lalacedomen steeds worden geschreven n de vorm (een voorbeeld): A.( s z).( s z ) ( s) of algemener: ( s ).( s ) A. ( s z ) ( s) () ( s ) j Teller en noemer zjn her rnceel geschreven als een roduct van een aantal termen. Een nulunt (zero n het Engels) s een waarde voor s waarbj de teller van de transferfuncte 0 wordt (s=-z ), een ool (ole n het Engels) s een waarde voor s waarvoor de noemer 0 wordt (s=- ). Polen én nulunten kunnen ook comlex toegevoegde getallen zjn. Ze verschjnen dan er aar n de teller of n de noemer. Merk o dat een ool - of nulunt -z ook geljk aan 0 kan zjn! Bj een Bode lot zet men de amltude (utgedrukt n decbel en dus n een logartmsche schaal) én de fase ut n functe van de frequente. et s dan ook nodg de transferfuncte te herschrjven n het Fourerdomen: A( j z).( j z ) ( j ) of algemener: ( j ).( j ) A. ( j z ) ( j ) () ( j ) j In wat volgt bestuderen we eerst de gevolgen van een enkelvoudge ool en een enkelvoudg nulunt o een Bode lot. Daarna bestuderen we het effect van comlex toegevoegde olen en nulunten. Prnceel s een transferfuncte een comlex getal n functe van (of j). Men kan (j) dus schrjven als: (j)=re() + jim(), waarbj Re en Im resecteveljk het reële en het magnare deel zjn van de transferfuncte (j). s her de notate voor de lengte van de vector (comlex getal) de deze transferfuncte voorstelt. Dan geldt: Re()=.cos() Im()=.sn() = bgtg(im()/re()) = Re() +Im() (regel van Pythagoras) In een Bode lot zet men zowel als ut. wordt utgedrukt n decbel (): 0*log 0 ( ), her genoteerd als:. De transferfuncte geeft mmers een verhoudng van amltudes, net van vermogens.
. Enkelvoudge ool De transferfuncte voor één enkelvoudge ool s: ( s) ( s ) of ( j ) (3) ( j ) Een alternateve schrjfwjze s: ( s) s of ( ) ( j) j (4) ( ) We gaan verder met deze alternateve notate. et verschl zt hem n een evenredghedsfactor de men kan verrekenen n de versterkng A van de transferfuncte. Dan s: 0.log 0 0.log 0( ) 0.log 0( ) (5) j Immers: En: a+jb =(a +b ) 0.5 (Pythagoras) 0.log 0 (a -0.5 )=0*(-0.5).log 0 (a)=-0.log 0 (a) ( j) j ( ) ( j j ).( j ) j j (6) N Im( ) ( ) ( N bgtg bgtg ) bgtg( ) (7) Re( ) N De noemer N deelt mmers weg. Samenvattend: 0 0 0-3 -45 >> -0/decade -90
De waarden voor =0 zjn evdent. Ze volgen rechtstreeks ut de formules (5) en (7). De waarden voor de fasedraang kan men ook snel berekenen ut utdrukkng (7). De verzwakkng voor = s: ( ) 0.log 3 3 0.log ( ) 0.log ( ) 0.log () 0 0 0 0 Voor >> krjgt men (met verwaarlozng van de term naast / ) voor een frequente : 0.log 0( ) 0.log 0( ) (8) Voor een frequente 0. wordt dt: 00 00 0.log 0( ) 0.log 0( ) 0.log 0( ) 0.log 0(00) Maar: 0.log 0( ) 0.log 0(00) 0 (9) Ut utdrukkng (9) kan men afleden dat de verzwakkng o een frequente de 0 keer groter s (we noemen dat een decade) -0 s. We zeggen dan ook dat een ool aanledng geeft tot -0/decade n de magntude lot. et s belangrjk o te merken (ze onderstaande fguur) dat de fasedraang overgang bj benaderng gebeurt vanaf een frequente de 0 keer klener s dan de 3 frequente = tot een frequente de 0 keer groter s! Let o:.. f
. Enkelvoudg nulunt De transferfuncte s voor één enkelvoudg nulunt: ( (0) ( s) s z of j) j z Een alternateve schrjfwjze s: s ( s) of z j ( j) () z
We gaan verder met deze alternateve notate. et verschl zt hem n een evenredghedsfactor z de men kan verrekenen n de versterkng A van de transferfuncte. Dan s: j 0.log 0 0.log 0( ) () z z En: Im( ) z bgtg ( ) bgtg( ) bgtg( ) (3) Re( ) z Samenvattend krjgt men: 0 0 0 z 3 45 >> z 0/decade 90 Want: ( ) 0.log z 3 3 0.log ( ) 0.log ( ) 0.log () 0 0 0 0 Voor >> z krjgt men (met verwaarlozng van de term naast /z ) voor een frequente : 0.log 0( ) 0.log 0( ) (4) z z Voor een frequente 0. wordt dt: 00 00 0.log 0( ) 0.log 0( ) 0.log 0( ) 0.log 0(00) z z z Maar: 0.log 0( ) 0.log 0(00) 0 (5) Ut utdrukkng (9) kan men afleden dat de versterkng o een frequente de 0 keer groter s (we noemen dat een decade) +0 s. We zeggen dan ook dat een nulunt aanledng geeft tot +0/decade n de magntude lot.
et s ook her belangrjk o te merken (ze onderstaande fguur) dat de fasedraang overgang gebeurt van een frequente de 0 keer klener s dan de 3 frequente tot een frequente de 0 keer groter s! 3. Enkelvoudge ool of enkelvoudg nulunt n de oorsrong. Wanneer z =0 of =0, geldt natuurljk dadeljk: > =0-0/decade -90 voor een ool > z =0 0/decade 90 voor een nulunt De fasedraang -90 of +90 en de -0 of +0/decade zjn er dus vanaf =0!
4. Constante In de transferfuncte () staat ook nog de constante A. Er geldt dan: 0.log 0 A (6) En Im( ) 0 bgtg ( ) bgtg ( ) 0 (7) Re( ) 5. Comlex toegevoegde olen De transferfuncte voor twee comlex toegevoegde olen s gegeven door: Of (8) met en de twee comlex toegevoegde olen. We defnëren:. (9) n 0.. (0) De berekenng geeft:
De nterretate van deze utdrukkng s een stuk ngewkkelder dan voor een enkelvoudge ool. Men kan wel besluten dat: 0 0 0 >> 0-40/decade -80 (- radalen) Bj = 0 wordt de waarde van de demng belangrjk. De Bode lot s: Bj >0.707 s er geen overshoot meer. 6. Comlex toegevoegde nulunten Voor twee comlex toegevoegde nulunten wordt de transferfuncte:
Men kan na veel rekenwerk besluten dat: 0 0 0 >> 0 40/decade 80 ( radalen) De Bode lot s: Bj >0.707 s er geen overshoot meer. 7. Comlexe transferfuncte Een transferfuncte kan egenljk worden gelezen als een roduct van termen met nulunten en olen. et aangeaste blokschema s dan ook:
Dt maakt dat men het effect van elke term aart mag berekenen. De versterkng of verzwakkng wordt utgedrukt als een logartme. Nu s log(a.b)=log(a)+log(b). Dt maakt dat utendeljk de effecten van elke term van de transferfuncte mogen worden ogeteld! 8. Laagdoorlaatflter De Bode lot s:
Voor een eenvoudg eerste orde laagdoorlaatflter volstaat bjgevolg één ool o de 3 frequente. Wanneer men twee olen laatst, wordt de Bode lot (meer verzwakkng van hogere frequentes): 9. oogdoorlaatflter Een eenvoudg eerste orde hoogdoorlaatflter heeft bjgevolg een nulunt n de oorsrong en een ool o de 3 frequente.
0. Matlab Gegeven volgende transferfuncte: ( s) s s 3s 30 Dt systeem kan n Matlab worden gedefneerd als volgt: teller = [ 0]; noemer = [ 3 30]; = tf(teller, noemer) Er verschjnt dan: Transfer functon: s --------------- s^ + 3 s + 30 zk() Zero/ole/gan: s --------------- (s+0) (s+3) bode () Deze Bode lot s logsch: er s één nulunt bj s=0 en olen bj s=-3 en s=-0. Men mag dus de grafek van een banddoorlaatflter verwachten. Men kan ook vertrekken met de gekende olen en nulunten: z = [0]; = [-3-0]; k = ; n = zk(z,,k) Zero/ole/gan: s ---------------- (s+3) (s+0) en n zjn dus beschrjvngen van hetzelfde systeem! Men kan van een systeem een reeks resultaten voor secfeke ngangssgnalen laten utrekenen: mulse() ste() rlocus() % mulsresons % staresons % root locus van
Stel: = [-4-4 -4+4]; n = zk(z,,k) Zero/ole/gan: s ------------------- (s^ + 8s + 3) zma(n) O de afbeeldng hernaast werden de olen en het nulunt met een jltje aangedud om beter zchtbaar te zjn! rlocus(n) % Concatenate van twee systemen: T=*n Zero/ole/gan: s^ ----------------------------------- (s+0) (s+3) (s^ + 8s + 3) % Omzettngen tf naar zk en vce versa: [teller, noemer] = tfdata(,'v') [nulunt, olen, a] = zkdata(, 'v') % nvloed van demng: omega = 0; ks = 0.; num3 = [omega*omega]; den3 = [ *ks*omega omega*omega]; D = tf(num3,den3); Transfer functon: 00 -------------------- s^ + s + 00 bode(d)
omega = 0; ks = 0.707; num3 = [omega*omega]; den3 = [ *ks*omega omega*omega]; D = tf(num3,den3) Transfer functon: 00 ------------------------- s^ + 4.4 s + 00 bode(d) Er s geen overshoot meer bj sommge frequentes! omega = 0; ks = ; num3 = [omega*omega]; den3 = [ *ks*omega omega*omega]; D = tf(num3,den3) Transfer functon: 00 --------------------- s^ + 0 s + 00 bode(d) % defnte van een feedback systeem: num = [ 0]; den = [ 3 ]; = tf(num,den); bode(); num = []; den = [ 0]; = tf(num,den); bode(); = feedback(, ); = mnreal(); % mnmalsate van : teller en noemer vereenvoudgen n factoren van s. bode()
% Routh-urwtz: syms K noemer = [ 5 8+K] % berekenen van de Routh-urwtz rj: myrouth(noemer) noemer = [, 5,, K + 8] ans = [, ] [ 5, K + 8] [ 5/5 - K/5, 0] [ K + 8, 0] Voor deze berekenng s het net-standaard myrouth.m bestand nodg! % Wortelljnen: (root locus) z = [ ] = [-+ -- -4] k =. T = zk(z,,k) KRL = [0 5 0 0 50 00 00 500 000 000 5000 0000] rlocus (T, KRL) of rlocus(t) RLOCUS(SYS) comutes and lots the root locus of the sngle-nut, sngle-outut LTI model SYS. The root locus lot s used to analyse the negatve feedback loo: and shows the trajectores of the closed-loo oles when the feedback gan K vares from 0 to Inf. RLOCUS automatcally generates a set of ostve gan values that roduce a smooth lot. RLOCUS(SYS,K) uses a user-secfed vector K of gan values.
% Defnte van systemen n het Z domen: hzteller = []; hznoemer = [- ]; zbreuk = tf(hzteller, hznoemer, ); (de derde arameter, her, s de samletjd) bode(zbreuk) zk(zbreuk) tf(zbreuk) % geeft de transferfuncte n een olen, nulunten,.. vorm % geeft de transferfuncte % Een loend gemddelde flter (movng average) z = zk('z',); maf = (0.5 + 0.5*z^- + 0.5*z^- + 0.5*z^-3) Zero/ole/gan: 0.5 z^3 (z+) (z^ + ) ------------------------------ z^6 Samlng tme: zk(maf) Zero/ole/gan: 0.5 z^3 (z+) (z^ + ) ------------------------------ z^6 Samlng tme: tf(maf) Transfer functon: 0.5 z^6 + 0.5 z^5 + 0.5 z^4 + 0.5 z^3 +.3e-08 z^ - 4.4e-07 z - 3.605e-034 --------------------------------------------------------------------------------------------------------- z^6 Samlng tme: Er werden enkele afrondngsfouten gemaakt! et kan ook als volgt: hzmafteller = [0.5 0.5 0.5 0.5]; hzmafnoemer = [ 0 0 0]; zmaf = tf(hzmafteller, hzmafnoemer, ) zk(zmaf) Zero/ole/gan: 0.5 (z+) (z^ + ) ------------------------- z^3 tf(zmaf) bode(zmaf)
Dt s dus een zeer breedbandg laagdoorlaatflter. Een veel smalbandger laagdoorlaatflter s: lf=/3 hzmafteller = [lf lf lf lf lf lf lf lf lf lf lf lf lf lf lf lf lf lf lf lf lf lf lf lf lf lf lf lf lf lf lf lf]; hzmafnoemer = [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; zmaf = tf(hzmafteller, hzmafnoemer, ) zk(zmaf) tf(zmaf) bode(zmaf) % blneare transformate omega = 0; ks = 0.707; num3 = [omega*omega]; den3 = [ *ks*omega omega*omega]; D = tf(num3,den3); bode(d) fs = 00; Ts = /fs; [teller_z, noemer_z] = blnear(num3, den3, fs) % fs s de samlngfrequente Z = tf(teller_z, noemer_z, Ts) Transfer functon: 0.0039 z^ + 0.004659 z + 0.0039 ------------------------------------ z^ -.859 z + 0.868 Samlng tme: 0.0 bode(z)
functon R = myrouth(b) %% ROUT-URWITZ Array % % Examles: % %. P = s^4 + 0*s^3 + 35*s^ + 50*s + 4 ; % R = myrouth( [ 0 35 50 4] ) % %. syms a b c d s, P = s^4 + a*s^3 + b*s^ + c*s + d ; % R = myrouth( [ a b c d] ) % % 3. syms K, P = s^ + (-3*K)*s + 0+0.5*K ; % R = myrouth( [ -3*K 0+0.5*K] ) % Ismal Ilker Delce % delce.@neu.edu %% Polynomal coeffcents as nut f(nargn<), warnng('no Inut Argument') ; return end %% Fl vector n left/rght drecton and fnd order of olynomal b = fllr(b) ; ord = sze(b,)- ; % It gves the ndex number of R's row % ord = 6,7 --> rou_ = 7 rou_ = fx( fx(ord/)* ) + ; rou_j = cel((ord+)/) ; % Round nfnty %% If order s even add one zero as a last element of matrx R = [ b(ord+:-:) ; b(ord:-:) zeros( fx(( rou_- )/ord) ) ] ; R = sym( zeros(ord+,rou_j) ) ; R(ord+:-:ord, : ) = R ; %% All R's for Routh-urwtz [Man Algorthm] for n = ord-:-: for j = :round(n/) R(n,j) = ( R(n+,)*R(n+,j+)-R(n+,j+)*R(n+,) )/R(n+) ; end end R(,) = R(rou_,rou_j) ; %% Smlfy and Fl matrx n u/down drecton. R = smlfy(r) ; R = flud(r) ;