Thomas Westermann Computersimulation Mit einer Einführung in die Systemanalyse: Modellbildung, Simulation, Interpretation c Thomas Westermann 20.4.2017 Thomas Westermann Hochschule Karlsruhe - Technik und Wirtschaft Moltkestr. 30 Fakultät EIT 76133 Karlsruhe Homepage zur Veranstaltung: http://www.home.hs-karlsruhe.de/˜weth0002/ —> Veranstaltungen —> Computersimulation Email: [email protected] c Das Copyright sämtlicher Materialien liegt beim Autor. Materialien dürfen zum privaten Gebrauch oder zu Studienzwecken heruntergeleden werden. Eine Vervielfältigung, Verbreitung oder Bereitstellung für Dritte bedarf der ausdrücklichen Genehmigung des Autors. Inhaltsverzeichnis 1 Simulation des Frequenzverhaltens für RCL-Schaltungen . . . . . . . . . . . . . . . . . . . . . . . . . . 1 b 1.1 Berechnung der Übertragungsfunktion UUbA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 0 1.1.1 Spannungsteiler = Kette aus einem Glied . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1.2 Kette aus zwei Gliedern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1.3 Kette aus drei Gliedern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1.4 Beispiele mit Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2 Dimensionierung von Hoch- und Tiefpässen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2.1 Beispiele mit Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3 Ortskurven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.4 Bode-Diagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2 Simulation des Zeitverhaltens für elektrische RCL-Schaltungen . . . . . . . . . . . . . . . . . . . . 2.1 Physikalische Gesetzmäßigkeiten der Bauelemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Aufstellen der DG einer Schaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Lösen der DG mit dem Euler-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 Einfache Beispiele mit L, C, R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 Reihenschaltung von Spule L und Widerstand R . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.2 Reihenschaltung von Kapazität C und Widerstand R . . . . . . . . . . . . . . . . . . . . . . . 2.4.3 Reihenschaltung von R, C und L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.4 Parallelschwingkreis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.5 Parallelschwingkreis mit realen Spulen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Aufstellen der DG für Filterschaltungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.1 Aufstellen der DG für einen Tiefpass (TP2PiCLC) . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.2 Beispiele mit Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6 Lösen der DG für den Tiefpass TP2PiCLC mit Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Simulation von mechanischen Systemen mit Massenpunkten . . . . . . . . . . . . . . . . . . . . . . 29 4 Simulation geladener Teilchen in elektromagnetischen Feldern . . . . . . . . . . . . . . . . . . . . . 33 5 Signal- und Systemanalyse mit der FFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 Grundlegende Formeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Eigenschaften der DFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Berechnung der DFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 FFT mit Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.1 Signalanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.2 Systemanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 17 17 18 19 19 19 20 20 21 22 22 25 26 35 35 37 39 41 41 41 VI 6 Inhaltsverzeichnis Signal- und Systemanalyse mit Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1 FFT eines Sinussignals mit Maple: Wie hängt der Spektralbereich von der Anzahl der Abtastpunkte ab? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Das Hanning-Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Die Prozedur plot fft mit der Option Hanning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4 Maximal erfassbare Frequenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.5 Frequenzauflösung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6 Analyse von Messdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7 System-Analyse mit Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 43 45 47 49 50 51 54 1. Simulation des Frequenzverhaltens für RCL-Schaltungen Im Folgenden werden wir eine Systematik entwickeln, wie man die komplexe Übertragungsfunktion für beliebig lange Ketten sukzessive berechnet, wenn die Schaltung aus R−, C− oder L−Elementen aufgebaut ist. Im Anschluss daran werden einige Spezialfälle für Tiefpass, Hochpass, Bandpass und Bandsperren diskutiert. Das Ziel ist es anschließend, nicht nur zu gegebener Schaltung die Übertragungsfunktion zu bestimmen, sondern zu gegebener Grenzfrequenz für einen Hoch- oder Tiefpass eine Dimensionierung der einzelnen Elemente der Kette vorzunehmen. Dabei soll die Übertragungsfunktion bA U b einen möglichst glatten Verlauf im Arbeitsbereich besitzen. U 0 Qualitativ werden für die Filter folgende Verläufe von | UUbA | gefordert: b 0 Abb. 1.1. Übertragungsverhalten von Tiefpass, Hochpass, Bandpass und Bandsperre Zur Realisierung werden wir nur Ketten betrachten, die sich aus Π- oder T -Gliedern zusammensetzen: Abb. 1.2. Schaltungen, die auf T-Gliedern basieren Abb. 1.3. Schaltungen, die auf Π-Gliedern basieren 2 1 Simulation des Frequenzverhaltens für RCL-Schaltungen Die Übertragungsfunktion ist definiert als das Verhältnis von Ausgangs- zu Eingangsspannung, wenn b0 = U0 eiωt angenommen wird: die Eingangsspannung als komplexe Wechselspannung U H(ω) = bA U . b0 U Diese komplexe Übertragungsfunktion lässt sich dann graphisch über den Betrag |H(ω)| und die Phase ϕ(ω) darstellen: H(ω) = |H(ω)|eiϕ(ω) p mit |H(ω)| = H(ω) · H ∗ (ω) und tan(ϕ(ω)) = Im(H(ω)) Re(H(ω)) . Man beachte, dass für den folgenden Algorithmus die einzelnen Elemente bzw. Kettenglieder noch nicht spezifiziert werden; d.h. die Formeln gelten sowohl für Π- als auch für T -Glieder gleichermaßen. Für die Impedanzen (Quer- und Längsimpedanzen) muss dann konkret für die jeweilige Schaltung noch RΩ (ohmscher Widerstand) iωL (Impedanz einer Spule mit Induktivität L) 1 iωC (Impedanz eines Kondensators mit Kapazität C) gesetzt werden. Tabelle: Filterschaltungen Tiefpässe aus T -Glieder bestehend: Hochpässe aus T -Glieder bestehend: Tiefpässe aus Π-Glieder bestehend: 1 Simulation des Frequenzverhaltens für RCL-Schaltungen Hochpässe aus Π-Glieder bestehend: Bandpässe aus Π-Glieder bestehend: Bandpässe aus Π-Glieder bestehend: Bandpässe aus T -Glieder bestehend: Bandsperren aus T -Glieder bestehend: 3 4 1 Simulation des Frequenzverhaltens für RCL-Schaltungen 1.1 Berechnung der Übertragungsfunktion bA U b0 U 1.1.1 Spannungsteiler = Kette aus einem Glied z1 = Längsimpedanz y1 = Querimpedanz bA U y1 I y1 = = b z I + y I z 1 1 1 + y1 U0 1.1.2 Kette aus zwei Gliedern Wir betrachten zunächst die zweite Masche und ersetzen diese durch einen Ersatzwiderstand 1 y1 (z2 + y2 ) y1p = 1 = 1 y 1 + z2 + y 2 y1 + z2 +y2 Für die verbleibende Masche können wir die Spannungsteilerregel anwenden: b1 y1p U = b y1p + z1 U0 Damit kennen wir die Spannung, die bei y1p abfällt und können nun nochmals die Spannungsteilerregel auf die 2. Masche anwenden: b2 U y2 = b y + z2 2 U1 Zusammenfassung: z1 , z 2 Längsimpedanzen y1 , y 2 Querimpedanzen y1p = y1 · (y2 + z2 )/(y1 + y2 + z2 ) u1 = u0 · y1p /(z1 + y1p ) u2 = u1 · y2 /(z2 + y2 ) 1.1 Berechnung der Übertragungsfunktion 1.1.3 Kette aus drei Gliedern Man ersetzt die Schaltung sukzessive von rechts nach links durch Ersatzwiderstände, so dass zum Schluss nur noch eine Masche mit einem Parallelwiderstand übrig bleibt. y2p = y2 (y3 + z3 ) y 2 + y 3 + z3 y1p = y1 (y2p + z2 ) y2 + y2p + z2 Anschließend wendet man nun von links nach rechts die Spannungsteilerregel an → b1 U y1p = b y 1p + z1 U0 → → Zusammenfassung z1 , z 2 , z 3 Längsimpedanzen y1 , y 2 , y 3 Querimpedanzen y2p = y2 · (y3 + z3 )/(y2 + y3 + z3 ) y1p = y1 · (y2p + z2 )/(y1 + y2p + z2 ) U1 = U0 · y1p /(y1p + z1 ) U2 = U1 · y2p /(y2p + z2 ) U3 = U2 · y3 /(y3 + z3 ) b2 y2p U = b y 2p + z2 U1 → b3 y3 U = . b y 3 + z3 U2 bA U b0 U 5 6 1 Simulation des Frequenzverhaltens für RCL-Schaltungen 1.1.4 Beispiele mit Maple Wir berechnen die komplexe Übertragungsfunktion für (1) einen Hochpass, (2) einen Tiefpass, (3) einen Bandpass und (4) eine Bandsperre mit Maple. Die zugehörigen Maple-Worksheets können durch Anklicken gestartet und anschließend ausgeführt werden. HP2TCLC Hochpass, der aus zwei T -Gliedern besteht. TP2PiCLC Tiefpass, der aus zwei Π-Gliedern besteht. BP2PiLCp Bandpass, der aus zwei Π-Gliedern besteht. BS2TLCp Bandsperre, die aus zwei T -Gliedern besteht. 1.1 Berechnung der Übertragungsfunktion bA U b0 U 7 (1.) Hochpass: 2-T-CLC-Glieder HP2TCLC -------R-----C-------------1/2 C-----------C------| | | L L R | | | --------------------------------------------------> Z1:= R + 1/(I*w*C): > Z2:= 1/(I*w*C/2): > Z3:= 1/(I*w*C): > Y1:= I*w*L: > Y2:=I*w*L: > Y3:=R: > Y2p:= Y2*(Y3+Z3)/(Y2+Y3+Z3): > Y1p:= Y1*(Y2p+Z2)/(Y1+Y2p+Z2): > u1:= Y1p/(Y1p+Z1): > u2:= u1*Y2p/(Y2p+Z2): > u3:= u2*Y3/(Y3+Z3): > wiu3:=argument(u3): > beu3:=abs(simplify(u3)); 1 beu3 := w5 L2 C 3 R/(I w5 L2 C 3 R + 2 w4 L2 C 2 − 4 I w3 L C 2 R − 3 w2 L C + R2 w4 C 3 L 2 − R2 w2 C 2 + 2 I R w C + 1) Die Übertragungsfunktion ist eine gebrochenrationale Funktion in w mit höchstem Exponent 5, da die Schaltung 5 Energiespeicher besitzt. Die graphische Darstellung des Betrags der Übertragungsfunktion erhält man durch > R:=1000: C:=5.28e-9: L:=3.128e-3: > titel:=‘Übertragungsfunktion HP2TLCL‘: > plot( beu3,w=0..400000,title=titel,thickness=2); bertragungsfunktion HP2TLCL 0.5 0.4 0.3 0.2 0.1 0 100000 200000 w 300000 400000 Für R=1000 Ohm, C=5.28e-9 F, L=3.128e-3 H erhält man die Grenzfrequenz wg=175000 1/s. Die graphische Darstellung der Phase erhält man durch > plot( wiu3,w=0..400000,thickness=2); 8 1 Simulation des Frequenzverhaltens für RCL-Schaltungen (2.) Tiefpass: 2-Pi-CLC-Glieder: TP2PiCLC -------R----------------------- L-----------------L------------| | | | C 2 C C R | | | | ---------------------------------------------------------------(kr=0.8; kf=1.3) > Z1:= R: > Z2:= I*w*L: > Z3:= I*w*L: > Y1:= 1/(I*w*C): > Y2:= 1/(I*w*2*C): > Y3:= 1/(I*w*C+1/R): > Y2p:= Y2*(Y3+Z3)/(Y2+Y3+Z3): > Y1p:= Y1*(Y2p+Z2)/(Y1+Y2p+Z2): > u1:= Y1p/(Y1p+Z1): > u2:= u1*Y2p/(Y2p+Z2): > u3:= u2*Y3/(Y3+Z3): > wiu3:=argument(u3): > beu3:=abs(simplify(u3)); beu3 := 1 R/(−I R + 4 I w2 L C R + w L − 2 I R w4 L2 C 2 − w3 L2 C + 2 w C R2 2 − 3 R2 C 2 L w3 + w5 L2 C 3 R2 ) > R:=2500: C:=1e-9: L:=10e-3: > titel:=‘Übertragungsfunktion TP2PiCLC‘: > plot( beu3,w=0..1000000,title=titel,thickness=2); > titel:=‘Phase TP2PiCLC‘: > plot( wiu3,w=0..1000000,title=titel,thickness=2); bertragungsfunktion TP2PiCLC Phase TP2PiCLC 0.5 3 0.4 2 1 0.3 0 0.2 –1 0.1 0 –2 –3 200000 400000 w 600000 800000 Die Grenzfrequenz ist wg=445000 1/s. 1e+06 200000 400000 w 600000 800000 1e+06 1.2 Dimensionierung von Hoch- und Tiefpässen 9 1.2 Dimensionierung von Hoch- und Tiefpässen Bisher haben wir diskutiert, wie man zu einer gegebenen Kette die Übertragungsfunktion berechnet und dabei die Grenzfrequenz ωg bestimmt. Jetzt werden wir den anspruchsvolleren Weg: Wir geben die Grenzfrequenz ωg und den Widerstand R vor. Gesucht sind dann die passenden Werte für L und C. Wenn man die folgenden Voraussetzungen macht, kann man durch gezieltes Probieren mit Maple sehr gute Resultate gewinnen. Voraussetzungen: (1) Der Aufbau der Kette erfolgt entweder durch identische Π− oder T −Glieder. (2) Alle Y - und Z- Impedanzen bestehen aus reinen Blindwerten (also nur L und C; kein R). Dies ist zwar nicht realisierbar, aber es kann zunächst von verlustlosen Spulen ausgegangen werden. Nachdem angepasste Betriebsparameter gefunden sind, kann der Einfluss von Spulenwiderständen berücksichtigt werden. (3) Der Innenwiderstand Ri ist gleich dem Lastwiderstand RA (Leistungsanpassung der Schaltung bzw. Spannungsteilerregel). Generelle Formeln (1) Skalierung der Grenzfrequenz: Die Grenzfrequenz ωg bei Hoch- oder Tiefpass ist definiert als die Frequenz bei der |H(ω)| auf √12 des Durchlasswertes abnimmt. Es gilt der Zusammenhang ωg = k √f , LC (1.1) wenn kf eine schaltungsspezifische Konstante darstellt. (2) Skalierung des Widerstandes: Der Zusammenhang zwischen Widerstand und L, C lautet R = kR · q L C, (1.2) wenn kR eine schaltungsspezifische Konstante darstellt. Um die schaltungsspezifischen Konstanten kf und kR zu bestimmen, wählen wir für eine erste Simulation L = C = 1. Denn dann entnimmt man bei gegebener Schaltung den angepassten Widerstand R bei dem die Übertragungsfunktion einen möglichst glatten Verlauf besitzt. Damit erhält man den Skalierungsfaktor kR . Aus dem Übertragungsverhalten liest man den Skalierungsfaktor kf ab, der im Falle L = C = 1 genau der Grenzfrequenz entspricht. 10 1 Simulation des Frequenzverhaltens für RCL-Schaltungen Vorgehensweise zur Dimensionierung: (1) Simulation Man setze L = C = 1 und variiere R1 = RA solange bis ein möglichst glatter Frequenzgang gefunden wird ⇒ Ran (angepasster Widerstand). Gesucht sind dann zu gegebener Kreisfrequenz ωg und vorhandenem Widerstand R die zugehörigen Größen von L und C. Die Übertragungsfunktion wird nun so skaliert werden, dass das Übertragungsverhalten gleich bleibt: (2) Skalierung von L und C bei gegebenem ωg und R (1.1) · (1.2) (1.2) (1.1) ωg · R = kR · kf · 1 ⇒ C= C R kR = ·L⇒ L= ωg kf kf ·kR ωg ·R kf ·R ωg ·kR (1.3) (1.4) (3) Bestimmt man zu den berechneten Werten wiederum die Übertragungsfunktion, dann hat die qualitativ den gleichen Verlauf wie für die Parameter L = C = 1, nur jetzt mit der Grenzfrequenz ωg . Beispiel: Gesucht ist ein Hochpass bestehend aus einem Π-Glied, der bei einem Widerstand von R = 500Ω eine Grenzfrequenz von ωg = 1000s−1 besitzt: Abb. 1.4. Π-Glied Mit z1 = R, z2 = 1 , iωC y1 = iωL, y2 = 1 R 1 1 + iωL folgt y1p = und y1 (y2 + z2 ) y 1 + y 2 + z2 y1p y1p + z1 y2 u2 = u1 · . y 2 + z2 u1 = (1) Um die schaltungsspezifischen Konstanten kf und kR zu bestimmen, setzen wir L = C = 1. Durch Variation von R im Bereich R = 0.5 . . . 1.5 erhalten wir für R = 0.8 einen glatten Verlauf der Übertragungsfunktion. Aus dem Schaubild der Übertragungsfunktion lesen wir die Grenzfrequenz ωg = 0.57 ab. ⇒ kR = 0.8 und kf = 0.57 1.2 Dimensionierung von Hoch- und Tiefpässen 11 (2) Damit ergeben sich die Dimensionierungen für L und C: 0.57 · 0.8 = 0.912 · 10−6 F 1000 · 500 0.57 · 500 (II) : L = = 0.355H 0.8 · 1000 (I) : C = 1.2.1 Beispiele mit Maple In den beiden folgenden Worksheets werden einen Hochpass und ein Tiefpass skaliert. Die zugehörigen Maple-Worksheets können durch Anklicken gestartet und anschließend ausgeführt werden. (1.) Tiefpass: Gegeben sei ein Tiefpass, der aus zwei Π-Glieder zusammengesetzt ist. Gesucht sind L und C, so dass er bei R = 1000Ω eine Grenzfrequenz von ω = 200001/s besitzt. (2.) Hochpass: Gegeben ist ein Hochpass, der aus einem Π-Glied zusammengesetzt ist. Gesucht sind L und C, so dass er bei R = 500Ω eine Grenzfrequenz von ω = 10001/s besitzt. 12 1 Simulation des Frequenzverhaltens für RCL-Schaltungen Beispiel mit Maple: Skalierung eines Tiefpasses. Gegeben sei ein Tiefpass, der aus zwei Pi-Glieder zusammengesetzt ist. Um die Übertragungsfunktion des Tiefpasses zu berechnen, verwenden wir die Prozedur kette. Hierzu setzen wir für die Längsimpedanzen > Z[1] := R: Z[2] := I*w*L: Z[3] := I*w*L: und für die Querimpedanzen > Y[1] := 1/(I*w*C): Y[2] := 1/(I*w*2*C): Y[3]:= 1/(I*w*C +1/R ): Als Eingangsspannung wählen wir > U0 := 1: Da der Tiefpass aus 3 Gliedern besteht, ist n=3 und der Aufruf lautet > kette(U0,Z,Y,3); −1 I R/(−I R + 4 I w2 L R C + w L − 2 I R w4 L2 C 2 − w3 L2 C + 2 R2 w C − 3 w3 L C 2 R2 2 + w5 L2 C 3 R2 ) Die Übertragungsfunktion ist eine komplexe gebrochenrationale Funktion in w mit dem höchsten auftretenden Exponent 5: Die Kette enthält 5 unabhängige Energiespeicher. Zur Dimensionierung der Lund C-Teile setzen wir zunächst > C:=1: L:=1: und zeichnen die Übertragungsfunktion 3-dimensional > plot3d(abs(H), w=0..2, R=0..2,axes=boxed); 0.5 0.4 0.3 0.2 0.1 0 0 0 0.5 0.5 R 1 1 1.5 1.5 2 2 w 1.2 Dimensionierung von Hoch- und Tiefpässen 13 Die Übertragungsfunktion hat bei R ≈ 0.9 einen glatten Verlauf. Wir zeichnen daher H(w) für 0.7 ≤ R ≤ 1.1 detaillierter: > with(plots): > r:=0.7: dR:=0.1: > > > > > > > for i from 1 to 4 do titel:=convert(r,string): p||i:=plot( abs(subs(R=r,H)), w=0..2, thickness=2,title=titel); r:=r + dR: od: display([seq(p||i,i=1..4)],insequence=true); Aus dem Graphen entnimmt man die Grenzfrequenz > kf := 1.4 : bei dem optimalen Widerstand > kr := 0.8 : Bestimmung von L und C für R=500 und w g=20000: > R := 1000 : wg := 20000 : > C := kf ∗ kr /(wg ∗ R); > L := kf /kr ∗ R/wg ; C := .5600000000 10−7 L := .08750000000 Die Übertragungsfunktion für diese angepassten Dimensionierungen ist: > plot( abs(H), w=0..40000, thickness=2, title=‘Übertragungsfunktion‘); bertragungsfunktion 0.5 0.4 0.3 0.2 0.1 0 10000 20000 w 30000 40000 14 1 Simulation des Frequenzverhaltens für RCL-Schaltungen 1.3 Ortskurven Eine zu Betrag und Phase alternative graphische Darstellung der Übertragungsfunktion ist die sog. Ortskurve. Bei dieser Darstellung von H(ω) werden der Betrag |H(ω)| und der Phasenwinkel ϕ(ω) gleichzeitig in ein Schaubild im Polar-Koordinatensystem gezeichnet. Der Betrag entspricht dem Radius und der Phasenwinkel dem Winkel. Dabei variieren |H(ω)| und ϕ(ω) gleichzeitig als Funktion von ω. Für unser Beispiel des Hochpasses mit einem Π-Glied ist –0.2 –0.1 0.4 0.4 0.3 0.3 0.2 0.2 0.1 0.1 0.1 0.2 0.3 –0.2 (a) L = C = 1. ω variiert von 0 . . . 2. –0.1 0 0.1 0.2 0.3 (b) L = 0.4H, C = 0.9 · 10−6 F . ω variiert von 0 . . . 3000. Abb. 1.5. Ortskurven Die beiden Ortskurven sind für die entsprechenden ω-Parameterbereiche identisch. In Maple wird die Ortskurve dargestellt entweder durch den Befehl > plot([Re(H(ω)), Im(H(ω)), ω = 0 . . . 2]); wobei Re(H(ω)) bzw. Im(H(ω)) für den Realteil bzw. Imaginärteil der komplexen Funktion H(ω) steht oder > with(plots): > polarplot([abs(H(ω)), argument(H(ω)), ω = 0..2]); wenn abs(H(ω)) der Betrag und argument(H(ω)) die Phase von H(ω) bedeutet. 1.3 Ortskurven 15 Für die anfangs des Kapitels diskutierten Beispiele des (1) Hoch-, (2) Tief-, (3) Bandpasses bzw. (4) der Bandsperre ergeben sich die folgenden Ortskurven: 0.4 0.4 0.2 0.2 –0.4 0 –0.2 –0.4 –0.2 0.2 0.4 0.2 –0.2 –0.2 –0.4 –0.4 (a) Hochpass HP2TLCL –0.4 –0.2 (b) Tiefpass TP2PiCLC 0.4 0.4 0.2 0.2 0 0.2 –0.4 0.4 –0.2 0 –0.2 –0.2 –0.4 –0.4 (c) Bandpass BP2PiLCr 0.2 0.4 (d) Bandsperre BS2TLCp Abb. 1.6. Ortskurven Beobachtung des Phasenwinkels: Beim Variieren der Frequenz von 0 bis ∞ wandert der Phasenwinkel über N · 90◦ . Dabei ist N die Anzahl der Energiespeicher. 16 1 Simulation des Frequenzverhaltens für RCL-Schaltungen 1.4 Bode-Diagramm Eine weitere Möglichkeit das Übertragungsverhalten H(ω) graphisch darzustellen besteht darin den Betrag der Übertragungsfunktion, |H(ω)|, oder die Phase, argument(H(ω)), als Funktion von ω zu zeichnen. > plot(abs(H(ω)), ω = 0..ωmax ); > plot(argument(H(ω)), ω = 0..ωmax ); Zu dieser Darstellung hat sich in den Anwendungen eine alternative Möglichkeit durchgesetzt, nämlich der 10-er Logarithmen des Betrags bei logarithmischer Skalierung der ω-Achse zu zeichnen, dem sog. Bode-Diagramm. Genau gesagt wird 20 dB log10 (|H(ω)|) bei logarithmischer Skalierung der ω-Achse aufgetragen. In Maple wird das Bode-Diagramm realisiert durch den Befehl > with(plots); > semilogplot(20*log[10](abs(H(ω)), ω = 0.1..ωmax ); Man beachte dabei, dass ω nicht bei 0 beginnen darf, da eine logarithmische Skalierung der ω-Achse vorgenommen wird und log(0) nicht definiert ist! 6.05 6.10 6.15 6.20 6.25 6.30 6.35 1. .1e2 .1e3 .1e4 w .1e5 1e+05 1e+06 Abb. 1.7. Bode-Diagramm 2. Simulation des Zeitverhaltens für elektrische RCL-Schaltungen Im Folgenden werden für elektrische Schaltungen, die sich aus RCL-Gliedern zusammensetzen die zugehörigen Differenzialgleichungen aufgestellt, die dann mit Hilfe des Rechners gelöst werden. Das Ziel ist für beliebige Eingangssignale die zugehörigen Ausgangssignale zu berechnen. 2.1 Physikalische Gesetzmäßigkeiten der Bauelemente Widerstand: U (t) = R · I(t) Der Strom durch den Widerstand R ist I(t) = R. Spule mit Induktivität L: 1 R U (t), wenn U (t) der Spannungsabfall am Widerstand U (t) = L dI(t) dt Fließt durch eine Spule L ein Strom I, so ist der Spannungsabfall an der Spule U proportional Proportionalitätskonstante bezeichnet man mit Induktivität L: U (t) = L dI(t) dt . Kondensator mit Kapazität C: dI dt . Die I(t) = C dUdt(t) Liegt am Kondensator die Spannung U (t), so ist die auf dem Kondensator liegende Ladung Q(t) = C · U (t), wenn C die Kapazität des Kondensators ist. Wegen I = dQ dt folgt für den Strom durch den Kondensator I(t) = C · dUdt(t) . Natürlich fließt der Strom nicht durch den Kondensator, sondern auf der einen Seite fließt Ladung zu, auf der anderen Seite fließt Ladung ab. 2.2 Aufstellen der DG einer Schaltung (1) Jedem Energiespeicher wird eine Zustandsvariable zugeordnet: Jedem Kondensator Ci wird seine Spannung Ui , jeder Spule Li wird ihr Strom Ii als Zustandsvariable zugeordnet. Den Widerständen wird keine Zustandsvariable zugeordnet, da Widerstände keine Energiespeicher, sondern nur Energieverbraucher darstellen. (2) Der Maschensatz und der Knotensatz werden auf die Schaltung angewendet. Das Ziel ist für jede Zustandsvariable eine DG 1. Ordnung zu erhalten. Sind Spule und Kondensator in Reihe geschaltet, wird formal ein weiterer Knoten eingeführt. (3) In der Regel führt die Vorgehensweise zu je einer DG für jede Zustandsvariable, die außer der ! Achtung: Manchmal Ableitung der Zustandsvariablen keine weiteren Ableitungen enthält. 4 sind aber mehrere Ableitungen 1. Ordnung in einer DG vorhanden. Dann muss noch ein lineares Gleichungssystem gelöst werden, damit man die gewünschte Struktur erhält. 18 2 Simulation des Zeitverhaltens für elektrische RCL-Schaltungen 2.3 Lösen der DG mit dem Euler-Verfahren Gegeben ist die DG mit Anfangsbedingung y 0 (t) = f (t, y(t)) + Ue (t) y(0) = y0 . Nach dem Eulerschen-Streckenzug-Verfahren kann diese DG schrittweise gelöst werden: y(ti+1 ) = y(ti ) + y 0 (ti ) · dt bzw. kurz y neu = y alt + (y 0 )alt · dt. Abb. 2.1. Euler-Verfahren Dies liefert bei gegebener Funktion Ue (t) und Anfangsbedingung y(0) = y0 den folgenden Algorithmus zum numerischen Lösen der DG: y = y0 for t from tmin by dt to tmax do y = y + (f(t,y) + Ue(t)) * dt end do Um anschließend die numerische Lösung zeichnen zu können, speichern wir zu jedem Zeitpunkt sowohl den Zeitpunkt t als auch den Funktionswert y in einer Liste ab. Der so erweiterte Algorithmus lautet dann y=y0 data[0] = [tmin, y] i=1 for t from y = y + data[i] i = i + end do tmin by dt to tmax do (f(t,y) + Ue(t)) * dt = [t+dt, y] 1 2.4 Einfache Beispiele mit L, C, R 2.4 Einfache Beispiele mit L, C, R 2.4.1 Reihenschaltung von Spule L und Widerstand R Energiespeicher: L Zustandsvariable: I U0 = UR + UL = R · I + L dI dt Maschensatz: ⇒ dI dt → DG für I = (U0 − RI)/L U0 = A · sin(2πf t) i=1 I=0 for t from tmin by dt to tmax do I = I + (U0 − RI)/L · dt data[i] = [t + dt, I] i=i+1 end do Algorithmus: 2.4.2 Reihenschaltung von Kapazität C und Widerstand R Energiespeicher: C Zustandsvariable: U U0 = UR + U = R · I + U = R · C dU dt + U Maschensatz: ⇒ Algorithmus: dU dt = (U0 − U )/(R · C) → DG für U U0 = A · sin(2πf t) U =0 for t from tmin by dt to tmax do U = U + (U0 − U )/(R · C) · dt ... end do 19 20 2 Simulation des Zeitverhaltens für elektrische RCL-Schaltungen 2.4.3 Reihenschaltung von R, C und L I R K L U0 C Zwei Energiespeicher: L, C Zwei Zustandsvariable: I, U U Maschensatz: U0 = UR + UL + U = R · I + L dI dt + U Knotensatz für K: I=C· ⇒ dI dt dU dt dU dt = (U0 − U − RI)/L = I/C → DG für I → DG für U U0 = A · sin(2πf t) U = 0 und I = 0 for t from tmin by dt to tmax do I = I + (U0 − U − RI)/L · dt U = U + I/C · dt ... end do Algorithmus: 2.4.4 Parallelschwingkreis K R I U0 C L M1 U Zwei Energiespeicher: L, C Zwei Zustandsvariable: I, U M2 Maschensatz für M1 : U0 = UR + U = R · I0 + U Knotensatz für K: I0 = I + C dU dt Maschensatz für M2 : L dI dt = U ! Achtung: Man beachte, dass in den Gleichungen die Größe I0 auftritt, die keinem Energiespeicher 4 zugeordnet ist. Daher muss sie aus den Gleichungen eliminiert werden, indem wir sie durch die Gleichung des Knotensatzes ersetzen. Zum Schluss erhalten wir zwei DG für die beiden Energiespeicher: 2.4 Einfache Beispiele mit L, C, R ⇒ U0 = R(I + C dU dt ) + U und 21 L dI dt = U bzw. dU dt ⇒ dI dt = ((U0 − U )/R − I)/C = U/L U0 = A · sin(2πf t) I = 0 und U = 0 for t from tmin by dt to tmax do U = U + ((U0 − U )/R − I)/C · dt I = I + U/L · dt ... end do Algorithmus: Typische Anwendung dieser Schaltung: Bezüglich der Spannung U wirkt die Schaltung als Bandpass: Hohe Frequenzen werden wegen der Wirkung von C, tiefe Frequenzen werden wegen der Wirkung von 1 L nicht durchgelassen. Nur ein Frequenzband um die mittlere Frequenz ω = √LC kommt durch. 2.4.5 Parallelschwingkreis mit realen Spulen K I R Zwei Energiespeicher: L, C Zwei Zustandsvariable: I, U L U0 C M1 RL RA U M2 Maschensatz für M1 : U0 = UR + U = R · I0 + U Knotensatz für K: I0 = I + C dU dt + U RA Maschensatz für M2 : L dI dt + RL I = U ! Achtung: Man beachte, dass wie im Falle des Parallelschwingkreises in den Gleichungen die Größe 4 I0 auftritt, die keinem Energiespeicher zugeordnet ist. Daher muss sie aus den Gleichungen eliminiert werden, indem wir sie wieder durch die Gleichung des Knotensatzes ersetzen. Zum Schluss erhalten wir zwei DG für die beiden Energiespeicher, die analog dem idealen Schwingkreis gelöst werden. ⇒ dU dt dI dt = ((U0 − U )/R − I − U/RA )/C = (U − RL I)/L 22 2 Simulation des Zeitverhaltens für elektrische RCL-Schaltungen 2.5 Aufstellen der DG für Filterschaltungen 2.5.1 Aufstellen der DG für einen Tiefpass (TP2PiCLC) Gegeben ist der Tiefpass, der sich aus zwei Π-Gliedern zusammensetzt, TP2PiCLC: Abb. 2.2. Tiefpass Der Tiefpass besteht aus 5 Energiespeicher C1 , C2 , C3 , L1 , L2 ; diesen Energiespeichern werden 5 Zustandsvariablen U1 , U2 , U3 , I1 , I2 zugeordnet. Systematisches Anwenden der Maschenregel und Knotenregel liefert die folgenden Gleichungen, wenn die physikalischen Gesetzmäßigkeiten UΩ = R · I (Ohmsches Gesetz), IC = C · U̇ (Strom am Kondensator), UL = L · I˙ (Spannungsabfall an der Spule) berücksichtigt werden: M1: U0 = RI0 + U1 K1: I0 = C1 U˙1 + I1 M2: U1 = L1 I˙1 + U2 K2: I1 = C2 U˙2 + I2 M3: U2 = L2 I˙2 + U3 K3: I2 = C3 U˙3 + U3 /R ! Achtung: I0 muss ersetzt werden, da es 4 keinem Energiespeicher zugeordnet ist! Dies sind zunächst 6 Gleichungen, wobei Gleichung M1 keine DG darstellt. In dem zu lösenden System dürfen als Variablen nur die 5 Zustandsvariablen U1 , U2 , U3 ; I1 , I2 vorkommen, sonst keine. Also muss aus den Gleichungen M1 und K1 die Variable I0 eliminiert werden, da sie keinem Energiespeicher zugeordnet ist. Daher setzen wir Gleichung K1 in Gleichung M1 ein. Somit erhalten wir 5 DG 1. Ordnung: U˙1 = ((U0 − U1 )/R − I1 )/C1 I˙1 = (U1 − U2 )/L1 U˙2 = (I1 − I2 )/C2 I˙2 = (U2 − U3 )/L2 U˙3 = (I2 − U3 /R)/C3 Man beachte, dass pro DG nur eine Ableitung vorkommt und wir somit durch das Euler-Verfahren den folgenden Algorithmus zur Lösung des Systems erhalten 2.5 Aufstellen der DG für Filterschaltungen 23 Algorithmus: U0 = . . . vorgegeben (s.u.) U1 = 0, I1 = 0, ... (Alle unbekannte Größen initialisieren) for t from tmin by dt to tmax do U1 = U1 + ((U0 − U1 )/R − I1 )/C1 · dt I1 = I1 + (U1 − U2 )/L1 · dt U2 = U2 + (I1 − I2 )/C2 · dt I2 = I2 + (U2 − U3 )/L2 · dt U3 = U3 + (I2 − U3 /R)/C3 · dt ... end do Bemerkungen: (1) Man beachte, dass die DG in der Reihenfolge ihres Auftretens bei der physikalischen Modellierung gelöst werden sollten, also von der Eingangsspannung zur Ausgangsspannung. (2) Indem die Variablen im Algorithmus nicht mit U1neu und U1alt bezeichnet werden, erspart man sich die Umbenennung dieser Variablen und in die folgenden Gleichungen werden immer die aktuellen (also neu berechneten) Daten berücksichtigt. Wir wählen L1 = L2 = 1; C1 = C3 = 1; C2 = 2; R = 0.8 (kf = 1.314) (siehe Kapitel über die Übertragungsfunktion). Für die numerische Rechnung wählen wir ∆t = 0.005, tmax = 90. (1.) Für die Eingangsspannung setzen wir U0 (t) = 1. · sin(ωt) mit ω = 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0 und erhalten für die Amplitude der Ausgangsspannung Abb. 2.3. Ausgangssignal für das Eingangssignal u0 = 1 · sin(ωt) mit ω = 1 ω UA 0.5 0.5 0.75 0.5 1.0 0.5 1.25 0.42 1.5 0.17 1.75 0.065 2.0 0.029 Man erkennt, dass die Ausgangsamplitude bei Frequenzen zwischen 1.25 und 1.5 drastisch abfällt. 24 2 Simulation des Zeitverhaltens für elektrische RCL-Schaltungen Abb. 2.4. Sprung S(t) (2.) Um einen Einschaltvorgang zu simulieren, setzen wir als Eingangsspannung U0 (t) = S(t). Dabei ist S(t) die Sprungfunktion. Für negative Zeiten hat die Funktion den Wert 0 und springt bei t = 0 auf den Wert 1. In Maple wird diese Funktion mit Heaviside(t) bezeichnet. Der Wert an der Stelle t = 0 muss explizit angegeben werden. Das zur Sprungfunktion gehörende Antwortsignal ist unten abgebildet. Da dieses die Reaktion des Systems auf die Sprungfunktion ist, nennt man das Antwortsignal die Sprungantwort: Abb. 2.5. Sprungantwort 1/T 0 T t Abb. 2.6. Impulsstoß (3.) Wählen wir als weiteres Eingangssignal (Eingangsspannung) einen Impulsstoß mit Breite T und Höhe 1/T . Damit regen wir das System impulsartig an. Der Impulsstoß lässt sich in Maple mit 1 T (S(t) − S(t − T )) bzw. > U0 (t) := 1/T*(Heaviside(t)-Heaviside(t-T)); > Heaviside(0):=0; realisieren. Die Ausgangsspannung nennt man zugehörig die Impulsantwort. Abb. 2.7. Impulsantwort für T = 0.5 2.5 Aufstellen der DG für Filterschaltungen 25 2.5.2 Beispiele mit Maple Wir stellen die Differenzialgleichungen für (1) einen Hochpass, (2) einen Tiefpass, (3) einen Bandpass und (4) eine Bandsperre auf und lösen diese mit Maple. Die zugehörigen Maple-Worksheets können durch Anklicken gestartet und anschließend ausgeführt werden. HP2TLCL Hochpass, der aus zwei T -Gliedern besteht. TP2PiCLC Tiefpass, der aus zwei Π-Gliedern besteht. BP2PiLCp Bandpass, der aus zwei Π-Gliedern besteht. BS2TLCp Bandsperre, die aus zwei T -Gliedern besteht. 26 2 Simulation des Zeitverhaltens für elektrische RCL-Schaltungen 2.6 Lösen der DG für den Tiefpass TP2PiCLC mit Maple 1. Aufstellen der DG > eq1:= R*(C1*dU1 + I1) = Ue-U1; > eq2:= U1 = L1*dI1 + U2; > eq3:= I1 = C2*dU2 +I2; > eq4:= U2 = L2* dI2 + U3; > eq5:= I2 = C3* dU3 +U3/R; eq1 := R (C1 dU1 + I1 ) = Ue − U1 eq2 := U1 = L1 dI1 + U2 eq3 := I1 = C2 dU2 + I2 eq4 := U2 = L2 dI2 + U3 eq5 := I2 = C3 dU3 + U3 R 2. Auflösen der DG nach den Ableitungen > sol:=solve({eq1,eq2,eq3,eq4,eq5}, {dU1,dU2,dU3,dI1,dI2}); > assign(sol); sol := {dU2 = − −I1 + I2 −U1 + U2 −U2 + U3 −I2 R + U3 , dI1 = − , dI2 = − , dU3 = − , C2 L1 L2 C3 R R I1 − Ue + U1 } dU1 = − R C1 Parameter und Anfangsbedingungen > R:=0.8: C1:=1: C2:=C1*2: C3:=C1: L1:=1:L2:=L1: > U1:=0: U2:=0: U3:=0: I1:=0: I2:=0: Eingangsfunktion > Ue:=sin(w*t): w:=1.: #Wechselspannung > Heaviside(0):= 0: > Ue:=Heaviside(t): #Sprungfunktion > T:=0.5: Ue:=Heaviside(t)-Heaviside(t-T): 3. Lösen der DG mit dem Euler-Verfahren > tmax:=90: > dt:=tmax/500: > i:=0: > for t from 0 by dt to tmax > do i:=i+1: > U1:=U1 + dt*dU1: > I1 := I1 + dt* dI1: > U2:= U2 + dt * dU2: 2.6 Lösen der DG für den Tiefpass TP2PiCLC mit Maple > > > > > I2:= I2 + dt * dI2: U3:= U3 + dt * dU3: data1[i]:=[t,U3]: data2[i]:=[t,Ue]: od: 4. Darstellen der Lösung > plot([seq(data1[n],n=1..i)], thickness=2); Systemreaktion für eine Wechselspannung als Eingangssignal bei w=1: 0.4 0.2 0 20 40 60 80 –0.2 –0.4 Systemreaktion für eine Sprungfunktion als Eingangssignal: 0.5 0.4 0.3 0.2 0.1 0 20 40 60 80 Systemreaktion für eine Impulsfunktion als Eingangssignal: 0.08 0.06 0.04 0.02 0 –0.02 20 40 60 80 27 3. Simulation von mechanischen Systemen mit Massenpunkten Die Modellierung von mechanischen Systemen mit Massenpunkten gestaltet sich einfacher als die der elektrischen Filterschaltungen, da sie sich allgemein durch das Newtonsche Bewegungsgesetz beschreiben lassen: Beschleunigungskraft = Masse * Beschleunigung = Summe aller angreifenden Kräfte → m·− r 00 = Pn i=1 − → Fi , wobei die Bewegungsgleichungen (=DG 2. Ordnung) komponentenweise angegeben werden. Z.B. für die x-Komponente gilt n X m · x00 = (Fi )x = Fx i=1 Diese DG 2. Ordnung transformiert man durch Einführung der Geschwindigkeit (vx = x0 ) in ein System von zwei DG 1. Ordnung: 1 vx0 = ax = Fx m x0 = vx Wendet man auf jede einzelne DG das Euler-Verfahren an, so erhält man den Algorithmus 1 vx = vx + Fx dt m x = x + vx dt t = t + dt Im allgemeinen 3-dimensionalen Fall erhält man somit 6 DG 1. Ordnung für die 6 unbekannten Größen x(t), y(t), z(t), vx (t), vy (t), vz (t): 1 vx = vx + Fx dt m 1 vy = vy + Fy dt m 1 vz = vz + Fz dt m x = x + vx dt y = y + v dt y z = z + vz dt t = t + dt 30 3 Simulation von mechanischen Systemen mit Massenpunkten Beispiel: Schwingung eines 2-Federn-Masse-Systems D1 D2 m1 x(t) Abb. 3.1. 2-Federn-Masse-System Eine Masse wird auf vertikaler Unterlage mit 2 Federn eingespannt. Die Ruhelage wird bei x = 0 festgelegt. Lenkt man den Massenpunkt aus der Ruhelage nach rechts um x aus, so wirken auf die Masse m sowohl die Rückstellkraft der Feder D1 als auch von D2 . Beide Kräfte zeigen nach links, also in negative x-Richtung. Damit gilt nach dem Newtonschen Bewegungsgesetz m · x00 = −D1 x − D2 x Berücksichtigt man noch eine Reibungskraft, die der Geschwindigkeit entgegen wirkt, FR ∼ −v = −x0 , erhält man D1 + D2 x00 (t) = − · x(t) − γ · x0 (t). m Dies führt auf den folgenden Algorithmus zum Lösen des DG Systems 1. Ordnung v = v + (−(D1 + D2 )/m · x − γ · v) dt x = x + v dt t = t + dt mit den Anfangsbedingungen x(0) = x0 und v(0) = 0. Dieser Algorithmus zusammen mit der numerischen Lösung ist im ersten Teil des zugehörigen Maple-Worksheet umgesetzt. 3 Simulation von mechanischen Systemen mit Massenpunkten 31 Beispiel: Schwingung eines 2Massen-3Federn-Systems D1 m1 D2 x 1(t) m2 D3 x 2(t) Abb. 3.2. 2Massen-3Federn-Systems Zwei Massen m1 und m2 werden gemäß obigem Bild durch 3 Federn (mit Federkonstanten D1 , D2 , D3 ) gekoppelt. Die Auslenkungen aus der Ruhelage werden mit x1 (t) für Masse m1 und x2 (t) für Masse m2 bezeichnet. Lenkt man die Massen m1 und m2 aus, so wirken die Federn D1 und D3 auf die absoluten Auslenkungen x1 bzw x2 . Für die Feder D2 geht jedoch die relative Auslenkung x1 − x2 ein. Es gelten die Bewegungsgleichungen m1 · x001 (t) = −D1 · x1 (t) − D2 (x1 (t) − x2 (t)) − γ · x01 (t) m2 · x002 (t) = −D3 · x2 (t) − D2 (x2 (t) − x1 (t)) − γ · x02 (t) wenn man eine lineare geschwindigkeitsabhängige Reibungskraft berücksichtigt. Zur numerischen Lösung führt man die beiden Geschwindigkeiten v1 (t) = x01 (t) und v2 (t) = x02 (t) ein und erhält ein DG System 1. Ordnung der Form D2 D1 + D2 γ x1 (t) + x2 (t) − v1 (t) m1 m1 m1 x01 (t) = v1 (t) v10 (t) = − D3 + D2 D2 γ x2 (t) + x1 (t) − v2 (t) m2 m2 m2 x02 (t) = v2 (t). v20 (t) = − Dieses DG System führt auf den folgenden Algorithmus x1=0.1, x2=0, v1=0, v2=0 (Initialisierung) for t from 0 by dt to tmax do v1 = v1 + dt*(-(D1+D2)/m1*x1 + D2/m1*x2 - gamma/m1*v1) v2 = v2 + dt*(-(D3+D2)/m2*x2 + D2/m2*x1 - gamma/m2*v2) x1 = x1 + dt * v1 x2 = x2 + dt * v2 end do 32 3 Simulation von mechanischen Systemen mit Massenpunkten Auslenkung Masse 1 Auslenkung Masse 2 0.1 0.1 0.05 0.05 0 20 40 60 80 100 0 0.05 0.05 –0.1 –0.1 20 40 60 80 100 Man erkennt als Schwingungsform eine Schwebung: Masse m1 schwingt maximal; Masse m2 ist zunächst noch in Ruhe. Über die Feder D2 wird aber Energie von Masse m1 auf die Masse m2 übertragen, diese beginnt zu schwingen. In dem Maße wie die Schwingung von Masse m2 zunimmt, nimmt gleichzeitig die Energie von m1 ab bis m1 sogar zur Ruhe kommt und m2 maximal schwingt. Dann kehrt sich der Prozess um. Dieser Algorithmus zusammen mit der numerischen Lösung ist im zweiten Teil des zugehörigen MapleWorksheet umgesetzt. 4. Simulation geladener Teilchen in elektromagnetischen Feldern Die Bewegung von elektrisch geladenen Teilchen (Masse m, Ladung q) in elektrischen und magnetischen Feldern ist bestimmt durch die Lorentz-Kraft − → → → − − → F L = q( E + − v × B ). Zur Bestimmung der magnetischen Kraft berechnen wir ex vx Bx vy Bz − vz By → − → − v × B = ey vy By = −vx Bz + vz Bx ez vz Bz vx By − vy Bx und erhalten als Bewegungsgleichungen 00 x(t) Ex vy Bz − vz By m y(t) = q(Ey + −vx Bz + vz Bx ). z(t) Ez vx By − vy Bx Spezialfall: Das Magnetfeld besitzt nur eine z-Komponente (Bx = 0, By = 0, Bz = B0 ), d.h. es wirkt nur in z-Richtung. Dann erhält man m · x00 (t) = q · Ex + q · B0 · vy m · y 00 (t) = q · Ey − q · B0 · vx m · z 00 (t) = q · Ez . V0 B=B0 eZ Abb. 4.1. Magnetfeld Führt man wie im mechanischen Fall die Geschwindigkeit als zusätzliche Größe ein (vx , vy , vz ) gilt q Ex + m q = Ey − m q = Ez m = vx = vy = vz vx0 = vy0 vz0 x0 y0 z0 q · B0 · vy m q · B0 · vx m 34 4 Simulation geladener Teilchen in elektromagnetischen Feldern Das führt auf den Algorithmus q q Ex + · B0 · vy ) dt m m q q vy = vy + ( Ey − · B0 · vx ) dt m m q vz = vz + Ez dt m x = x + vx dt y = y + vy dt z = z + vz dt t = t + dt vx = vx + ( 1. Fall: Bewegung eines geladenen Teilchens nur im Magnetfeld. Dann ist das elektrische Feld kom→ − plett Null, E = 0. Die Bewegung ist dann in der (x,y)-Ebene eine Kreisbahn. Die Geschwindigkeit in z-Richtung bleibt konstant, da vz0 = 0: 2 1.5 3 2.5 2 1.5 1 0.5 0 0 1 0.5 –1 –0.5 0.5 0 1 0.5 1.5 2 0 1 (a) Flugbahn des Teilchens 5 10 15 20 25 30 (b) Nur die y-Komponente 2. Fall: Bewegung eines geladenen Teilchens in elektrischen und magnetischen Feldern. Die Kreisbahn wird dann durch eine Beschleunigung überlagert. 0 –10 –20 –30 –40 160 –120 –80 –40 0 120 100 80 60 40 20 0 Abb. 4.2. Flugbahn des Teilchens 5. Signal- und Systemanalyse mit der FFT 5.1 Grundlegende Formeln Motivation: Gegeben ist ein Zeitsignal, welches nur in Form von diskreten Werten (t0 , f0 ), (t1 , f1 ), . . . , (tn−1 , fn−1 ) vorliegt. Gesucht sind die Frequenzen und zugehörigen Amplituden, die in diesem Signal enthalten sind. Abb. 5.1. Zeitsignal Kontinuierliche Signale: Die Formeln für die Fourieranalyse (Fourierreihen für periodische Signale, Fouriertransformation für beliebige Zeitsignale) setzen voraus, dass die Funktion f (t) als kontinuierliches Signal in Form einer Funktionsvorschrift vorliegt. Gehen wir zur Wiederholung der Formeln zunächst von einem T-periodischen Signal aus. Abb. 5.2. T-periodisches Signal Dann lassen sich die komplexen Fourierkoeffizienten cm der Fourierreihe bestimmen durch cm 1 = T Z 0 T f (t)e−imω0 t dt; mit w0 = 2π . T 36 5 Signal- und Systemanalyse mit der FFT cm sind die komplexen Fourierkoeffizienten; sie geben bis auf den Faktor 2 an mit welcher komplexen Amplitude (Betrag und Phase) die Frequenz ωm = mω0 im Signal enthalten ist. In einem periodischen Signal sind also nur die diskreten Frequenzen ω0 , 2ω0 , 3ω0 , . . . , mω0 enthalten, der Frequenzabstand beträgt ∆ω = ω0 = Diskretes Signal: Kommen wir nun zu dem Fall, dass f in Form einer Abtastung vorliegt. Dann gibt es zu f nur diskrete Funktionswerte zu den gegebenen Zeiten t0 , t1 , . . . , tN −1 , aber keine explizite Funktionsvorschrift. Wir setzen f T-periodisch fort und können die komplexen Fourierkoeffizienten näherungsweise bestimmen durch Abb. 5.3. diskretes Signal cm = Z 1 T cm ≈ T f (t)e−imω0 t dt ≈ 0 T Mit tn = n∆t = n N und ω0 = 2π T 2π . T N −1 1 X f (tn )e−imω0 tn ∆t. T n=0 folgt weiter N −1 N −1 2π 2π T T 1 X 1 X fn e−im T n N fn e−imn N = T n=0 N N n=0 {z } | DF T Man nennt PN −1 n=0 2π fn e−imn N die diskrete Fouriertransformation (DFT). Sie gibt bis auf einen Normierungsfaktor ( N2 ) )1 an, mit welcher Amplitude die Frequenz mω0 im Signal näherungsweise enthalten ist. Wieder erhält man ein diskretes Spektrum mit den Frequenzen ω0 , 2ω0 , 3ω0 , . . . mit dem Frequenzabstand ∆ω = 2π T . Zugang über die Fouriertransformation: Wir vergleichen die eben erhaltene Formel für die DFT mit der Fouriertransformation: Z ∞ Z T −iωt F (ω) = f (t)e dt = f (t)e−iωt dt −∞ ≈ N −1 X 0 f (tn )e−iωtn ∆t n=0 Dies ist zunächst eine kontinuierliche Funktion in ω. Speziell für die diskreten ω-Werte ωm = mω0 gilt aber 1 Man beachte, dass die komplexen Fourierkoeffizienten bis auf den Faktor √ 2 dem Amplitudenspektrum der periodischen Funktion entsprechen (siehe Mathematik III) Am = a2m + b2m = 2|cm | 5.2 Eigenschaften der DFT F (mω0 ) ≈ N −1 X 2π fn e−im T T nN n=0 ≈ 37 T N N −1 2π T X fn e−imn N N n=0 {z } | DF T F (mω0 ) stimmt also bis auf den Faktor T N mit der DFT überein: F (mω0 ) = T cm . Im Folgenden kürzen wir die Formel für die DFT mit dem Symbol Fc m ab. Diese zwar etwas laxe aber eindeutige Schreibweise soll daran erinnern, dass bis auf den Normierungsfaktor N2 der Betrag |Fc m | dem c reellen Amplitudenspektrum der Funktion f entspricht; Fm aber auch bis auf einen Normierungsfaktor T N dem Wert der Fouriertransformation an der Stelle mω0 entspricht: Fc m := N −1 X 2π fn e−imn N (DFT) (5.1) n=0 Fc m wird im Folgenden auch als das Spektrum bezeichnet. 5.2 Eigenschaften der DFT (1) Für m ≥ N wiederholen sich die Spektren: F\ m+N = N −1 X n=0 2π fn e−i(m+N )n N = N −1 X n=0 2π fn e−imn N · e|−in2π {z } =1 = Fc m D.h. für m ≥ N erhält man keine neue Frequenzinformation, sondern das Spektrum wiederholt sich periodisch. 38 (2) 5 Signal- und Systemanalyse mit der FFT Ist f ein reelles Signal, dann liegt das Spektrum symmetrisch (bis auf komplexe Konjugation) zu N2 : \ F N −k = N −1 X 2π fn e−i(N −k)n N = n=0 n=0 = N −1 X N −1 X 2π fn eikn N · e|−in2π {z } =1 wπ ck fn e−ikn N = F n=0 D.h. für m ≥ N2 erhält man keine neue Frequenzinformation, sondern die Amplituden sind komplex konjugiert symmetrisch um N2 . (3) Folgerung: Zu N Messwerten f0 , f1 , . . . , fN −1 kann man durch die DFT höchstens die Amplituden zu den Frequenzen ω0 , . . . , ω N ablesen, wobei die höchste 2 noch erkennbare Frequenz ω N = N2 ω0 = N2 2π ist. T 2 Die Abtastfrequenz beträgt ωa = 2πfa = 2π 1 N 2π = 2π = N ∆t T T ⇒ ωa = 2 ω N 2 Diese Folgerung besagt, dass die Abtastfrequenz ωa mindestens doppelt so groß sein muss als die maximal im Signal enthaltene Frequenz, um sie durch die Analyse zu erkennen (=Abtasttheorem von Shannon). ! Achtung: Man beachte, dass die Abtastfrequenz ωa echt größer sein muss als 2ωmax , da 4 ωa = 2ωmax nicht ausreicht, wie das folgende Beispiel zeigt: Beispiel: Wählt man als Signal sin(2πt), so ist die Frequenz ω = 2π. Tastet man das Signal mit der doppelten Frequenz ωa = 4π ab, so entspricht dies den Funktionswerten zu den Zeit mit ∆t = 21 . sin(2πt) ⇒ ωmax = 2π ⇒ ωa = 4π ⇒ ∆t = 2π 1 = ωa 2 Damit erhält man als abgetastete Funktionswerte nur die Werte Null, welche das Signal natürlich nicht repräsentieren. Abb. 5.4. Falsche Abtastung eines Sinussignals 5.3 Berechnung der DFT 39 (4) Die inverse DFT erhält man über die Formel f (tn ) = N −1 X 2π ck eikn N = N −1 1 X c ikn 2π Fk e N . N k=0 k=0 Man beachte, dass sich die inverse DFT im Wesentlichen mit der gleichen Formel berechnet wie die DFT selbst, denn es gilt N −1 1 X c −ikn 2π N fn = Fk e N k=0 ck die DFT und nimmt davon das komplex konjugierte. D.h. man bildet von F ck komplexe Größen darstellen, programmiert man die DFT gleich allgemein für komplexe AbtastDa F werte, obwohl man sie für die Analyse reeller Signale so allgemein nicht benötigte. Bei der Verwendung von Programmroutinen zur Berechnung der DFT muss man daher beachten, dass im Falle von reellen Signalen der Imaginärteil auf Null gesetzt werden muss! 5.3 Berechnung der DFT (1.) Einfacher Algorithmus zur Berechnung der DFT: Gegeben sind N diskrete Messwerte f0 , f1 , . . . , fN −1 . Gesucht ist Fc m , d.h. die komplexe Amplitude zur Frequenz ωm : Fc m = N −1 X 2π fn e−imn N = n=0 = N −1 X n=0 N −1 X n=0 fn cos(mn fn (cos(mn 2π 2π ) − i · sin(mn )) N N N −1 X 2π 2π fn sin(mn ). )−i N N n=0 Zur Berechnung der Amplitude Fc m für ωm wird folgende Schleife abgearbeitet: re := 0; im := 0; for n from 0 to N-1 do re := re + f[n] * cos( m*n*2*Pi/N ): im := im + f[n] * sin( m*n*2*Pi/N ): end do: Am := 2 * sqrt(re^2 + im^2): Für jede Frequenz muss obige Schleife mit anderem m durchlaufen werden. Bei 1000 Messwerten müssen für die Bestimmung einer Amplitude 1000 Sinus- und Kosinusausdrücke ausgewertet werden → sehr, sehr zeitaufwendig. 40 5 Signal- und Systemanalyse mit der FFT (2.) Schneller Algorithmus zur Berechnung der DFT: FFT Die FFT ist ein schneller Algorithmus, um Fc m = N −1 X 2π fn e−imn N für m = 0, . . . , N − 1 n=0 auszurechnen. Voraussetzung hierfür ist, dass N = 2k Zusammenfassung (1) Sind f0 , f1 , . . . , fN −1 gegebene Messwerte mit N = 2k , dann erhält man mit der FFT die Amplituden zu den Frequenzen ω0 , ω 1 , . . . , ω N , 2 d.h. bis zur maximalen Frequenz ∆ω = 2π T ωN = 2 N 2 ω0 = N 2π 2 T . Der Frequenzabstand beträgt . (2) Um die Frequenzauflösung zu erhöhen (d.h. kleineres ∆ω), vergrößert man T . (3) Um die maximale Frequenz zu vergrößern wird bei festem T die Anzahl der Abtastungen N erhöht. (4) Die DFT bzw. FFT liefern komplexwertige Größen. Um das reelle Amplitudenspektrum zu erhalten, geht man zum Betrag über. q 2 c 2 Am = 2 Re(Fc m ) + Im(Fm ) (5) Die FFT funktioniert nur, wenn die Anzahl der Messwerte eine Potenz von 2 darstellt: N = 2k . (6) Um vorhandene Programmroutinen zur FFT auf reellwertige Signale anzuwenden, muss der Imaginärteil auf Null gesetzt werden. 5.4 FFT mit Maple 41 5.4 FFT mit Maple Im folgenden Kapitel wird die Signal- und Systemanalyse mit Maple durchgeführt und die Ergebnisse diskutiert. Es zeigt sich, dass erst durch die geeignete Wahl der Abtastparameter eine aussagekräftige Interpretation möglich wird. 5.4.1 Signalanalyse Im Worksheet FFT wird eine Signalanalyse mit Maple durchgeführt. Es werden dabei die folgenden Aspekte diskutiert: (1) FFT eines Sinussignals mit Maple: Wie hängt der Spektralbereich von der Anzahl der Abtastpunkte ab? (2) Analyse mit dem Hanning-Filter. (3) Die Prozedur plot fft mit der Option Hanning-Fenster. (4) Maximal erfassbare Frequenz. (5) Frequenzauflösung. (6) Analyse von Messdaten. 5.4.2 Systemanalyse Im Worksheet sys ana wird eine Frequenzanalyse eines Tiefpasses, der aus zwei Π-Gliedern zusammengesetzt ist (TP2PiCLC), durchgeführt. 6. Signal- und Systemanalyse mit Maple 6.1 FFT eines Sinussignals mit Maple: Wie hängt der Spektralbereich von der Anzahl der Abtastpunkte ab? Wie der Spektralbereich von der Anzahl der Abtastpunkte abhängt, sei am Beispiel der Funktion sin(2 π t) demonstriert: > restart: > f:=t -> evalf(sin(2*Pi*t)): #Definition der Funktion > plot(f(t),t=0..10.1,color=black, thickness=2); 1 0.5 0 2 4 6 8 10 t –0.5 –1 (1.) Abtastung der Funktion: Die Abtastung der Funktion f(t) erfolgt im Intervall [0..10.1] an den Stellen t=i*dt mit dt=T/N. > m:=8: N:=2bm; #Festlegung der Abtastrate > T:=10.1: dt:=evalf(T/N): #Festlegung des Zeitintervalls > for i from 1 to N > do fd[i] := f((i-1)*dt): > imd[i]:= 0: > end do: N := 256 44 6 Signal- und Systemanalyse mit Maple (2.) Berechnung der DFT mit der FFT: Mit dem Maple-Befehl FFT wird das komplexe Spektrum der Funktion berechnet > FFT(m, fd, imd); 256 (3.) Graphische Darstellung des Spektrums: Die Aufbereitung der Daten erfolgt dadurch, dass wir von den komplexen Größen (fd, imd) zum Betrag übergehen und sie als Funktion der Frequenzen w=0..N/2*w0 darstellen. Der Skalierungsfaktor, mit dem die Transformierten multipliziert werden, ist 2/N. > for i from 1 to N/2 > do daten[i]:= [2*3.14/T*(i-1), 2/N*sqrt(fd[i]b2+imd[i]b2)]: > end do: Für den plot-Befehl stellen wir die Daten als Liste von Wertepaaren [[x1, y1], [x2, y2], ..., [xn, yn]] bereit: > plot([seq(daten[i],i=1..N/2)], labels=[”w”,” ”],color=’red’, thickness=2); 0.8 0.6 0.4 0.2 0 20 40 w 60 80 Aufgabe: Man variiere die Abtastrate N=64, 256, 1024, 2048 und vergleiche die Ergebnisse. Anschließend stelle man für die Fälle N=256, 1024, 2048 nur den Bereich w=0..20 dar. Zusammenfassung: Durch Variation der Abtastrate N ändert man bei festem T nur w max; die Frequenzauflösung bleibt dabei erhalten; insbesondere wird die Linie bei w=6.28 durch Vergrößerung von N nicht schärfer dargestellt! Aufgabe: Man variiere bei festem N=256 die Abtastzeit T : T=10.1, T=20.1, T=30.1. Wie ändert sich die Breite der Spektrallinie? Man wähle T=10 und N=256. Warum erhält man mit T=10 genau eine Linie mit der DFT? → Hanning-Fenster → plot fft 6.2 Das Hanning-Fenster 45 6.2 Das Hanning-Fenster Problem: Wenn man periodische Signale in einem Zeitfenster betrachtet, welches nicht mit der Periode zusammenfällt, dann schneidet man das Signal mit einem falschen T ab. Denn wählt man z.B. für die Sinusfunktion nicht ein Vielfaches von 2 Pi > T:=8.4: > plot(sin(t), t=0..T); 1 0.5 0 2 4 6 8 t –0.5 –1 so wird das Signal für die Analyse nun periodisch mit der Periode T=8.4 fortgesetzt. Damit kommt es aber genau an der Stelle t=T zu einer Sprungstelle im periodisch fortgesetzten Signal. > signal:=piecewise(0<t and t<T, sin(t), T<t and t<2*T, sin(t-T), 0): > plot(signal,t=0..2*T, discont=true); 1 0.5 0 2 4 6 8 10 12 14 16 t –0.5 –1 Die Fourierkoeffizienten einer periodischen Funktion mit Sprungstelle verhalten sich wie ∼1/n, d.h. Oberfrequenzen dominieren in dem Signal, obwohl diese Frequenzen in dem ursprünglichen Sinus nicht vorhanden sind. Außerdem besitzt das Signal im Intervall [0, T] einen Gleichanteil, da der lineare Mittelwert ungleich Null ist > 1/T*int(sin(t), t=0..T); .1808676968 Ausweg: Um beide künstlichen Effekte (=Abschneide-Effekte) zu eliminieren, multipliziert man das Signal mit einer Funktion, die bei t=0 und t=T Null ist, nämlich mit der Funktion 1 − cos( 2 Tπ t ) 46 6 Signal- und Systemanalyse mit Maple > plot([sin(t), 1-cos(2*Pi/T*t)], t=0..T); 2 1.5 1 0.5 0 2 4 t 6 8 –0.5 –1 Im unten angegebenen Bild ist sowohl das Signal (rot), die Funktion 1 − cos( 2 Tπ t ) (grün) sowie das amplitudenmodulierte Signal (blau) eingezeichnet. Die FFT wird nun anstatt von dem ursprünglichen Signal nun von dem amplitudenmodulierten Signal berechnet. > plot([sin(t),1-cos(2*Pi/T*t),sin(t)*(1-cos(2*Pi/T*t))], t=0..8.2, color=[red, green,blue], thickness=[1,1,3]); 2 1 0 2 4 t 6 8 –1 –2 Man bezeichnet dieses Vorgehen als Hanning-Filter (Siehe auch den nächsten Abschnitt: Die Prozedur plot fft und Hanning-Fenster). Die Modulationsfunktion ist so gewählt, dass sie das ursprüngliche Signal an den Enden glatt auf Null drückt und der Mittelwert der Funktion 1 ergibt. > 1/T*int((1-cos(2*Pi/T*t)),t=0..T); 1.000000000 6.3 Die Prozedur plot fft mit der Option Hanning 47 6.3 Die Prozedur plot fft mit der Option Hanning Wir tasten das Signal sin(2 π t) nochmals ab und verwenden die Prozedur plot fft, um eine Frequenzanalyse durchzuführen > f:=t -> evalf(sin(2*Pi*t)): #Definition der Funktion > plot(f(t),t=0..10.5,color=black, thickness=2); 1 0.5 0 2 4 6 8 10 t –0.5 –1 (1.) Abtastung der Funktion: Die Abtastung der Funktion f(t) erfolgt im Intervall [0..10.5] an den Stellen t = i ∗ dt mit dt = T /N . > m:=8: N:=2bm; #Festlegung der Abtastrate > T:=10.5: dt:=evalf(T/N): #Festlegung des Zeitintervalls > for i from 1 to N > do fd[i] := f((i-1)*dt): > end do: (2.) Berechnung der DFT und die graphische Darstellung des reellen Spektrums mit der Prozedur plot fft: Die Prozedur plot fft wird aus dem lokalen Verzeichnis eingelesen. Dazu kopiert man sich die Datei prozeduren.m in das lokale Verzeichnis und liest die Prozedur ein mit > read(prozeduren.m); Ist die Datei in einem anderen Verzeichnis als das Maple-Worksheet, das man gerade verwendet, dann muss man den vollen Pfad angeben mit > read(E://verz1//verz2//prozeduren.m); Die Transformation und die Aufbereitung der Daten erfolgt nun durch > plot fft(fd, m, T); 1. Argument: Abgetastete Werte als Liste [f1, f2, ..., fN] 2. Argument: m: 2ˆm ist die Anzahl der Abtastungen 3. Argument: Abtastzeit Das berechnete Spektrum ist richtig zu interpretieren, indem eine dominierende Frequenz, nämlich w=6.2, im Signal enthalten ist. Das berechnete Spektrum ist aber falsch zu interpretieren, indem zum 48 6 Signal- und Systemanalyse mit Maple 0.6 0.5 0.4 A 0.3 0.2 0.1 0 10 20 30 40 w 50 60 70 Abb. 6.1. FFT ohne Hanning-Filter einen das Signal aber auch einen Gleichstromanteil besitzt, da die Amplitude bei w=0 nicht Null ergibt. Und zum anderen auch höhere Frequenzen im Signal vorkommen. Beides rührt von dem falschen Abschneiden der periodischen Funktion her. Durch das falsche Abschneiden kommt es bei der Stelle T dann zu einem Sprung → hohe Frequenzen kommen in der Fourierreihe vor (siehe Mathe III) und das Signal hat auch einen Offset → es gibt einen Gleichspannungsanteil → Amplitude bei w=0. Legt man über das Zeitfenster nun ein Hanning-Fenster (die Funktion bügelt die Abtastwerte bei t=0 und bei t=T zu Null) treten beide oben beschriebenen Effekte nicht mehr auf. Das Hanning-Fenster ist als Option in der plot fft Routine berücksichtigt: > plot fft(fd, m, T, Hanning); 0.8 0.6 A 0.4 0.2 0 10 20 30 40 w 50 60 70 Abb. 6.2. FFT ohne Hanning-Filter Diskussion: Durch Verwendung des Hanning-Fensters werden Frequenzen, die künstlich in der Analyse durch das Abschneiden des Signals bzw. dem endlichen Zeitfensters erscheinen, eliminiert. 6.4 Maximal erfassbare Frequenz 49 6.4 Maximal erfassbare Frequenz Gegeben ist ein Signal, das sich aus mehreren Frequenzen zusammensetzt. Gesucht wird die Abtastung, bei dem die größte im Signal enthaltene Frequenz noch aufgelöst wird. Vorgegeben ist eine Überlagerung von Sinusfunktionen mit den Frequenzen 1 Hz, 2 Hz, 3 Hz und 4 Hz. > f:=t -> evalf(sin(2*Pi*1*t) + sin(2*Pi*2*t) + sin(2*Pi*3*t) + sin(2*Pi*4*t) ): > plot(f(t),t=0..10,color=black, thickness=2); 3 2 1 0 2 4 6 8 10 t –1 –2 –3 (1.) Abtastung der Funktion f(t) an den Stellen t=i*dt mit dt=T/N. > m:=6: N:=2bm: > T:=10.1: dt:=evalf(T/N): > for i from 1 to N > do fd[i] := f((i-1)*dt): > end do: (2.) Berechnung der FFT > read(prozeduren.m): > plot fft(fd, m, T); 1 0.8 0.6 A 0.4 0.2 0 5 10 w 15 50 6 Signal- und Systemanalyse mit Maple Diskussion: Aus dem Diagramm entnimmt man zwar, dass im Signal 4 Frequenzen vorkommen, aber wie man aus der Definition des Signals erkennen kann ist eine davon falsch dargestellt. Letztendlich liegt es daran, dass die höchste im Signal auftretende Frequenz nicht richtig abgetastet wird und daher in den kleineren Frequenzbereich gespiegelt wird ( Aliasing-Effekt). Um dies zu verdeutlichen/zu verstehen, führe man die folgenden Aufgaben durch: Aufgabe: Man variiere die Abtastrate N=64, 128, 256, 512, 1024 und vergleiche die Ergebnisse mit N=256. → Aliasing-Effekt Zusammenfassung: Durch Variation der Abtastrate N ändert man bei festem T nur wmax . Ist N zu klein gewählt, werden nicht mehr alle Frequenzen des Signals richtig erfasst. Nach dem Abtasttheorem muss die Abtastfrequenz wa > 2ws = 2∗25 1/s gewählt werden, um die Frequenz 25 1/s noch zu erfassen. Aus wmax = 2π/T N folgt für eine Auflösung der Frequenz von 25 1/s: N > 80. 6.5 Frequenzauflösung Gegeben ist wieder ein Signal, das sich aus mehreren Frequenzen zusammensetzt. Gesucht ist der Abtastungsparameter, bei dem alle Frequenzen getrennt aufgelöst werden. Diese Untersuchung sei am Beispiel der Überlagerung von 4 Sinusfunktionen mit den Frequenzen 1.0 Hz, 1.2 Hz, 2.3 Hz und 2.7 Hz durchgeführt. > f:=t->evalf(sin(2*Pi*1.0*t) + sin(2*Pi*1.2*t) + sin(2*Pi*2.3*t) + sin(2*Pi*2.7*t)): > plot(f(t),t=0..15,color=black, thickness=2); 3 2 1 0 –1 2 4 6 8 10 12 14 t –2 –3 (1.) Abtastung der Funktion f(t) an den Stellen t=i*dt mit dt=T/n. > m:=8: N:=2bm; > T:=5.1: dt:=evalf(T/N): 6.6 Analyse von Messdaten 51 > for i from 1 to N > do fd[i] := f((i-1)*dt): > end do: (2.) Berechnung der FFT > read(prozeduren.m): > plot fft(fd, m, T); 1 0.8 A 0.6 0.4 0.2 0 20 40 60 80 w 100 120 140 Diskussion: Aus dem Diagramm entnimmt man, dass im Signal 3 Frequenzen vorkommen, aber wie man aus der Definition des Signals erkennen kann ist dies falsch, da 4 Frequenzen festgelegt werden. Letztendlich liegt es daran, dass zwei Frequenzen unter einem Peak liegen, d.h. die Auflösung nicht hoch genug ist. Um dies zu verdeutlichen/zu verstehen, führe man die folgenden Aufgaben durch: Aufgabe: Man variiere T und N so, dass eine gute Auflösung der 4 Frequenzen gewährleistet ist. Zusammenfassung: Um die Auflösung des Spektrums zu erhöhen, d.h. einzelne Spektrallinien eines Signals besser auflösen zu können, muss die Messdauer T erhöht werden. Die Anzahl der Abtastungen N hat keinen Einfluss auf die Auflösung! 6.6 Analyse von Messdaten Die plot fft-Routine kann auch verwendet werden, um Messdaten zu analysieren: In der Textdatei daten1.txt sind Messdaten abgespeichert. Die erste Spalte besteht aus den Zeitwerten ti , die zweite Spalte aus den abgetasteten Funktionswerten. Diese Daten kann man z.B. auch mit einem Texteditor anschauen. Mit dem readdata-Befehl kann man diese Daten in Maple einlesen und einer Variablen zuweisen. Es ist beim Einlesen zu beachten, dass sich die Datei in dem Verzeichnis befindet, aus dem man Maple gestartet hat. Dann kann man einen lokalen Namen verwenden liste:=readdata(daten1.txt, 2): 52 6 Signal- und Systemanalyse mit Maple Ansonsten muss der globale Dateiname angegeben werden, z.B. liste:=readdata(E://verz1//verz2//daten1.txt, 2): In jedem Fall aber muss als zweites Argument eine 2 gesetzt werden. Die 2 steht für eine 2-spaltige Datei. > liste:= readdata(”daten1.txt”,2): Mit > liste[10]; [0.001757812500, −2.580593604] kann man z.B. die 10. Zeile ansteuern: die erste Zahl steht für den Zeitpunkt, die zweite Zahl für den abgetasteten Funktionswert zu diesem Zeitpunkt. Mit > N:=nops(liste); N := 256 lässt man sich die Anzahl der Messdaten angeben. Die Messzeit kann man damit bestimmen, indem man in die N.-te Zeile geht (liste[N]) und von dieser letzten Zeile die erste Zahl > T:= liste[N][1]; T := 0.04980468750 (1.) Graphische Darstellung der Messdaten > plot(liste); 10 5 0 0.01 0.02 0.03 0.04 0.05 –5 –10 (2.) Anwenden der plot fft-Routine: Man beachte, dass bei der plot-fft-Routine ja nur die diskreten Funktionswerte benötigt werden und nicht die Paare (t i, f i). Daher bestimmt man zuerst fd als die zweite Spalte der Liste und setzt bei N=256 Daten m auf 8 > fd:= [seq( liste[i][2],i=1..N )]: > m:=8: > read(prozeduren.m): > plot fft(fd, m, T); 6.6 Analyse von Messdaten 8 6 A 4 2 0 5000 w 10000 15000 Man kann aus dem Diagramm 3 Frequenzen ablesen: w1 = 5000, w2 = 10000, w3 = 12000. 53 54 6 Signal- und Systemanalyse mit Maple 6.7 System-Analyse mit Maple Die DFT (und deren schnelle Umsetzung FFT) wird messtechnisch sowohl zur Analyse von Signalen (→ Signalanalyse) als auch zur Bestimmung des Übertragungsverhaltens von Systemen (→ Systemanalyse) intensiv verwendet. Die Signalanalyse mit der FFT stellt sich schematisch dar als Signal —-> FFT —-> Spektrum Die Systemanalyse mit der FFT lässt sich schematisch im folgenden Diagramm darstellen: Signal —-> SYSTEM —-> Systemreaktion ↓ ↓ Spektrum des Einganssignals Spektrum des Ausgangssignals Die Systemfunktion (=Übertragungs- oder Transferfunktion) ist das Verhältnis vom Spektrum des Ausgangssignals zum Spektrum des Eingangssignals FFT(g) G(w) = F(w) FFT(f ) wenn f(t) das Eingangssignal und g(t) das zugehörige Ausgangssignal bzw. G(w) das Spektrum des Ausgangs- und F(w) das Spektrum des Eingangssignals ist. H(w) = Beispiel: Frequenzanalyse eines Tiefpasses. Gegeben ist ein Tiefpass, der aus zwei Pi-Gliedern zusammengesetzt ist (TP2PiCLC). (1.) Bestimmung der diskreten Impulsantwort: Um die diskreten Werte der Impulsantwort zu erhalten, lösen wir numerisch die das Netzwerk beschreibenden DG. Die numerischen Werte der Impulsantwort entsprechen den abgetasteten Werten der Ausgangsspannung U3 (=Ausgangssignal). 6.7 System-Analyse mit Maple Aufstellen der DG > restart: > eq1:= R*(C1*dU1 + I1) = Ue-U1; > eq2:= U1 = L1*dI1 + U2; > eq3:= I1 = C2*dU2 +I2; > eq4:= U2 = L2* dI2 + U3; > eq5:= I2 = C3* dU3 +U3/R; eq1 := R (C1 dU1 + I1 ) = Ue − U1 eq2 := U1 = L1 dI1 + U2 eq3 := I1 = C2 dU2 + I2 eq4 := U2 = L2 dI2 + U3 eq5 := I2 = C3 dU3 + U3 R und Auflösen der DG nach den Ableitungen > sol:=solve({eq1,eq2,eq3,eq4,eq5}, {dU1,dU2,dU3,dI1,dI2}); > assign(sol); I2 R − U3 R I1 − Ue + U1 , dU3 = , R C1 C3 R U2 − U3 I1 − I2 U1 − U2 dI2 = , dU2 = , dI1 = } L2 C2 L1 sol := {dU1 = − Die Parameter der Bauelemente und die Anfangsbedingungen werden festgelegt > R:=0.8: C1:=1: C2:=C1*2: C3:=C1: L1:=1:L2:=L1: > U1:=0: U2:=0: U3:=0: I1:=0: I2:=0: Für die Eingangsfunktion wählen wir eine Näherung an den Delta-Impuls > t0:=0.5: > Heaviside(0):=1: > Ue:=(Heaviside(t)-Heaviside(t-t0))/t0: > plot(Ue, t=0..90, numpoints=500, thickness=2); 2 1.5 1 0.5 0 20 40 60 t 80 55 56 6 Signal- und Systemanalyse mit Maple Lösen der DG mit dem Euler-Verfahren. Damit von den diskreten Werten im Anschluss die FFT gebildet werden kann, setzen wir die Anzahl der Zeitschritte als Zweierpotenz > m:=9: N:=2bm: > T:=90.: dt:=T/N: > t:=0: > for i from 1 to N > do > data1[i]:=[t,U3]: #diskrete Impulsantwort > data2[i]:=[t,Ue]: #diskretes Eingangssignal > U1:=U1 + dt*dU1: > I1 := I1 + dt* dI1: > U2:= U2 + dt * dU2: > I2:= I2 + dt * dI2: > U3:= U3 + dt * dU3: > t:=t+dt: > end do: Graphische Darstellung der Impulsantwort > plot([seq(data1[n],n=1..N)]); 0.2 0.15 0.1 0.05 0 20 40 60 80 –0.05 (2.) Systemanalyse: Um die FFT anwenden zu können, benötigen wir die diskreten Funktionswerte fd des Ausgangs- bzw. Eingangssignals. Die Imaginärteile imd sind jeweils auf Null zu setzen. > for i from 1 to N > do > fd1[i] := data1[i][2]: #Ausgangssignal > imd1[i] := 0.: > fd2[i] := data2[i][2]: #Eingangssignal > imd2[i] := 0.: > end do: 6.7 System-Analyse mit Maple 57 Mit der schnellen Fouriertransformation berechnen wir die DFT sowohl des Eingangs- als auch des Ausgangssignals berechnet > FFT(m, fd1, imd1); > FFT(m, fd2, imd2); Wir bilden anschließend das Verhältnis von Ausgangs- zu Eingangsspektrum, H(w), und zeichnen den Betrag dieses Verhältnisses als Funktion von w : > for i from 1 to N > do H[i]:= evalc( (fd1[i]+I*imd1[i]) / (fd2[i]+I*imd2[i])): > end do: > for i from 1 to N > do daten[i]:= [2*3.14/T*(i-1), abs(H[i])] > end do: > plot([seq(daten[i], i=1..N/2)], labels=[‘w‘,“], color=red, thickness=2); 0.5 0.4 0.3 0.2 0.1 0 2 4 6 8 10 12 14 16 18 w Diskussion: Der Graph der Übertragungsfunktion hat qualitativ den gleichen Verlauf wie der analytisch über komplexe Rechnung berechnete mit der gleichen Grenzfrequenz wg = 1.4. Aufgabe: Führen Sie Simulationen durch, bei denen Sie die Impulsbreite t0 variieren.