64
4 Simulation unter Simulink Simulink ist eine interaktive grafische Entwicklungsumgebung zur Modellierung und Simulati- on linearer und nichtlinearer dynamischer Systeme mittels Signalflussgrafen, wobei u. a. nichtli- neare Zusammenhänge und viele Signalerzeugungen blockorientiert gewonnen werden. Das zu simulierende mathematische Modell eines dynamischen Systems wird dazu grafisch mit Funkti- onsblöcken in dem Modell-Fenster nachgebildet und als MDL-File abgespeichert. Das Simulink- Tool arbeitet somit gleichungsorientiert im Gegensatz zu den Tools: SimScape, SimMechanics, SimDriveline, SimPowerSystems und SimHydraulics, welche auf einer physikalischen Modellie- rung mechanischer, elektrischer und hydraulischer Systeme in der Simulink-Umgebung basieren. Die System-Parameter/Anfangswerte lassen sich direkt in den Funktionsblöcken oder indirekt mittels Workspace, also durch Tastatureingabe und/oder über ein M-File unter MATLAB, einstel- len. Die Ergebnisse sind wiederum in Simulink und/oder MATLAB darstellbar. Eine Weiterverar- beitung der Daten in der MATLAB-Umgebung ist somit möglich. Bezüglich der Ausführung beziehen wir uns auf MATLAB R2011a und Simulink 7.7 unter Win- dows 7. Die Programme der Begleitbeispiele sowie die von Ergänzungen sind in [52] abgelegt. Die für einen Einstieg in Simulink notwendigen Kenntnisse sollen kurz zusammengefasst und später beispielorientiert ergänzt werden. Zur Vertiefung enthält u.a. Kapitel 8 mehrere Simulink- Projekte unterschiedlicher Schwerpunkte. In Kapitel 6 werden mit der Stateflow Toolbox sowie in Kapitel 7 mit der SimMechanics Toolbox weitere Blockelemente für die Simulink-Umgebung eingeführt. Ergänzende Erläuterungen zur Handhabung und Syntax sind [1] ,[2], [8], [31] zu entnehmen. Z. B. sind in [2] Grundlagen mit Beispielen sehr detailliert und übersichtlich zusammengefasst. Zum wesentlichen Hilfsmittel sollte aber auch hier die Online-Hilfe, die von Beginn an gezielt einzusetzen ist, werden. 4.1 Zur Funktionsweise 4.1.1 Block-Struktur Basis eines Simulink-Modells sind Funktionsblöcke mit vektoriellem Eingang u, dem Ausgangs- vektor y, dem Vektor der Zustände x sowie den Parametern p, wie in Bild 4.1 für eine übergeord- nete Struktur dargestellt. Der Zustandsvektor u y Eingang Ausgang Zustände x Parameter p Block-Name Bild 4.1: Simulink Funktionsblock, allgemein W. D. Pietruszka, MATLAB® und Simulink® in der Ingenieurpraxis, DOI 10.1007/978-3-8348-8630-9_4, © Vieweg+Teubner Verlag |Springer Fachmedien Wiesbaden GmbH 2012

MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

Embed Size (px)

Citation preview

Page 1: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4 Simulation unter Simulink�

Simulink ist eine interaktive grafische Entwicklungsumgebung zur Modellierung und Simulati-on linearer und nichtlinearer dynamischer Systeme mittels Signalflussgrafen, wobei u. a. nichtli-neare Zusammenhänge und viele Signalerzeugungen blockorientiert gewonnen werden. Das zusimulierende mathematische Modell eines dynamischen Systems wird dazu grafisch mit Funkti-onsblöcken in dem Modell-Fenster nachgebildet und als MDL-File abgespeichert. Das Simulink-Tool arbeitet somit gleichungsorientiert im Gegensatz zu den Tools: SimScape, SimMechanics,SimDriveline, SimPowerSystems und SimHydraulics, welche auf einer physikalischen Modellie-rung mechanischer, elektrischer und hydraulischer Systeme in der Simulink-Umgebung basieren.

Die System-Parameter/Anfangswerte lassen sich direkt in den Funktionsblöcken oder indirektmittels Workspace, also durch Tastatureingabe und/oder über ein M-File unter MATLAB, einstel-len. Die Ergebnisse sind wiederum in Simulink und/oder MATLAB darstellbar. Eine Weiterverar-beitung der Daten in der MATLAB-Umgebung ist somit möglich.

Bezüglich der Ausführung beziehen wir uns auf MATLAB R2011a und Simulink 7.7 unter Win-

dows 7. Die Programme der Begleitbeispiele sowie die von Ergänzungen sind in [52] abgelegt.Die für einen Einstieg in Simulink notwendigen Kenntnisse sollen kurz zusammengefasst und

später beispielorientiert ergänzt werden. Zur Vertiefung enthält u. a. Kapitel 8 mehrere Simulink-Projekte unterschiedlicher Schwerpunkte. In Kapitel 6 werden mit der Stateflow Toolbox sowiein Kapitel 7 mit der SimMechanics Toolbox weitere Blockelemente für die Simulink-Umgebungeingeführt.

Ergänzende Erläuterungen zur Handhabung und Syntax sind [1] ,[2], [8], [31] zu entnehmen.Z. B. sind in [2] Grundlagen mit Beispielen sehr detailliert und übersichtlich zusammengefasst.Zum wesentlichen Hilfsmittel sollte aber auch hier die Online-Hilfe, die von Beginn an gezielteinzusetzen ist, werden.

4.1 Zur Funktionsweise

4.1.1 Block-Struktur

Basis eines Simulink-Modells sind Funktionsblöcke mit vektoriellem Eingang uuu, dem Ausgangs-vektor yyy, dem Vektor der Zustände xxx sowie den Parametern p, wie in Bild 4.1 für eine übergeord-nete Struktur dargestellt. Der Zustandsvektor

u y

Eingang Ausgang

Zustände x

Parameter p

Block−Name

Bild 4.1: Simulink Funktionsblock, allgemein

W. D. Pietruszka, MATLAB® und Simulink® in der Ingenieurpraxis, DOI 10.1007/978-3-8348-8630-9_4, © Vieweg+Teubner Verlag |Springer Fachmedien Wiesbaden GmbH 2012

Page 2: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

162 4 Simulation unter Simulink�

xxx =(

xxxTc , xxxTdk

)T(4.1)

kann zeitkontinuierliche (xxxc) oder/und zeitdiskrete (xxxdk ) Zustände enthalten. Es gelten die mathe-matischen Beziehungen

yyy = fffo(t, xxx, uuu, p) Ausgang (output), mit xxx = xxxc +xxxd

xxxc = fffd(t, xxx, uuu, p) Ableitungsfunktion (derivative)xxxdk+1 = fffu(t, xxx, uuu, p) Zeitschritt (update).

Derartige Bausteine beschreiben also das Ein-/Ausgangsverhalten mit der eindeutigen Signal-fluss-Richtung uuu → yyy.

Darüber hinaus existieren Blöcke ohne Eingang (Quellen, Sources), z. B. Constant Blöcke,Funktionsgeneratoren und solche ohne Ausgang, z. B. To Workspace Block (Senke, Sinks).

Alle Blöcke sind in der Block-Library und in Blocksets zusammengefasst, vgl. Abschn. 4.3.1.Sie sind gekennzeichnet durch den Block-Namen und das Block-Icon. Bei Links-Doppelmaus-klick auf den Block öffnet sich die Block Parameters Dialogbox, in der – neben einer kurzenErklärung – spezifische Parameter des Blocks eingestellt werden können (Standard- (Default-)Werte sind vorgegeben). Darüber hinaus existiert ein Help-Button, über den gezielt die zugehö-rige Online-Hilfe geöffnet werden kann. Bei Rechts-Mausklick auf den Block öffnet sich einKontextmenü, in dem u. a. Befehle zum Editieren von Blockeigenschaften und Formatieren desBlocks ausgewählt werden können.

4.1.2 Simulationsablauf

Entsprechend der mathematischen Formulierung des Problems wird das Simulationsmodelldurch Verbinden geeigneter Funktionsblöcke und deren zugehörigen Parametern aufgebaut. DieSimulation des Modells setzt sich dann aus den beiden Phasen Initialisierung und Ausführungbezüglich der Zeit, meist numerische Integration, zusammen.

• Initialisierungsphase:

1. Die Blockparameter werden an MATLAB zur Auswertung übergeben und die sich er-gebenden numerischen Werte werden den Blöcken zugeordnet.

2. Die Modell-Hierarchie wird weitgehend aufgehoben, d. h. die Blöcke jedes Subsys-tems, dessen Ausführung nicht an Bedingungen geknüpft ist, werden in das Gesamt-Modell einbezogen, so dass ein einziges Block-Modell entsteht.

3. Blöcke werden entsprechend dem Ablauf der Berechnung (serielle Arbeitsweise desDigitalrechners) mittels Sortier-Algorithmus in eine abarbeitbare Reihenfolgegebracht. Dabei ist zu beachten, dass für jeden Block bei der Berechnung des Aus-gangs der dazu benötigte Eingang bekannt ist. D. h. es muss beim Start der Simulationvon Blöcken, die einen vorgegebenen Ausgang besitzen, z. B. die Anfangswerte derIntegrierer, ausgegangen werden. Solche Blöcke werden History-Blöcke genannt. Blö-cke, die in Rückführungsschleifen, z. B. ohne zwischengeschaltetem Integrierer oderTotzeitglied, liegen, bei denen der Ausgang direkt auf den Eingang wirkt, werdenerkannt. Dies sind so genannte algebraische Schleifen, bei denen fffo(xxx) selbst vomAusgang abhängt. In Bild 4.2 ist ein derartiges Beispiel angegeben. Innerhalb dieser

Page 3: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.2 Die Integrationsverfahren 163

Schleifen sind keine seriellen Rechenschritte mehr vorgebbar. Es führt nur eine kon-vergierende iterative Berechnung des Ausgangs zum Ziel, siehe auch Abschn. 4.5.

u1

y1=u2

y2sin

TrigonometricFunction

1.2

Gain

sqrt(2)*u(1)+4

Fcn

y1 =√2 u1 + 4, u1 = 1,2 y2

y2 = sin u2 = sin (1,2√2 y2 + 4), beide Seiten hängen von y2 ab

Bild 4.2: Beispiel für eine algebraische Schleife

Beispiele in [52]: alg_loop1.mdl, alg_loop_2.mdl mit Angaben zum Simu-

link-Debugger unter: File/Model Properties/Description.4. Die Verbindungen zwischen den Blöcken werden auf Verträglichkeit der Vektordimen-

sionen des treibenden (Ausgang) und getriebenen (Eingang) Blocks überprüft.

• Ausführungsphase:Danach kann die Ausführung, in der Regel die numerische Integration, mit dem ausge-wählten Löser odexx durchgeführt werden. Hierzu müssen die Ableitungsfunktionen – z. B.entsprechend xk = fk(tn,xxx) – gebildet werden, vgl. Kapitel 5. Dies erfolgt in zwei Schritten:

1. In der festgelegten Reihenfolge wird der Ausgabewert jeden Blocks bestimmt.2. Es können jetzt für jeden Block die Ableitungen (z. B. xk = fk(tn,xxx)) in Abhängig-

keit von der aktuellen Zeit tn, seiner Eingangswerte und seines Zustandes berechnetwerden. Der so ermittelte Ableitungsvektor wird an den Integrator odexx zurückgege-ben. Dieser ermittelt damit den neuen Zustandsvektor zum Zeitpunkt tn+1, vgl. auchBild 5.8. Abschließend werden die Ausgaben, u. a. der Scopes, aktualisiert.

Die Ausführungsreihenfolge der Blöcke lässt sich über den Button Format/BlockDis-plays/ SortedOrder in der Menüleiste des Modell-Fensters zum Simulink-Modell einblen-den.

4.2 Die Integrationsverfahren

Für die numerische Bearbeitung der mathematischen Modelle dynamischer Systeme spielen dieIntegrationsverfahren (kurz: Integrator, Solver, Löser, Code, . . .) die zentrale Rolle. Sie lösenAnfangswertprobleme expliziter und impliziter Differenzialgleichungen u. a für:

xxx = fff (t, xxx(t)); xxx(t0) = xxx0000 = xxx − fff (t, xxx(t)); xxx(t0) = xxx0 .

(4.2)

Page 4: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

164 4 Simulation unter Simulink�

Die Tabellen 4.1 und 5.1 Seite 238 geben eine Kurzbeschreibung der verfügbaren Verfahrenwieder. Ausführliche Beschreibungen enthält die Online Hilfe u. a. unter: Choosing a Solver.

Tabelle 4.1: Integratoren mit fester Schrittweite

ode8 Runge-Kutta-Formel, Dormand-Prince, 8. Ordnungode5 Runge-Kutta-Formel aus ode45, Dormand-Prince-Formel, 5. Ordnungode4 Runga-Kutta-Formel aus ode45, Dormand-Prince-Formel, 4. Ordnungode3 Runge-Kutta-Formel aus ode23, Bogacki-Shampine-Formel 3. Ordnungode2 Verfahren nach Heun, 2. Ordnungode1 Explizites Euler-Verfahren, 1. Ordnungode14x Impliziter Löser, Extrapolationsordnung 1, 2, 3, 4Standard,

Newtonschritte 1Standard,... einstellbardiskret keine Integration, Modell ohne zeitkontinuierliche Zustände

Grundlagen der mathematischen Methoden sind [59], [61], [65] zu entnehmen. Hier gebenwir, in Bezug auf die Integrator-Wahl, einen kurzen Überblick.

Grundsätzlich sind Verfahren mit fester –Tabelle 4.1– und variabler –Tabelle 5.1– Schritt-weite h zu unterscheiden. Dabei kann die Integrationsmethode ein Einschritt- oder Mehrschritt-verfahren sein, vgl. Bild 4.3, S. 165. Wie die Namen zum Ausdruck bringen, benutzen dieseVerfahren Information aus einem [tn, tn+1] oder mehreren [tn−k, . . . , tn, tn+1] Integrationsinter-vallen. Dies kann wiederum auf eine explizite oder implizite Formulierung der Integrationsme-thode, siehe Bild 4.3, S. 165, führen. Kombinationen beider Typen sind im Einsatz. Dabei werdendie Formeln auf bestimmte Eigenschaften, z. B. hohe Genauigkeit, gute Stabilität, getrimmt. Zuden modernen Verfahren für steife Differenzialgleichungen zählen die Mehrschrittverfahren nachden BDF-Methoden (Backward Differentiation Formula); vgl. Bild 4.3, S. 165. Unter MATLAB

gibt es eine modifizierte Methode, das NDF-Verfahren (Numerical Differentiation Formula); dasBDF-Verfahren ist optional aufrufbar.

4.2.1 Methoden und Bezeichnungen

Einschrittverfahren

Um einen kleinen Einblick in die Methoden mit den MATLAB-Bezeichnungen der Integrations-verfahren zu erhalten, sollen zunächst die Verfahren ode4, ode5 und ode451 kurz skizziert werden.Sie sind Vertreter der Einschrittverfahren auf der Basis der RUNGE-KUTTA-Methode. Allgemeinlassen sich, ausgehend von der skalaren Differenzialgleichung x = f (t, x), die expliziten RUNGE-KUTTA-Methoden – vgl. Bild 4.4 – wie folgt beschreiben:

Steigungswert in tn k1 = f (tn, xn); xn := x(tn)

Steigungswerte in tn + cih ki = f (tn + cih, xn + h ∑i−1j=1 ai, jk j), i = 2, . . . , s

Ergebnis xn+1 = xn + h ∑si=1 biki .

1 ODE: Ordinaray Differential Equation

Page 5: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.2 Die Integrationsverfahren 165

Darstellung und Methoden für die skalare Differenzialgleichung: x = f (t, x)

Es sollen die Begriffe explizite und implizite Einschritt- und Mehrschrittverfahren am Beispiel erläutertwerden.

Einschrittverfahren: Information aus [tn, tn+1]

EULER vorwärts xn+1 = xn + h f (tn, xn)- explizites Verfahren 1. Ordnung (Fehler 1. Ordnung)

EULER rückwärts xn+1 = xn + h f (tn+1, xn+1)- implizites Verfahren 1. Ordnung (Fehler 2. Ordnung)

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

ADAMS-BASHFORTH-Verfahren

xn+1 = xn +h24

(55 fn−59 fn−1 +37 fn−2−9 fn−3) , fn := f (tn, xn)

- explizites 4-Schrittverfahren 4. Ordnung

ADAMS-MOULTON-Verfahren

xn+1 = xn +h

720(251 fn+1 +646 fn−264 fn−1−106 fn−2−19 fn−3)

- implizites 4-Schrittverfahren 5. Ordnung

Kombination aus explizitem und implizitem Verfahren ist ein Prädiktor-Korrektor-Verfahren.

BDF-Verfahren (Backward Differenziation Formulas)

25xn+1−48xn +36xn−1−16xn−2 +3xn−3 = 12h fn+1

- implizites 4-Schrittverfahren

Bild 4.3: Bezeichnung der Funktionswerte und Formeln einiger Integrationsverfahren

Page 6: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

166 4 Simulation unter Simulink�

Die Koeffizienten ai, j, bi, ci charakterisieren die s-Schrittmethode, sie werden in der so genann-ten BUTCHER-Tabelle

c1c2 a2,1c3 a3,1 a3,2... . . . . . . . . .cs as,1 as,2 . . . as,s−1

b1 b2 . . . bs−1 bs

angegeben. Damit ist das klassische RUNGE-KUTTA2-Verfahren in der Form

012

12

12 0 1

2

1 0 0 116

26

26

16

formulierbar. Es ist ein 4-Schrittverfahren der Ordnung 4 mit dem algorithmischen Aufbau

k1 = f (tn, xn) Steigungswerte ki

k2 = f (tn+ 12, xn +

h2

k1), zur Schreibweise: tn +h2→ tn+ 1

2usw.

k3 = f (tn+ 12, xn +

h2

k2)

k4 = f (tn+1, xn + hk3)

xn+1 = xn +h6

(k1 +2k2 +2k3 + k4) Ergebnis, explizite Formel

sowie der geometrischen Interpretation nach Bild 4.4. Man beachte, dass jede Stufe eines RUN-

Bild 4.4: Geometrische Interpretation zum RUNGE-KUTTA-Verfahren 4. Ordnung

GE-KUTTA-Verfahrens eine Funktionsauswertung f (·) benötigt. Ein Integrationsschritt ist daheri. a. etwa viermal so teuer wie der entsprechende EULER-Schritt, vgl. Bild 4.3, S. 165. Dennoch

2 genauer: das Verfahren von KUTTA

Page 7: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.2 Die Integrationsverfahren 167

ist aufgrund der hohen Ordnung das Verfahren von RUNGE-KUTTA viel effizienter, da u. a. mitgrößerer Schrittweite gearbeitet werden kann. Dies setzt sich fort, denn die DORMAND-PRINCE-Methode [14] mit den Koeffizienten nach Tabelle 4.2 ist eine der effektivsten expliziten RUNGE-KUTTA-Formeln, obwohl sich der Rechenaufwand noch einmal erhöht. Tabelle 4.2 enthält auch

Tabelle 4.2: Koeffizienten der DORMAND-PRINCE-Methode

015

15

310

340

940

45

4445 − 56

15329

89

193726561 − 25360

2187644486561 − 212

729

1 90173168 − 355

33467325247

49176 − 5103

18656

1 35384 0 500

1113125192 − 2187

67841184

x(5)n

35384 0 500

1113125192 − 2187

67841184 0

x(4)n

517957600 0 7571

16695393640 − 92097

3392001872100

140

die beiden MATLAB-Verfahren ode5 und ode4. Die 7-Schrittmethode (s=7) basiert auf den beidenErgebnissen x(5)

n und x(4)n , die mit den gleichen Steigungswerten ki aber unterschiedlichen Ge-

wichtungen b j ermittelt werden. Greift man auf das Ergebnis x(5)n zurück, dann handelt es sich

um das des ode5 Verfahrens mit fester Schrittweite h; Verfahren 5. Ordnung. Im anderen Fall er-gibt sich das Ergebnis des Verfahrens ode4 der Ordnung 4. Verwendet man beide Ergebnisse, sowird – z. B. aufgrund der Abweichung |x(5)

n − x(4)n | – ein Maß zur Ermittlung der Schrittweite h,

im Zusammenhang mit einem vorgegebenen Fehler ε , bestimmbar. Wir erhalten Methoden mitvariabler Schrittweite. Dabei kann x(4)

n (ode54) oder x(5)n (ode45) als Ergebnis akzeptiert werden.

In gleicher Weise sind die anderen Einschrittverfahren in Tabelle 5.1, S. 238 zu interpretieren.

Wie die bisher betrachteten expliziten Einschritt- (RUNGE-KUTTA-) Verfahren stellt manauch die impliziten Verfahren (z. B. das EULER-Rückwärts-Verfahren aus Bild 4.3, S. 165) über-sichtlich in einem Tableau der Struktur

c1 a11 a12 . . . a1,s−1 a1,sc2 a2,1 a2,2 . . . a2,s−1 a2,sc3 a3,1 a3,2 . . . a3,s−1 a3,s...

......

......

...cs as,1 as,2 . . . as−1,s−1 as,s

b1 b2 . . . bs−1 bs

dar. Beispiel: Die Trapez-Regel

xn+1 = xn +12

h ( f (tn, xn) + f (tn+1, xn+1))

Page 8: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

168 4 Simulation unter Simulink�

kann als zweistufiges implizites RUNGE-KUTTA-Verfahren aufgefasst werden:

k1 = f (tn, xn)

k2 = f (tn + h, xn + h(12

k1 +12

k2))

xn+1 = xn +h2

(k1 + k2).

zugehörige Tableau

0 1 01 1

212

12

12

Nachteil der impliziten RUNGE-KUTTA-Verfahren ist, dass die ki nicht nacheinander berechnetwerden können, sondern dass in jedem Schritt ein i. a. nichtlineares Gleichungssystem von s ·NGleichungen in den kkk1, . . . ,kkks gelöst werden muss, wobei N die Dimension des Differenzialglei-chungssystems bezeichnet.

Bei weniger steifen Differenzialgleichungen folgt aus dem Fixpunktsatz für kontrahierendeAbbildungen, dass die Fixpunktiteration gegen die Lösung (ki)i=1,...,s konvergiert, wenn dieSchrittweite die LIPSCHITZ-Bedingung, vgl. [65], erfüllt; z. B. für k2 aus der obigen implizitenRUNGE-KUTTA-Formel im �-ten Iterationsschritt

k2�+1 = f(

tn + h, xn + h(12

k1 +12

k2�

)), �= 1, 2, . . . , k21 Startwert.

Bei steifen Systemen muss das nichtlineare Gleichungssystem für die ki immer mit dem NEW-TON-Verfahren oder einer verwandten Methode gelöst werden. Hierfür benötigt man die JACOBI-Matrix.

Eine dritte Möglichkeit ist die Kombination eines expliziten (Prädiktorschritt (P)) und einesimpliziten (Korrektorschritt (K)) Verfahrens, die so genannte Prädiktor-Korrektor-Methode. Fürdie EULER-Verfahren nach Bild 4.3, S. 165 bedeutet dies:

xPn+1 = xn + h f (tn, xn) Prädiktorschritt P , EULER-Vorwärts-Schritt

xKn+1 = xn + h f (tn+1, xP

n+1) Korrektorschritt K (+ z. B. Fixpunkt-Iteration)

Mehrschrittverfahren

In ähnlicher Weise wie die oben angesprochenen Einschrittverfahren sind auch die Mehrschritt-verfahren gekennzeichnet, wobei zusätzlich die Ordnung des Verfahrens anpassbar bzw. einstell-bar ist, z. B. ode113, ode15s aus Tabelle 5.1, S. 238.

Bei den linearen Mehrschrittverfahren benutzt man zur Berechnung der Näherung xn+s die be-reits ermittelten – zeitlich zurückliegenden Werte – Näherungen xn+s−1, xn+s−2, . . . , xn. Mehr-schrittverfahren sind somit nicht selbststartend und arbeiten deshalb zu Integrationsbeginn u. a.mit Einschrittverfahren zusammen. Es werden explizite und implizite s-Schritt-Verfahren un-terschieden, vgl. Bild 4.3, S. 165. Die Mehrschrittverfahren ADAMS-BASHFORTH, ADAMS-MOULTON usw. basieren auf der numerischen Lösung einer Integralgleichung [65], die BDF-Me-thoden werden dagegen mit Hilfe der numerischen Differenziation konstruiert. Beispiele implizi-

Page 9: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.2 Die Integrationsverfahren 169

ter Formeln sind u. a. nach [65]s = 1 : xn+1− xn = h fn+1, fn+1 := f (tn+1, xn+1), EULER-Methode; vgl. Bild 4.3s = 2 : 3xn+1−4xn + xn−1 = 2h fn+1

s = 6 : 147xn+1−360xn +450xn−1−400xn−2 +225xn−3−72xn−4 +10xn−5 = 60h fn+1.Für s≤ 6 sind die Formeln stabil, für s≥ 7 instabil. Die Verfahren s≤ 6 zeichnen sich durch einverbessertes Stabilitätsverhalten gegenüber expliziten Verfahren, insbesondere steifer Systeme,aus. Bei impliziten Verfahren muss in jedem Schritt wieder ein nichtlineares Gleichungssystem,z. B. für die implizite EULER-Formel

F(xn+1) = xn+1− xn−h f (tn+1, xn+1)

gelöst werden. Dies kann z. B. mit dem NEWTON-Verfahren mit dem Startwert xn erfolgen; hier-zu muss die JACOBI-Matrix (∂F/∂x|xn+1 ), analytisch oder näherungsweise numerisch, berechnetwerden, vgl. Optionen zum Aufruf der Integrationsverfahren unter MATLAB in Kapitel 5.

4.2.2 Steifigkeit der Differenzialgleichung

Wesentlich für die Verfahrensauswahl ist die Kenntnis der Steifigkeit der Differenzialgleichung.Wir geben eine Definition stichwortartig an: Ein Differenzialgleichungssystem heißt steif, wenndie Eigenwerte des Systems sehr unterschiedliche (negative) Realteile aufweisen. Als Maß derSteifigkeit gilt u. a. der Quotient der Beträge der absolut größten und kleinsten (negativen) Real-teile der Eigenwerte

S :=max j

min j

|ℜ(λ j)||ℜ(λ j)| .

Bei steifen Differenzialgleichungen erreicht S Werte von 106 und höher. Das Problem der Stei-figkeit existiert ausgeprägt bei nichtlinearen Differenzialgleichungen

xxx(t) = fff (t,xxx(t)) xxx(t) ∈ Rn. (4.3)

Die Steifigkeit wird für das linearisierte System definiert, indem das lokale Verhalten der exak-ten Lösung xxx(t) in der Umgebung von tn betrachtet wird. Hierbei liegt die Anfangsbedingungxxx(tn) = xxxn, wo xxxn die berechnete Näherungslösung an der Stelle tn bedeutet, zugrunde. Unter derVoraussetzung der gestörte Lösung

xxx(t) = xxxn +zzz(t) für tn ≤ t ≤ tn + h; Norm von zzz und h klein

entwickeln wir (4.3) in eine TAYLOR-Reihe und brechen nach dem ersten Glied ab

xxxn + zzz(t) = fff (tn, xxxn)+∂ fff∂xxx

∣∣∣∣n

zzz(t)+O(zzz2),

woraus schließlich mit (4.3) die erste Näherung

zzz(t) =∂ fff∂xxx

∣∣∣∣n

zzz(t) = JJJ(tn, xn) zzz(t)

Page 10: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

170 4 Simulation unter Simulink�

folgt. Dies ist eine lineare Differenzialgleichung mit konstanter Koeffizientenmatrix JJJ(tn, xn),mit deren Eigenwerte sich S ermitteln lässt. Somit wird das qualitative Verhalten von xxx(t) inder Umgebung von tn durch zzz(t) beschrieben. Das nichtlineare Differenzialgleichungssystemwird als steif bezeichnet, falls die Eigenwerte der JACOBI-Matrix JJJ(tn, xn) sehr unterschiedlichenegative Realteile haben und S groß ist. Das Maß der Steifigkeit von (4.3) ist bei nichtlinearenim Gegensatz zu linearen Systemen abhängig vom Zeitpunkt tn und der momentanen Näherungs-Lösung xxxn, so dass sich S im Verlauf der Integration sehr stark ändern kann. Moderne Verfahrennutzen dies zur Anpassung an den Integrationsablauf und stellen damit die Schrittweite sowiedie Ordnung des Integrationsverfahrens ein.

Eine sinnvolle Erweiterung der Definition für steife Systeme ist:

S :=max j

min j

|λ j||λ j| , Anhaltswert: S > 104, . . . , 106 ,

wobei durch die Eigenwerte λ j auch schwach gedämpfte, hochfrequente Lösungsanteile erfasstwerden.

In MATLAB sind mehrere Methoden zur Lösung steifer Systeme implementiert, vgl. Tabel-le 5.1. Die Function ode15s verwendet BDF- oder NDF-Formeln der Ordnung k ∈ {1, 2, 3, 4, 5};vgl. [59], [65]. NDF-Methoden sind Modifikationen der BDF-Methoden, die ebenfalls A-stabil(absolut stabil) [59], [65] sind. Sie besitzen eine etwas größere Genauigkeit als die BDF-Me-thoden. Die Function ode23s verwendet ein ROSENBROCK-Verfahren der Ordnung 3, wobei derFehler mit einer Methode der Ordnung 2 geschätzt wird. Es ist geeignet, wenn die Genauigkeits-ansprüche nicht zu hoch sind.

4.2.3 Bemerkungen zur Wahl der Verfahren

Einer Anfangswertaufgabe sieht man nicht unmittelbar an, ob ihre Lösung steif ist. Es gibt einigeAufgabenklassen, bei denen man weiß, dass steife Lösungen zu erwarten sind, wie z. B. bei derVAN-DER-POL-Gleichung

x − ε ( 1 − x2 ) x + x = 0

mit sehr großen Parametern ε oder mechanischen Systemen mit sehr unterschiedlichen Steifig-keits- und Dämpfungskonstanten. In diesen Fällen wird man sofort steife Löser verwenden.

Liegen keine guten Gründe dafür vor, dass eine steife Lösung zu erwarten ist, wird man zuerstversuchen, das gegebene Problem mit einem nicht-steifen Löser zu behandeln, denn explizite(eingebettete) RUNGE-KUTTA-Verfahren, z. B. ode45, oder Mehrschrittverfahren vom ADAMS-Typ sind wesentlich billiger als steife Löser. Bei steifen Lösern hat man in jedem Schritt einnichtlineares Gleichungssystem zu lösen und hierzu die JACOBI-Matrix der rechten Seite odereine Näherung davon aufzustellen.

Praktisch: Beobachtet man, dass der Lösungsprozess nur sehr langsam voranschreitet, wirdman zu einem steifen Löser wechseln.

RUNGE-KUTTA-Verfahren ermöglichen eine einfache Schrittweitensteuerung (Adaptivität),haben aber den Nachteil gegenüber dem ADAMS-Verfahren, dass in jedem Schritt die rechte Sei-te von (4.2) an mehreren Stellen ausgewertet werden muss (für das Verfahren von DORMANDund PRINCE der Ordnung 5 an 6 Stellen). Beim Prädiktor-Korrektor-Verfahren kann man hohe

Page 11: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.3 Simulink-Grundlagen 171

Ordnungen mit 2 oder 3 Auswertungen erreichen. Man wird daher ein Mehrschrittverfahren ver-wenden, wenn die Auswertung der rechten Seite der Differenzialgleichung sehr teuer ist. In derRegel wird man Verfahren hoher Ordnung nur dann verwenden, wenn die rechte Seite der Dif-ferenzialgleichung sehr glatt ist. Man verwendet den TAYLORschen Satz, um Methoden hoherKonsistenzordnung zu entwickeln.

Eine Regel für die Auswahl steifer Löser ist nicht so einfach zu formulieren. Einen Anhalts-punkt geben die Stabilitätsgebiete der Verfahren, z. B. nach [59], [65]. Wenn man weiß, dassdie Eigenwerte der Linearisierung der rechten Seite in der Nähe der negativen reellen Achseliegen, so wird man BDF bzw. NDF Formeln wählen. Weiß man, dass Eigenwerte der JACOBI-Matrix näher an der imaginären Achse als an der negativen reellen Achse liegen, so wird manROSENBROCK-Methoden oder Extrapolationsverfahren verwenden.

4.3 Simulink-Grundlagen

Zunächst gehen wir auf Grundlagen zum Umgang mit Simulink ein, um daran anschließend dieModellierung mit Simulink an einem kleinen Projekt zu vertiefen. Der Zugang zu Simulink er-folgt mit dem Button in der Menü-Leiste des MATLAB Desktop nach Bild 1.1. Es öffnet sichder Library Browser mit der Menüleiste File/Edit/View/Help. Insbesondere wird überFile/New/Model oder Ctrl+N ein neues Modell-Fenster mit der Menü-Leiste File/E-dit/View/Simulation/Format/Tools/Help bereitgestellt. Entsprechend sind gespei-cherte Simulink-Programme mit der Endung mdl zu öffnen. Für die letzten beiden Vorgängeexistieren die Standard-Button . Des Weiteren werden alle Hauptgruppen der Library ange-zeigt, auf die wir im Folgenden eingehen werden.

4.3.1 Die Modell-Library

Wesentlich für jedes Simulationsprogramm ist das Modellangebot in der verfügbaren Library. InSimulink 7.7 ist die Library in die vierzehn Hauptgruppen mit den eingefärbten Symbolen nachBild 4.5 unterteilt. Einhergehend mit der ständigen Erweiterung der Libraries der Vorgängerver-sionen kam es zur Ergänzung und teilweise Umstrukturierung der Gruppen. D. h. Blöcke ausVorgängerversionen können anderen Gruppen zugeordnet sein. In Bild 4.5 ist eine Auswahl derverfügbaren Funktionsblöcke abgebildet. Zu jedem Block gehört ein Parameter-Dialog-Fenster,welches sich mit einem Doppelklick der linken Maustaste öffnen lässt.

Neben diesen aufgeführten Library-Blöcken existieren ergänzende Blocksets, die einerseitsinnerhalb der Library unter Additional Math & Discrete und andererseits unter Simulink extrasowie in anderen Tools zu finden sind.

Beispiel 4.1: Modellerstellung

Für die Differenzialgleichung

x =−0,5 x + 5

ist das Simulink-Modell zu erstellen. Die Zeit t und x sind mit dem To Workspace Blockund xp = x mit dem Outport Block, siehe Abschn. 4.3.2, in den Workspace zu schrei-ben. Zur Integration von x wird ein Integrator Block, zur Abbildung der rechten Seite

Page 12: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

172 4 Simulation unter Simulink�

Bild 4.5: Beispiele für die Zuordnung der Funktionsblöcke der Library unter Simulink 7.7

ein Summierer, d. h. ein Sum Block (ohne Abbildung in Bild 4.5) benötigt. Die Kon-stante 5 wird mit dem Constant Block und die Verstärkung von 0.5 mit dem Gain Blockrealisiert. Nach dem Öffnen des Modell-Fensters (Ctrl+N) sind die ausgewähltenBlöcke der Library mit der linken Maustaste anzuklicken und bei gedrückter Taste insModell-Fenster zu ziehen – click-and-drag mouse operation. Der Signalpfad zwischenden Blöcken erfolgt, ausgehend vom Ein- oder Ausgang der zu verbindenden Blöcke,ebenfalls mit gedrückter linker Maustaste. Eine automatische Signalverbindung wirddurch Aktivieren z. B. des Ausgangs-Blocks mit der linkenMaustaste und anschließen-der Aktivierung des Folgeblocks bei gleichzeitig gedrückter Strg- bzw. Ctrl- Taste

Bild 4.6: Beispiel eines einfachen Block-Modells

Page 13: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.3 Simulink-Grundlagen 173

erreicht. Abschließend sind die Parameter 5, 0.5 sowie der Anfangswert x(0) = 0 desIntegrierers in die jeweilige Dialogbox einzutragen. Der Simulationsstart mit der zuvoreingegebenen Integrationsdauer erfolgt über den Button Simulation/Start oderdem Button. Das komplette Modell ist in Bild 4.6 abgebildet. Zum Experimentierendient Lib_Beisp.mdl aus [52].

4.3.2 Einstellung des Integrators und des Datentransfers

Bild 4.7: Configuration Parameters Fenster von Solver und Data Import/Export, Simulink 7.7

Die Integratorauswahl erfolgt im Modell-Fenster unter dem Menüpunkt Simulation Opti-on Configuration Parameters; vgl. Bild 4.7. Hier existieren in Abhängigkeit der vorhan-denen Toolboxen mehrere anwählbare Dialogseiten: Solver, DataImport/Export, Di-agnostic usw. Auf der Solver-Seite, Bild 4.7 oben, werden Start- und Stopp-Zeit, dasIntegrationsverfahren und Daten zur Schrittweite sowie zur Toleranzvorgabe eingestellt. Unter

Page 14: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

174 4 Simulation unter Simulink�

Zeroscrossing control ist die Nullstellen-Detektion spezieller Blöcke übergeordnet ein-oder ausschaltbar.

Auf der Seite DataImport/Export nach Bild 4.7 unten wird u. a. der Datentransfer zwi-schen Simulink und dem Workspace sowie einige Optionen organisiert:

• Load from workspace: Einerseits können unter Input ein Zeit- und Eingangsvektor ttt, uuuund andererseits unter Initial State der Anfangswertvektor xInitial der Zustände an dasSimulink-Modell übergeben werden. Für [t,u] müssen im Modell dafür Inports-Blöckeaus der Ports & Subsystems-Bibliothek vorhanden sein; siehe FromWorksp.mdl in [52].

• Save to workspace: Datentransfer aus dem Simulink-Modell in denWorkspace. Dies beziehtsich auf den Zeitvektor z. B. tout , auf den Zustandsvektor xout sowie auf die Ausgangsvaria-blen yout , denen Outports-Blöcke – vgl. Bild 4.6 – aus der Ports & Subsystems-Bibliothek zu-geordnet sein müssen. Die Reihenfolge der gespeicherten Zustände (Integrator-Ausgänge)wird von dem Sortier-Algorithmus, wie in Abschn. 4.1.2 beschrieben, festgelegt. Sie kannmit Format/ BlockDisplays/SortedOrder ins Modell-Fenster eingeblendet wer-den. Darüber hinaus können die Zustandswerte (xFinal) zur Stopp-Zeit gespeichert wer-den; siehe FromWorksp.mdl in [52].

• Save options: Unter Output options/Refineoutput ist es möglich, mit dem Refinefactor zusätzliche Ausgabewerte mittels Kurvenglättungs-Methoden im Integrationsin-tervall [tn, tn+1] zu erzeugen; d. h. Refine factor = 1 liefert keine, Refine factor =r liefert r−1 Zwischenwerte. Der Defaultwert ist 1. Die Zwischenwerte beziehen sich nurauf die Ausgabe und nicht auf die Darstellungen im Scope oder XY Graph.

Im Diagnostic-Fenster kann u. a. ausgewählt werden, wie bei den aufgelisteten Ereignissen(z. B. Algebraic loop, Date overflow usw.) während einer Simulation reagiert werden soll; z. B.mit: Warning, Error (Simulationsabbruch) oder none.

4.3.3 Datentransfer über den Workspace

Die Parameter und/oder Matrixelemente usw. der Funktionsblöcke lassen sich in den zugehö-rigen Parameter-Dialog-Boxen als numerische oder symbolische Werte eintragen, z. B. gilt füreine 2×2-Matrix:

[0 1; 1 4] oder A.Ist der symbolische Wert (A) eingetragen, z. B. im State Space Block von Bild 4.8, dann müs-sen die zugehörigen numerischen Werte vor dem Simulationsstart im Workspace liegen. Dieseskann u. a. über eine Tastatureingabe oder über ein angestartetes M-File erfolgen, wie in Bild 4.8verdeutlicht. Der Datentransfer aus dem Simulink-Modell in den Workspace erfolgt u. a. überden TO Workspace Block in Array- oder Structure-Format, z. B. wie in Bild 4.8 für die Matrixsimout oder den Outport Block wie in Bild 4.6 und Abschn. 4.3.2. Damit können die Daten inMATLAB u. a. zur grafischen Darstellung weiterverarbeitet werden. Eine weitere Möglichkeit zurÜbergabe der Simulationsdaten in den Workspace kann im Scope-Fenster durch aktivieren derArray- oder Structure-Übergabe, vgl. Abschn. 4.3.5.6, S. 183, erreicht werden.

4.3.4 Simulationsaufruf aus der MATLAB Umgebung

Die Simulation kann einerseits direkt aus dem Menü-Punkt Simulation/Start oder mitdem Start-Icon der Menüleiste und andererseits aus der MATLAB-Umgebung, mittels Tas-

Page 15: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.3 Simulink-Grundlagen 175

Bild 4.8: Datenaustausch am Beispiel des State Space Blocks

tatur oder M-File, erfolgen. Aus der MATLAB-Umgebung wird der Start mit dem Aufruf derFunction sim eingeleitet. Optionen werden mit simset gesetzt und können mit simget aufgelistetwerden, verfolge: help sim usw. Die einstellbaren Optionen umfassen z. B. die der Solver- undDataImport/Export-Seite, z. B. RelTol, AbsTol, MaxRows, Refine usw. Ausgabe-Daten werden entsprechend dem Function-Aufruf in eckige Klammern gesetzt, sie beinhaltendie Größen der Data Import/Export Seite unter Save to workspace. Daten des Workspace,die im Feld Load from workspace aufgeführt sind, stehen im Aufruf hinter den Optionen. DieSyntax eines Aufrufs lautet:

[tout,xout,yout] = sim(’modell’,timespan,options,tu)mit – siehe auch FromWorksp.mdl in [52] –

tout Zeitvektorxout Zustände, spaltenweiseyout Daten der Outports, spaltenweise’model’ Name der Modelldatei, z. B. ’model’ ohne Endung mdltimespan Zeitintervall: z. B. te Stoppzeit (bei Startzeit 0) oder

[ta, te] Start und Stoppzeit usw.option mit simset zu kreierende

optionale Parameter (z. B. Genauigkeit) der Simulationtu Eingangsvariablen über Inports Blöcke tu = [t,u]

Beispiel: Aufruf für eine Integration im Debugger-Mode nach Abschn. 4.3.5.8, bei der maximal1000 Zeilenelemente ausgegeben und die Integrationsdaten mit einem zusätzlichen Zwischen-wert geglättet werden sollen. Die Integrationszeit sei 10 s:

meine_opt= simset(’MaxRows’,1000,’Refine’,2,’debug’,’on’);[t,x]= sim(’Prog_Name’,10,meine_opt);

4.3.5 Hilfsmittel zur Modellerstellung und Datenauswertung

Zusatzinformationen, Kommentare in Textfeldern und ausführbare Callback Functions (ClickFunctions), so genannte Annotations vervollständigen das SIMULINK-Modell.

Zur besseren Übersichtlichkeit und Transparenz werden Modellgruppen, meist von Teilstruk-turen wie Filter, Regler, Radaufhängung usw., zu Subsystemen zusammengefasst. Dabei ist eswesentlich, dass die zugehörigen Blöcke bereits optisch Aussage über ihren Inhalt anzeigen. Zurdiesbezüglichen Block-Maskierung geben wir einige Anregungen. Darüber hinaus bieten die Sco-

Page 16: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

176 4 Simulation unter Simulink�

pe Blöcke Möglichkeiten zur Grafikdarstellung in der MATLAB-Umgebung, so dass Änderungenund Ergänzungen leicht durchgeführt werden können.

4.3.5.1 Platzieren von Zusatzinformation im Modellfenster, Click Function

Vermerke, Kommentare und ausführbare Anweisungen (Annotations) lassen sich an freien Stel-len im Block-Diagramm anbringen. Nach einem double-click mit der linken Maustaste erscheintam ausgewählten Platz ein kleines Rechteck mit dem Cursor. Text kann eingegeben werden, derÜbergang zur neuen Zeile erfolgt mit der Return-Taste. Durch Anfahren des Cursers im Textmit der Maus bzw. der Richtungstaste (u. a. →) kann der Text, wie üblich, korrigiert und er-gänzt werden. Das Textfeld ist bei positioniertem Mauszeiger und halten der linken Maustasteverschiebbar.

Durch Betätigen der rechten Maustaste öffnet sich, wie Bild 4.9 eingeblendet, das Kontextme-nü 2, u. a. mit Menüpunkten zur Gestaltung des Textes. Nach Auswahl des Punkte AnnotationProperties... erscheint, wie links im Bild 4.9, in 3 der Text in dem oberen Textfeld 3a. Hiersind Änderungen und Gestaltungen bequem durchzuführen.

Darüber hinaus besteht die Möglichkeit ausführbare Textfelder, z. B. zur Parameterübergabe,anzulegen. Die Eingaben im oberen Textfeld 3a dienen wie bisher der angezeigten Information,die des unteren Textfeldes 3b der auszuführenden Anweisungen. Zur Erzeugung der zugehörigenCallback Funktion (Click-Fnc) ist das Feld: Usedisplaytextasclickcallback zu aktivie-ren. Enthält das obere Textfeld auch die ausführbaren Anweisungen und ist das untere leer, dannwerden diesen durch die Aktivierung übernommen. Der ApplyButton erstellt letztendlich dieClick-Function. Das im Modellfenster angezeigte Textfeld wird durch einen Einfachklick ausge-führt.

Beispiel: Im Modell eines linearen Einmasseschwingers nach Bild 4.9 sind das Textfeld 1

zum Problem sowie die beiden Click-Functions (clickfnc) 4, 5 integriert. Nach öffnen des Mo-

Bild 4.9: Kommentarfelder und Click Functions am Beispiel eines Einmasseschwingers

Page 17: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.3 Simulink-Grundlagen 177

dellfensters Schwing_M.mdl sind zunächst die Systemparameter und die Anfangswerte derIntegratoren mit 4 zu setzen. Danach erfolgt der Simulationsstart . Für eine grafische Darstel-lung der Ergebnisse in der MATLAB-Umgebung kann die Click Function 5 ausgeführt werden.Das zugehörige M-File erscheint im Editor und die Plotanweisungen werden abgearbeitet.

In den Beispiel-Programmen von Abschn. 4.5 und Abschn. 4.6, u. a. metro_S1.mdl [52]wird gezeigt, wie Parameter von Blöcken mit Click Functions gesetzt werden können, vgl. auchBeispiel 4.2.

4.3.5.2 Zur Erstellung eines Subsystems

Bei komplexeren bzw. umfangreichen Modellen gewinnt man an Übersichtlichkeit, wenn Mo-dellgruppen zu Subsystemen zusammengefasst werden. Darüber hinaus können mehrfach einge-setzte Baugruppen in einer Modell-Bibliothek in Form von Subsystemen bereitgestellt werden.Wir unterscheiden in Bild 4.10 zwei Möglichkeiten der einfachen Subsystem-Erstellung für diezeitdiskrete Folge yk = yk−1 +1, k = 1,2, . . ., die wir stichwortartig beschreiben.

Bild 4.10: Subsystem-Erstellung, oben: Modell-Ausschnitt, Subsmodell; unten: maskiertes Subsystem

1. Ausschnitt eines vorhandenen Modells; vgl. Bild 4.10 links:

a. Modell kopieren, da Vorgehensweise eingeschränkt umkehrbar ist.b. Bereich mit Gummiband abgrenzen: linke Maustaste gedrückt halten und gegenüber-

liegende Eckpunkte des Subsystems anfahren→ Elemente des Subsystems sind mar-kiert.

Page 18: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

178 4 Simulation unter Simulink�

c. Button Edit→ create subsystem→ Subsystem ist erstellt, vgl. Bild 4.10 un-ten.

d. Eigene Kennung und Beschriftung einbringen; vgl. Abschn. 4.3.5.4.e. Subsystem speichern; ggf. zuvor Block zur Isolierung in neues Fenster kopieren und

möglicherweise ergänzen.2. Direkte Erstellung; vgl. Bild 4.10 rechts:

a. Block Subsystem aus Ports & Subsystems in das Modell-Fenster ziehen.b. Doppelklick auf den Block öffnet das Fenster für das Subsystem; Modell kann erstellt

oder hineinkopiert werden.In Bild 4.10 unten ist das Modell mit dem erstellten und anschließend maskierten Submodell,siehe Abschn. 4.3.5.4, dargestellt. Der Model Browser mit denModell-Elementen wird durch den

Button ein-/ausgeblendet. Experimentierfiles: SubModell_1.mdl, SubModell_2.mdlin [52].

4.3.5.3 Einbinden von Referenzmodellen (Model Referencing)

Im Gegensatz zu den Subsystemen nach Abschn. 4.3.5.2 müssen die in ein neues Modell einzu-bindenden Modelle, die Referenzmodelle, nicht in dieses kopiert werden.

Das Referenzmodell existiert als unabhängiges, lauffähiges Modell mit sinnvollen Schnittstel-len in Form von Inport- und Outport-Blöcken aus der Ports & Subsystems Library. Die Parameterdes Referenzmodells müssen im Modell Workspace stehen. Dies organisiert man bei geöff-netem Simulink-Modell mit Hilfe des Model Explores , vgl. Abschn. 4.3.5.7. Den Zugang zumWorkspace erhält man in der Model Hierarchy-Spalte unter dem Modellnamen, das zugehöri-ge Fenster öffnet sich. Unter Data Source: lassen sich Eingabeoptionen, wie MATLAB File,MATLAB Code usw. auswählen. Mit MATLAB Code sind die Parameter, z. B. mu1=2; mu2=3;,in das Eingabefeld zu schreiben. Mit dem Button Reinitialize from Source werden die Daten inden Workspace übertragen. Als Bezugsgrößen sind die Variablennamen, durch Komma vonein-ander getrennt, in das Feld Model arguments einzutragen, z. B. mu1, mu2. All diese Größenbeziehen sich nur auf das Referenzmodell. Der Bezug zu den eigenen Daten im Subsystem, auchParent Model genannt, wird über die Reihenfolge hergestellt. Das Referenzmodell ist somit kom-plett und lauffähig.

Mit dem Model Block aus der Library Ports & Subsystems wird das vor Änderungen geschütz-te Referenzmodell in das zu erstellende Simulink-Modell unter Angabe des Namens eingebunden,wobei die Signalpfade zu den Inport- und Outport-Blöcken des Referenzmodells als Ein- bzw.Ausgänge erscheinen. Durch einen Doppelt-Klick auf diesen zunächst rot eingefärbten Blocköffnet sich das Block Parameters: Model Fenster, in das unter Model name: der Name des Refe-renzmodells einzutragen ist. In der Zeile Model arguments values sind die eigenen Parameter inoben festgeschriebener Reihenfolge durch Komma getrennt aufzulisten, z. B. in der Form:

Zahlenwerte: 5,6 oder Variablenname: z1, z2

Die Zuordnung erfolgt mit dem Button Apply und wird in der Zeile Model arguments angezeigt.Die Variablennamen werden z. B. benötigt, wenn für den Block eine eigene Parameterbox, vgl.Abschn. 4.3.5.4, erstellt wird. Die Zahlenwerte können in diesem Fenster, zu öffnen über das Kon-textmenü zum Model Block (rechte Maustaste) unter: ModelReference Parameters...,oder im Explorer später geändert werden.

Page 19: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.3 Simulink-Grundlagen 179

Letztendlich ist der Ausführungsmodus auszuwählen, u. a. Normal oder Accelerator(Standard). Dabei wird unter Normal das Subsystem als autonomes Modell ausgeführt; ggf. istdas Häkchen unter Simulink/Configuration Parameters.../ Optimization/Signals and Param..../Inline parameters zu setzen. Unter Acceleratorwirdnach dem Start des erstellten Modells zunächst ein Simulation Target, ein C Mex-File des Refe-renzmodells, das unter Windows die Endung _msf.mexw32 (bzw. 64 für eine 64Bit-Version)trägt, sowie das Verzeichnis slprj mit zusätzlichen Dateien erstellt. Bei jedem Neustart desModells wird unter Accelerator das System auf Änderungen überprüft und ggf. neu compiliert.Unter welchen Bedingungen dies erfolgen soll, ist in Simulation / Configuration Parameters... /Model Referencing / Rebuild: auszuwählen. Alle Files müssen im aktuellen oder in einem zumMATLAB-Pfad gehörigen Verzeichnis stehen. Für den Accelerator Modus wird ein C-Compilervorausgesetzt, er wird mit mex -setup aus dem Command Window ausgewählt und eingebun-den, vgl. Seite 317.

Die im Bild 4.19 modellierte Fahrbahn ist ein typisches Beispiel für ein Referenzmodell. Hier-mit wird in der Beschreibung (Discription unter: Edit/Model Properties) zum Simulink-Modell F_Profil.mdl aus [52] die Erstellung vertieft.

Einschränkungen sind unter der Online Hilfe unter: model referencing limitations

angegeben. Konvertierungen von Submodellen aus Abschn. 4.3.5.2 in Referenzmodelle sindmöglich, siehe help simulink.SubSystem.convertToModelReference.

4.3.5.4 Maskierung und Parameterbox

Eigens kreierte Blöcke, Subblöcke sowie Level-1 M-File S-Function Blöcke, siehe Abschn. 4.7,lassen sich mittels Text, Grafik oder numerischer Ausdrücke kennzeichnen. Hierzu ist der zubearbeitende Block zu aktivieren und unter dem Menü-Punkt Edit oder im Kontextmenü (öff-nen mit rechter Maustaste) mit EditMask bzw. Ctrl+M den MaskEditor zu öffnen. ImDrawingcommands Fenster sind dann die Eintragungen vorzunehmen, wobei eine Beispiel-Tabelle mit der zugehörigen Syntax dies unterstützt. Wir geben einige Möglichkeiten an.

Texterzeugung

disp(’text’); erscheint zentriert im Blocktext(x,y,’text’); über x,y positionierbarfprintf(’text’)disp(’text1 \ntext2’); mit Übergang auf neue Zeile \n

Grafikerzeugung

Darüber hinaus kann die Funktion des zu maskierenden Subsystems durch Grafiken im Block,wie in Bild 4.10 unten, hervorgehoben werden. Mittels Plot-Aufruf lassen sich 2D-Grafiken di-rekt erzeugen, z. B.

plot(sin(0:pi/100:2*pi)); oderplot(t,y);,

wobei die Daten t und y im Fenster: Initialization/Initialization commandsz. B. wie mit

t=0:1/100:1; ; y=0.5+0.25*sin(2*pi*t);erzeugt werden oder im Workespace liegen müssen. Im Icon-Fenster unter Units kann die

Page 20: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

180 4 Simulation unter Simulink�

Skalierungsart eingestellt werden u. a.: Normalized (Fenstereckpunkte, unten links (0,0) obenrechts (1,1)) oder mit Autoscale automatisch an die Extremwerte des Fensters angepasst.

3D-Grafiken, z. B. mit plot3 erzeugt, müssen zunächst in ein spezielles Grafikformat konver-tiert werden. Im Allgemeinen lassen sich Grafiken und Photos unterschiedlicher Formate (vgl.help imread) zur Maskierung der Blöcke nutzen. Wir zeigen dies mit einer 3D MATLAB-Grafik,die wir zunächst mit cplxroot(2,15) erzeugen. Die im Grafikfenster dargestellte Grafik expor-tieren wir in das JPG-Format und speichern die Grafik z. B. unter SubGrafik.jpg. DiesesFile lässt sich mit

image(imread(’SubGrafik.jpg’))einbinden, wie in Bild 4.11 gezeigt; vgl. auch SubDemo_1.mdl, SubDemo_2.mdl in [52].

a: 3D-Einbindung b: Photo-Einbindung

Bild 4.11: Beispiele für eigens kreierte Block-Maskierungen

Labelerzeugung

Weiterhin lassen sich auch eigene Label der jeweiligen In- und/oder Outports anzeigen. Wirgeben zwei Möglichkeiten an, wobei vorausgesetzt wird, dass ein Block-Icon, wie in Bild 4.11,existiert.

I Beschriftung der Ein- und Ausgabeports im Subsystem ändern:

– vorhandene Beschriftung mit rechter Maustaste anklicken– Beschriftung ändern– Edit Mask/Transparency auf Transparent setzen

II Für einen Block mit zwei Eingängen und einem Ausgang lauten die ins Drawing Com-mand-Fenster einzutragenden Befehle:

port_label(’input’,1,’Eing 1’)port_label(’input’,2,’Eing 2’)port_label(’output’,1,’Ausg 1’)

vgl. Bild 4.11, wobei unter Transparency jetzt Opaque (undurchsichtig) auszuwählenist.

Parameter-Dialogbox

Darüber hinaus können auch subblockeigene Parameter-Dialog-Boxen erstellt werden, in denen,wie in Standardblöcken, Parameter einzutragen oder zu aktualisieren sind, vgl. u. a. das Sub-system der Fahrbahnunebenheit Bild 4.19 bzw. sim_v11s.mdl sowie sim_v12.mdl undF_Profil in [52].

Page 21: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.3 Simulink-Grundlagen 181

Wesentliche Schritte zur Parameter-Initialisierung:• Feld Parameters im Mask Editor auswählen (siehe oben)• Add Button anklicken (freie Zeile öffnet sich)• Eintrag unter Prompt, z. B.: Bezeichnung/Verwendung, wie Filterkoeffizient a1• Eintrag unter Variable, z. B. Variablen-Name: a1• Eintrag wird in freigeschaltete Zeile übernommen• weitere Einträge mit Add Button ... usw.• Ergänzende Dialog parameters:

Spalte type: edit oder(checkbox oder)popup, Auswahl-Parameter im Fester Popups eingeben

Spalte Evaluate: (aktiv)

4.3.5.5 Marken und Speicher für den Signalfluss

In umfangreichen Modellen können die üblichen durchgezogenen Signalpfade zur Unübersicht-lichkeit führen. Mit Hilfe der Goto / From Blöcke sowie der Data Store Memory /Read /Write

Blöcke aus der Signal Routing Sublibrary werden Signale ohne physikalische Verbindung wei-tergeleitet. In Bild 4.12 sind beide Transfer-Möglichkeiten anhand des Modells zur Differenzial-

Bild 4.12: Beispiel zum Signalfluss mit Marken

gleichung eines Räuber-Beute-Modells 2. Ordnung für x, y

x = 1,2x − x2 − 23

(y + y)

y = 1,5xy

x +0,2− y

demonstriert, wobei alle Signalflüsse lokale Größen sind. Während die Goto / From Blöcke ineiner Hierarchie-Ebene die Signale unmittelbar weiterleiten, benötigen die Data Store Blöcke den

Page 22: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

182 4 Simulation unter Simulink�

zusätzlichen Memory Block. In beiden Fällen leitet ein Goto bzw. Data Store Memory Block dieSignale an mehrere korrespondierende From bzw. Data Store Read Blöcke weiter. Der Eingangz. B. in den Goto Block kann reell, komplex oder vektoriell aller Simulink-Datentypen sein. Diesgilt auch für den portlosen Signalfluss in/aus Subsystemen, wie anhand eines Submodells zueinem Ein-Massen-Schwinger mit Dat_trans.mdl in [52] gezeigt. Dabei sind einige Regelnzu beachten, die wir anhand der Goto / From Blöcke kurz erläutern, vgl. Online Hilfe.

Wesentlich ist die Einstellung in der Parameterbox des Goto Blocks. Einerseits erhält dasSignal eine Bezeichnung (Tag), z. B. A wie in Bild 4.13 und andererseits den Tag Visibility Pa-rameter: local, scoped, global, der vom Ort der Blöcke in der Hierarchie-Ebene des Modellsabhängig ist. Für miteinander korrespondierender Blöcke, sie enthalten den gleichen Tag Name,ist zu unterscheiden:

• local: Goto und From Block liegen in einer Hierarchie-Ebene, d. h. in der Hauptmodellebe-ne, wie in Bild 4.12, bzw. in einem Subsystem. Der Tag Name steht in eckiger Klammer,z. B. [A ].

• scoped: Neben dem Goto und From Block wird der Goto Tag Visibility Block benötigt. Da-bei können alle drei in einer Ebene, z. B. einem Subsystem (weniger sinnvoll), liegen oderin unterschiedlichen Ebenen, z. B. Subsystemen unterhalb des Goto Tag Visibility Blocks.Beispiel: Goto Tag Visibility und From Block in einer Ebene und der Goto Block in einemeingebettetem Subsystem, vgl. Bild 4.13 oder Goto Tag Visibility und Goto Block in derübergeordneten Ebene und der From Block in einem Subsystem, vgl. GotoFrom.mdl in[52]. Bei zwei und mehr ähnlich aufgebauten Ebenen, die jeweils Bestandteil eines Subsys-tems sind, ist mehrfach der gleiche Tag Name zulässig. Der Tag Name steht in geschweifterKlammer, z. B. {A } wie in Bild 4.13.

• global: Goto und From Block/Blöcke können in beliebigen Ebenen eines Modells angeord-net sein. Mehrfach Tag Name sind auszuschließen.

Bild 4.13: Beispiel zum pfadlosen Signalfluss in zwei Hierarchie-Ebenen

Zusammenfassend: Liegen die Blöcke mit gleichem Tag Name in einer ebenen, so sind siemit local zu vereinbaren. Existieren mehrere geschachtelte Subsysteme, so empfiehlt sich diescoped Vereinbarung. Namensgebungen führen weniger zu Konflikten. Bei übersichtlich ange-ordneten Subsystemen bietet sich die global Vereinbarung an. In der Parameter-Box des Goto

Blocks werden alle Verbindungen mit den korrespondierenden From Blöcken angezeigt. Miteinem Mausklick auf den jeweiligen Eintrag wird der From Block im Simulink-Modell hervorge-hoben.

4.3.5.6 Zur Bearbeitung der Scope-Darstellung

Linientypen, -stärken und -farben einer Grafik im Scope aus Bild 4.5 sind nicht direkt mani-pulierbar. Es soll deshalb eine Möglichkeit zur Einblendung der Menü-Leiste entsprechend des

Page 23: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.3 Simulink-Grundlagen 183

MATLAB-Grafik-Fensters (figure) Bild 1.11 angegeben werden. Damit sind dann bekannte Ände-rungen und Ergänzungen möglich.

Einblenden der Menü-Leiste

Bei geöffnetem Modell und aktiviertem Scope wird mit den Set-Befehlen

set(0,’ShowHiddenHandles’,’On’)set(gcf,’menubar’,’figure’), Wiederholung bei mehreren Scopes

die Menüleiste der Standard MATLAB Figure eingeblendet und somit die Grafik, u. a. mit denin Abschn. 1.6.2.5 beschriebenen Mitteln, bearbeitbar. Dies gilt auch für den XYGraph. Nacheingeblendeter Menü-Leiste wird mit figure(gcf) das Grafik-Fenster aktiviert, um es, wieoben angegeben, zu bearbeiten. Aber auch über Befehlseingaben im CommandWindow wie z. B.

xlabel(’...’), ylabel(’...’), title(’....’), gridsind jetzt Ergänzungen zulässig.

Darstellung im Figure-Fenster mit simplot

Mit dem Befehl simplot lassen sich Daten, die u. a. mittels Scope-Eintrag unterParameters/Data history:

Screen data to workspace (aktiv)Variable name: {ScopeData} (default)Format: Array | Structure | Structure with time

in dem vereinbarten Format in den Workspace geschrieben wurden, vereinfacht grafisch darstel-len, vgl. help simplot. Beispiel: simplot(Data), wobei Data vom Format Structurewith time ist. Dies bezieht sich auch auf die Daten aus dem To Workspace Block. Vielfachist es sinnvoll, den simplot Befehl in Zusammenhang mit einem To Workspace Block unterFile/Model Properties/Callbacks – z. B. simplot(Data) – einzutragen, so dassdieser unmittelbar nach der Integration ausgeführt wird, wie u. a. in sim_v12.mdl aus [52].

4.3.5.7 Der Model Explorer

Der Model Explorer, siehe auch Abschn. 6.1.6 und Bild 6.9, S 329, liefert u. a. einen schnel-len Überblick aller in einem Simulink-Modell eingebrachten Blöcke. Die üblicherweise durchMausklick bezüglich der Modelle/Blöcke eingeblendeten Dialog-, Parameter-Boxen können imExplorer integriert, geöffnet, die Einträge gesichtet und geändert werden. Dies wird um Informa-tionen in einem Stateflow-Chart, wie in Kapitel 6, ergänzt.

Der Explorer wird aus der Menüleiste des Modell-Fensters unter View/Model Explorer

bzw. mit dem Button , über Explore des Kontext Menüs eines mit Rechts-Klick der Maustas-te angewählten Objekts/Blocks oder aus dem Command Window mit daexplr geöffnet. Diewesentlichen Elemente des Explorers, siehe Bild 6.9 sind die Haupt-Toolbar, die Search-Leisteund die Spalten:• Model Hierarchy • Contents / Search • Dialog

Die Dialog-Spalte kann mit dem Button ein- und ausgeblendet werden.Die Model Hierarchy Spalte zeigt die hierarchisch angeordnete Baumstruktur der Simulink-

Umgebung mit den Haupt-Knoten Simulink Root, es folgen der Base Workspace (MATLAB Work-space) sowie Knoten der geöffneten Simulink-Modelle. Jeder Modell-Ast enthält den Model

Page 24: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

184 4 Simulation unter Simulink�

Workspace, die Subsysteme des Modells usw. Ein Mausklick auf den Modell-Knoten öffnetdie Contents Spalte ergänzt um die im Modell befindlichen Blöcken sowie zugehöriger Block-Informationen in Abhängigkeit von der Auswahl im Feld Column View: z. B. Default, SystemI/O usw. Gleichzeitig erscheinen die Modell-Eigenschaften (Model Properties) in der DialogSpalte.

Die Dialog- und Parameter-Fenster lassen sich durch Mausklick auf ein Blocksymbol in derContents Spalte in der Dialog Spalte anzeigen, Inhalte können gesichtet und geändert werden.

Vorteil: Viele über die Kontext- (Shortcut-) Menüs angewählten modell- und blockeigenenBoxen eines Simulink-Modells sind auch im Explorer zugänglich.

In der folgenden Ausführung gehen wir nur auf die Anwahl mittels Kontext-Menü aus demSimulink-Modell ein. Das Handling mit dem Explorer ist für den Benutzer sehr hilfreich. Es emp-fiehlt sich deshalb, unterstützt durch die Online-Hilfe zum Explorer, mit den Beispiel-Program-men zu experimentieren.

4.3.5.8 Der Simulink-Debugger, erste Schritte

Mit dem Simulink-Debugger kann die Simulation Schritt für Schritt ausgeführt werden. Zu jedemSchritt sind Ergebnisse zugänglich, so dass diese u. a. an ausgewählten Blöcken überprüft wer-den können. Die einzelnen Ausführungsschritte werden methods (Methoden) genannt. Pro Blockkönnen mehrere Methoden erforderlich sein.

Der Debugger basiert auf einer grafischen Oberfläche (GUI, Graphic User Interface) und aufeiner Command-Zeilen-Eingabe. Der Aufruf aus der Command-Zeile erfolgt mit >> sldebug(’File_Name’). Es wird das Simulink-Modell mit dem eingegebenen File-Namen geöffnet,die Eingaben erfolgen hinter dem neuen Prompt (sldebug @0): >>. Alle Kommandos wer-den mit der Eingabe help angezeigt: z. B. step für den Übergang zum nächsten Simulations-punkt.

Wir betrachten hier etwas ausführlicher die grafische Oberfläche. Aus dem Simulink-Modell-Fenster unter Tools/Simulink Debugger wird die Oberfläche geöffnet. Die Hauptkom-ponenten sind, wie in Bild 4.14: Toolbar sowie die Unterfenster Break Points, Simulation Loop,Outputs, Sorted List und Status. Mit dem Icon ? der Toolbar lässt sich die Online-Hilfe öffnen.

Erste Schritte mit dem Debugger werden wir im Zusammenspiel mit dem Beispiel einer alge-braischen Schleife aus Bild 4.2 durchführen. In Bild 4.14 ist dieses Modell sowie die Debugger-Oberfläche nach einigen Schritten dargestellt.

Es lassen sich Berechnungen von Break Point zu Break Point oder unter Einbezug von Zwi-schenschritten zur Anzeige bringen. In beiden Fällen ist zunächst der Start/Continue Buttonzu betätigen. Zum Setzen eines Break Points ist der Block zum zu betrachtenden Ergebnis miteinem Linksmausklick zu markieren, siehe sin Block in Bild 4.14, um anschließend mit ei-nem Linksklick auf einen der Button der Toolbar den Break Point zu setzen. Er wird unterBlocks der Break Points Spalte angezeigt. Hier kann ausgewählt werden: unter Setzen desStopps (Break) vor dem Block, unter Anzeige der Ein-/Ausgangsdaten (I/O) oder beides. Diezugehörigen Daten kommen nach jedem Durchlauf in der Spalte Outputs zur Anzeige. WeitereBreak Points können gesetzt werden.

Mit wird die Rechnung bis zum folgenden Break Point fortgesetzt und die Ausgabe auf derOutputs Seite aktualisiert, siehe Bild 4.14. Hier zeigt TM (Major Time Step) die aktuelle Zeit an,gefolgt von dem Namen (iD, z. B. 0:1) der im nächsten Schritt ausgeführten Methode und dem

Page 25: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.3 Simulink-Grundlagen 185

Bild 4.14: Modell-Fenster und grafische Debugger-Oberfläche

des Blocks auf den die Methode angewendet wird. U1 ist der Eingang, Y1 der Ausgang (mehreresind möglich). Mit lassen sich diese eines angewählten Blocks anzeigen.

Im Modell-Fenster wird im Animations-Mode einerseits die Box der folgenden Methode(Next method box), vgl. Eintrag unter Outputs, eingeblendet und nach jedem weiteren Schrittdurch der Block mit dem gesetzten Break Point durch einen farbigen Pfeil (Block Pointer) undeiner Kachel (Method Tile) markiert. Die Kachel-Farbe und deren Lage enthalten Informationüber den Ausführungsschritt, z. B. rot für Update, dunkelgrün für Outputs usw.

Für das Modell aus Bild 4.14 kann somit die Zeit TM sowie der Ein- und Ausgang am sin

Block verfolgt werden. Insbesondere zeigt sich, dass in einem Integrationsschritt versucht wird,die algebraische Schleife iterativ zu lösen. Hier liegt Konvergenz vor.

In der Spalte Simulation Loop, siehe Bild 4.15, wird die Liste der Methoden, die während derSimulation aufgerufen werden, hierarchisch in Baumstruktur angezeigt. Jeder Knoten steht füreine Methode, er kann als zusätzlicher Break Point gesetzt werden. Die in der untersten Ebeneauftretenden Block Namen (Methoden), z. B. Trigo..., sind Hyperlinks. Ein Klick hieraufmarkiert den zugehörigen Block im Modell-Fenster.

Mit den Button können alle oder wesentliche Schritte der Integration, also auchzu Zwischenzeiten eines Integrationsintervalls (TM, Minor Time Step), angezeigt werden. Mit

(step) werden alle Methoden sämtlicher Hierarchie-Ebenen angezeigt, mit (step over) in je-dem Schritt die der aktuellen Hierarchie-Ebene. Alle tiefer liegenden Methoden werden natürlich

Page 26: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

186 4 Simulation unter Simulink�

Bild 4.15: Simulation Loop, Fenster mit Baum der Methoden

abgearbeitet aber nicht angezeigt. Mit (step out) erfolgt ein Sprung ans Ende (z. B. Trigo)der aktuellen Methode, alle Zwischenschritte werden ausgeführt.

Mit (step top) wird an die Stelle der ersten Methode des nächsten Zeitschritts gesprungen(im Allgemeinen an den Anfang der Simulationsschleife). Mit (step blockmth) erfolgt derSprung zum jeweils folgenden Block.

Diese Schritte sind auch ohne Break Point ausführbar. Experimente mit weiteren Beispielpro-grammen sollten später durchgeführt werden.

4.4 Simulink-Modellierung eines einfachen Projekts

Wir wollen eine Einführung zur Modellerstellung und Simulation unter Simulink nicht an spezifi-schen kleinen Beispielen, sondern schrittweise an einem kleinen Projekt vornehmen. Es werdendabei bewusst einige numerische Probleme eingearbeitet, die später zu diskutieren sind. In denKapiteln 5, 6, 7 und 8 folgen ergänzende Beispiele/Projekte unterschiedlichster Problematiken,z. B. zur Bearbeitung von Systemen mit Zustandsereignissen (Events).

4.4.1 1/4-Fahrzeugmodell und die Bewegungsgleichungen

Das Schwingungsverhalten, angeregt durch eine Rampenauffahrt, ist für das 1/4-Fahrzeugmodellnach Bild 4.16 zu untersuchen. Das skizzierte Modell des Fahrzeuges, bestehend aus Aufbau(mA) und Reifen (mR, kR), bewegt sich mit konstanter Geschwindigkeit über eine Rampe

xS ={

0,1 t in [m] für t < 0,1 s0,01 in [m] für t ≥ 0,1 s, ausschließlich der Fahrbahnunebenheit (4.4)

Page 27: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.4 Simulink-Modellierung eines einfachen Projekts 187

Bild 4.16: Fahrzeugmodell auf unebener Fahrbahn

und schließlich auf einer unebenen Fahrbahn. Die Radaufhängung wird durch die Feder (kA), denDämpfer (dA) und das COULOMBsche Reibelement (Reibkraft FC), z. B. infolge eines Blattfeder-pakets nach [12], beschrieben; kR berücksichtigt die Reifensteifigkeit. Die Auslenkungen xA, xRzählen wir aus der Gleichgewichtslage, die sich infolge der Gewichte einstellt.

Systemparameter: mA = 103 kg; mR = 102 kg; dA = 12 103 N s/mkA = 40 103 N/m; kR = 40 104 N/m; FC = 400 N

Bild 4.17: Schnittbild zum Fahrzeugmodell

Die zugehörigen Bewegungsgleichungen ergeben sich mit Bild 4.17 nach NEWTON ausAbschn. 2.3.2.1 zu:

mAxA + kA(xA− xR)+ dA(xA− xR)+ FC sign(xA− xR) = 0mRxR− kA(xA− xR)−dA(xA− xR)−FC sign(xA− xR)− kR(xS− xR) = 0.

(4.5)

Aufgrund des Reibansatzes berücksichtigen die Bewegungsgleichungen die Bereiche der Gleit-

Page 28: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

188 4 Simulation unter Simulink�

reibung vrel = xA− xR = 0; ausgedrückt durch die Definition der sign-Funktion

sign vrel ={

1 für vrel > 0−1 für vrel < 0 sign(0) mathematisch nicht definiert. (4.6)

Es liegen also Bewegungsgleichungen mit Unstetigkeiten vor, vgl. Kapitel 5. Dieses kannnumerisch Schwierigkeiten bereiten. Aus diesem Grund entschärft man das Problem oft durchdie abgebildete stückweise stetige Reibkennlinie (Sättigungsfunktion, sat).

Beide Fälle sollen betrachtet werden.

4.4.2 Aufbereitung der Bewegungsgleichungen

Die Bewegungsgleichungen (4.5) bestehen vorwiegend aus linearen Abhängigkeiten. Bei derModellierung wollen wir deshalb auf dem State Space Block3 aus der Continuous-Library mitder übergeordneten Gleichungsstruktur in Simulink-Schreibweise

xxx′ = AAAxxx + BuBuBu

yyy = CCCxxx + DuDuDu(4.7)

aufbauen. Hierzu muss die Systemgleichung (4.5) in Zustandsform überführt werden, wobei wirdie Modelle ohne und mit Reibelement unterscheiden und in dieser Reihenfolge auch in Simulink

bearbeiten wollen.

4.4.2.1 Fahrzeugmodell ohne Reibelement

Für die Zustandsdifferenzialgleichung führen wir neue Abkürzungen der Zustände ein:

x1 = xA; x2 = xR; x3 = xA; x4 = xR. (4.8)

Hiermit können wir die Bewegungsgleichungen (4.5) für FC = 0 auf die Form

x1 = x3x2 = x4

x3 = − kA

mA(x1− x2)− dA

mA(x3− x4)

x4 =kA

mR(x1− x2)+

dA

mR(x3− x4)− kR

mR(x2− xS)

(4.9)

3 auch eine vektorielle Betrachtung mit einem oder zwei Integrierer-Blöcken ist möglich

Page 29: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.4 Simulink-Modellierung eines einfachen Projekts 189

bringen, wobei xS die Eingangsfunktion nach (4.4) ist. Wir wählen x1 = xA und x2 = xR alsAusgänge. (4.9) hat somit die Struktur

xxx = AxAxAx + BBBu, u = xs

yyy = CxCxCx.(4.10)

Die Systemmatrizen stellen wir zusammen:

- Systemmatrix AAA:

AAA =

⎡⎢⎢⎣

0 0 1 00 0 0 1

−kA/mA kA/mA −dA/mA dA/mAkA/mR −(kA + kR)/mR dA/mR −dA/mR

⎤⎥⎥⎦ (4.11)

- Eingangsvektor BBB für die Eingangsgröße u = xS:

BBB = [0, 0, 0, kR/mR]T (4.12)

- MessmatrixCCC und Durchgangsmatrix DDD für die Messgrößen x1, x2:

CCC =[

1 0 0 00 1 0 0

]; DDD =

[00

](4.13)

- Zustandsvektor xxx und Messvektor yyy:

xxx = (xA, xR, xA, xR)T = (x1, x2, x3, x4)T; (4.14)

yyy = (xA, xR)T = (x1, x2)T . (4.15)

Alternativer Ausgang yyy: Ist man an der Beschleunigung des Aufbaus xA = x3 sowie an der Rei-fenkraft fR interessiert, dann erreichen wir dies mit

[x3fR

]=[ − kA

mA

kAmA

− dAmA

dAmA

0 kR 0 0

]⎡⎢⎢⎣x1x2x1x2

⎤⎥⎥⎦ +

[0−kR

]u, u = xS

yyy = CCC xxx + DDD u .

4.4.2.2 Fahrzeugmodell mit Reibelement

Die Systemmatrix AAA bleibt unverändert. Da die Relativgeschwindigkeit x3− x4 ins Reibgesetzeingeht und wir dieses außerhalb des State Space Blocks modellieren müssen, ist der Ausgangs-vektor yyy gegenüber der vorangegangenen Betrachtung zu erweitern. Einerseits können wir CCC sowählen, dass yyy = xxx, andererseits können wir aber auch CCC so aufbauen, dass am Ausgang die Re-lativgeschwindigkeit x3− x4 anliegt. Über die Eingangsmatrix BBB bringen wir jetzt zusätzlich dieReibkräfte in das System ein, so dass folgende Matrizen gegenüber dem reibungsfreien System

Page 30: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

190 4 Simulation unter Simulink�

einzusetzen sind:

- Eingangsmatrix BBB, Eingangsvektor für das COULOMB-Reibelement uuu:

BBB =

⎡⎢⎢⎣

0 00 00 −FC/mA

kR/mR FC/mR

⎤⎥⎥⎦ , uuu =

[xS

sign (x3− x4)

](4.16)

- MessmatrixCCC und Durchgangsmatrix DDD, es bieten sich zwei Möglichkeiten an:a) Ausgabe aller Zustandsgrößen

CCC = EEE4×4 4×4-Einheits-Matrix, DDD = 0004×2 4×2-Null-Matrix (4.17)

b) Ausgabe der Auslenkungen x1, x2 sowie der Relativgeschwindigkeit x3− x4

CCC =

⎡⎣ 1 0 0 0

0 1 0 00 0 1 −1

⎤⎦ ; DDD =

⎡⎣ 0 0

0 00 0

⎤⎦ (4.18)

Wir arbeiten mit der Ausgabe aller Zustandsgrößen, also mit (4.17).Im Weiteren wollen wir die Simulink-Modellierung schrittweise aufbauen. Wir beginnen mit

der Formulierung des Fahrbahnprofils.

4.4.3 Das Fahrbahnprofil

Das Fahrbahnprofil werden wir in zwei Schritten erzeugen. Zunächst modellieren wir die Fahr-bahnunebenheit und daran anschließend die Rampe und das ebene Plateau nach (4.4). Das voll-ständige Fahrbahnprofil setzt sich dann auf dem Plateau additiv aus beiden Anteilen zusammen.

Natürlich können auch gemessene Fahrbahnunebenheiten verarbeitet werden. Liegen Mess-werte sowie ein hierzu parallel aufgenommener Zeitvektor, der ein Maß für die Geschwindigkeitdarstellt, vor, dann können diese mit dem From Workspace Block aus Sources in das Problemeingebunden werden. Der mit anzugebende Zeitvektor dient dabei zur Synchronisierung mit derSimulationszeit.

4.4.3.1 Modellierung der Fahrbahnunebenheit

Zur Nachbildung der Fahrbahnoberfläche gehen wir von einem tiefpassgefilterten digitalen wei-ßen Rauschen aus, siehe Bild 4.20 links. Der Tiefpass sei ein BUTTERWORTH-Filter 3-ter Ord-nung (lineare gewöhnliche Differenzialgleichung 3. Ordnung)

...y F + μ1ωgyF + μ2ω2g yF + μ3ω3

g yF = μ3ω3g u︸ ︷︷ ︸

uF

(4.19)

mit dem Eingangssignal u und den Filterparametern μ1 = μ2 = 2; μ3 = 1 sowie der Grenzfre-quenz (Eckfrequenz) ωg. Der Funktionsblock Band-Limited White Noise aus der Blocklibrary

Page 31: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.4 Simulink-Modellierung eines einfachen Projekts 191

� �yF FahrbahnunebenheituF

Band-Limited

White Noise

Tiefpassfilter

Bild 4.18: Fahrbahnmodellierung

Sources liefert das digitale Rauschsignal uF . Mit dem Parameter ωg des Tiefpassfilters (Form-filters) glätten wir das Signal und steuern den Oberwellengehalt der Fahrbahnunebenheit. DieAmplitudenwerte werden über die Intensität des Rauschsignals eingestellt; einfachheitshalberziehen wir den Koeffizienten μ3ω3

g in (4.19) in die Intensitätseinstellung uF hinein:

uF = μ3ω3g u.

Diesen Blockparameter stellen wir unter Noisepower des Rauschgenerators ein. Der Parame-ter Sampletime des gleichen Fensters beschreibt die Impulsbreite, vgl. Bild 4.20, und ist somitein weiteres Maß für die Unebenheit der Fahrbahn in Abhängigkeit von der Fahrzeuggeschwin-digkeit. Der endgültige geglättete Unebenheitsgrad in Frequenzanteil und Amplitude wird überdas Tiefpassfilter eingestellt.

Wir betrachten eine Fahrbahnunebenheit mit dem Parametersatz:

Tiefpass ωg 100 rad/secRauschgenerator Noise power μ3ω3

g u, z. B.: u = 0,1333Sample time 0,02 secSeed [23341] (standard)

Die Filtergleichung (4.19) oder allgemeiner gewöhnliche lineare Differenzialgleichung lässt sichauf unterschiedliche Weise modellieren. Wir geben drei Beispiele:

1. Modellierung mit den Funktionsblöcken: Integrierer, Verstärker und Summierer (lineareund nichtlineare Differenzialgleichung)

2. Modellierung mit dem State Space Block; siehe Fahrzeugmodell. Der lineare Anteil der Dif-ferenzialgleichung muss in Zustandsform formuliert sein; isolierte Nichtlinearitäten lassensich vielfach über die Eingangsmatrix einbringen.

3. Modellierung als Übertragungsfunktion [28] mit dem Transfer Fcn Block.

mu3*omg^3

s +mu1*omg.s +mu2*omg^2.s+mu3*omg^33 2

Transfer Fcn1

4. Modellierung mit einer S-Function in den Programmiersprachen MATLAB, C, C++, Adaoder Fortran. Hiermit ist nahezu jede Form der Modellierung möglich. Die Handhabung istwegen der Synchronisation mit dem Simulationsprozess aufwendiger; die Programmstruk-tur ist weitgehend festgeschrieben, siehe Abschn. 4.7.

Page 32: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

192 4 Simulation unter Simulink�

Wir wollen (4.19) nach 1. mit einer Integriererkette realisieren. Hierzu lösen wir (4.19) nachder höchsten Ableitung auf

...y F = − μ1ωgyF − μ2ω2g yF − μ3ω3

g yF + uF (4.20)

und bilden aus...y F durch Hintereinanderschalten von drei Integrierern yF , yF , yF . Die Gewich-

tungen der Ableitungen für die Rückkopplung erreichen wir mit Verstärker-Blöcken (Gain Blö-cken). Mittels Summierer fassen wir alle Größen entsprechend der rechten Seite von (4.20) zurhöchsten Ableitung zusammen, so dass vor dem ersten Integrierer des Modells (4.20) realisiertist. Bild 4.19 oben zeigt das erstellte Blockmodell, mit dem die Simulation ausgeführt werdenkann. In Bild 4.20 ist das erzeugte Rauschsignal und die erzielte Fahrbahnfunktion dargestellt.

Bild 4.19: Subsystem der Fahrbahnunebenheit

0 0.2 0.4 0.6 0.8 1−6

−4

−2

0

2

4

6x 10

−3 Strassenprofil

Zeit [sec]

Fah

rbah

nune

benh

eit [

m]

0 0.2 0.4 0.6 0.8 1−6000

−4000

−2000

0

2000

4000

6000

8000Weisses Rauschen (bandbegrenzt)

Zeit [sec]

Inte

nsitä

t

Bild 4.20: Rauschsignal und Fahrbahnunebenheit

Da das Fahrbahnmodell für sich eine Einheit darstellt, können wir es als maskiertes Subsystem(eigener Funktionsblock) mit dem Ausgang der Fahrbahnfunktion (Zeitfunktion) kreieren; vgl.

Page 33: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.4 Simulink-Modellierung eines einfachen Projekts 193

Abschn. 4.3.5.2 sowie Bild 4.19 unten. Wir werden es später in das Fahrzeugmodell einbringen.Das Simulink-Modell sim_v11s.mdl aus Bild 4.19 ist in [52] zu finden. Für die Filterparame-ter des Submodells ist eine Parameterbox nach Abschn. 4.3.5.4, Parameter-Dialogbox, angelegt.Da dieses Subsystem in mehrere Modelle eingeht, wäre es günstiger, das Modell aus Bild 4.19als Referenzmodell zu definieren, um später hierauf eine Referenz (Model Referencing) wie inAbschn. 4.3.5.3 zu erstellen. Dies wird mit F_Profil.mdl in [52] gezeigt.Übungsvorschlag: Modellieren Sie die Filtergleichung (4.19) mit Hilfe der zugehörigen Übertra-gungsfunktion und bilden Sie damit ein maskiertes Submodell mit zugehöriger Parameterbox.

4.4.3.2 Modellierung der ebenen Fahrbahnstruktur

Um einige Blöcke der Simulink-Library zu präsentieren, werden wir bei der Modellierung derebenen Fahrbahnstruktur zwei Darstellungen gegenüberstellen. Die zuvor formulierte Fahrbah-nunebenheit geht additiv in die hier zu formulierende Fahrbahnstruktur ein.

Modellierung mit einem Function-Block

Mit den Function-Blöcken in Bild 4.21 aus der User-Defined Functions Bibliothek kann derfunktionale Zusammenhang von n Eingängen und m Ausgängen hergestellt werden (MIMO 4-Block). Die Funktionen lassen sich einerseits direkt ins Block-Fenster, vgl. Parameterfensterdes Fcn Blocks in Bild 4.21, andererseits indirekt über eine Function (M-File) einbringen. Die

Bild 4.21: Function-Blöcke zur Erzeugung der Rampenfunktion, Rampe_S.mdl

Function für den Interpreted MATLAB Function Block (vor Simulink 7.7: MATLAB Fcn) ist imEditor mit:

function y = rampe(u) % rampe.mif u < 0.1

y = 0.1 * u;else

y = 0.01;end

zu erstellen und unter rampe.m abzuspeichern. Der Eintrag ins zugehörige Blockfenster um-fasst u. a:

4 MIMO Multiple Input Multiple Output System

Page 34: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

194 4 Simulation unter Simulink�

MATLAB function rampe, output dimensions 1, output signal type autoDer gleiche Inhalt desM-Files rampe.m ist auch für den MATLAB Function Block (Simulink 7.7;vorher: Embedded MATLAB Function) im MATLAB Funktion Block Editor, der sich mit einemDoppel-Mausklick auf den Block öffnet, einzutragen. Der erstellte Code wird in einen compi-lierten C Mex-Code – ein C-Compiler muss installiert sein – gebracht, es wird zusätzlich dieS-Function rampe_S_sfun und das Verzeichnis slprj, vgl. Abschn. 4.3.5.3 angelegt. Damitmacht der MATLAB Function Block in vielen Fällen eine Programmierung von S-Functions nachAbschn. 4.7 überflüssig.

Mit diesen Formulierungen wird über die Unstetigkeit hinweg integriert; das Zeitereignis Ram-penende wird nicht detektiert. Darüber hinaus wird eine additiv hinzugefügte Fahrbahnuneben-heit auch auf der Rampe überlagert. Dies wollen wir aber ausschließen.

Modellierung mit dem Switch und Gain Block

Alternativ modellieren wir jetzt die Fahrbahn (4.4) mit einem Gain Block – die Verstärkung kannein Skalar oder eine Matrix sein – mit dem Eingang der Zeit t und dem Ausgang 0.1*t ent-sprechend (4.4). Der Verstärkungsfaktor 0.1 ist direkt in das zugehörige Parameterfenster desGain Blocks einzutragen. Das Fahrbahnniveau nach der Rampenauffahrt wird durch den Con-

stant Block mit der zugewiesenen Niveauhöhe (hier: 0.01) eingestellt. Die logische Entschei-dung bezüglich des Eintretens des Zeitereignisses: oberes Fahrbahnniveau erreicht (hier nach(4.4): 0.1*t ≤ 0.01), führen wir mit dem Switch Block – vgl. Bild 4.22 und Signal RoutingLibrary – aus, wobei der Threshold-Parameter (Schwellwert-Parameter, hier: 0.01) im Switch

Block-Fenster einzustellen ist. In Abhängigkeit des ’control inputs’ und des Schwellwertes inBild 4.22 wird der Rampenanstieg 0.1*t solange duchgeschleift bis der Schwellwert erreichtist, anschließend wird auf den konstanten Wert 0.01 umgeschaltet. Am Block-Ausgang liegt da-mit die Fahrbahnstruktur für 0≤ t ≤ te an. Das zugehörige Simulink-Modell zeigt Bild 4.22 rechts.Im Gegensatz zur Formulierung mit dem M-File rampe.m, kann der Zeitpunkt des Schaltens,also das Zeitereignis Rampenende, durch aktivieren von Enablezeroscrossingdetec-tion im Parameterfenster des Switch Blocks ermittelt werden. Es erfolgt somit im Sinne derNumerik eine exakte Anstückelung der Integrationsbereiche.

Rampenfunktion

output

if control > = threshold

control input

if control < threshold1

Out1Switch1 Switch

0.1

Gain

0.01

Constant

Clock

Bild 4.22: Schalterfunktion und Simulink-Modell für die ebene Fahrbahnstruktur

4.4.4 Parametrisierung des Zustandsmodells im State Space Block

Den linearen Anteil der mathematischen Formulierung des Fahrzeugmodells nach Abschn. 4.4.2bringen wir, wie in Abschn. 4.3.3 angegeben, über den State Space Block in die Modellierung ein.

Page 35: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.4 Simulink-Modellierung eines einfachen Projekts 195

Hierzu tragen wir, nicht die numerische Form der Matrizen, sondern die eingeführte Matrizen-Bezeichnungen A,B,C,D in die Parameter-Dialog-Box des State Space Blocks ein. Vor demSimulationsstart müssen die zugehörigen numerischen Werte imWorkspace vorliegen. Dies lässtsich am einfachsten mittels M-File nach Bild 4.23 (sim_v13D.m), welches die Parameter unddie verwendeten Matrizen enthält, erreichen. Das M-File sim_v13D ist vor dem Simulations-

%-----------------------------Daten-Modul sim_v13D.m% Simulink-Modell: sim_v12.mdlfprintf (’Lade Daten für Rampenauffahrt’)% SystemparametermA=1.0e+03; % Aufbauten-Masse [kg]mR=1.0e+02; % Rad-Masse [kg]kA=40.0e+03; % Federst. der Radaufhängung [N/m]kR=40.0e+04; % Reifensteifigkeit [N/m]dA=12.0e+03; % Dämpfung der Radaufhängung [Ns/m]d=0.01; % Rampenhöhe [m]

A=[zeros(2) eye(2); % Systemmatrix[-kA kA -dA dA ]/ mA;[ kA -(kA+kR) dA -dA] / mR];B=[0; 0; 0; kR/mR]; % Eingangsmatrix des reibfreien ModellsC=[eye(2) zeros(2)]; % Ausgangsmatrix des reibfreien ModellsD=zeros(2,1); % Durchgangsmatrix des reibfr. Modells

xi=[0;0;0;0] % Anfangswerte für die Simulation

disp(’ ’), disp(’ok.’)%-----------------------------Daten-Modul sim_v13D.m

Bild 4.23: Daten-File für das reibungsfreie Modell

start auszuführen. Automatisch erfolgt dies mit dem Eintrag des Filenamens sim_v13D unter:File-Button→ Modellproperties/Callbacks/InitFcn. Dieses File wird vor demIntegrationsstart mit die Taste start ausgeführt. Ein Eintrag unter PreLoadFcn bewirkt nurbei Öffnung des Modells eine Aktualisierung der Parameter.

4.4.5 Modellierung der Reibelemente

4.4.5.1 Coulomb-Reibkennlinie

Der Coulomb and Viscous Friction Block, Bild 4.5, aus der Discontinuities-Library bietet sich aufden ersten Blick für eine Modellierung an. Er basiert auf

y = sign(u)(Gain abs(u) + Offset)

mit dem Ausgang y, dem Eingang u sowie den Block-Parametern Gain – Wert der viskosenKraft (Steigung) – und Offset – Wert der Gleitreibungskraft. Da wir den Betrag der ReibkraftFC in die Eingangsmatrix BBB (4.16) hineingezogen haben, ist für die COULOMBsche Reibung des

Page 36: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

196 4 Simulation unter Simulink�

Fahrzeugmodells

Offset = 1 und Gain = 0

im Block-Parameter-Fenster zu setzen. Der Block-Eingang ist die Relativgeschwindigkeit zwi-schen Aufbau und Rad, also

u = xA − xR = x3 − x4.

Wegen der sign-Funktion können Haftreibungsphasen nicht erfasst werden (MATLAB Definition:sign(0)=0). Es liegt eine Unstetigkeit vor, so dass dieser Block für eine numerische Integration,insbesondere wenn x3 ≈ x4, ungeeignet erscheint; vgl. Abschn. 4.4.3.1. Dennoch wollen wir ihnweiterhin einsetzen.

4.4.5.2 Abschnittsweise stetige Reibfunktion

Zur Modellierung der abschnittsweisen stetigen Reibfunktion nach Bild 4.24 sollen u. a. derSwitch und Gain Block zur Modellierung herangezogen werden. Die bezogene Reibkraft ergibtsich aus

FFC

=: y =

{1v0

vrel

sign(vrel), für

−s0v0 ≤ vrel ≤ s0v0, s0 ≥ 1

|vrel |> s0v0(4.21)

d. h. der Switch Block muss diese Größe in Abhängigkeit des Control-Inputs durchschalten bis

Bild 4.24: Reibkennlinie mit Bezeichnungen und Beschaltung des Switch Blocks

der Schwellwert/Threshold s0 ≥ 1 erreicht ist. Dies ist der Fall, wenn wir an den Control-Input|u|= 1

v0|vrel | legen und den Block-Parameter threshold auf die maximale, bezogene Haftrei-

bungskraft F/FC (s0 ≥ 1) setzen, wie in Bild 4.24 angegeben. Dadurch werden auch die unter-schiedlichen Größen von Haft- und Gleitreibung durch μ0 = s0, μ = 1 näherungsweise berück-sichtigt. Das Block-Modell der approximierten Reibkennlinie mit dem Eingang vrel = x3− x4

Page 37: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.4 Simulink-Modellierung eines einfachen Projekts 197

und dem Ausgang y sowie der Steigung im Nulldurchgang 1v0

= 50 s/m – vgl. Gain Block – ist inBild 4.25 dargestellt, siehe auch Bild 4.32. Damit sind alle benötigten Komponenten modelliert,so dass wir die problemabhängigen Simulink-Modelle erstellen können, vgl. Bild 4.30, 4.32.

approximierte Reibkennlinie

1

Out1

Switch

Sign

50

Gain

|u|

Abs

1

In1

Bild 4.25: Block-Modell zur approximierten Reibkennlinie, 1/v0 = 50 s/m

4.4.5.3 Statischer Test der Reibmodelle

Bild 4.26: Block-Modell Ctest.mdl zum statischen Test der Reibkennlinien mit einer Testfunktion

Bei nichtlinearen Funktionen, also hier den Reibmodellen, ist ein separater Test des Block-Modells – Ctest.mdl aus [52] – unumgänglich. Als Eingang unserer zu testenden Modellenach Bild 4.26 wählen wir zunächst eine Sägezahnfunktion, die die Relativgeschwindigkeit reprä-sentiert. Die approximierte Kennlinie kann durch Variation der Steigung im Nulldurchgang 1/v0und den Schwellwert s0 verändert werden. Die erhaltenen Ergebnisse sind in Bild 4.27 wiederge-geben. Bei dem Coulomb & Viscous Friction Block wird stets der Nulldurchgang der Testfunktion(Ereignis) detektiert und somit die Umschaltung±1 exakt vorgenommen, d. h. die Reibkennliniezeichnet sich durch eine Diskontinuität (Sprung) aus. Diese Arbeitsweise ist festgeschrieben undsomit nicht manipulierbar. Im Gegensatz dazu kann die Arbeitsweise des Switch Blocks mit undohne Nullstellenbestimmung (zero crossing detection) bezüglich der Umschaltpunkte erfolgen.Um dies zu verdeutlichen, sind in Bild 4.28 Ergebnisse zur approximierten Kennlinie für beide

Page 38: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

198 4 Simulation unter Simulink�

0 0.5 1 1.5 2−3

−2

−1

0

1

2

3

Zeit t [s]

Coulomb−Reibung

0 0.5 1 1.5 2−3

−2

−1

0

1

2

3

Zeit t [s]

approx. Reibkennlinie

0 0.5 1 1.5 2−3

−2

−1

0

1

2

3

Zeit t [s]

approx. Reibkennlinie

0 0.5 1 1.5 2−3

−2

−1

0

1

2

3

Zeit t [s]

approx. Reibkennlinie

Testfunktion

Threshold 1

Threshold 2 Threshold 2

Bild 4.27: Ergebnisse zur COULOMBschen und approximierten Reibkennlinie; Steigungen im Nulldurch-gang: b), d) 5, c) 500

0 0.2 0.4 0.6 0.8−3

−2

−1

0

1

2

3

Zeit [s]

0 0.2 0.4 0.6 0.8−3

−2

−1

0

1

2

3

Zeit [s]

Diskontinuität

Testfunktion Testfunktion

mit Nullstellenermittlung ohne Nullstellenermittlung

Reibkraft Reibkraft

Bild 4.28: Ergebnisse mit und ohne Zeros Crossing Detection des Switch Blocks

Arbeitsweisen des Switch Blocks gegenübergestellt. Die Testfunktion ist jetzt ein Sinus. Einer-seits ist das korrekte Einhalten der Schaltpunkte, andererseits die durch den Integrator (variableSchrittweite) vorgegebene Tastung erkennbar. Es wird über die Ereignisse hinweg integriert. Aufdie Bearbeitung von Systemen mit Ereignissen wird im Abschn. 5.6 ausführlich eingegangen.

4.4.6 Die Startroutine für die MATLAB-Umgebung

Im Allgemeinen erfolgt der Simulationsstart über den Button Simulation/Start oder .Vielfach ist es wünschenswert, die Simulation eines Block-Modells aus der MATLAB-Umgebungzu starten. Dies ist insbesondere dann der Fall, wenn innerhalb einer Berechnung mit einem M-File auf von einem Simulink-Modell erzeugte Daten zurückgegriffen werden muss. In unseremFall wollen wir über das Anstarten eines M-Files Parameter für das Block-Modell sim_v12

Page 39: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.4 Simulink-Modellierung eines einfachen Projekts 199

%------------------------------Start-File sim_v12S.m

sim_v12 % öffnen des Simulink-Modellstry % Startversuch, Fehler?

time = sim(’sim_v12’,3); % Start des Simulink-Modells% mit Endzeitvorgabe

catch % nach Fehler neuer Startsim_v13D % Aufruf des Daten-Moduls

% Daten in Workspace geschr.time = sim(’sim_v12’,3); % siehe oben

end

h = findobj(0, ’Name’, ’Rampe’); % existiert figure?if isempty(h), % nein,

h=figure(’Position’,[150 194... % dann Konfiguration452 257],... % Position und Bildgröße’Name’,’Rampe’,... % Namensgebung’NumberTitle’,’off’); % Nr. ausblenden

end

figure(h) % Auswertung unter MATLAB................... % Plot-Befehle

Bild 4.29: Start-File mit Aufruf des Simulink-Modells und des Datenfiles

in den Workspace schreiben, dann das Block-Modell öffnen und starten und nach der Simula-tion die erzeugten Daten grafisch unter MATLAB auswerten; sie werden mit dem To Workspace

Block transferiert. Das Parameterfile sei sim_v13D.m [52], Bild 4.23. Bis auf die Integrati-onszeit von 3 s sollen alle weiteren Simulationsparameter u. a. im Menü ConfigurationParameters festgeschrieben sein. Wie in Abschn. 4.3.4 beschrieben, hat der Aufruf im Start-file sim_v12S.m dann folgende Form

time = sim (’sim_v12’, 3)

mit der die Integration über das Intervall 0≤ t ≤ 3 sec ausgeführt wird. Dieser Aufruf ist in dasM-File sim_v12S.m, wie in Bild 4.29 auszugsweise beschrieben, einzubinden. Die angegebe-nen Schritte (weitere in [52]) in sim_v12S.m lassen sich u. a. mit Hilfe der Kommentarzeilennachvollziehen. Der Aufruf von sim_v12S erfolgt z. B. aus dem CommandWindow oder einemM-File.

4.4.7 Simulink-Modelle und Simulationsergebnisse

4.4.7.1 Das reibungsfreie Modell

Mit den erstellten Einzelkomponenten ist zunächst das Fahrzeugmodell ohne Reibelement zuerstellen. Dabei ist mit dem Manual Switch Block das ebene und unebene Fahrbahnprofil auszu-wählen. Das Simulink-Modell sim_v12.mdl ist in Bild 4.30 abgebildet. Zur Datenübergabe inden Workspace wählen wir den To Workspace Block. Nach der Modellierung sind insbesonderebezüglich des State Space Modells die Parameter und Anfangswerte mit den im Parameterfilesim_v13D.m verwendeten Bezeichnungen in der Parameter-Dialog-Box einzutragen. Dieses

Page 40: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

200 4 Simulation unter Simulink�

Bild 4.30: Fahrzeugmodell ohne Reibelement auf ebener oder unebener Fahrbahn

Modell ist dann mit dem erstellten Startfile sim_v12S.m aus dem Command Window odermit dem Start-Button des Modell-Fensters, sofern das Datenfile sim_v13D.m, entsprechenddem Hinweis von S. 195, in dem Feld unter Callbacks eingetragen ist, zu starten. Darüberhinaus ist eine Ausführung von sim_v12S.m auch bei geöffnetem Modell-Fenster durch einenDoppel-Mausklick auf den Startblock in Bild 4.30 – z. B. mit Hilfe eines Subsystemblocks er-stellt – möglich. Alle angesprochenen Files sind in [52] abgelegt.

Simulationsergebnisse

In Bild 4.31 sind für beide Fahrbahnprofile die Ergebnisse gegenübergestellt. Man liest ab: Wäh-rend der Rampenauffahrt folgt das Rad (xR) unmittelbar der Rampenfunktion, der Aufbau (xA)ist demgegenüber leicht zeitverzögert. Dies gilt auch für den Einschwingvorgang in die Gleich-gewichtslage. Bei unebener Fahrbahn fällt auf, dass die Radauslenkung dem Profil entspricht –Abhebevorgänge sind nicht modelliert, vgl. Abschn. 8.6 – der Aufbau aber aufgrund der Dämp-fung die höherfrequenten Anteile nicht enthält. Dies ist ein Maß für die mehr oder weniger guteFahrwerksabstimmung, sie könnte noch optimiert werden.Übungsvorschlag: Erstellen Sie auf der Basis eines Systems zweiter Ordnung

MMMxxx +DDDxxx +KxKxKx = BBBuuuvon (4.5) ein Modell in vektorieller Modellierung mit zwei Integrierern.Hilfe in sim_v14MDK.mdl aus [52].

4.4.7.2 Das reibungsbehaftete Modell

Für beide Reibmodelle erstellen wir auf der Basis von sim_v12.mdl nach Bild 4.30 einweiteres Block-Modell, wobei für die approximierte Kennlinie in (4.5) FCsign(xA− xR) durchF aus (4.21) zu ersetzen ist. Formal fügen wir zu sim_v12.mdl die getesteten Reibmodellehinzu und ergänzen das Datenfile sim_v13D.m um die Matrizen aus Abschn. 4.4.2.2 für das

Page 41: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.4 Simulink-Modellierung eines einfachen Projekts 201

0 0.5 1 1.5 2 2.5 30

0.005

0.01

0.015

Zeit t [s]

Auslenkungen [m]

ebene Fahrbahnohne Reibelement

xA

xR

0 0.5 1 1.5 2 2.5 30

0.005

0.01

0.015

Zeit t [s]

Auslenkungen [m]

unebene Fahrbahnohne Reibelement

xA

xR

Bild 4.31: Einschwingvorgang nach Rampenauffahrt bei ebener und unebener Fahrbahn

Bild 4.32: Block-Modell mit COULOMBscher und approximierter Reibkennlinie

System mit Reibung. Die so aufgebauten Modelle sind in Bild 4.32 zusammengefasst.

Diskussion der Simulationsergebnisse

Eine Simulation mit demModell nach Bild 4.32, d. h. mit dem Coulomb & Viscous Friction Blockund ebener Fahrbahn, lässt keine Integration mit variabler Schrittweite zu. Dies liegt, wie schon

Page 42: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

202 4 Simulation unter Simulink�

0 0.2 0.4 0.6 0.8 1−5

0

5

10

15x 10

−3

Zeit t [s]

Auslenkungen [m]

xA

xR

0 0.2 0.4 0.6 0.8 1

−0.06

−0.04

−0.02

0

0.02

0.04

0.06

Zeit t [s]

Relativgeschw. [m/s]

ebene Fahrbahn

COULOMB−Reibung

0 0.2 0.4 0.6 0.8 1−5

0

5

10

15x 10

−3

Zeit t [s]

Auslenkungen [m]

xA

xR

0 0.2 0.4 0.6 0.8 1

−0.06

−0.04

−0.02

0

0.02

0.04

0.06

Zeit t [s]

Relativgeschw. [m/s]

ebene Fahrbahn

approx. Reibkennlinie

0 1 2 3 4−5

0

5

10

15x 10

−3

Zeit t [s]

Auslenkungen [m]

xA

xR

0 1 2 3 4

−0.06

−0.04

−0.02

0

0.02

0.04

0.06

Zeit t [s]

Relativgeschw. [m/s]

ebene Fahrbahn

approx. Reibkennlinie

Bild 4.33: Gegenüberstellung der Ergebnisse

vermutet, an der sprunghaften Änderung der Reibkraft in Bereichen, in denen die Relativge-schwindigkeit ihr Vorzeichen wechselt. In diesem Fall ist die rechte Seite von (4.5) eine un-stetige Funktion und somit in dieser Form nicht integrierbar. Dies hat nichts mit einer steifen

Page 43: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.4 Simulink-Modellierung eines einfachen Projekts 203

0 0.5 1 1.5 2 2.5 3−5

0

5

10

15x 10

−3

Zeit t [s]

Auslenkungen [m]

xA

xR

0 0.5 1 1.5 2 2.5 3−5

0

5

10

15x 10

−3

Zeit t [s]

Auslenkungen [m]

xA

xR

unebene Fahrbahn

ohne Reibelement

approx. Reibkennlinie

unebene Fahrbahn

Bild 4.34: Einfluss der Reibung bei unebener Fahrbahn

Differenzialgleichung zu tun, wie vielfach in der Literatur dargestellt. Auf eine korrekte Vorge-hensweise wird in den Kapiteln 5 –8 eingegangen. Um dennoch einen Einblick in das System-verhalten zu gewinnen, integrieren wir mit fester Schrittweite, z. B. h≤ 0,0001. Das zugehörigeSimulationsergebnis ist in Bild 4.331 dargestellt. Man erkennt, dass sich nach einem kurzenEinschwingvorgang ungedämpfte Schwingungen xA(t), xR(t) mit einer konstanten Amplituden-differenz zueinander einstellen. Wie der Verlauf der Relativgeschwindigkeit zeigt, verschwindetdiese nahezu nach ca. 0,45 s. Numerisch bedeutet dies einen permanenter Vorzeichenwechsel derReibkraft bei betragsmäßig kleiner Relativgeschwindigkeit. Die Ursache der Dauerschwingungin Bild 4.331 für t > 0,45 s liegt somit im Verschwinden der Relativgeschwindigkeit, was beikorrekter Betrachtung in einer Haftreibungsphase endet. Dadurch wird der Dämpfer zwischenRad (R) und Aufbau (A) nach Bild 4.16 nahezu unwirksam – beide Teile können als miteinanderverhakt angesehen werden –, so dass aufgrund der fehlenden Dämpfung sich ein konservativesSchwingungsverhalten einstellt.

Die Simulationsergebnisse in Bild 4.332,3 mit der approximierten Kennlinie des Modells aufebener Fahrbahn nach Bild 4.32 zeigen im Bereich 0≤ t ≤ 1 s auf den ersten Blick vergleichba-res Verhalten. Vorteil dieser Modellierung ist, dass hier mit variabler Schrittweite integriert wer-den kann. Aufgrund des steilen Nulldurchgangs der Reibfunktion liegt in diesem Bereich einesteife Differenzialgleichung vor. Im Bereich kleiner Relativgeschwindigkeiten zeigt der Verlauf,wiederum wegen des steilen Nulldurchgangs, eine stückweise stetige Änderung. Damit wirkt die-ses Reibelement in der angenäherten Haftreibungszone wie ein geschwindigkeitsproportionalerDämpfer mit großer Dämpferkonstante bei kleiner Relativgeschwindigkeit. Dies wird deutlich,wenn man, wie in Bild 4.333 dargestellt, die Integrationszeit auf 4 s erhöht.

Die Integration der Modelle mit unebener Fahrbahn zeigten sich bezüglich der Unstetigkeiten

Page 44: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

204 4 Simulation unter Simulink�

nicht so kritisch, da hier die Relativgeschwindigkeit aufgrund der Schwingungen nach Bild 4.34stärkeren Schwankungen unterliegt, so dass vrel ≈ 0 weitgehend auszuschließen ist. Das dyna-mische Verhalten zeichnet sich wieder dadurch aus, dass das Rad (xR) dem Fahrbahnprofil un-mittelbar folgt, der Aufbau (xA) verhält sich dagegen ruhiger; Oberwellenanteile werden stärkergedämpft, was bei einem Fahrzeug durch eine gute Feder- und Dämpferabstimmung anzustrebenist. Unberücksichtigt bleiben Abhebevorgänge, also typische Zustandsereignisse. Sie können mitden später vorgestellten Methoden erfasst werden, vgl. auch Abschn. 8.6.

0 0.5−2

0

2

t [s]

Rei

bkra

ft

0 0.5−2

0

2

t [s]0 0.5

−2

0

2

t [s]0 0.5

−2

0

2

t [s]

ode15s ode15s ode45 ode113

a) b) c) d)

Bild 4.35: Auswirkung der Integratorwahl bei steifen und unstetigen Differenzialgleichungen

Einfluss der Diskontinuitäten

Abschließend wollen wir noch kurz etwas zur Integratorwahl bei steifen Differenzialgleichungenauch im Zusammenhang mit den Unstetigkeiten bemerken. Da wegen des steilen Nulldurchgangsder approximierten Kennlinie steife Differenzialgleichungen zu integrieren sind, sind dement-sprechend die Integratoren ode15s oder ode23s zu wählen. Darüber hinaus ist zu bedenken, dasses bei Systemen mit stückweise stetigen Funktionen ohne direkte Berücksichtigung der Unstetig-keitsstellen, z. B. wie beim Switch Block ohne zeros crossing detection, zu größerennumerischen Fehlern mit Einfluss auf die Rechenzeit kommen kann. Diese Effekte lassen sichmit dem Modell sim_v14.mdl veranschaulichen. Hierzu wurde mit ode15s / ode45 / ode113

über 0,5 s integriert und die bezogene Reibkraft (Switch Block-Ausgang) über der Zeit t aufgetra-gen. Bild 4.35 zeigt die Ergebnisse. Dabei wurden die Schaltereignisse (mit threshold=1.2)nur in Bild 4.35a detektiert, in den übrigen wurde über die Unstetigkeiten hinweg integriert. DasAbschalten der Ereignisermittlung führt in Bild 4.35b demnach zu oszillatorischen Verläufen umdie Unstetigkeitsstelle, der steife Bereich wird sauber wiedergegeben. Das oszillatorische Verhal-ten verstärkt sich erheblich mit den beiden weniger geeigneten Integratoren ode45 / ode113 wiein Bild 4.35c,d und beschränkt sich nicht nur auf die Bereiche der Unstetigkeiten. Am stärkstenausgeprägt ist es bei der Integration mit demMehrschrittverfahren (ode113). Dies ist eine bekann-te Erfahrung: Mehrschrittverfahren eignen sich im Allgemeinen (konstruktionsbedingt) wenigerfür Systeme mit Diskontinuitäten. Auch eine Integration mit ode45 / ode113 und Ereignisermitt-lung zeigte dieses oszillatorische Verhalten, welches somit insbesondere auf die Steifigkeit derDifferenzialgleichung zurückzuführen ist.

Page 45: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.5 Algebraische Schleifen in dynamischen Modellen 205

4.5 Algebraische Schleifen in dynamischen Modellen

4.5.1 Algebraische Schleifen

Algebraische Schleifen in einem Signalfluss enthalten nur Blöcke mit direktem Durchgang (di-rect feedthrough), deren Eingangssignale direkt auf den Ausgang durchgeschleift werden.

Hierzu zählen die mathematischen Funktionsblöcke: Sum-, Gain-, Produkt-Block – sieheBild 4.38 – usw. Aber auch der im vorangegangenen Abschnitt eingesetzte State Space Block mitder Durchgangsmatrix DDD = 000, sowie Transfer Function und Zero-Pol Blöcke. Darüber hinausentstehen algebraische Schleifen, wenn das Ausgangssignal eines Integrierers direkt zum Setzendes externen Anfangssignals, auch unter Zwischenschaltung weitere Blöcke mit direktem Durch-gang, genutzt wird. Abhilfe: es ist der Ausgang des State Port Signals wie in Abschn. 5.6.4.1Bild 5.27, zurückführen.

Wird bei der Initialisierung eines Simulink-Modells eine algebraische Schleife (algebraic loop)erkannt, dann wird eine Warnung (kann über: Simulation/Configuration Parameters/-

Diagnostics unterdrückt werden) mit den im Signalfluss liegenden Blöcken ausgegeben. Mo-dellierungen rein algebraischer Probleme, wie in Bild 4.2 bzw. in alg_loop_1.mdl, alg_loop_2.mdl, Alg_Gl_Sys.mdl aus [52], enthalten zwangsweise algebraische Schleifen. Ge-löst werden diese Schleifen in jedem Integrationsschritt iterativ, siehe Abschn. 4.3.5.8. Da dieKonvergenz und die gefundene Lösung vom Startwert im Einzugsbereich einer Lösung abhängigsind, sollte dieser gesetzt werden. Dies kann mit den Blöcken IC bzw. Algebraic Constraint ausden Subbibliotheken Signal Attributes bzw. Math Operations, siehe oben angegebene Program-me, geschehen.

Treten in dynamischen Modellen algebraische Schleifen auf, dann liegen Startwerte aus demjeweils vorangegangenen Integrationsschritt vor, die in der Regel im Einzugsbereich der iterativzu bestimmenden Lösung liegen, das Problem wird entschärft. Wenn möglich, sollten dennochdie algebraische Schleifen durch Umformulieren eliminiert werden. Dies soll beispielorientiertgezeigt werden.

4.5.2 System mit algebraischer Schleife

Typischer Vertreter von dynamischen Systemen mit algebraischen Schleifen sind die in Ab-schn. 5.4 behandelten differenzial-algebraischen Gleichungen. Bild 5.13 zeigt ein möglichesSimulink-Modell. Wir wollen uns hier auf Formulierungen durch gewöhnliche Differenzialglei-chungen (ODE) mit mehreren Freiheitsgraden beschränken. In diesem Fall ist das Auftreten al-gebraischer Schleifen abhängig von den Kopplungen der Differenzialgleichungen, z. B. einerTrägheitskopplung.

Wir betrachten zunächst das einfache in Bild 4.36 abgebildete ebene mathematische Pendel(m, L) an einem translatorisch bewegten Quader (M), der sich reibungsfrei auf einer horizontalenUnterlage bewegt. Am Quader greift die Erregerkraft f = q sin (Ω t + Φ) an. Im Drehgelenk Asoll das Selbsterregungsmoment mS =

(α − βϕ2

)ϕ mit den Parametern α , β wirken, vgl. VAN

DER POL-Schwinger S. 234. Das Modell, Bild 4.36, stellt für f = 0 ein grobes Ersatzmodelleines aus der Musik bekannten Metronoms dar, was später genauer zu untersuchen ist.

Page 46: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

206 4 Simulation unter Simulink�

Bild 4.36: Pendelsystem, Metronom-Modell

4.5.2.1 Bewegungsgleichungen, erstes Simulink-Modell

Die Aufstellung der Bewegungsgleichungen führen wir im Sinne von D’ALEMBERT. Dazu sindKoordinaten einzuführen, die Körper (Quader, Pendel) frei zu schneiden, die Schnittkräfte undSchnittmomente einzutragen und zu benennen, Bild 4.37. Zusätzlich sind die Trägheitskräfte/-

Bild 4.37: Freischnitt

momente entgegen den eingeführten Koordinatenrichtungen einzutragen. Ansetzen der Gleichge-wichtsbedingungen für die Systemteile Quader und Pendel führt auf die Bewegungsgleichungen.Zunächst folgen die Gleichgewichtsbedingungen zu:Quader mit der Masse M

∑(k)

FQ,x,k = 0 → Fx + Mx − q sin (Ω t + Φ) = 0 (4.22)

Pendel mit der Masse m und der Länge L

∑(k)

FP,x,k = 0 → Fx −mx − mLϕ cosϕ + mLϕ2 sinϕ = 0 (4.23)

Page 47: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.5 Algebraische Schleifen in dynamischen Modellen 207

∑(k)

M(A)P,k = 0 → −mxL cosϕ − mL2ϕ −mgL sinϕ +

(α − βϕ2) ϕ = 0 (4.24)

Elimination von Fx mit (4.22) und auflösen nach x bzw. ϕ liefern die in ein Simulink-Modellumzusetzenden Bewegungsgleichungen:

x =mL

M + m

(−ϕ cosϕ + ϕ2 sinϕ +

1mL

q sin (Ω t + Φ))

ϕ =1L

(−x cosϕ − g sinϕ ) +1

mL2

(α − βϕ2) ϕ

(4.25)

x, ϕ sind jeweils vor dem ersten Integrierer der Integrationskette in dem Simulink-Modell, Bild 4.38,abzubilden. In (4.25) sind die Gleichungen über die Beschleunigungen gekoppelt, es liegt eineTrägheitskopplung vor.

Nach dem Start des Modells, Bild 4.38 und metro_S.mdl [52], wird die Warnung einervorhandenen algebraischen Schleife mit dem Signalfluss der Schleife, wie in Bild 4.38 markiert,im Command Window ausgegeben.

Bild 4.38: Simulink-Modell des Pendelsystems

4.5.2.2 Elimination der algebraischen Schleife

Zunächst formulieren wir die Ein-/Ausgänge u_1 → u_6 der in Bild 4.38 gekennzeichnetenBlöcke der algebraischen Schleife, um damit Eingang u_2 = x_pp des Integrierers 2 mit den inBild 4.38 eingeführten Bezeichnungen in indizierter Schreibweise, z. B. u_2 → u2, zu bilden.Im Einzelnen liest man ab:

Page 48: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

208 4 Simulation unter Simulink�

u1 = ue + uϕp − u6

u2 =mL

M + mu1 =

mLM + m

(ue + uϕp − u6

)u6 = u5 uc

(4.26)

mit u5 = −u4 − ug + use; u4 = 1L u3; u3 = u2 uc . Damit folgt

u6 = −1L

u2u2c − uguc + useuc

und schließlich

u2 =mL

M + m

(ue + uϕp +

1L

u2u2c + uguc − useuc

). (4.27)

Da u2 = f (u2) eine implizite Funktion in u2 ist, kann diese algebraische Schleife nur iterativnach u2 für den folgenden Integrationsschritt aufgelöst werden.

Wir lösen (4.27) explizit nach u2 auf, womit die algebraische Schleife eliminierbar wird. Es ergibtsich

u2 =mL

M + m−mu2c

(ue + uϕp + uguc − useuc

)(4.28)

bzw. mit den ursprünglichen Bezeichnungen

x =mL

M + m sin 2ϕ

[1

mLq sin (Ω t + Φ)+ ϕ2 sinϕ +

gLsinϕ cosϕ

− 1mL2

(α−βϕ2) ϕ cosϕ

].

(4.29)

D. h. statt (4.25)1 ist nun (4.29), wie in metro_S0.mdl in [52], zu modellieren, es tritt keinealgebraische Schleife mehr auf. Ein Vergleich mit (4.25) zeigt, dass mathematisch in (4.25)1 ϕaus (4.25)2 einzusetzen ist. Die Trägheitskopplung in (4.29) ist nicht mehr vorhanden.

Alternativ hätten wir auch u_5 = phi_pp mit den Übertragungen in der algebraischen Schlei-fe, Bild 4.38, formulieren können, um damit die Integrationskette für ϕ zu ersetzen, vgl. me-tro_S1.mdl in [52]. Es ergibt sich:

ϕ =−m

M + m sin 2ϕ

[cosϕ

(ϕ2 sinϕ +

qmL

sin (Ω t + Φ))

+M + m

m

(gLsinϕ− 1

mL2

(α−βϕ2) ϕ

)] (4.30)

In diesem Fall ist sogar (4.30) unabhängig von x und den zeitlichen Ableitungen, vgl. Abschn. 5.7.4.

Page 49: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.6 Vektorielle Betrachtungsweise und Modellierung 209

4.6 Vektorielle Betrachtungsweise und Modellierung

Die Bewegungsgleichungen von Systemen mit mehreren Freiheitsgraden überführt man zweck-mäßigerweise in eine vektorielle Schreibweise. Hiermit lässt sich in der Regel ein übersichtliche-res Simulink-Modell erstellen. Angewendet auf (4.25) bedeutet dies:[

mL2 mL cosϕmL cosϕ M + m

] [ϕx

]+[

mgL sinϕ− (α−βϕ2)

ϕ−mLϕ2 sinϕ

]=[

0q

]sin (Ω t + Φ) (4.31)

oder kurz

MMM(ϕ) yyy + fff (ϕ, ϕ) = qqq sin (Ω t + Φ) . (4.32)

Dabei ist MMM = MMMT die von ϕ abhängige symmetrische und positiv definite (det(MMM)> 0) Massen-matrix, fff die nichtlineare Vektorfunktion und qqq der Vektor der Erregeramplituden.

Zur Modellierung von (4.32) wird der Vektor yyy vor dem ersten Integrierer abgebildet. Hierzumultiplizieren wir zunächst (4.32) mit der Inversen von MMM durch:

yyy = MMM−1 (− fff (ϕ, ϕ) + qqq sin (Ω t + Φ)) . (4.33)

In Bild 4.39 sind zwei Möglichkeiten zur Invertierung von MMM dargestellt. In der linken Bild-

Bild 4.39: Zwei Möglichkeiten zur Invertierung der Massenmatrix

hälfte wird die Invertierung und gleichzeitige Multiplikation mit der Vektorfunktion der rechtenSeite von (4.33) mit dem Divide Block vorgenommen. Die Massenmatrix MMM = MMM(ϕ) wird auszwei Anteilen, wie dargestellt, abgebildet. Die Integration wird jetzt vektoriell für yyy → yyy → yyydurchgeführt. Abschließend kann yyy mit dem Demux Block (Demultiplexer) in seine Komponen-ten zerlegt werden. Damit lässt sich die Vektorfunktion einschließlich der Anregung der rechtenSeite von (4.33) – meist– komponentenweise abbilden und mit dem Mux Block (Multiplexer)vektorisieren.

Page 50: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

210 4 Simulation unter Simulink�

Auf der rechten Seite von Bild 4.39 ist die Inversion und Multiplikation mit dem MATLAB

Function Block vorgenommen. Die Abhängigkeit von MMM von cosϕ wird vor der Invertierung indem Block erzeugt. Die vollständigen Simulink-Modelle metro_S2.-, metro_S3.mdl sind in[52] abgelegt.

Vorteil der Vorgehensweise: Die Anzahl der Blöcke hat sich gegenüber der Modellierung von(4.25) reduziert. Algebraische Schleifen bezüglich der Trägheitskopplungen treten nicht auf. ImZusammenhang mit der Subsystem-Technik nach Abschn. 4.3.5.2 sowie Abschn. 4.3.5.3 und derfolgenden Betrachtung lassen sich Systeme höherer Ordnung mit vertretbarem Aufwand erstel-len.

4.6.1 Simulationsergebnisse, selbsterregte Schwingungen und Mitnahme-Effekte

Aufgrund des Momentes(α−βϕ2

)ϕ in (4.31) wird Zu- und Abfuhr von Energie in den Phasen

ϕ <

√αβ

Anfachung, ϕ >

√αβ

Dämpfung (4.34)

durch die Schwingung des Systems selbst gesteuert. Bezüglich des Schwingungsverhaltens wol-len wir die freien Schwingungen q = 0 und die erzwungenen Schwingungen mit q = 0 für eineAnalyse unterscheiden.

Aufgrund des Verhältnisses von Dämpfung zur Anfachung in einem Schwingungszykluskommt es zu periodischen, selbsterregten Schwingungen. In der Phasenebene (ϕ(ϕ)) stellensie eine geschlossene Kurve, den Grenzzykel, dar, vgl. Bild 5.6. Für einen in metro_S1.mdl

[52] vorgegebenen Parametersatz kann der Grenzzykel für austauschbare Anfangswerte als Ein-schwingvorgang berechnet werden. Gleichzeitig wird von einer FFT-Analyse des Schwingungs-signals – a) mit dem Power Spectral Density Block aus Simulink Extras/Additional Sinks,b) mit einer, unter File/Model Properties/Callbacks/StopFcn programmiertenFFT-Analyse mit grafischer Ausgabe – das Frequenzspektrum dargestellt. Hieraus lässt sich dieSelbsterregerfrequenz fs ablesen.

Bild 4.40: Gegenüberstellung von Anregung fe(Ω) = q sin (Ω t + Φ) und Schwingung ϕ(t)

Page 51: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.6 Vektorielle Betrachtungsweise und Modellierung 211

Darüber hinaus ist bekannt [58], dass, wenn die Erregerkreisfrequenz Ω in der Größenord-nung der Selbsterregerkreisfrequenz ωs = 2π fs liegt, so genannte Mitnahme-Effekte oder auchZieh-Erscheinungen auftreten können. Die Abweichung von der Selbsterregerfrequenz kann umso größer sein je stärker die Erregung q ist. Dieses Schwingungsphänomen ist u. a. in metro_S1[52] ausführlich herausgearbeitet. Die Ergebnisse sollen kurz dargestellt werden. Die sich ein-stellende Selbsterregungsfrequenz liegt bei fs = 1,83 Hz bzw. ωs = 11,5 rad/s. In Bild 4.40sind für die Erregerkreisfrequenzen Ω ≈ 14,4 rad/s und Ω ≈ 23 rad/s die zugehörigen Anre-gungen und die zugehörigen erzwungenen Schwingungen ϕ(t) dargestellt. Es ist deutlich zuerkennen, dass nach einer kurzen Einschwingphase für Ω = 14,4 rad/s die Periodendauer, d. h.die Frequenz, übereinstimmt. Die selbsterregte Schwingung wird frequenzmäßig von der Erre-gung mitgenommen. Für Ω ≈ 23 rad/s ist dies nicht der Fall – bei größerem Zeitintervall sindSchwebungen erkennbar. Die Frequenzspektren in Bild 4.41 belegen für die ErregerfrequenzenΩ ≈ 2,88 / 14,4 / 17,25 / 23 rad/s dieses Ergebnis. Die Frequenzen der gekennzeichneten Piksstimmen mit Ω überein. In Abschn. 5.7.4 wird gezeigt, wie man periodische Schwingungen di-rekt aus einem Randwertproblem unter MATLAB ermittelt.

Bild 4.41: Frequenzspektren zum Mitnahme-Effekt

Typische Beispiele selbsterregter Schwingungen, siehe auch [58]: elektrische Klingel mitKlöppel, Uhr mit Unruhe, Musikinstrumente (Violine, Mundharmonika, Klarinette...), Brems-quietschen, Flattern von Kraftwagenrädern, gleitgelagerte Turbo-Rotoren, elektrische Schwing-kreise, Regelungskreise und durch Wind angeregte Hochspannungsleitungen, Lichtmasten, Fa-brikschornsteine usw.

4.6.2 Nichtlineare Gleichungen höherer Ordnung

Im vorangegangenen Beispiel des Einzelpendels konnte die Modellierung insbesondere durch dieeingeführte Massenmatrix vereinfacht werden. Bei Systemen mit mehreren Freiheitsgraden mussman versuchen, auch die Vektorfunktion fff in (4.33) zu vektorisieren. Um einerseits dies und an-dererseits das Schwingungsphänomen der Synchronisierung in selbsterregungsfähigen Systemenzu zeigen, soll das Einzelpendel auf fünf einschließlich der Quader, wie in Bild 4.42 dargestellt,ergänzt werden. Unter http://www.stumbleupon.com/su/AeBCLuwird diesbezüglich

Page 52: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

212 4 Simulation unter Simulink�

ein Experiment mit fünf Metronome (Taktgeber in der Musik) auf einem frei beweglichen Brettgezeigt.

Bild 4.42: Fünf-Pendelsystem, MATLAB Grafik

Die Bewegungsgleichungen können wir durch Verallgemeinerung von (4.25) bzw. (4.31) er-reichen, wenn wir die Pendelwinkel vektorisieren und eine Abkürzung

ϕϕϕ = [ ϕ1, ϕ2, ...., ϕ5 ]T , ϕϕϕ2 :=[

ϕ21 , ϕ2

2 , ...., ϕ25]T

(4.35)

einführen (MATLAB: Punkt-Operation anwenden, ϕϕϕ2 := ϕϕϕ. ∗ ϕϕϕ). Schreiben wir noch für dieSelbsterregerfunktion mmms(ϕϕϕ, ϕϕϕ), dann lauten die Bewegungsgleichungen

ϕϕϕ +1Lcosϕϕϕ x = −g

Lsinϕϕϕ +

1mL2 mmms(ϕϕϕ, ϕϕϕ)

1Lcos (ϕϕϕT) ϕϕϕ +

M +5mmL2 x =

1Lsin (ϕϕϕT) ϕϕϕ2 +

qmL2 sin (Ω t + Φ)

(4.36)

oder kurz mit yyy = [ϕ1, ϕ2, ..., ϕ5, x]T =[ϕϕϕT, x

]T

MMMyyy =

⎡⎢⎣ −

gLsinϕϕϕ +

1mL2 mmms(ϕϕϕ, ϕϕϕ)

1L

sin (ϕϕϕT) ϕϕϕ2

⎤⎥⎦ +

⎡⎣ 000

qmL2

⎤⎦ sin (Ω t + Φ) (4.37)

mit der symmetrischen Massenmatrix

MMM(ϕϕϕ) =

⎡⎢⎢⎣

EEE5×51Lcos (ϕϕϕ)

1Lcos (ϕϕϕT)

M +5mmL2

⎤⎥⎥⎦ =

⎡⎢⎢⎢⎢⎣

1 0 0 0 0 c10 1 0 0 0 c2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .0 0 0 0 1 c5c1 c2 c3 c4 c5 (M +5m)/(mL2)

⎤⎥⎥⎥⎥⎦ (4.38)

wobei ci = 1/L cosϕi, i = 1,2, ...,5. Ein Vergleich mit (4.31) nach Division durch mL2 zeigt,dass sich die Struktur nicht geändert hat und sich somit der Modellierungsaufwand für (4.37)gegenüber (4.31) nicht wesentlich ändert, vgl. metro_S4.mdl in [52].

Gegenüber der mehr theoretischen Selbsterregerfunktion

ms j(ϕ j, ϕ j) =(α − βϕ2

j)

ϕ j (4.39)

Page 53: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.6 Vektorielle Betrachtungsweise und Modellierung 213

soll eine zweite unstetige Funktion, wie bei einer Pendeluhr mit GRAHAM-Gang5 aus Gangradmit sägeförmigen Zähnen und Anker eingeführt werden. Das Gangrad wird von einer Federangetrieben, der Anker ist mit dem Pendel verbunden. Durch den Eingriff der Ankerklauen indie Zähne des Gangrades wird bereichsweise eine Kraft ausgeübt und somit ein Moment M(Annahme: konstant) auf das Pendel übertragen, so dass für das j-te Pendel6

ms j(ϕ j, ϕ j) =

⎧⎪⎪⎨⎪⎪⎩

ϕ j > 0 : −q j1 < ϕ j < +q j2 → ms j = +M −aϕ jϕ j < 0 : −q j2 < ϕ j < +q j1 → ms j = −M −aϕ jϕ j > 0 : ϕ j < −q j1 oder ϕ j > +q j2 → ms j = −aϕ jϕ j < 0 : ϕ j < −q j2 oder ϕ j > +q j1 → ms j = −aϕ j

(4.40)

mit den Schaltwinkeln q jk und dem Dämpfungsmoment aϕ j gilt. Beide Gleichungen (4.39),(4.40) lassen sich, wie in metro_S4.mdl gezeigt, vektorisieren, so dass sie in (4.37) eingebun-den werden können.Eine MATLAB-Script-Version mit (4.39) ist zusätzlich in [52] abgelegt.

Ergebnisse: Ausgehend von unterschiedlichen Anfangswerten der Pendel werden zunächst diefreien Schwingungen (q = 0) mit (4.39) betrachtet. Wie in Bild 4.43 zu erkennen, synchronisierensich die Schwingungen nach kurzer Einschwingphase. Bekanntes Beispiel ist das Musizieren

Bild 4.43: Synchronisation der Pendelwinkel ϕi

eines großen Orchesters. Auf Selbsterregung basierende Instrumente – Streich-, Blasinstrumente– können bei leichter Verstimmung synchronisiert werden, so dass ein sauberer Ton erzeugt wird.

Durch experimentieren mit den Anfangswerten der Pendel, kann auch erreicht werden, dassGruppen (z. B. 2 und 3 Pendel) synchronisiert werden, sie schwingen phasenverschoben. WeitereErgebnisse werden in Abschn. 5.7.4 präsentiert.

Bei den erzwungenen Schwingungen q = 0 mit einer Erregerkreisfrequenz Ω in der Nachbar-schaft der Selbsterregerfrequenz treten wieder Mitnahme-Effekte auf, d. h. der ganze Verbandschwingt synchron mit Ω . Dies ist in metro_S4.mdl vorbereitet und wird in einer Animationdurch das Modell wie in Bild 4.42 veranschaulicht. Simulation mit (4.40) liefern vergleichbareErgebnisse.

5 http://www.uhrmachermeister.de/technik/graham.shtml6 Kauderer, H.: Nichtlineare Mechanik, Springer, 1958

Page 54: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

214 4 Simulation unter Simulink�

4.7 Modellierung mit Hilfe einer S-Function

Mit Hilfe eines S-Function-Blocks aus der Sublibrary User-Defined Functions können mit S-Functions7 z. B. eigene Programmcodes in den Programmiersprachen:

• MATLAB M-File, Level-1, Level-2 Standard ab Simulink 6 (R14)• C, C++ compiliert als Mex-File (Aufruf: mex File_name.c)• FORTRAN compiliert als Mex-File• ADA compiliert als Mex-File

in ein Simulink-Modell eingebunden werden. Die Arbeitsweise der S-Function ist festgeschrie-ben. Der S-Function-Block genügt der Blockstruktur aus Abschn. 4.1.1. Die Partitionen des Zu-standsvektors xxx nach (4.1) sind der zeitkontinuierliche Vektor xxxc und der zeitdiskrete xxxdk . Blöckeohne Zustände enthalten stattdessen den Leer-Vektor xxx = [ ]. D. h. zeitkontinuierliche, zeitdis-krete und hybride Systeme können bearbeitet werden. Dem Benutzer sind somit kaum Grenzengesetzt. Es lassen sich u. a.

• eigene Blocksets erzeugen – prüfe Möglichkeit des MATLAB Function Blocks• Codes anderer Programmiersprachen einbinden• umfangreiche gleichungsorientierte Modellierung formulieren• Implementierung von Treiber, z. B. zur Ansteuerung von AD-Wandlern einer angeschlosse-nen Hardware

• grafische Animation ausführen, siehe Demo: penddemo.mdl, S-Functions pendan.mfür ein inverses Pendel und lissaj.mdlmit s_lissaj.m, s_lissaj_ani.m in [52]für eine einfachste Animation von LISSAJOUS-Figuren.

S-Functions basieren auf einer speziellen Syntax, wodurch ein strenger Bezug zu den Simulink-Gleichungslösern geschaffen wird. In der Sublibrary User-Defined Functions im Block S-Func-

tion Examples sind Beispiele und Templates aller zulässiger Programmiersprachen enthalten, u. a.die Templates

sfuntmpl.m (Level-1M-File), msfuntmpl.m, msfuntmpl_basic.m (Level-2M-File)sfuntmpl_basic.c, sfuntmp_doc.c (Level-2 C-File)

siehe auch:$MATLABPATH/toolbox/simulink/blocks8, $MATLABPATH/simulink/src$MATLABPATH/toolbox/simulink/simdemos/simfeatures/src

Für eigene Anwendungen sollten diese Templates herangezogen werden, alle Schritte undGrößen sind dokumentiert. Insbesondere enthält sfuntmpl_doc.c ausführliche Erläuterun-gen, die auf Level-2 M-File S-Functions übertragbar sind. Darüber hinaus kann man sich an denDemo-Beispielen unterschiedlichster Probleme gut orientieren.

4.7.1 M-File S-Function

Eine M-File S-Function kann einerseits mit der älteren Level-1 und andererseits mit der aktuellenLevel-2 Syntax erstellt werden. Im Gegensatz zur Level-2 sind in der Level-1 Syntax die Mög-lichkeiten der maßgeschneiderten Blockerstellung gegenüber den Blöcken der Simulink-Libraryeingeschränkt.

7 http://www.mathworks.de/help/pdf_doc/allpdf.html, Simulink-Handbuch8 $MATLABPATH: MATLAB-Pfad

Page 55: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.7 Modellierung mit Hilfe einer S-Function 215

Für jedeMethode existiert in der Sub-Library: User-Defined Functions ein eigener S-FunctionBlock (Name: system bzw. matlablfile). In der zugehörigen Dialog-Box ist der Name der zuerstellenden S-Function sowie zusätzliche Eingangsparameter p j, die durch Komma voneinanderzu trennen sind, einzutragen. Bild 4.44 zeigt die Box für den Level-2 Standard.

Bild 4.44: Level-2 M-File S-Function-Block mit Dialog-Box

Die M-Files bestehen jeweils aus einer Haupt-Function und mehreren Sub-Functions, die ei-nerseits indirekt über ein flag und andererseits direkt über Function-Aufrufe (Callback-Methode)von Simulink aufgerufen werden. Dies reicht von der Initialisierung bis zur Berechnung der Aus-gabedaten.

4.7.1.1 Level-1 Standard

In einer Level-1 M-File S-Function steuert Simulink den Ablauf mit einem flag-Parameter, deran die S-Function übergeben wird. Das flagmarkiert die Simulationsphase, d. h. die S-Functionmuss festgeschriebene Sub-Function für zugeordnete flag-Werte enthalten. In Tabelle 4.3 sindeinige Functions sowie die flag-Werte angegeben.

Tabelle 4.3: Simulations-Phasen im Level-1 Standard

Simulationsphase Function flag

Initialisierung mdlInitializeSizes 0Ermittlung der Ableitungen mdlDerivatives 1Update des zeitdiskreten Zustandes mdlUpdate 2Ermittlung der Ausgabe mdlOutputs 3Ermittlung des nächsten Abtastzustandes mdlGetTimeOfNextVarHit 4Ende des Simulations-Task mdlTerminate 9

Die S-Function sf_carm.m aus [52] verdeutlicht anhand des Zustandsmodells zum 1/4-Fahrzeugmodell ohne/mit Reibung aus Abschn. 4.4.1 den S-Function-Aufbau. Zunächst abernoch einige Einzelheiten. Der Function-Kopf einer Level-1 S-Function hat folgende Struktur:

function [sys,x0,str,ts]=File_name(t,x,u,flag,p1,p2,· · ·)Mit den Eingangsparametern der Zeit t, dem Zustandsvektor x, der Block-Eingangsgröße u,dem Steuerflag flag sowie den optionalen User-Parametern p1, p2,... Die wesentlichen

Page 56: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

216 4 Simulation unter Simulink�

Ausgangswerte sind: der flag-abhängige Vektor sys u. a. der Ableitungs- und Ausgangsgrößen,der Anfangswert x0 und die m×2-Matrix der m Abtastzeitinformation, z. B. [0 0] für einezeitkontinuierliche Abtastung, str ist leer []. Auf die Begriffe in der Initialisierungsfunctionwollen wir kurz eingehen.

Initialisierungsfunction

Der Initialisierungsteil in mdlInitializeSizes, vgl. auch Tabelle 4.4 und Beispiel-Pro-gramm sf_carm.m, enthält neben den Dimensionierungen

sizes.NumcontStates Anzahl der zeitkontinuierlichen Zustandsvariablensizes.Num.DiscStates Anzahl der zeitdiskreten Zustandsvariablensizes.NumOutputs Anzahl der Ausgängesizes.NumInputs Anzahl der Eingänge

weitere Festschreibungen, von denen wir die Begriffe:

• Direct feedhrough• Dynamically sized inputs• Setting sample times and offsets

stichwortartig erläutern wollen.

Direct Feedthrough: Der Ausgang oder die variable Abtastzeit hängen explizit vom Eingang u ab,d. h.

- die Ausgangsfunktion (mdlOutputs, flag=3) sei eine Funktion vom Eingang u. Beispielist die bekannte Messgleichung aus der Regelungstechnik: yyy =CxCxCx +DuDuDu sprungfähiger Sys-teme, vgl. auch Beispiel 4.2.

- bei veränderlicher Abtastung (Aufruf: mdlGetTimeOfNextVarHit, flag=4), wenn inder Berechnung zum nächsten Schritt u eingeht; vgl. Demos: vsfunc.m, dsfunc.m.

Dynamical Sized Inputs: S-Functions können für veränderliche Dimensionen des Eingangsvektorsu geschrieben werden. In diesem Fall ist sizes.NumInputs mit −1 zu vereinbaren.

Setting Sample Times and Offsets: Die Information ist in einer m×2-Matrix bei m Abtastzeiten infestgeschriebener Reihenfolge einzugeben, siehe Template sfuntmpl.m:

ts = [ 0 0, % zeitkontinuierlich, variable Schrittweite0 1, % zeitkontinuierlich, konstante Schrittweite

period offset, % diskrete Abtastzeit mit period>0, offset<period-2 0 ] % variable diskrete Abtastzeit; flag=4!

Wird die Abtastzeit vom treibenden Block übernommen (geerbte Abtastzeit, inherited sampletime), dann ist NumSampleTime = 1 und ts = [-1 0] zu setzen, vgl. Beispiel 4.2.

Die Initialisierungsdaten werden durch den Aufrufsizes = simsizes

sechs Initialisierungsdaten nach Tabelle 4.4sys = simsizes(sizes)

im Vektor sys gespeichert und im flag=0 Schritt an Simulink übergeben.

Page 57: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.7 Modellierung mit Hilfe einer S-Function 217

Tabelle 4.4: Felder der Structure sizes

Feld-Name Beschreibung

sizes.NumcontStates Anzahl der zeitkontinuierlichen Zuständesizes.Num.DiscStates Anzahl der zeitdiskreten Zuständesizes.NumOutputs Anzahl der Ausgängesizes.NumInputs Anzahl der Eingängesizes.DirFeedthrough flag für ’direkten Durchgang’sizes.NumSampleTimes Anzahl der Abtastzeiten

Beispiel einer M-File S-Function und das Simulink-Modell

Das Zustandsmodell des 1/4-Fahrzeuges aus Abschn. 4.4.1 ohne/mit Reibung wollen wir zu-nächst mit Hilfe einer Level-1 M-File S-Function sf_carm.m formulieren. Dabei liegt (4.10)für das System ohne Reibung mit AAA, BBB, CCC nach (4.11), (4.12), (4.13) und der Rampenauffahrtu = xs (4.4) als Eingangsgröße zugrunde. Bei Berücksichtigung der Reibung gilt die Eingangs-matrix BBB mit der Eingangsgröße uuu nach (4.16). CCC ist die Einheitsmatrix. Die stückweise lineareReibkennlinie sei die aus Abschn. 4.4.5.2 (4.21) mit s0 = 1, vgl. Bild 4.24

F =

{FC

1v0

vrel

FC sign(vrel), für

−v0 ≤ vrel ≤ v0 vrel = x3− x4|vrel |> v0

, (4.41)

d. h. wir integrieren über die Unstetigkeit hinweg. Sollte die Integration Probleme bereiten, sokann diese Unstetigkeit auch nach [11] durch Ausrunden der Anstückelpunkte vermieden wer-den.

Alle Parameter, Systemmatrizen und Eingänge können einerseits innerhalb der S-Functionberechnet werden, wobei darauf zu achten ist, dass dies nur einmal während der Simulation er-folgen soll, z. B. in der Initialisierungsphase zu flag=0. Andererseits könnten wir sie vor demSimulationsstart mittels Datenfile in den Workspace schreiben und dann mit dem Eintrag in dieParameter-Dialog Box, vgl. Bild 4.44, in die S-Function einbringen. Der S-Function-Aufruf ent-hält diese Parameterliste nach dem flag:

function [sys,x0,str,ts] = sf_carm(t,x,u,flag,A,B,C,D)

Hier erstellen wir die Systemmatrizen in der Function syspa.m, die wir an die S-Functionsf_carm.m aus [52] anhängen. Über den Eingangsparameter iflag = 0 / 1 sprechen wir dasreibungsfreie / reibungsbehaftete System an. iflag muss in der Parameter-Dialog Box als sym-bolischer oder numerischer Wert stehen; im ersten Fall muss der numerische Wert im Workspacebekannt sein. Die Daten-Function syspa.m entspricht dem M-File sim_v13D.m aus [52].

Da es sich um ein zeitkontinuierliches System handelt, werden nur die Function mdlIniti-alizeSizes, mdlDerivatives, mdlOutputs aufgerufen, die restlichen werden nicht be-nötigt, siehe sf_carm.m in [52].Das zugehörige Simulink-Modell sim_v16m.mdl aus [52] ist in Bild 4.45 wiedergegeben.

4.7.1.2 Level-2 Standard

Der Level-2 Standard ist gegenüber dem Level-1 Standard erweitert und neu strukturiert und mitdem C Mex-File Standard (Level-2) vergleichbar. Die Haupt-Function, z. B.

Page 58: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

218 4 Simulation unter Simulink�

Bild 4.45: Simulink-Modell mit S-Function-Block für die Zustandsgleichungen

function function_name(block) % Function-Kopfsetup(block) % Function-Aufruf

enthält im Kopf den gewünschten Namen sowie die Function setup u. a. zur Initialisierung:

• Anzahl der Ein- und Ausgänge (Ports)• Setzen der Attribute: Dimension, Datentyp, Komplexität und Abtastzeit dieser Ports• Anzahl der Parameter in der Dialog-Box• Auflistung aller benötigten Handles für weitere lokale Functions der S-Function innerhalbdes RegBlockMethod Aufrufs, z. B.allgemein: block.RegBlockMethod(’Methode’,@zugehoerigerHandle)speziell: block.RegBlockMethod(’CheckParameters’,@CheckPrms)Die Sub-Function CheckPrms ist lokale Function zur Überprüfung der übernommenenDialog-Box-Parameter.

Einen Überblick soll die Level-2 M-File S-Function sf_car2m.m zum 1/4-Fahrzeug ohne/mitReibung vermitteln, wobei die Handhabung des Parameters iflag und der Systemgrößen ge-genüber der Level-1 Vorgehensweise unverändert bleibt. Es soll hier die verkürzte Functionsf_car2m.m abgedruckt werden. In [52] sind zusätzliche Optionen nachzulesen:

Level-2 M-File S-Function:

function sf_car2m(block) % Haupt-Functionsetup(block);%%endfunction sf_car2m

function setup(block) % Initialisierungglobal A B C v0 % Param.-Übergabe[A,B,C,v0] = syspa(block.DialogPrm(1).Data); % Systemgrößen

% ---- Setzen der Block-Eigenschaften% Anzahl der Block-Ein- und -Ausgängeblock.NumInputPorts = 1; % ein Eingangblock.NumOutputPorts = 1; % ein Ausgang

% Port-Eigensch. (Datentyp, Komplexität usw.) dynamisch bezogen

Page 59: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.7 Modellierung mit Hilfe einer S-Function 219

block.SetPreCompInpPortInfoToDynamic;block.SetPreCompOutPortInfoToDynamic;

% Portdimension und Eigenschaftblock.InputPort(1).Dimensions = 1; % Dimension, Eing.-Vekt.block.OutputPort(1).Dimensions = size(C,1); % Dimension, Ausg.-Vekt.

% Anzahl der übergebenen Parameter; stehen in der Parameter-Dialogboxblock.NumDialogPrms = 1; % 1*: iflag, Steuergröße

% Abtastzeit und Offset --> hier zeitkontinuierliche Rechnungblock.SampleTimes = [0 0]; % vgl. msfuntmpl.m

% Anzahl der zeitkontinuierlichen Zuständeblock.NumContStates = size(A,1);% ---- Ende Block-Eigenschaften

% Benötigte Routinen in dieser S-Function, lokale Functionsblock.RegBlockMethod(’CheckParameters’,@CheckPrms);block.RegBlockMethod(’InitializeConditions’,@InitializeConditions);block.RegBlockMethod(’Outputs’, @Outputs);block.RegBlockMethod(’Derivatives’, @Derivatives);%%endfunction setup

%% lokale Functions

% Überprüfung des übergebenen Parameters iflagfunction CheckPrms(block)if block.DialogPrm(1).Data ~=0 && block.DialogPrm(1).Data ~=1

error(’Fehler im Steuerparameter iflag: 0 ohne, 1 mit Reibung!’);end%%endfunction CheckPrms

function InitializeConditions(block)global A % Parameterübergabe% Setzen der Anfangswerte der Zustandsgrößenblock.ContStates.Data = zeros(size(A,1),1);%%endfunction InitializeConditions

function Outputs(block)global C % Parameterübergabe% Systemausgang berechnen: y = C*x + D*u, hier: D = 0, so dass: y = C*x%x = block.ContStates.Data;block.OutputPort(1).Data = C * block.ContStates.Data; % = C * x%%endfunction Outputs

% Zustandsableitung: x’: --> x’ = A*x+B*u_gesfunction Derivatives(block)global A B v0 % Parameterübergabe

Page 60: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

220 4 Simulation unter Simulink�

x = block.ContStates.Data; % Zustandsvektoru=block.InputPort(1).Data; % Eingangsgrößeif block.DialogPrm(1).Data == 1 % Steuerung: mit R.

vrel=x(3)-x(4); % Relativgeschw.if abs(vrel) < v0 % Haft- / Gleitreibung

reib=vrel/v0; % Haftreibungelse

reib=sign(vrel); % Gleitreibungendblock.Derivatives.Data = A*x + B*[u; reib]; % System mit Reibung

elseblock.Derivatives.Data = A*x + B*u; % System ohne Reibung

end%%endfunction Derivatives%--------------------------------------------------------------------function [A,B,C,v0] = syspa(iflag) % siehe Programmsammlung.... unvollständig .....

Das zugehörige Simulink-Modell sim_v16_2m.mdl ist in [52] zu finden. In der S-Functionsf_car2m.m aus [52] sind weitere Optionen zum Direct Feedthrough, zum Überschreiben derPorteigenschaften, zur Kontrolle der Parameter sowie zur Erstellung eines TLC (Target LanguageCompiler)-Files eingearbeitet.

Abschließend geben wir noch zwei Beispiele zur Level-2 Version an, die Level-1 Version istin [52] zu finden.

Beispiel 4.2: Parameteränderung in einem Simulink-Block

Eine Sinusschwingung (Sine Wave-Generator) mit der Schwingungsdauer von T =2π/5 s soll während der Simulation alle π Sekunden ihre Amplitude umschalten.D. h. ausgehend von der Amplitude 1 soll nach π Sekunden eine Änderung auf 5nach weiteren π Sekunden wieder auf 1 erfolgen usw. Die Umschaltzeitpunkte sinddurch ein Rechtecksignal (Signal Generator) zu erzeugen. Es liegt also ein Block-Parameterwechsel infolge eines Ausgangswertes eines anderen Blocks vor.

Dieses Problem ist jeweils mit einer Level-1, Level-2 M-File S-Function unter Ver-wendung des Befehls set_param, vgl. help/doc set_param, zu lösen.

Syntax zum set_param Befehlset_param(’meinModell/Block’,’BlockParameter’,’neuerWert’)

Lösung: Das Eingangssignal u – Ausgang des (Signal Generator) Blocks – steuertüber den set_param Befehl die Amplitude des Sine Wave Blocks in der S-Functionsinfunc.m bzw. sinfunc2.m des Modells sim_sinfunc.mdl bzw.sim_sinfunc2.mdl, vgl Bild 4.46 a. Wir geben hier nur die Ausgabe-Functionder Level-2 M-File S-Funktion sinfunc2.m an, die vollständigen Files stehen in[52]:

%% Berechnung und Ausgabefunction Output(block)% -- Amplitude des Signal-Generators abfragenam=str2num(...

Page 61: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.7 Modellierung mit Hilfe einer S-Function 221

get_param(’sim_sinfunc2/Signal Generator’,’Amplitude’));% -- mit Eingang vergleichen, nur sinnvoll für Rechtecksignalif abs(block.InputPort(1).Data - am) < eps(am);

set_param(’sim_sinfunc2/Sine Wave’,’Amplitude’,’5’)else

set_param(’sim_sinfunc2/Sine Wave’,’Amplitude’,’1’)end

Durch die Abfrage (get_parm) der Rechtecksignal-Amplitude ist jede Amplitudezulässig. Die Zeitverläufe der Steuerfunktion (Rechteck) sowie der geschaltete Sinus-Verlauf sind in Bild 4.46 b dargestellt.

a: Simulink-Modell b: Funktionsverläufe

Bild 4.46: Beispiel zur Parameterumschaltung in Funktionsblöcken

Beispiel 4.3: Animation von LISSAJOUS-Figuren unter Simulink

Zur Erzeugung und zur Animation von LISSAJOUS-Figuren

x = R sin(2t + Φ); y = R sin(3t)

in der x, y-Ebene eines kartesischen Koordinatensystems sind zwei separate Level-2M-File S-Function (s_lissaj.m, s_lissaj_ani.m) sowie das zugehörige Simu-

link-Modell lissaj.mdl in [52] angegeben. In s_lissaj wird die obige Glei-chung ausgewertet. Die Zeit t ist der Eingang, am Ausgang liegt der Vektor [x, y]T

an. Die Parameter R, Φ stehen in der Parameter-Dialog-Box. In s_lissaj_ani istdie Animation der Kurve programmiert, wobei die Parameter aus der Dialog-Box derersten S-Function, u. a. R zur Skalierung, übernommen werden.

4.7.2 C Mex-File S-Function

4.7.2.1 S-Function Builder

Der S-Function Builder unterstützt die (automatische) Erstellung von C Mex-File S-Functionssowie die von C Quell-Codes. 1-D und 2-D Signale und Ausgänge sind zulässig. Die Datentypenentsprechen denen von Simulink.

Page 62: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

222 4 Simulation unter Simulink�

Zur Modellierung dient der abgebildete S-Function Builder Block ausder Sublibrary: User-Defined Functions. Mit einem Doppel-Mausklickder linken Taste auf das Block-Icon (oder Klick mit rechter Maustaste→ Open Block) öffnet sich die S-Function Builder Dialog-Box mit dersich die S-Function für den Block erstellen lässt.

Bild 4.47: Builder Dialog-Box

Wie die in Bild 4.47 abgebildete Dialog-Box zeigt, ist sie in Seiten unterteilt, in die die Infor-mationen zur Erstellung der S-Function einzutragen sind. Im Einzelnen sind dies:

• Initialization (Initialisierung): Anzahl der (zeit-) kontinuierlichen und/oder diskreten Zu-stände, die zugehörigen Anfangswerte und Informationen zur Abtastzeit (Sample Time).

• Data Properties (Daten-Eigenschaften): bezüglich der Dimension der Ein- und Ausgänge(Input, Output Ports), der Parameter einschließlich der Datentypen. Die zugehörigen nume-rischen Werte sind anschließend in den oberen Teil (S-function parameters) einzutragen.

• Libraries: Eintrag der benötigten Standard C Header-Files und externer Functions-Files.• Outputs (Ausgänge): C-Code zur Berechnung der Ausgänge y0 (kontinuierlich, diskret),z. B. y0[0]=u0[0] und in Bild 4.47.

• Continuous Derivatives (Ableitungsfunktionen, Dgl.) C Code der Differenzialgleichungen,z. B. dx[0]=xC[0].

• Discrete Update: Aktualisieren der Abtastfolge, z. B. xD[0]=u0[0] – zeitdiskret.• Build Info: Anwahl von Optionen zur Erstellung des S-Function Mex-Files (u. a. compilie-ren) oder Speicherung des C Quell-Codes (Save code only aktivieren). Soll die S-Functionim Beschleunigungs-Mode (accelerated mode) ablaufen, dann ist ein TLC-File zu generie-ren (wird nicht für die Simulink-Beschleunigung benötigt). Zum Compilieren muss ein/derC-Compiler, siehe Abschn. 6.1, installiert sein! Dies geschieht mit

>> mex -setup

Page 63: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

4.7 Modellierung mit Hilfe einer S-Function 223

Die Übersetzung erfolgt mit dem Build(Save)-Button. Sind anschließend Systemparame-ter aus dem Feld S-function parameters zu ändern, dann genügt nach der Änderung eineSpeicherung: Save code only aktivieren und Save(Build)-Button betätigen. Achtung: Dieeingetragenen Parameter müssen übernommen sein. Dies ist der Fall, wenn sie linksbündigstehen.

Wichtig: Die eingeführten und im Builder angezeigten Bezeichnungen, u. a. für die ZuständexC, xD und für die Ableitungen dx sind festgeschrieben. Alle weiteren Vereinbarungen sindselbsterklärend.

Anhand des 1/4-Fahrzeuges ohne/mit approximierter Reibkennlinie aus Abschn. 4.4 mit denum die Reibung erweiterten Zustandsgleichungen (4.9)

x1 = x3x2 = x4x3 = − ( kA(x1− x2)+ dA(x3− x4)+ i f lag F

)/mA, i f lag = 0, 1

x4 =(

kA(x1− x2)+ dA(x3− x4)+ kR(x2− xS)+ i f lag F)/mR

(4.42)

sowie der Reibkennlinie nach (4.41) kann die Erstellung der S-Function mit dem Builder nach-vollzogen und damit experimentiert werden. Hierzu sind die beiden Modelle: sim_v16_Bc undsim_v16_Bc1.mdl in [52] abgelegt. Sie unterscheiden sich in der Handhabung des Steuerpa-rameters iflag für die Modellierung ohne/mit Reibung.

4.7.2.2 Einfache C Mex-File S-Function

Die Programmierung der S-Function in C ist weniger durchsichtig. In der Sublibrary User-De-fined Function sind mit dem Block: S-Function Examples Templates und Demo-Beispiele zu öff-nen. Es empfiehlt sich u. a. an das Template sfuntmpl_basic.c sowie an die zugehörigenDetails aus:

$MATLABPATH\simulink\src\sfuntmpl_doc.czu orientieren.

Wir können zur C Mex-File S-Function nur wenige grundlegende Bemerkungen machen.Bei C Mex-File S-Function werden die Routinen von Simulink direkt aufgerufen; ein flag-Parameter existiert nicht. Dies entspricht der Arbeitsweise der Level-2 M-File S-Function. CMex-File S-Function sind vor dem Start des Simulink-Modells mit dem Aufruf

mex File_name.c

zu compilieren und zu linken. Wegen der höheren Ausführungsgeschwindigkeit eines compilier-ten Programmes gegenüber der Interpretermethode der M-File S-Function, empfiehlt sich dieseVorgehensweise bei rechenintensiven Algorithmen.

Eine wichtige Anwendung von CMex-File S-Function ist der Zugriff auf Hardware (z. B. AD-Wandler), dieses ist in der Programmiersprache C üblicherweise problemlos. Außerdem könnenbereits existierende Hardwaretreiber eingebunden werden.

In Anlehnung an die M-File S-Function sf_carm.m zeigen wir in der Programmsammlung[52] den Quell-Code der C Mex-File S-Function sf_carc.c. Grundlage war das Demopro-gramm stspace.c; es wurde lediglich auf den Eingabe-Check verzichtet. Im Gegensatz zu

Page 64: MATLAB® und Simulink® in der Ingenieurpraxis || Simulation unter Simulink®

224 4 Simulation unter Simulink�

sf_carm.m gehen wir in sf_carc.c für das Modell sim_v16c.mdl davon aus, dass dieSystem-Matrizen AAA, BBB, CCC, DDD über das Datenfile sim_v13D.m in den Workspace geschriebenwerden und somit in der Parameter-Dialog Box des S-Function Blocks aufgeführt sein müssen.