Inhalt - Daniel Schrammel

Transcription

Inhalt - Daniel Schrammel
Inhalt
8.
Simulink Grundlagen
9.
Simulink Übungen
Daniel Schrammel
- BA Stuttgart -
8. Simulink-Grundlagen
Daniel Schrammel
- BA Stuttgart -
Was ist Simulink ?
•
•
•
8-1
SIMULINK ist Teil der Matlab Programmgruppe zur Simulation und Analyse
von diskreter und kontinuierlicher dynamischer Systeme.
In Simulink werden grafische Modelle erstellt / modelliert / simuliert.
File-extension: *.mdl
Daniel Schrammel
- BA Stuttgart -
Simulink öffnen
•
•
•
•
simulink oder
Start -> Simulink -> Library Browser oder
File -> New -> Model oder
Shortcut in der Toolbar
new model
8-2
Daniel Schrammel
- BA Stuttgart -
Simulink Library Browser
•
Library Browser ist eine Blockbibliothek, um standardisierte oder eigen
definierte Blöcke in einem Simulink Modell verwenden zu können !
Suchfunktion
(ohne Wildcards)
Blockbeschreibung
Block (+Name)
Kategorie
(Block Library)
Gruppe
(Blocksets)
8-3
Daniel Schrammel
- BA Stuttgart -
Simulink Library Browser
•
Kategorie Simulink (Beispiele)
–
–
–
–
–
–
–
–
–
–
•
Continuos (Integration, Ableitung, Signalverzögerung)
Discontinuities (Limitierung / Sättigung)
Discrete (Speicherung, Verzögerung)
Look-Up-Tables (Datenzuordnung)
Math-Operations
Ports & Subsystems (Modellgliederung)
Signal Routing (Goto, From, Datenbusse)
Sinks (Datensenken, Scopes, Terminatoren)
Sources (Parameter, Signalgeneratoren, Uhr)
User-Defined-Functions (S-Function / Einbindung C-Code)
RealTimeWorkshop
– Codegenerierungswerkzeuge
•
Stateflow
– Zustandsautomat
8-4
Daniel Schrammel
- BA Stuttgart -
Modellkonstruktion
•
per Drag & Drop werden Blöcke aus dem Library Browser in das Modell
gezogen
– Alternative: Copy & Paste im Modell vorhandener Blöcke
•
•
•
8-5
jeder Block hat n-Eingänge (linke Seite) und m-Ausgänge (rechte Seite)
(n,m >= 0)
funktionale Verkettung der Blöcke werden über Signalleitungen erreicht, die
entweder mit der Maus gezogen werden oder über
Quellblock markieren -> SHIFT + rechte Maustaste auf Zielblock oder über
Quellblock markieren -> CTRL + linke Maustaste auf Zielblock
Achtung: Tatsturoption funktioniert nur bei 1:1 Beziehung
Daniel Schrammel
- BA Stuttgart -
Modellkonstruktion
•
•
•
platzierte Blöcke können mit Tastatur und / oder Maus verschoben werden,
dabei bleiben Signalleitungen erhalten
SHIFT + Move über Maus verschiebt einen Block und trennt ihn von der
Signalleitung
Blocknamen werden automatisch und eindeutig vergeben
Blocknamen können mittels Klick auf den Namen geändert werden
•
jeder Block ist in seinen Abmessungen über die Maus veränderbar
•
8-6
Daniel Schrammel
- BA Stuttgart -
Blockeigenschaften
•
Mit einem Doppelklick öffnet sich ein Eigenschaftenfenster zur Einstellung
von blockspezifischen Simulationsparametern
– Alternative: rechte Maustaste -> Sim Parameters
– Ausnahme: Scope – Menü und rechte Maustaste auf Darstellung
Eigenschaften-Dialog aufrufen
8-7
Daniel Schrammel
- BA Stuttgart -
Blockeigenschaften
•
Weitere Eigenschaften sind über Kontextmenü (rechte Maustaste) erreichbar
–
–
–
–
Farbgestaltung
Schatten
Rotation
BlockProperties
(BlockNotizen)
– etc.
•
8-8
Blöcke können über STRG+R gedreht werden, um eine lesbare Anordnung zu
gewährleisten !
Daniel Schrammel
- BA Stuttgart -
Signalleitungen
•
Beschriftung von Signalleitungen über
– Doppelklick oder
– Kontextmenü (signal properties) der betreffenden Signalleitung
•
•
Beschriftung hat keinen funktionalen Einfluss, geeignete Benutzung
verbessert aber deutlich die Lesbarkeit !
Signalleitungen können Abzweige (funktional relevant) und Kreuzungen
(keine funktionale Relevanz) enthalten !
Kreuzung
Verzweigung
8-9
Daniel Schrammel
- BA Stuttgart -
Matlab – Simulink - Kopplung
8-10
•
Variablen, die im WorkSpace definiert sind, können in den
Eigenschaftsfenstern der einzelnen Blöcke verwendet werden
•
Modellfehler und –warnungen (z.B. nicht verbundene Ein- und Ausgänge)
werden im Command Window angezeigt
•
Zu jedem Block können Aktions-Callbacks definiert werden !
Daniel Schrammel
- BA Stuttgart -
Matlab – Simulink - Kopplung
•
Zur Modellkonstruktion stehen Matlab-Befehle zur Verfügung, die aber in der
Praxis kaum Relevanz haben !
–
–
–
–
•
8-11
add_line()
add_block()
replace_block()
set_param()
= Blöcke verbinden
= Blöcke hinzufügen
= Blöcke ersetzen
= Modellparameter setzen
Achtung: Bei diesen Befehlen gilt der kürzeste Weg, nicht der übersichtlichste
Weg als Devise !
Daniel Schrammel
- BA Stuttgart -
Modell simulieren
•
•
Ein Modell zu simulieren bedeutet, die Ausgänge anhand der Eingänge unter
Berücksichtigung des Algorithmus zu berechnen
Simulation durch
– sim test.mdl im Command Window
– Play-Button in Simulink
•
8-12
Zeitanzeige (Fortschritt der aktuellen Simulation) unten im Simulinkfenster
Daniel Schrammel
- BA Stuttgart -
Simulationseinstellungen
•
In jedem Modell können und müssen wichtige Simulationsparameter
vorgegeben werden !
–
–
–
–
–
–
Startzeit und Endzeit der Simulation / Berechnung, inf bzw. –1 für unendlich
Simulationsart: feste oder variable Schrittweite
Einschränkungen der Schrittweite
Lösungsalgorithmus (Solver)
Fehlerkategorien
Workspace-Eigenschaften
(Variablen laden, Ergebnisse schreiben)
– etc.
8-13
Daniel Schrammel
- BA Stuttgart -
Eigenschaften der Solver
•
Arbeitsweise:
– über interne Mechanismen (Integration, Beobachtung Ausgang anhand Eingang)
wird die notwendige Schrittweite für ein hinreichend genaues Ergebnis ermittelt
– jeder Solver hat eigene Vor- und Nachteile !
•
Feste Schrittweite:
– discrete
– ode1
– ode5
•
Variable Schrittweite:
– ode45
– ode15s
•
= Abarbeitung von Abtastzeiten
= Euler-Polygonzugverfahren
= Dormand-Price Formel
= sehr gute erste Wahl, dürfte in den meisten
Fällen zu einem guten Ergebnis führen
= Mehrschrittverfahren für steife
Differentialgleichungen
steife Differentialgleichungen:
– stark unterschiedlich große Koeffizienten
– reagieren in kleinsten Intervallen sehr stark
8-14
Daniel Schrammel
- BA Stuttgart -
Simulationsreihenfolge
•
•
•
•
8-15
Ein häufiges Problem von komplexen Modellen ist, „wenn die Katze sich in
den Schwanz beisst“ !
Algebraische Schleifen treten auf, wenn vom Solver keine Startreihenfolge zur
Berechnung des Modells ermittelt werden kann.
In den meisten Fällen, hilft die Verwendung eines „1/z“ Blockes, der einen
festen Initwert hat und als Startblock verwendet werden kann.
Achtung:
„1/z“ bedeutet auch eine Abarbeitung einen Rechenschritt später !
Daniel Schrammel
- BA Stuttgart -
Gruppierung in Subsysteme
•
•
8-16
Große Modelle können mit Hilfe von Subsystemen übersichtlicher gestaltet
und gruppiert werden !
Subsysteme werden aus dem Library Browser wie ein Block gezogen oder
über das Kontextmenü aus bestehenden Blöcken erstellt !
Daniel Schrammel
- BA Stuttgart -
Gruppierung in Subsysteme
•
Subsysteme können auch als Funktionscontainer betrachtet und
wiederverwendet werden !
– Inport
– Outport
•
8-17
= Übergabeparameter, Eingangsgröße
= Rückgabewert, Ausgangsgröße
Subsysteme können auch für eine bedingte Ausführung eingestellt werden !
Daniel Schrammel
- BA Stuttgart -
eigene Bibliotheksblöcke
8-18
•
Es können eigene Blöcke für die Bibliothek erstellt werden, die zur
Modellkonstruktion verwendet werden können !
•
In einem Subsystem werden die benötigten Blöcke platziert - dabei die In- und
Outports sinnvoll benennen !
Daniel Schrammel
- BA Stuttgart -
eigene Bibliotheksblöcke
•
Maske: über das Kontextmenü, muss das Subsystem maskiert werden, um
– Einstellungen im Eigenschaftsfenster aufrufen und vornehmen zu können
– die Darstellung zu beeinflussen
– den neuen Bibliotheksblock zu dokumentieren
•
•
8-19
Drei Fragezeichen weisen auf einen Fehler in den Maskeneinstellungen hin !
Das Subsystem / Modell sollte unter einem geeigneten Namen gespeichert
werden, z.B. Lib_xyz.mdl !
Daniel Schrammel
- BA Stuttgart -
eigene Bibliotheksblöcke
•
Die Datei slblocks.m beinhaltet die Definition des Library Browsers !
– which slblocks liefert den Pfad der Definitionsdatei !
•
8-20
Beim Start des Library Browsers wird in jedem Verzeichnis, welches im
Matlab-Pfad steht, eine Datei slblocks.m gesucht und ausgeführt !
Daniel Schrammel
- BA Stuttgart -
Was gibt es noch ?
•
•
Über die Tasten R, F und V kann der Zoom des Modells eingestellt werden !
Über „Bus Selector“ und „Bus Creator“ können viele einzelne Signalleitungen
zu einem Datenbus gebündelt werden !
•
Terminatoren sind Signalgräber, um Simulink-Warnungen „unconnected line“
zu umgehen !
Zur Beeinflussung bzw. schnellen Prüfung eines Modells während der
Simulationszeit, eignet sich der Block „Manual Switch“.
Durch Doppelklick wird der Signalpfad zur Laufzeit geändert.
•
8-21
Daniel Schrammel
- BA Stuttgart -
Was gibt es noch ?
•
8-22
In den Simulink-Einstellungen kann festgelegt werden, was beim Doppelklick
auf ein Subsystem passiert.
Neues Fenster oder Inhalt im gleichen Fenster öffnen.
Daniel Schrammel
- BA Stuttgart -
9. Übungen Simulink (Rechnerraum)
Daniel Schrammel
- BA Stuttgart -
Simulink kennenlernen
•
•
•
•
•
•
•
9-1
Neues Simulink-Modell erstellen
Wie funktioniert die Suchfunktion im Library-Browser ?
Wie funktioniert SHIFT + Move ?
Was passiert, wenn zwei Blöcken der gleiche Namen geben wird ?
Welche Eigenschaften können bei einem Scope verändert werden und wie
wirken sich diese aus ?
Wie funktionieren die Tasten R, F und V in einem Simulink-Modlel ?
Bauen Sie ein Scope mit 2 Eingängen auf (Mehrfachscope), ein Eingang mit
Namen an der Signalleitung (Label), ein Signal unbenannt. Was ist der
Unterschied in dem Scope ?
Daniel Schrammel
- BA Stuttgart -
Simulink-Übungen
3. Modellieren Sie den vereinfachten radioaktiven Zerfall !
Bestimmen Sie anhand dieses Beispiels die Auswirkungen der einzelnen
Solver und Beeinflussung verschieden gewählter Schrittweiten, in dem Sie die
Eigenschaften verändern und die Ausgaben in einem Scope beobachten !
4. Stellen Sie einen einfachen Summierer über ein enabled und triggered
Subsystem dar ! Als Zählimpuls soll ein Impulsgenerator genutzt werden.
Wie beeinflussen die Einstellungen „States when enabling“ des „enabled
Blocks“ das Verhalten der Funktion ?
Was bewirken die Einstellung „trigger type“ ?
Das enabled Subsystem soll keinen Inport besitzen !
9-2
Daniel Schrammel
- BA Stuttgart -
Simulink-Übungen
5. Erstellen Sie aus einem maskiertem Subsystem einen eigenen
Bibliotheksblock mit folgendem Verhalten und Aussehen !
Aus einem Sinus-Eingang soll folgendes
Ausgangssignal gebildet werden:
E >= 0.5
0 < E < 0.5
-0.5 < E < 0
E < -0.5
A=E
A=K
A = -1 * K
A = Rampe mit Steigung S und Startwert yn-1
E = Eingang, A = Ausgang, K und S sind Konstanten die über den
Blockdialog festgelegt werden sollen !
Die Rampe kann mit einem einfachen Integrator erstell werden !
9-3
Daniel Schrammel
- BA Stuttgart -
1
Simulink-Übungen
6. Bilden Sie folgendes Verhalten in Simulink ab (Sim-Zeit = 10 sek) !
1
Das Zeit-Integral der Fallbeschleunigung (9,81 m/s2) ergibt die aktuelle
Geschwindigkeit eines Körpers.
Durch Reibung findet zu jeder Zeit ein Geschwindigkeitsverlust von 7 % statt.
Das Zeit-Integral der Geschwindigkeit liefert den zurückgelegten Weg.
Solange der zurückgelegte Weg kleiner als 250m ist, soll ein Standard-Sinus
um 3,1 Sekunden verzögert werden, ansonsten um den Faktor 1 ! (Darstellung
mit switch-Konstruktion und Transport-Delay)
Der verzögerte Sinus wird zu jeder Zeit auf den nicht verzögerten Sinus
aufaddiert und mit einem Scope ausgegeben !
9-4
Daniel Schrammel
- BA Stuttgart -