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 -