12.08.2012 Aufrufe

MATLAB und Simulink in der Ingenieurpraxis

MATLAB und Simulink in der Ingenieurpraxis

MATLAB und Simulink in der Ingenieurpraxis

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

4 Simulation unter <strong>Simul<strong>in</strong>k</strong> �<br />

<strong>Simul<strong>in</strong>k</strong> ist e<strong>in</strong>e <strong>in</strong>teraktive grafische Entwicklungsumgebung zur Modellierung <strong>und</strong> Simulation<br />

l<strong>in</strong>earer <strong>und</strong> nichtl<strong>in</strong>earer dynamischer Systeme mittels Signalflussgrafen, wobei u. a. nichtl<strong>in</strong>eare<br />

Zusammenhänge <strong>und</strong> viele Signalerzeugungen blockorientiert gewonnen werden. Das zu<br />

simulierende mathematische Modell e<strong>in</strong>es dynamischen Systems wird dazu grafisch mit Funktionsblöcken<br />

<strong>in</strong> dem Modell-Fenster nachgebildet <strong>und</strong> als MDL-File abgespeichert. Das <strong>Simul<strong>in</strong>k</strong>-<br />

Tool arbeitet somit gleichungsorientiert im Gegensatz zu den Tools: SimMechanics, SimDrivel<strong>in</strong>e,<br />

SimPowerSystems <strong>und</strong> SimHydraulics, welche auf e<strong>in</strong>er physikalischen Modellierung mechanischer,<br />

elektrischer <strong>und</strong> hydraulischer Systeme <strong>in</strong> <strong>der</strong> <strong>Simul<strong>in</strong>k</strong>-Umgebung basieren.<br />

Die System-Parameter/Anfangswerte lassen sich direkt <strong>in</strong> den Funktionsblöcken o<strong>der</strong> <strong>in</strong>direkt<br />

mittels Workspace, also durch Tastature<strong>in</strong>gabe <strong>und</strong>/o<strong>der</strong> über e<strong>in</strong> M-File unter <strong>MATLAB</strong>, e<strong>in</strong>stellen.<br />

Die Ergebnisse s<strong>in</strong>d wie<strong>der</strong>um <strong>in</strong> <strong>Simul<strong>in</strong>k</strong> <strong>und</strong>/o<strong>der</strong> <strong>MATLAB</strong> darstellbar. E<strong>in</strong>e Weiterverarbeitung<br />

<strong>der</strong> Daten <strong>in</strong> <strong>der</strong> <strong>MATLAB</strong>-Umgebung ist somit möglich.<br />

Bezüglich des Handl<strong>in</strong>gs beziehen wir uns auf <strong>MATLAB</strong> 7.0..7.3 <strong>und</strong> <strong>Simul<strong>in</strong>k</strong> 6.0..6.5 unter<br />

W<strong>in</strong>dows XP. Die Modellierung <strong>der</strong> Begleitbeispiele sowie <strong>der</strong> Ergänzungen <strong>in</strong> [59] s<strong>in</strong>d weitgehend<br />

so abgefasst, dass sie auch mit Vorgängerversionen, gegebenenfalls mit kle<strong>in</strong>en Än<strong>der</strong>ungen,<br />

lauffähig s<strong>in</strong>d.<br />

Die für e<strong>in</strong>en E<strong>in</strong>stieg <strong>in</strong> <strong>Simul<strong>in</strong>k</strong> notwendigen Kenntnisse sollen kurz zusammengefasst <strong>und</strong><br />

später beispielorientiert ergänzt werden. Zur Vertiefung enthält u. a. Kapitel 8 mehrere <strong>Simul<strong>in</strong>k</strong>-<br />

Projekte unterschiedlicher Schwerpunkte. In Kapitel 6 werden mit <strong>der</strong> Stateflow Toolbox sowie<br />

<strong>in</strong> Kapitel 7 mit <strong>der</strong> SimMechanics Toolbox weitere Blockelemente für die <strong>Simul<strong>in</strong>k</strong>-Umgebung<br />

e<strong>in</strong>geführt.<br />

Ergänzende Erläuterungen zur Handhabung <strong>und</strong> Syntax s<strong>in</strong>d [6] ,[8], [13], [38] zu entnehmen.<br />

Z. B. s<strong>in</strong>d <strong>in</strong> [8] Gr<strong>und</strong>lagen mit Beispielen sehr detailliert <strong>und</strong> übersichtlich zusammengefasst.<br />

Zum wesentlichen Hilfsmittel sollte aber auch hier die Onl<strong>in</strong>e-Hilfe, die von Beg<strong>in</strong>n an gezielt<br />

e<strong>in</strong>zusetzen ist, werden.<br />

4.1 Zur Funktionsweise<br />

4.1.1 Block-Struktur<br />

Basis e<strong>in</strong>es <strong>Simul<strong>in</strong>k</strong>-Modells s<strong>in</strong>d Funktionsblöcke mit vektoriellem E<strong>in</strong>gang u, dem Ausgangsvektor<br />

y, dem Vektor <strong>der</strong> Zustände x sowie den Parametern p, wie <strong>in</strong> Bild 4.1 für e<strong>in</strong>e übergeordneter<br />

Struktur dargestellt. Der Zustandsvektor<br />

x =<br />

�<br />

x T c , x T �T dk (4.1)


148 4 Simulation unter <strong>Simul<strong>in</strong>k</strong> �<br />

u<br />

Zustände x<br />

Parameter p<br />

E<strong>in</strong>gang Ausgang<br />

Block−Name<br />

Bild 4.1: <strong>Simul<strong>in</strong>k</strong> Funktionsblock, allgeme<strong>in</strong><br />

kann zeitkont<strong>in</strong>uierliche (xc) o<strong>der</strong>/<strong>und</strong> zeitdiskrete (xd k ) Zustände enthalten. Es gelten die mathematischen<br />

Beziehungen<br />

y = fo(t, x, u, p) Ausgang (output)<br />

˙xc = fd(t, x, u, p) Ableitungsfunktion (<strong>der</strong>ivative)<br />

xd k+1 = fu(t, x, u, p) Zeitschritt (update).<br />

Derartige Bauste<strong>in</strong>e beschreiben also das E<strong>in</strong>- Ausgangsverhalten mit <strong>der</strong> e<strong>in</strong>deutigen Signalfluss-Richtung<br />

u → y.<br />

Darüber h<strong>in</strong>aus existieren Blöcke ohne E<strong>in</strong>gang (Quellen, Sources), z. B. Constant Blöcke,<br />

Funktionsgeneratoren <strong>und</strong> solche ohne Ausgang, z. B. To Workspace Block (Senke, S<strong>in</strong>ks).<br />

Alle Blöcke s<strong>in</strong>d <strong>in</strong> <strong>der</strong> Block-Library <strong>und</strong> <strong>in</strong> Blocksets zusammengefasst, vgl. Abschn. 4.3.1.<br />

Sie s<strong>in</strong>d gekennzeichnet durch den Block-Namen <strong>und</strong> das Block-Icon. Bei L<strong>in</strong>ks-Doppelmausklick<br />

auf den Block öffnet sich die Block Parameters Dialogbox, <strong>in</strong> <strong>der</strong> – neben e<strong>in</strong>er kurzen<br />

Erklärung – spezifische Parameter des Blocks e<strong>in</strong>gestellt werden können (Standard- (Default-)<br />

Werte s<strong>in</strong>d vorgegeben). Darüber h<strong>in</strong>aus existiert e<strong>in</strong> Help-Button, über den gezielt die zugehörige<br />

Onl<strong>in</strong>e-Hilfe geöffnet werden kann. Bei Rechts-Mausklick auf den Block öffnet sich e<strong>in</strong><br />

Kontextmenü, <strong>in</strong> dem u. a. Befehle zum Editieren von Blockeigenschaften <strong>und</strong> Formatieren des<br />

Blocks ausgewählt werden können.<br />

4.1.2 Simulationsablauf<br />

Entsprechend <strong>der</strong> mathematischen Formulierung des Problems wird das Simulationsmodell<br />

durch Verb<strong>in</strong>den geeigneter Funktionsblöcke <strong>und</strong> <strong>der</strong>en zugehörigen Parametern aufgebaut. Die<br />

Simulation des Modells setzt sich dann aus den beiden Phasen Initialisierung <strong>und</strong> Ausführung<br />

bezüglich <strong>der</strong> Zeit, meist numerische Integration, zusammen.<br />

• Initialisierungsphase:<br />

1. Die Blockparameter werden an <strong>MATLAB</strong> zur Auswertung übergeben <strong>und</strong> die sich ergebenden<br />

numerischen Werte werden den Blöcken zugeordnet.<br />

2. Die Modell-Hierarchie wird weitgehend aufgehoben, d. h. die Blöcke jedes Subsystems,<br />

dessen Ausführung nicht an Bed<strong>in</strong>gungen geknüpft ist, werden <strong>in</strong> das Gesamt-<br />

Modell e<strong>in</strong>bezogen, so dass e<strong>in</strong> e<strong>in</strong>ziges Block-Modell entsteht.<br />

3. Blöcke werden entsprechend dem Ablauf <strong>der</strong> Berechnung (serielle Arbeitsweise des<br />

Digitalrechners) mittels Sortier-Algorithmus <strong>in</strong> e<strong>in</strong>e abarbeitbare Reihenfolge<br />

gebracht. Dabei ist zu beachten, dass für jeden Block bei <strong>der</strong> Berechnung des Ausgangs<br />

<strong>der</strong> dazu benötigte E<strong>in</strong>gang bekannt ist. D. h. es muss beim Start <strong>der</strong> Simulation<br />

y


4.2 Die Integrationsverfahren 149<br />

von Blöcken, die e<strong>in</strong>en vorgegebenen Ausgang besitzen, z. B. die Anfangswerte <strong>der</strong><br />

Integrierer, ausgegangen werden. Solche Blöcke werden History-Blöcke genannt. Blöcke,<br />

die <strong>in</strong> Rückführungsschleifen, z. B. ohne zwischengeschaltetem Integrierer o<strong>der</strong><br />

Totzeitglied, liegen, bei denen <strong>der</strong> Ausgang direkt auf den E<strong>in</strong>gang wirkt, werden<br />

erkannt. Dies s<strong>in</strong>d so genannte algebraische Schleifen, bei denen fo(x) selbst vom<br />

Ausgang abhängt. In Bild 4.2 ist e<strong>in</strong> <strong>der</strong>artiges Beispiel angegeben. Innerhalb dieser<br />

Schleifen s<strong>in</strong>d ke<strong>in</strong>e seriellen Rechenschritte mehr vorgebbar. Es führt nur e<strong>in</strong>e konvergierende<br />

iterative Berechnung des Ausgangs zum Ziel.<br />

u1<br />

y1 = √ 2 u1 + 4, u1 = 1.2 y2<br />

sqrt(2)*u(1)+4<br />

Fcn<br />

y1=u2<br />

Ga<strong>in</strong><br />

1.2<br />

s<strong>in</strong><br />

Trigonometric<br />

Function<br />

y2 = s<strong>in</strong> u2 = s<strong>in</strong> ( √ 2 1.2 y2 + 4), beide Seiten hängen von y2 ab<br />

Bild 4.2: Beispiel für e<strong>in</strong>e algebraische Schleife<br />

Beispiele <strong>in</strong> [59]: alg_loop1.mdl, alg_loop_2.mdl mit Angaben zum <strong>Simul<strong>in</strong>k</strong>-Debugger<br />

unter: File/Model Properties/Description.<br />

4. Die Verb<strong>in</strong>dungen zwischen den Blöcken werden auf Verträglichkeit <strong>der</strong> Vektordimensionen<br />

des treibenden (Ausgang) <strong>und</strong> getriebenen (E<strong>in</strong>gang) Blocks überprüft.<br />

• Ausführungsphase:<br />

Danach kann die Ausführung, <strong>in</strong> <strong>der</strong> Regel die numerische Integration, mit dem ausgewählten<br />

Löser odexx durchgeführt werden. Hierzu müssen die Ableitungsfunktionen – z. B.<br />

entsprechend ˙xk = fk(tn, x) – gebildet werden, vgl. Kapitel 5. Dies erfolgt <strong>in</strong> zwei Schritten:<br />

1. In <strong>der</strong> festgelegten Reihenfolge wird <strong>der</strong> Ausgabewert jeden Blocks bestimmt.<br />

2. Es können jetzt für jeden Block die Ableitungen (z. B. ˙xk = fk(tn, x)) <strong>in</strong> Abhängigkeit<br />

von <strong>der</strong> aktuellen Zeit tn, se<strong>in</strong>er E<strong>in</strong>gangswerte <strong>und</strong> se<strong>in</strong>es Zustandes berechnet<br />

werden. Der so ermittelte Ableitungsvektor wird an den Integrator odexx zurückgegeben.<br />

Dieser ermittelt damit den neuen Zustandsvektor zum Zeitpunkt tn+1, vgl. auch<br />

Bild 5.6. Abschließend werden die Ausgaben, u. a. <strong>der</strong> Scopes, aktualisiert.<br />

Die Ausführungsreihenfolge <strong>der</strong> Blöcke lässt sich über den Button Format/Block Displays/<br />

Sorted Or<strong>der</strong> <strong>in</strong> <strong>der</strong> Menüleiste des Modell-Fensters zum <strong>Simul<strong>in</strong>k</strong>-Modell e<strong>in</strong>blenden.<br />

4.2 Die Integrationsverfahren<br />

Für die numerische Bearbeitung <strong>der</strong> mathematischen Modelle dynamischer Systeme spielen die<br />

Integrationsverfahren (kurz: Integrator, Solver, Löser, Code, . . .) die zentrale Rolle. Sie lösen e<strong>in</strong><br />

y2


150 4 Simulation unter <strong>Simul<strong>in</strong>k</strong> �<br />

Anfangswertproblem u. a. <strong>der</strong> Art<br />

˙x = f (t, x(t)); x(t0) = x0 . (4.2)<br />

Der Auszug aus dem <strong>Simul<strong>in</strong>k</strong>-Handbuch [6] <strong>in</strong> Tabelle 4.4, S. 200 gibt e<strong>in</strong>e Kurzbeschreibung<br />

<strong>der</strong> verfügbaren Verfahren wie<strong>der</strong>. Gr<strong>und</strong>lagen <strong>der</strong> mathematischen Methoden s<strong>in</strong>d [68], [69],<br />

[74], [76] zu entnehmen. Insbeson<strong>der</strong>e <strong>in</strong> [76] wird sehr anschaulich darauf e<strong>in</strong>gegangen. Hier<br />

geben wir nur e<strong>in</strong>en kurzen Überblick.<br />

Gr<strong>und</strong>sätzlich s<strong>in</strong>d Verfahren mit fester <strong>und</strong> variabler Schrittweite h zu unterscheiden. Dabei<br />

kann die Integrationsmethode e<strong>in</strong> E<strong>in</strong>schritt- o<strong>der</strong> Mehrschrittverfahren se<strong>in</strong>, vgl. Bild 4.3,<br />

S. 151. Wie die Namen zum Ausdruck br<strong>in</strong>gen, benutzen diese Verfahren Information aus e<strong>in</strong>em<br />

[tn, tn+1] o<strong>der</strong> mehreren [tn−k, . . . , tn, tn+1] Integrations<strong>in</strong>tervallen. Dies kann wie<strong>der</strong>um auf e<strong>in</strong>e<br />

explizite o<strong>der</strong> implizite Formulierung <strong>der</strong> Integrationsmethode, siehe Bild 4.3, S. 151, führen.<br />

Komb<strong>in</strong>ationen bei<strong>der</strong> Typen s<strong>in</strong>d im E<strong>in</strong>satz. Dabei werden die Formeln auf bestimmte Eigenschaften,<br />

z. B. hohe Genauigkeit, gute Stabilität, getrimmt. Zu den mo<strong>der</strong>nen Verfahren für steife<br />

Differenzialgleichungen zählen die Mehrschrittverfahren nach den BDF-Methoden (Backward<br />

Differentiation Formula); vgl. Bild 4.3, S. 151. Unter <strong>MATLAB</strong> gibt es e<strong>in</strong>e modifizierte Methode,<br />

das NDF-Verfahren (Numerical Differentiation Formula); das BDF-Verfahren ist optional<br />

aufrufbar.<br />

4.2.1 Methoden <strong>und</strong> Bezeichnungen<br />

E<strong>in</strong>schrittverfahren<br />

Um e<strong>in</strong>en kle<strong>in</strong>en E<strong>in</strong>blick <strong>in</strong> die Methoden mit den <strong>MATLAB</strong>-Bezeichnungen <strong>der</strong> Integrationsverfahren<br />

zu erhalten, sollen zunächst die ersten Verfahren aus Tabelle 4.4, S. 200 ode4, ode5<br />

<strong>und</strong> ode45 1 kurz skizziert werden. Sie s<strong>in</strong>d Vertreter <strong>der</strong> E<strong>in</strong>schrittverfahren auf <strong>der</strong> Basis <strong>der</strong><br />

RUNGE-KUTTA-Methode. Allgeme<strong>in</strong> lassen sich, ausgehend von <strong>der</strong> skalaren Differenzialgleichung<br />

˙x = f (t, x), die expliziten RUNGE-KUTTA-Methoden – vgl. Bild 4.4 – wie folgt beschreiben:<br />

Steigungswert <strong>in</strong> tn k1 = f (tn, xn); xn := x(tn)<br />

Steigungswerte <strong>in</strong> tn + cih ki = f (tn + cih, xn + h ∑ i−1<br />

j=1 ai, jk j), i = 2, . . . , s<br />

Ergebnis xn+1 = xn + h ∑ s i=1 biki .<br />

Die Koeffizienten ai, j, bi, ci charakterisieren die s-Schrittmethode, sie werden <strong>in</strong> <strong>der</strong> so genannten<br />

BUTCHER-Tabelle<br />

c1<br />

c2 a2,1<br />

c3 a3,1 a3,2<br />

. . . . . . . . . .<br />

cs as,1 as,2 . . . as,s−1<br />

b1 b2 . . . bs−1 bs<br />

1 ODE: Ord<strong>in</strong>aray Differential Equation


Bild 4.3:<br />

Darstellung <strong>und</strong> Methoden für die skalare Differenzialgleichung: ˙x = f (t, x)<br />

4.2 Die Integrationsverfahren 151<br />

Es sollen die Begriffe explizite <strong>und</strong> implizite E<strong>in</strong>schritt- <strong>und</strong> Mehrschrittverfahren am Beispiel erläutert<br />

werden.<br />

E<strong>in</strong>schrittverfahren: Information aus [tn, tn+1]<br />

EULER vorwärts xn+1 = xn + h f (tn, xn)<br />

- explizites Verfahren 1. Ordnung (Fehler 1. Ordnung)<br />

EULER rückwärts xn+1 = xn + h f (tn+1, xn+1)<br />

- implizites Verfahren 1. Ordnung (Fehler 2. Ordnung)<br />

Mehrschrittverfahren: Information aus [tn−k, tn+1], k > 1<br />

ADAMS-BASHFORTH-Verfahren<br />

xn+1 = xn + h<br />

24 (55 fn − 59 fn−1 + 37 fn−2 − 9 fn−3) , fn := f (tn, xn)<br />

- explizites 4-Schrittverfahren 4. Ordnung<br />

ADAMS-MOULTON-Verfahren<br />

xn+1 = xn + h<br />

720 (251 fn+1 + 646 fn − 264 fn−1 − 106 fn−2 − 19 fn−3)<br />

- implizites 4-Schrittverfahren 5. Ordnung<br />

Komb<strong>in</strong>ation aus explizitem <strong>und</strong> implizitem Verfahren ist e<strong>in</strong> Prädiktor-Korrektor-Verfahren.<br />

BDF-Verfahren (Backward Differenziation Formulas)<br />

25xn+1 − 48xn + 36xn−1 − 16xn−2 + 3xn−3 = 12h fn+1<br />

- implizites 4-Schrittverfahren<br />

Bild 4.3: Zur Bezeichnung e<strong>in</strong>iger Integrationsverfahren


152 4 Simulation unter <strong>Simul<strong>in</strong>k</strong> �<br />

angegeben. Damit ist das klassische RUNGE-KUTTA 2 -Verfahren <strong>in</strong> <strong>der</strong> Form<br />

0<br />

1<br />

2<br />

1<br />

2<br />

1<br />

2 0 1<br />

2<br />

1 0 0 1<br />

1<br />

6<br />

2<br />

6<br />

2<br />

6<br />

1<br />

6<br />

formulierbar. Es ist e<strong>in</strong> 4-Schrittverfahren <strong>der</strong> Ordnung 4 mit dem algorithmischen Aufbau<br />

k1 = f (tn, xn) Steigungswerte ki<br />

k2 = f (tn+ 1 , xn +<br />

2<br />

h<br />

2 k1), zur Schreibweise: tn + h<br />

2 → tn+ 1 k3 = f (tn+ 1 , xn +<br />

2<br />

2<br />

h<br />

2 k2)<br />

k4 = f (tn+1, xn + hk3)<br />

xn+1 = xn + h<br />

6 (k1 + 2k2 + 2k3 + k4) Ergebnis, explizite Formel<br />

sowie <strong>der</strong> geometrischen Interpretation nach Bild 4.4. Man beachte, dass jede Stufe e<strong>in</strong>es RUN-<br />

usw.<br />

Bild 4.4: Geometrische Interpretation zum RUNGE-KUTTA-Verfahren 4. Ordnung<br />

GE-KUTTA-Verfahrens e<strong>in</strong>e Funktionsauswertung f (·) benötigt. E<strong>in</strong> Integrationsschritt ist daher<br />

i. a. etwa viermal so teuer wie <strong>der</strong> entsprechende EULER-Schritt, vgl. Bild 4.3, S. 151. Dennoch<br />

ist aufgr<strong>und</strong> <strong>der</strong> hohen Ordnung das Verfahren von RUNGE-KUTTA viel effizienter, da u. a. mit<br />

größerer Schrittweite gearbeitet werden kann. Dies setzt sich fort, denn die DORMAND-PRINCE-<br />

Methode [20] mit den Koeffizienten nach Tabelle 4.1 ist e<strong>in</strong>e <strong>der</strong> effektivsten expliziten RUNGE-<br />

KUTTA-Formeln, obwohl sich <strong>der</strong> Rechenaufwand noch e<strong>in</strong>mal erhöht. Tabelle 4.1 enthält auch<br />

die beiden <strong>MATLAB</strong>-Verfahren ode5 <strong>und</strong> ode4. Die 7-Schrittmethode (s=7) basiert auf den beiden<br />

Ergebnissen x (5)<br />

n <strong>und</strong> x (4)<br />

n , die mit den gleichen Steigungswerten ki aber unterschiedlichen Ge-<br />

wichtungen b j ermittelt werden. Greift man auf das Ergebnis x (5)<br />

n zurück, dann handelt es sich<br />

um das des ode5 Verfahrens mit fester Schrittweite h; Verfahren 5. Ordnung. Im an<strong>der</strong>en Fall ergibt<br />

sich das Ergebnis des Verfahrens ode4 <strong>der</strong> Ordnung 4. Verwendet man beide Ergebnisse, so<br />

2 genauer: das Verfahren von KUTTA


0 15<br />

3<br />

10<br />

4<br />

5<br />

8<br />

9<br />

1<br />

1<br />

x (5)<br />

n<br />

x (4)<br />

n<br />

Tabelle 4.1: Koeffizienten <strong>der</strong> DORMAND-PRINCE-Methode<br />

1<br />

5<br />

3<br />

40<br />

9<br />

40<br />

44<br />

45 − 56<br />

15<br />

32<br />

9<br />

19372<br />

6561 − 25360<br />

2187<br />

64448<br />

6561<br />

9017<br />

3168 − 355<br />

33<br />

46732<br />

5247<br />

35<br />

384 0 500<br />

1113<br />

35<br />

500<br />

384 0 1113<br />

5179<br />

7571<br />

57600 0 16695<br />

− 212<br />

729<br />

49<br />

176<br />

125<br />

192<br />

125<br />

192<br />

393<br />

640<br />

4.2 Die Integrationsverfahren 153<br />

− 5103<br />

18656<br />

− 2187<br />

6784<br />

− 2187<br />

6784<br />

− 92097<br />

339200<br />

wird – z. B. aufgr<strong>und</strong> <strong>der</strong> Abweichung |x (5)<br />

n − x (4)<br />

n | – e<strong>in</strong> Maß zur Ermittlung <strong>der</strong> Schrittweite h,<br />

im Zusammenhang mit e<strong>in</strong>em vorgegebenen Fehler ε, bestimmbar. Wir erhalten Methoden mit<br />

variabler Schrittweite. Dabei kann x (4)<br />

n (ode54) o<strong>der</strong> x (5)<br />

n (ode45) als Ergebnis akzeptiert werden.<br />

In gleicher Weise s<strong>in</strong>d die an<strong>der</strong>en E<strong>in</strong>schrittverfahren <strong>in</strong> Tabelle 4.4, S. 200 zu <strong>in</strong>terpretieren.<br />

Wie die bisher betrachteten expliziten E<strong>in</strong>schritt- (RUNGE-KUTTA-) Verfahren stellt man<br />

auch die impliziten Verfahren (z. B. das EULER-Rückwärts-Verfahren aus Bild 4.3, S. 151) übersichtlich<br />

<strong>in</strong> e<strong>in</strong>em Tableau <strong>der</strong> Struktur<br />

c1 a11 a12 . . . a1,s−1 a1,s<br />

c2 a2,1 a2,2 . . . a2,s−1 a2,s<br />

c3 a3,1 a3,2 . . . a3,s−1 a3,s<br />

.<br />

.<br />

.<br />

.<br />

cs as,1 as,2 . . . as−1,s−1 as,s<br />

b1 b2 . . . bs−1 bs<br />

dar. Beispiel: Die Trapez-Regel<br />

xn+1 = xn + 1<br />

2 h ( f (tn, xn) + f (tn+1, xn+1))<br />

.<br />

.<br />

11<br />

84<br />

11<br />

84<br />

187<br />

2100<br />

kann als zweistufiges implizites RUNGE-KUTTA-Verfahren aufgefasst werden:<br />

k1 = f (tn, xn)<br />

k2 = f (tn + h, xn + h( 1<br />

2 k1 + 1<br />

2 k2))<br />

xn+1 = xn + h<br />

2 (k1 + k2).<br />

0<br />

1<br />

40<br />

zugehörige Tableau<br />

0 1 0<br />

1 1 2<br />

1<br />

2<br />

Nachteil <strong>der</strong> impliziten RUNGE-KUTTA-Verfahren ist, dass die ki nicht nache<strong>in</strong>an<strong>der</strong> berechnet<br />

werden können, son<strong>der</strong>n dass <strong>in</strong> jedem Schritt e<strong>in</strong> i. a. nichtl<strong>in</strong>eares Gleichungssystem von s · N<br />

Gleichungen <strong>in</strong> den k1, . . . , ks gelöst werden muss, wobei N die Dimension des Differenzialgleichungssystems<br />

bezeichnet.<br />

1<br />

2<br />

1<br />

2


154 4 Simulation unter <strong>Simul<strong>in</strong>k</strong> �<br />

Bei weniger steifen Differenzialgleichungen folgt aus dem Fixpunktsatz für kontrahierende<br />

Abbildungen, dass die Fixpunktiteration [76] gegen die Lösung (ki)i=1,...,s konvergiert, wenn die<br />

Schrittweite die LIPSCHITZ-Bed<strong>in</strong>gung, vgl. [74], erfüllt; z. B. für k2 aus <strong>der</strong> obigen impliziten<br />

RUNGE-KUTTA-Formel im ℓ-ten Iterationsschritt<br />

�<br />

�<br />

1<br />

k2 = f tn + h, xn + h<br />

ℓ+1 2 k1 + 1<br />

2 k2ℓ ��<br />

, ℓ = 1, 2, . . . , k21 Startwert.<br />

Bei steifen Systemen muss das nichtl<strong>in</strong>eare Gleichungssystem für die ki immer mit dem NEW-<br />

TON-Verfahren o<strong>der</strong> e<strong>in</strong>er verwandten Methode gelöst werden. Hierfür benötigt man die JACOBI-<br />

Matrix.<br />

E<strong>in</strong>e dritte Möglichkeit ist die Komb<strong>in</strong>ation e<strong>in</strong>es expliziten (Prädiktorschritt (P)) <strong>und</strong> e<strong>in</strong>es<br />

impliziten (Korrektorschritt (K)) Verfahrens, die so genannte Prädiktor-Korrektor-Methode. Für<br />

die EULER-Verfahren nach Bild 4.3, S. 151 bedeutet dies:<br />

x P n+1 = xn + h f (tn, xn) Prädiktorschritt P , EULER-Vorwärts-Schritt<br />

x K n+1 = xn + h f (tn+1, x P n+1) Korrektorschritt K (+ z. B. Fixpunkt-Iteration)<br />

Mehrschrittverfahren<br />

In ähnlicher Weise wie die oben angesprochenen E<strong>in</strong>schrittverfahren s<strong>in</strong>d auch die Mehrschrittverfahren<br />

gekennzeichnet, wobei zusätzlich die Ordnung des Verfahrens anpassbar bzw. e<strong>in</strong>stellbar<br />

ist, z. B. ode113, ode15s aus Tabelle 4.4, S. 200.<br />

Bei den l<strong>in</strong>earen Mehrschrittverfahren benutzt man zur Berechnung <strong>der</strong> Näherung xn+s die bereits<br />

ermittelten – zeitlich zurückliegenden Werte – Näherungen xn+s−1, xn+s−2, . . . , xn. Mehrschrittverfahren<br />

s<strong>in</strong>d somit nicht selbststartend <strong>und</strong> arbeiten deshalb zu Integrationsbeg<strong>in</strong>n u. a.<br />

mit E<strong>in</strong>schrittverfahren zusammen. Es werden explizite <strong>und</strong> implizite s-Schritt-Verfahren unterschieden,<br />

vgl. Bild 4.3, S. 151. Die Mehrschrittverfahren ADAMS-BASHFORTH, ADAMS-<br />

MOULTON usw. basieren auf <strong>der</strong> numerischen Lösung e<strong>in</strong>er Integralgleichung [74], die BDF-Methoden<br />

werden dagegen mit Hilfe <strong>der</strong> numerischen Differenziation konstruiert. Beispiele impliziter<br />

Formeln s<strong>in</strong>d u. a. nach [74]<br />

s = 1 : xn+1 − xn = h fn+1, fn+1 := f (tn+1, xn+1), EULER-Methode; vgl. Bild 4.3<br />

s = 2 : 3xn+1 − 4xn + xn−1 = 2h fn+1<br />

s = 6 : 147xn+1 − 360xn + 450xn−1 − 400xn−2 + 225xn−3 − 72xn−4 + 10xn−5 = 60h fn+1.<br />

Für s ≤ 6 s<strong>in</strong>d die Formeln stabil, für s ≥ 7 <strong>in</strong>stabil. Die Verfahren s ≤ 6 zeichnen sich durch e<strong>in</strong><br />

verbessertes Stabilitätsverhalten gegenüber expliziten Verfahren, <strong>in</strong>sbeson<strong>der</strong>e steifer Systeme,<br />

aus. Bei impliziten Verfahren muss <strong>in</strong> jedem Schritt wie<strong>der</strong> e<strong>in</strong> nichtl<strong>in</strong>eares Gleichungssystem,<br />

z. B. für die implizite EULER-Formel<br />

F(xn+1) = xn+1 − xn − h f (tn+1, xn+1)<br />

gelöst werden. Dies kann z. B. mit dem NEWTON-Verfahren mit dem Startwert xn erfolgen; hierzu<br />

muss die JACOBI-Matrix (∂F/∂x|xn+1 ), analytisch o<strong>der</strong> näherungsweise numerisch, berechnet<br />

werden, vgl. Optionen zum Aufruf <strong>der</strong> Integrationsverfahren unter <strong>MATLAB</strong> <strong>in</strong> Kapitel 5.


4.2.2 Steifigkeit <strong>der</strong> Differenzialgleichung<br />

4.2 Die Integrationsverfahren 155<br />

Wesentlich für die Verfahrensauswahl ist die Kenntnis <strong>der</strong> Steifigkeit <strong>der</strong> Differenzialgleichung.<br />

Wir geben e<strong>in</strong>e Def<strong>in</strong>ition stichwortartig an: E<strong>in</strong> Differenzialgleichungssystem heißt steif, wenn<br />

die Eigenwerte des Systems sehr unterschiedliche (negative) Realteile aufweisen. Als Maß <strong>der</strong><br />

Steifigkeit gilt u. a. <strong>der</strong> Quotient <strong>der</strong> Beträge <strong>der</strong> absolut größten <strong>und</strong> kle<strong>in</strong>sten (negativen) Realteile<br />

<strong>der</strong> Eigenwerte<br />

S := max j |ℜ(λ j)|<br />

m<strong>in</strong> j |ℜ(λ j)| .<br />

Bei steifen Differenzialgleichungen erreicht S Werte von 10 6 <strong>und</strong> höher. Das Problem <strong>der</strong> Steifigkeit<br />

existiert ausgeprägt bei nichtl<strong>in</strong>earen Differenzialgleichungen<br />

˙x(t) = f (t, x(t)) x(t) ∈ R n . (4.3)<br />

Die Steifigkeit wird für das l<strong>in</strong>earisierte System def<strong>in</strong>iert, <strong>in</strong>dem das lokale Verhalten <strong>der</strong> exakten<br />

Lösung x(t) <strong>in</strong> <strong>der</strong> Umgebung von tn betrachtet wird. Hierbei liegt die Anfangsbed<strong>in</strong>gung<br />

x(tn) = xn, wo xn die berechnete Näherungslösung an <strong>der</strong> Stelle tn bedeutet, zu Gr<strong>und</strong>e. Unter<br />

<strong>der</strong> Voraussetzung <strong>der</strong> gestörte Lösung<br />

x(t) = xn + z(t) für tn ≤ t ≤ tn + h; Norm von z <strong>und</strong> h kle<strong>in</strong><br />

entwickeln wir (4.3) <strong>in</strong> e<strong>in</strong>e TAYLOR-Reihe <strong>und</strong> brechen nach dem ersten Glied ab<br />

�<br />

∂ f �<br />

˙xn + ˙z(t) = f (tn, xn) + � z(t) + O(z<br />

∂x<br />

2 ),<br />

woraus schließlich mit (4.3) die erste Näherung<br />

�<br />

∂ f �<br />

˙z(t) = � z(t) = J(tn, xn) z(t)<br />

∂x<br />

� n<br />

� n<br />

folgt. Dies ist e<strong>in</strong>e l<strong>in</strong>eare Differenzialgleichung mit konstanter Koeffizientenmatrix J(tn, xn),<br />

mit <strong>der</strong>en Eigenwerte sich S ermitteln lässt. Somit wird das qualitative Verhalten von x(t) <strong>in</strong><br />

<strong>der</strong> Umgebung von tn durch z(t) beschrieben. Das nichtl<strong>in</strong>eare Differenzialgleichungssystem<br />

wird als steif bezeichnet, falls die Eigenwerte <strong>der</strong> JACOBI-Matrix J(tn, xn) sehr unterschiedliche<br />

negative Realteile haben <strong>und</strong> S groß ist. Das Maß <strong>der</strong> Steifigkeit von (4.3) ist bei nichtl<strong>in</strong>earen<br />

im Gegensatz zu l<strong>in</strong>earen Systemen abhängig vom Zeitpunkt tn <strong>und</strong> <strong>der</strong> momentanen Näherungs-<br />

Lösung xn, so dass sich S im Verlauf <strong>der</strong> Integration sehr stark än<strong>der</strong>n kann. Mo<strong>der</strong>ne Verfahren<br />

nutzen dies zur Anpassung an den Integrationsablauf <strong>und</strong> stellen damit die Schrittweite sowie<br />

die Ordnung des Integrationsverfahrens e<strong>in</strong>.<br />

E<strong>in</strong>e s<strong>in</strong>nvolle Erweiterung <strong>der</strong> Def<strong>in</strong>ition für steife Systeme ist <strong>in</strong> [76] angegeben<br />

S := max j |λ j|<br />

m<strong>in</strong> j |λ j| , Anhaltswert: S > 104 , . . . , 10 6 ,


156 4 Simulation unter <strong>Simul<strong>in</strong>k</strong> �<br />

wobei durch die Eigenwerte λ j auch schwach gedämpfte, hochfrequente Lösungsanteile erfasst<br />

werden.<br />

In <strong>MATLAB</strong> s<strong>in</strong>d, wie schon angedeutet, zwei Methoden zur Lösung steifer Systeme implementiert.<br />

Die Function ode15s verwendet BDF- o<strong>der</strong> NDF-Formeln <strong>der</strong> Ordnung k ∈ {1, 2, 3, 4, 5};<br />

vgl. [68], [74]. NDF-Methoden s<strong>in</strong>d Modifikationen <strong>der</strong> BDF-Methoden, die ebenfalls A-stabil<br />

(absolut stabil) [68], [74] s<strong>in</strong>d. Sie besitzen e<strong>in</strong>e etwas größere Genauigkeit als die BDF-Methoden.<br />

Die Function ode23s verwendet e<strong>in</strong> ROSENBROCK-Verfahren <strong>der</strong> Ordnung 3, wobei <strong>der</strong><br />

Fehler mit e<strong>in</strong>er Methode <strong>der</strong> Ordnung 2 geschätzt wird. Es ist geeignet, wenn die Genauigkeitsansprüche<br />

nicht zu hoch s<strong>in</strong>d.<br />

4.2.3 Bemerkungen zur Wahl <strong>der</strong> Verfahren<br />

E<strong>in</strong>er Anfangswertaufgabe sieht man nicht unmittelbar an, ob ihre Lösung steif ist. Es gibt e<strong>in</strong>ige<br />

Aufgabenklassen, bei denen man weiß, dass steife Lösungen zu erwarten s<strong>in</strong>d, wie z. B. bei <strong>der</strong><br />

VAN-DER-POL-Gleichung<br />

¨x − ε ( 1 − x 2 ) ˙x + x = 0<br />

mit sehr großen Parametern ε o<strong>der</strong> mechanischen Systemen mit sehr unterschiedlichen Steifigkeits-<br />

<strong>und</strong> Dämpfungskonstanten. In diesen Fällen wird man sofort steife Löser verwenden.<br />

Liegen ke<strong>in</strong>e guten Gründe dafür vor, dass e<strong>in</strong>e steife Lösung zu erwarten ist, wird man zuerst<br />

versuchen, das gegebene Problem mit e<strong>in</strong>em nicht-steifen Löser zu behandeln, denn explizite<br />

(e<strong>in</strong>gebettete) RUNGE-KUTTA-Verfahren, z. B. ode45, o<strong>der</strong> Mehrschrittverfahren vom ADAMS-<br />

Typ s<strong>in</strong>d wesentlich billiger als steife Löser. Bei steifen Lösern hat man <strong>in</strong> jedem Schritt e<strong>in</strong><br />

nichtl<strong>in</strong>eares Gleichungssystem zu lösen <strong>und</strong> hierzu die JACOBI-Matrix <strong>der</strong> rechten Seite o<strong>der</strong><br />

e<strong>in</strong>e Näherung davon aufzustellen.<br />

Praktisch: Beobachtet man, dass <strong>der</strong> Lösungsprozess nur sehr langsam voranschreitet, wird<br />

man zu e<strong>in</strong>em steifen Löser wechseln.<br />

RUNGE-KUTTA-Verfahren ermöglichen e<strong>in</strong>e e<strong>in</strong>fache Schrittweitensteuerung (Adaptivität),<br />

haben aber den Nachteil gegenüber dem ADAMS-Verfahren, dass <strong>in</strong> jedem Schritt die rechte Seite<br />

von (4.2) an mehreren Stellen ausgewertet werden muss (für das Verfahren von DORMAND<br />

<strong>und</strong> PRINCE <strong>der</strong> Ordnung 5 an 6 Stellen). Beim Prädiktor-Korrektor-Verfahren kann man hohe<br />

Ordnungen mit 2 o<strong>der</strong> 3 Auswertungen erreichen. Man wird daher e<strong>in</strong> Mehrschrittverfahren verwenden,<br />

wenn die Auswertung <strong>der</strong> rechten Seite <strong>der</strong> Differenzialgleichung sehr teuer ist. In <strong>der</strong><br />

Regel wird man Verfahren hoher Ordnung nur dann verwenden, wenn die rechte Seite <strong>der</strong> Differenzialgleichung<br />

sehr glatt ist. Man verwendet den TAYLORschen Satz, um Methoden hoher<br />

Konsistenzordnung zu entwickeln.<br />

E<strong>in</strong>e Regel für die Auswahl steifer Löser ist nicht so e<strong>in</strong>fach zu formulieren. E<strong>in</strong>en Anhaltspunkt<br />

geben die Stabilitätsgebiete <strong>der</strong> Verfahren, z. B. nach [68], [74], [76]. Wenn man weiß,<br />

dass die Eigenwerte <strong>der</strong> L<strong>in</strong>earisierung <strong>der</strong> rechten Seite <strong>in</strong> <strong>der</strong> Nähe <strong>der</strong> negativen reellen Achse<br />

liegen, so wird man BDF bzw. NDF Formeln wählen. Weiß man, dass Eigenwerte <strong>der</strong> JACOBI-<br />

Matrix näher an <strong>der</strong> imag<strong>in</strong>ären Achse als an <strong>der</strong> negativen reellen Achse liegen, so wird man<br />

ROSENBROCK-Methoden o<strong>der</strong> Extrapolationsverfahren verwenden.


4.3 <strong>Simul<strong>in</strong>k</strong>-Gr<strong>und</strong>lagen<br />

4.3 <strong>Simul<strong>in</strong>k</strong>-Gr<strong>und</strong>lagen 157<br />

Zunächst gehen wir auf Gr<strong>und</strong>lagen zum Umgang mit <strong>Simul<strong>in</strong>k</strong> e<strong>in</strong>, um daran anschließend die<br />

Modellierung mit <strong>Simul<strong>in</strong>k</strong> an e<strong>in</strong>em kle<strong>in</strong>en Projekt zu vertiefen. Der Zugang zu <strong>Simul<strong>in</strong>k</strong> erfolgt<br />

mit dem Button <strong>in</strong> <strong>der</strong> Menü-Leiste des <strong>MATLAB</strong> Desktop nach Bild 1.1. Es öffnet sich<br />

<strong>der</strong> Library Browser mit <strong>der</strong> Menüleiste File/Edit/View/Help. Insbeson<strong>der</strong>e wird über<br />

File/New/Model o<strong>der</strong> Ctrl+N e<strong>in</strong> neues Modell-Fenster mit <strong>der</strong> Menü-Leiste File/Edit/View/Simulation/Format/Tools/Help<br />

bereitgestellt. Entsprechend s<strong>in</strong>d gespeicherte<br />

<strong>Simul<strong>in</strong>k</strong>-Programme mit <strong>der</strong> Endung mdl zu öffnen. Für die letzten beiden Vorgänge<br />

existieren die Standard-Button . Des Weiteren werden alle Hauptgruppen <strong>der</strong> Library angezeigt,<br />

auf die wir im Folgenden e<strong>in</strong>gehen werden.<br />

4.3.1 Die Modell-Library<br />

Wesentlich für jedes Simulationsprogramm ist das Modellangebot <strong>in</strong> <strong>der</strong> verfügbaren Library. In<br />

<strong>Simul<strong>in</strong>k</strong> 6 ist die Library <strong>in</strong> die vierzehn Hauptgruppen mit den e<strong>in</strong>gefärbten Symbolen nach<br />

Bild 4.5 unterteilt. E<strong>in</strong>hergehend mit <strong>der</strong> ständigen Erweiterung <strong>der</strong> Libraries <strong>der</strong> Vorgängerversionen<br />

kam es zur Ergänzung <strong>und</strong> teilweise Umstrukturierung <strong>der</strong> Gruppen. D. h. Blöcke aus<br />

Vorgängerversionen können an<strong>der</strong>en Gruppen zugeordnet se<strong>in</strong>. In Bild 4.5 ist e<strong>in</strong>e Auswahl <strong>der</strong><br />

verfügbaren Funktionsblöcke abgebildet. Zu jedem Block gehört e<strong>in</strong> Parameter-Dialog-Fenster,<br />

welches sich mit e<strong>in</strong>em Doppelklick <strong>der</strong> l<strong>in</strong>ken Maustaste öffnen lässt.<br />

Neben diesen aufgeführten Library-Blöcken existieren ergänzende Blocksets, die e<strong>in</strong>erseits<br />

<strong>in</strong>nerhalb <strong>der</strong> Library unter Additional Math & Discrete <strong>und</strong> an<strong>der</strong>erseits unter <strong>Simul<strong>in</strong>k</strong> extra<br />

sowie <strong>in</strong> an<strong>der</strong>en Tools zu f<strong>in</strong>den s<strong>in</strong>d.<br />

Beispiel 4.1: Modellerstellung<br />

Für die Differenzialgleichung<br />

˙x = −0.5 x + 5<br />

ist das <strong>Simul<strong>in</strong>k</strong>-Modell zu erstellen. Die Zeit t <strong>und</strong> x s<strong>in</strong>d mit dem To Workspace<br />

Block <strong>und</strong> xp = ˙x mit dem Outport Block, siehe Abschn. 4.3.2, <strong>in</strong> den Workspace<br />

zu schreiben. Zur Integration von ˙x wird e<strong>in</strong> Integrator Block, zur Abbildung <strong>der</strong><br />

rechten Seite e<strong>in</strong> Summierer, d. h. e<strong>in</strong> Sum Block (ohne Abbildung <strong>in</strong> Bild 4.5) benötigt.<br />

Die Konstante 5 wird mit dem Constant Block <strong>und</strong> die Verstärkung von 0.5<br />

mit dem Ga<strong>in</strong> Block realisiert. Nach dem Öffnen des Modell-Fensters (Ctrl+N) s<strong>in</strong>d<br />

die ausgewählten Blöcke <strong>der</strong> Library mit <strong>der</strong> l<strong>in</strong>ken Maustaste anzuklicken <strong>und</strong> bei gedrückter<br />

Taste <strong>in</strong>s Modell-Fenster zu ziehen – click-and-drag mouse operation –. Der<br />

Signalpfad zwischen den Blöcken erfolgt, ausgehend vom E<strong>in</strong>- o<strong>der</strong> Ausgang <strong>der</strong> zu<br />

verb<strong>in</strong>denden Blöcke, ebenfalls mit gedrückter l<strong>in</strong>ker Maustaste. E<strong>in</strong>e automatische<br />

Signalverb<strong>in</strong>dung wird durch Aktivieren z. B. des Ausgangs-Blocks mit <strong>der</strong> l<strong>in</strong>ken<br />

Maustaste <strong>und</strong> anschließen<strong>der</strong> Aktivierung des Folgeblocks bei gleichzeitig gedrückter<br />

Strg- bzw. Ctrl- Taste erreicht. Abschließend s<strong>in</strong>d die Parameter 5, 0.5 sowie<br />

<strong>der</strong> Anfangswert x(0) = 0 des Integrierers <strong>in</strong> die jeweilige Dialogbox e<strong>in</strong>zutragen. Der


158 4 Simulation unter <strong>Simul<strong>in</strong>k</strong> �<br />

Bild 4.5: Beispiele für die Zuordnung <strong>der</strong> Funktionsblöcke <strong>der</strong> Library unter <strong>Simul<strong>in</strong>k</strong> 6<br />

Simulationsstart mit <strong>der</strong> zuvor e<strong>in</strong>gegebenen Integrationsdauer erfolgt über den Button<br />

Simulation/Start o<strong>der</strong> dem Button. Das komplette Modell ist <strong>in</strong> Bild 4.6<br />

abgebildet. Zum Experimentieren dient Lib_Beisp.mdl aus [59].<br />

Bild 4.6: Beispiel e<strong>in</strong>es e<strong>in</strong>fachen Block-Modells<br />

4.3.2 E<strong>in</strong>stellung des Integrators <strong>und</strong> des Datentransfers<br />

Die Integratorauswahl erfolgt im Modell-Fenster unter dem Menüpunkt Simulation Option<br />

Configuration Parameters; vgl. Bild 4.7. Hier existieren <strong>in</strong> Abhängigkeit <strong>der</strong> vorhandenen<br />

Toolboxen mehrere anwählbare Dialogseiten: Solver, Data Import/Export, Di-


4.3 <strong>Simul<strong>in</strong>k</strong>-Gr<strong>und</strong>lagen 159<br />

Bild 4.7: Configuration Parameters Fenster von Solver <strong>und</strong> Data Import/Export, <strong>Simul<strong>in</strong>k</strong> 6.4<br />

agnostic usw.. Auf <strong>der</strong> Solver-Seite werden Start- <strong>und</strong> Stopp-Zeit, das Integrationsverfahren<br />

<strong>und</strong> Daten zur Schrittweite sowie zur Toleranzvorgabe e<strong>in</strong>gestellt. Unter Zeros cross<strong>in</strong>g<br />

control ist die Nullstellen-Detektion spezieller Blöcke übergeordnet e<strong>in</strong>- o<strong>der</strong> ausschaltbar.<br />

Auf <strong>der</strong> Seite Data Import/Export nach Bild 4.7 wird u. a. <strong>der</strong> Datentransfer zwischen<br />

<strong>Simul<strong>in</strong>k</strong> <strong>und</strong> dem Workspace sowie e<strong>in</strong>ige Optionen organisiert:<br />

• Load from workspace: E<strong>in</strong>erseits können unter Input e<strong>in</strong> Zeit- <strong>und</strong> E<strong>in</strong>gangsvektor t, u<br />

<strong>und</strong> an<strong>der</strong>erseits unter Initial State <strong>der</strong> Anfangswertvektor xInitial <strong>der</strong> Zustände an das<br />

<strong>Simul<strong>in</strong>k</strong>-Modell übergeben werden. Für [t,u] müssen im Modell dafür Inports-Blöcke<br />

aus <strong>der</strong> Ports & Subsystems-Bibliothek vorhanden se<strong>in</strong>; siehe FromWorksp.mdl <strong>in</strong> [59].<br />

• Save to workspace: Datentransfer aus dem <strong>Simul<strong>in</strong>k</strong>-Modell <strong>in</strong> den Workspace. Dies bezieht<br />

sich auf den Zeitvektor z. B. tout, auf den Zustandsvektor xout sowie auf die Ausgangsvariablen<br />

yout denen Outports-Blöcke – vgl. Bild 4.6 – aus <strong>der</strong> Ports & Subsystems-Bibliothek zugeordnet<br />

se<strong>in</strong> müssen. Die Reihenfolge <strong>der</strong> gespeicherten Zustände (Integrator-Ausgänge)<br />

wird von dem Sortier-Algorithmus, wie <strong>in</strong> Abschn. 4.1.2 beschrieben, festgelegt. Sie kann<br />

mit Format/ Block Displays/Sorted Or<strong>der</strong> <strong>in</strong>s Modell-Fenster e<strong>in</strong>geblendet wer-


160 4 Simulation unter <strong>Simul<strong>in</strong>k</strong> �<br />

den. Darüber h<strong>in</strong>aus können die Zustandswerte (xF<strong>in</strong>al) zur Stopp-Zeit gespeichert werden;<br />

siehe FromWorksp.mdl <strong>in</strong> [59].<br />

• Im Feld Save options kann die Anzahl <strong>der</strong> gespeicherten Daten tout, yout usw. begrenzt werden.<br />

Unter Output options/Ref<strong>in</strong>e output ist es möglich, mit dem Ref<strong>in</strong>e factor<br />

zusätzliche Ausgabewerte mittels Kurvenglättungs-Methoden im Integrations<strong>in</strong>tervall<br />

[tn, tn+1] zu erzeugen; d. h. Ref<strong>in</strong>e factor = 1 liefert ke<strong>in</strong>e, Ref<strong>in</strong>e factor = r liefert<br />

r − 1 Zwischenwerte. Der Defaultwert ist 1. Die Zwischenwerte beziehen sich nur auf die<br />

Ausgabe <strong>und</strong> nicht auf die Darstellungen im Scope o<strong>der</strong> XY Graph.<br />

Im Diagnostic-Fenster kann u. a. ausgewählt werden, wie bei den aufgelisteten Ereignissen<br />

(z. B. Algebraic loop, Date overflow usw.) während e<strong>in</strong>er Simulation reagiert werden soll; z. B.<br />

mit: Warn<strong>in</strong>g, Error (Simulationsabbruch) o<strong>der</strong> none.<br />

4.3.3 Datentransfer über den Workspace<br />

Die Parameter <strong>und</strong>/o<strong>der</strong> Matrixelemente usw. <strong>der</strong> Funktionsblöcke lassen sich <strong>in</strong> den zugehörigen<br />

Parameter-Dialog-Boxen als numerische o<strong>der</strong> symbolische Werte e<strong>in</strong>tragen, z. B. gilt für<br />

e<strong>in</strong>e 2 × 2-Matrix:<br />

[0 1; 1 4] o<strong>der</strong> A.<br />

Ist <strong>der</strong> symbolische Wert (A) e<strong>in</strong>getragen, z. B. im State Space Block von Bild 4.8, dann müssen<br />

die zugehörigen numerischen Werte vor dem Simulationsstart im Workspace liegen. Dieses<br />

kann u. a. über e<strong>in</strong>e Tastature<strong>in</strong>gabe o<strong>der</strong> über e<strong>in</strong> angestartetes M-File erfolgen, wie <strong>in</strong> Bild 4.8<br />

verdeutlicht. Der Datentransfer aus dem <strong>Simul<strong>in</strong>k</strong>-Modell <strong>in</strong> den Workspace erfolgt u. a. über<br />

den TO Workspace Block <strong>in</strong> Array- o<strong>der</strong> Structure-Format, z. B. wie <strong>in</strong> Bild 4.8 für die Matrix<br />

simout o<strong>der</strong> den Outport Block wie <strong>in</strong> Bild 4.6 <strong>und</strong> Abschn. 4.3.2. Damit können die Daten <strong>in</strong><br />

<strong>MATLAB</strong> u. a. zur grafischen Darstellung weiterverarbeitet werden. E<strong>in</strong>e weitere Möglichkeit zur<br />

Bild 4.8: Datenaustausch am Beispiel des State Space Blocks<br />

Übergabe <strong>der</strong> Simulationsdaten <strong>in</strong> den Workspace kann im Scope-Fenster durch aktivieren <strong>der</strong><br />

Array- o<strong>der</strong> Structure-Übergabe, vgl. Abschn. 4.3.5.4, S. 166, erreicht werden.<br />

4.3.4 Simulationsaufruf aus <strong>der</strong> <strong>MATLAB</strong> Umgebung<br />

Die Simulation kann e<strong>in</strong>erseits direkt aus dem Menü-Punkt Simulation/Start o<strong>der</strong> mit<br />

dem Start-Icon <strong>der</strong> Menüleiste <strong>und</strong> an<strong>der</strong>erseits aus <strong>der</strong> <strong>MATLAB</strong>-Umgebung, mittels Tastatur


4.3 <strong>Simul<strong>in</strong>k</strong>-Gr<strong>und</strong>lagen 161<br />

o<strong>der</strong> M-File, erfolgen. Aus <strong>der</strong> <strong>MATLAB</strong>-Umgebung wird <strong>der</strong> Start mit dem Aufruf <strong>der</strong> Function<br />

sim e<strong>in</strong>geleitet. Optionen werden mit simset gesetzt <strong>und</strong> können mit simget aufgelistet werden,<br />

verfolge: help sim usw.. Die e<strong>in</strong>stellbaren Optionen umfassen z. B. die <strong>der</strong> Solver- <strong>und</strong><br />

Data Import/Export-Seite, z. B. RelTol, AbsTol, MaxRows, Ref<strong>in</strong>e usw.. Ausgabe-<br />

Daten werden entsprechend dem Function-Aufruf <strong>in</strong> eckige Klammern gesetzt, sie be<strong>in</strong>halten<br />

die Größen <strong>der</strong> Data Import/Export Seite unter Save to workspace. Daten des Workspace,<br />

die im Feld Load from workspace aufgeführt s<strong>in</strong>d, stehen im Aufruf h<strong>in</strong>ter den Optionen. Die<br />

Syntax e<strong>in</strong>es Aufrufs lautet:<br />

[tout, xout, yout] = sim(’modell’, timespan, options, tu)<br />

mit – siehe auch FromWorksp.mdl <strong>in</strong> [59] –<br />

tout Zeitvektor<br />

xout Zustände, spaltenweise<br />

yout Daten <strong>der</strong> Outports, spaltenweise<br />

’modell’ Name <strong>der</strong> Modelldatei, z. B. ’model’ ohne Endung mdl<br />

timespan Zeit<strong>in</strong>tervall: z. B. te Stoppzeit (bei Startzeit 0) o<strong>der</strong><br />

[ta, te] Start <strong>und</strong> Stoppzeit usw.<br />

option mit simset zu kreierende<br />

optionale Parameter (z. B. Genauigkeit) <strong>der</strong> Simulation<br />

tu E<strong>in</strong>gangsvariablen über Inports Blöcke tu = [t, u]<br />

Beispiel: Aufruf für e<strong>in</strong>e Integration im Debugger-Mode nach Abschn. 4.3.5.6, bei <strong>der</strong> maximal<br />

1000 Zeilenelemente ausgegeben <strong>und</strong> die Integrationsdaten mit e<strong>in</strong>em zusätzlichen Zwischenwert<br />

geglättet werden sollen. Die Integrationszeit sei 10 s:<br />

me<strong>in</strong>e_opt= simset(’MaxRows’,1000,’Ref<strong>in</strong>e’,2,’debug’,’on’);<br />

[t,x]= sim(’Prog_Name’,10,me<strong>in</strong>e_opt);<br />

4.3.5 Hilfsmittel zur Modellerstellung <strong>und</strong> Datenauswertung<br />

Zur besseren Übersichtlichkeit <strong>und</strong> Transparenz werden Modellgruppen, meist von Teilstrukturen<br />

wie Filter, Regler, Radaufhängung usw., zu Subsystemen zusammengefasst. Dabei ist es<br />

wesentlich, dass die zugehörigen Blöcke bereits optisch Aussage über ihren Inhalt anzeigen. Zur<br />

diesbezüglichen Block-Maskierung geben wir e<strong>in</strong>ige Anregungen. Darüber h<strong>in</strong>aus bieten die Scope<br />

Blöcke Möglichkeiten zur Grafikdarstellung <strong>in</strong> <strong>der</strong> <strong>MATLAB</strong>-Umgebung, so dass Än<strong>der</strong>ungen<br />

<strong>und</strong> Ergänzungen leicht durchgeführt werden können.<br />

4.3.5.1 Zur Erstellung e<strong>in</strong>es Subsystems<br />

Bei komplexeren bzw. umfangreichen Modellen gew<strong>in</strong>nt man an Übersichtlichkeit, wenn Modellgruppen<br />

zu Subsystemen zusammengefasst werden. Darüber h<strong>in</strong>aus können mehrfach e<strong>in</strong>gesetzte<br />

Baugruppen <strong>in</strong> e<strong>in</strong>er Modell-Bibliothek <strong>in</strong> Form von Subsystemen bereitgestellt werden.<br />

Wir unterscheiden <strong>in</strong> Bild 4.9 zwei Möglichkeiten <strong>der</strong> e<strong>in</strong>fachen Subsystem-Erstellung für die<br />

zeitdiskrete Folge yk = yk−1 + 1, k = 1,2, . . ., die wir stichwortartig beschreiben.<br />

1. Ausschnitt e<strong>in</strong>es vorhandenen Modells; vgl. Bild 4.9l<strong>in</strong>ks:<br />

a. Modell kopieren, da Vorgehensweise e<strong>in</strong>geschränkt umkehrbar ist.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!