Beruflich Dokumente
Kultur Dokumente
Fortgeschrittene Simulationstechniken an Fallstudien Alternative Systembeschreibungen Aufgaben Anhang Peter Junglas 8. 9. 2011
Inhaltsverzeichnis
bersicht Fortgeschrittene Simulationstechniken an Fallstudien Schwingungsanalyse Aufgabenstellung Fourieranalyse Anwendung im Beispiel Digitaltechnik Grundschaltungen Interaktive Ein- und Ausgabe-Elemente Steuerung eines Frderbands Einsatz klassischer und Fuzzy-Regler Simulation von Regelkreisen Prinzip der Fuzzy-Regelung Fuzzy-Regler zur Positionierung einer Verladebrcke Alternative Systembeschreibungen Bondgraphen Einleitung Grundlegende Elemente Entwicklung von Bondgraphen Ableitung der Zustandsgleichungen Simulation von Bondgraphen System-Dynamics-Diagramme Simulation mit Simile Beispiel Ruber-Beute-Beziehung Beispiel Fertigungsstrae Objektorientierte Darstellungen Objekte in MapleSim Arbeiten mit MapleSim Simulation eines einfachen Fahrzeug-Antriebsstrangs Motormodell als Subsystem Erweiterung der Modelle fr Kupplung und Getriebe Differenzialgetriebe als neuer Typ Systemgrenzen im Modell Aufgaben Aufgabe 1 Aufgabe 2 Aufgabe 3 Aufgabe 4 Aufgabe 5 Aufgabe 6
Aufgabe 7 Aufgabe 8 Aufgabe 9 Aufgabe 10 Aufgabe 11 Aufgabe 12 Aufgabe 13 Aufgabe 14 Aufgabe 15 Aufgabe 16 Aufgabe 17 Aufgabe 18 Aufgabe 19 Aufgabe 20 Aufgabe 21 Aufgabe 22 Anhang Literatur- und Quellenverzeichnis Herleitung der Bewegungsgleichungen der Verladebrcke Matlab-Beispiele schwingungsanalyse.m setcolor.m taste.m Simulink-Beispiele MapleSim-Beispiele Prfungsleistung Themenvorschlge Antriebsregelung fr ein Hybridfahrzeug Steuerung eines Frderbands Lsung der Aufgaben aus Simulationstechnik 2 Regelung eines dreiachsigen SCARA-Roboter Realistische Reibungsmodellierung eines Magnetschwebe-Systems Vertikalschwingungen eines LKWs Modul-Synthesizer mit VCF Triebstrang eines PKWs mit MapleSim Signaturen mit dem MD5-Verfahren Ausbreitung von Infektionskrankheiten Blcke zur graphischen Ein- und Ausgabe Bisher bearbeitete Themen
Schwingungsanalyse
Aufgabenstellung Fourieranalyse Anwendung im Beispiel
Aufgabenstellung
Problem: schwingfhiges System wird durch externe Schwingungen angeregt System schwingt bei Resonanz mit groer Amplitude mit kann Funktion des Systems stren oder gar System selbst zerstren Beispiel Fertigungsmaschine angeregt durch Bodenschwingungen Ursache: Schwingungen benachbarter Maschinen, etwa durch Unwuchten Abhilfe z.B. durch Dmpfung beim Verursacher dazu Analyse des Strsignals ntig Beispiel: Modell
Ergebnis
entspricht Eigenfrequenz des Schwingers 0 = 2 f 50/s Anregung hat zwei offensichtliche Frequenzen ( 1 = 8/s , 2 = 2/s) Frequenzen liegen weit unterhalb der Eigenfrequenz 0 = 50/s!
Fourieranalyse
Fourierreihe: Zerlegung eines periodischen Prozesses mit Schwingungsdauer T in Sinus- und Kosinus-Schwingungen
Fouriertransformation: bei nicht-periodischen Vorgngen Nherung: T sehr gro whlen Grenzwert T Summe wird Integral Frequenzen werden kontinuierlich Koeffizienten c n werden Funktion F()
Diskrete Fouriertransformation: Ausgangspunkt sind N Funktionswerte x n , n = 0, .. N - 1 (in festen Zeitabstnden) Berechnung der diskreten Fouriertransformierten X(k) mit
Rcktransformation
Fast Fourier Transform (FFT) Summen durch geschicktes Zusammenfassen sehr schnell berechenbar klappt am besten, wenn Zahl der Punkte eine Zweierpotenz ist Matlab-Funktionen fft und ifft mit Vektoren x und X X = fft(x) x = ifft(X) Achtung: Indizes in Matlab starten bei 1! Berechnung der Fouriertransformation in Matlab: gegeben sei Funktion f(t), z.B. f = @(t) 2 + sin(2*t) + 0.5*sin(6*t); Zeit-Intervall T und Anzahl der Punkte N (als Zweierpotenz) whlen damit Funktionswerte an diskreten Stellen bestimmen, z.B. T = 100; N = 1024; Delta_t = T/(N-1); t = [0:N-1]*Delta_t; x = f(t);
Verfahren liefert richtige Frequenzanteile nur fr Frequenzen unterhalb der Nyquist-Frequenz f max
Schwingungen hherer Frequenzen von niedrigen nicht unterscheidbar tauchen im Spektrum bei falschen (zu niedrigen) Frequenzen auf
FFT mit Matlab X = fft(x); X ist komplex, hufig nur Betrag interessant (Amplitudenspektrum) Darstellung des Leistungsspektrums nur bis zur zulssigen Maximalfrequenz x-Achse in richtigen Einheiten (z.B. in Hz) Indizes um 1 verschieben (Frequenzen fangen bei 0 an!) Beispiel in Matlab F = abs(X(1:N/2))/N; freq = [0:(N/2)-1]/T; plot(freq, F);
Aufgaben: Aufgabe 1
10
Aufgabe 2 Aufgabe 3
11
Anwendung im Beispiel
Analyse des Spektrums mit Block Power Spektral Density Modell
in Blocksets & Toolboxes/Simulink Extras/Additional Sinks Parameter Sample Time Abstand der Messpunkte T fr Spektralanalyse Analyse bis mindestens f max = 10 Hz T 0.05 andere Parameter hier nur fr Bufferlnge = Zahl der Punkte fr FFT mglichst Zweierpotenz mglichst gro hohe spektrale Auflsung sinnvoller Maximalwert: (Tmax - Tmin)/T also hier 2048 Ergebnis
12
13
zwei Sinusse im Eingang 1 = 2/s, 2 = 8/s offensichtliche Eigenschwingung bei 0 = 50/s genaueres Spektrum mit Matlab-Funktionen erzeugen Exkurs: Strukturen in Matlab Structure = Zusammenfassung von Daten verschiedener Typen in einer Variablen direkte Eingabe des Variablennamens liefert Namen und Typen der Felder der Struktur bei ScopeData
Array der Zeitwerte Array von zwei Strukturen (bei zwei Kurven) Name des erzeugenden Blocks
14
s_in = ScopeData.signals(1).values; s_out = ScopeData.signals(2).values; Ansehen etwa mit plot(t, s_in, t, s_out) Genauere FFT-Analyse des Ergebnisses: Werte der Simulation mit Osci nach Matlab exportieren analysieren mit Matlab-Programm schwingungsanalyse.m Werte aus Struktur holen gleichmige Sample erzeugen FFT berechnen, auf richtige Frequenz beziehen Herauszoomen des interessanten Bereichs Ergebnis
Eingangssignal enthlt schwache Anregungen bei = 50/s, mit Wiederholungen um 2/s versetzt woher? Weitere Analyse des Eingangssignals: starke Sinusse berlagern den schwachen Anteil Idee: durch Hochpassfilter wegschneiden
15
ausgefeilte Theorie der Filter Matlab-Funktion butter in Signal Processing Toolbox gibt Koeffizienten von Zhler- und Nennerpolynom der bertragungsfunktion in Block Transfer Fcn eintragen konkret fr Grenzkreisfrequenz g = 25 1/s omega_g = 25; [B, A] = butter(5, omega_g, high, s) Modell
16
Ergebnis spektral
strende Sinusse sind weggefiltert problematischer Anteil bei 50/s deutlich zu sehen
17
Ergebnis im Zeitbereich
abklingende Schwingungen von 50/s wiederholen sich mit Frequenz 2/s Interpretation periodische Schlge von Rotator bei 2/s regen internes Bauteil zu gedmpften Eigenschwingungen bei 50/s an Aufgaben: Aufgabe 4
18
Digitaltechnik
Grundschaltungen Interaktive Ein- und Ausgabe-Elemente Steuerung eines Frderbands
19
Grundschaltungen
RS-Flipflop: grundlegender Speicherbaustein (vgl. Simulationstechnik 1)
Verhaltenstabelle
S R Qn
!Q n
Memory-Baustein durchbricht algebraische Schleife Nachteil: Verzgerung am Ausgang Modell ohne Verzgerung aus Simulink-Bibliothek
20
21
JK-Flipflop: nderungen nur bei Wechsel am Takteingang bei steigender Taktflanke = bei Wechsel von 0 auf 1 (positiv getriggert) bei fallender Taktflanke = bei Wechsel von 1 auf 0 (negativ getriggert) hier immer negativ getriggert Schaltbild
Besonderheit bei J = K = 1 beim Triggern Wechsel des Ausgangzustands Wahrheitstabelle (nderung nur beim Triggern!)
22
J K Q n Q n+1 !Q n+1 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 1 0 1 0 1 1 0 0 0 1
23
wird nur bei Auslsen des Triggers ausgefhrt Trigger kann auf steigende oder fallende Flanke (oder beides) reagieren Inport hat normalerweise aktuellen (neuen) Wert beim Triggern hat alten Wert als Latch input
Trigger-Eingang immer oben oder unten (bei ungedrehtem Block) wird durch Trigger-Symbol angezeigt Trick zur "normalen" Anzeige des JK-FF-Blocks wird noch einmal ein Subsystem
24
J und K-Eingang auf 1 Ausgang Q springt bei jedem Taktwechsel Frequenz des Takteingangs wird halbiert Ausgang als neuen Takt mehrfache Frequenzteilung
25
manuelle Eingabe des Takts durch Doppelklick auf Schalter Anzeige als Dezimalzahl im Display andauernde Simulation durch fixed step mit sehr kleiner Schrittweite Binr-Dezimalwandler explizit
Anwendung Schieberegister: D-Flipflop getriggerter, einfacher Speicherbaustein bernimmt beim Triggerimpuls Eingangswert
26
Schieberegister bergibt bei Taktimpuls Signal an das nchste Flipflop Wandler zwischen seriellen und parallelen Signalen
27
bei Doppelklick wird eigene Matlab-Funktion taste aufgerufen Test der Taste: Modell testtaste.mdl
28
Problem nderung des Tastendrucks wird von Display nicht bemerkt neuer Wert im Display erst nach Edit/Update Diagram bzw. <Ctrl>-D oder Neuaufbau des Fensters Bild im Oszi ok
Daten im Workspace ok
Zugriff auf Modell-Elemente: Simulink-Blcke haben Vielzahl von Parametern fr Standard-Blockbibliothek im Simulink-Manual beschrieben Wert in Matlab lesen mit wert = get_param(blockname, parameter); Wert setzen mit set_param(blockname, parameter, wert); Beispiel: aktueller Wert der Taste (Constant-Block) get_param(testtaste/Taste, Value) Blockname in eigenen Blcken unterschiedlich bei Einsatz in verschiedenen Modellen
29
mit Standardfunktionen abfragbar gcb liefert Namen des aktuellen Blocks gcs liefert Namen des umgebenden Systems des aktuellen Blocks Achtung: alle Parameter (auch wert) sind Strings! Matlab-Funktion taste.m Funktion gcb liefert Namen des aktuellen Blocks (hier: testtaste/Taste) get_param(blk, Value) besorgt Wert des Constant-Blocks Taste set_param(blk, Value, sw) setzt Wert auf sw Farbige Anzeige ("LED"): zeigt binres Signal (0/1) durch Farbwechsel an Modell testled.mdl
reagiert unmittelbar auf die Taste! Farben knnen als Parameter gesetzt werden
Farbe = [rot, grn, blau], jeweils aus dem Intervall [0, 1] Zeichnen des Kreises geschieht in der Maske durch die Zeichenfunktion patch(sin([0:0.1:2*pi]), cos([0:0.1:2*pi]), [0.0, 0.2, 0.0]) Zeichenfunktion wird gendert durch innen liegenden Block mit S-Funktion
S-Funktion: Beschreibung eines neuen Simulink-Blocks in einer Programmiersprache (Matlab, C, C++, Fortran, Ada) i.f. nur fr Matlab (M-Files) Datei (z.B.) sfun_demo.m definiert Funktion der Form function sfun_demo(block)
30
Funktion sfun_demo beschreibt Verhalten des Blocks vollstndig wird bei einem Simulationsschritt mehrmals aufgerufen enthlt Hilfs-Funktionen fr die einzelnen Schritte Argument block komplizierte Struktur enthlt alle von sfun_demo bentigten Daten sammelt alle in sfun_demo definierten Informationen ber das Blockverhalten MathWorks liefert Templatefunktion mit (MATLABROOT/toolbox/simulink/blocks/msfuntmpl.m) Grundgerst einer S-Funktion: Hauptfunktion sfun_demo(block) (z.B.) ruft nur setup(block) auf Funktion setup(block) legt fest Zahl der Ein- und Ausgnge sowie Dialog-Parameter Eigenschaften der Ein- und Ausgnge Block-Samplezeit Callback-Funktionen fr alle weiteren Schritte wichtige Funktionen
Name
Festlegung von
PostPropagationSetup Gre und Eigenschaften der internen Zustandsvektoren InitializeConditions Outputs Update Derivatives Terminate Anfangswerte der Zustandsvektoren Werte der Ausgangssignale Werte der diskreten Zustnde Werte der Ableitungen der kontinuierlichen Zustnde Aufrumarbeiten am Schluss der Simulation
Einbinden einer S-Funktion: Block Level-2 M-file S Function unter User-Defined Functions Block-Parameter Name der S-Funktion (im M-File) Werte der (optionalen) Parameter, mit Komma hintereinander Ein- oder Ausgnge des Blocksymbols entsprechend der Anzahl in der S-Funktion Darstellung verbessern durch Maske, u.a. Parameter als einzelne Felder Funktionsweise des LED-Blocks: Maske definiert zwei Farben on_color, off_color zeichnet farbigen Kreis als Icon mit
31
patch(sin([0:0.1:2*pi]), cos([0:0.1:2*pi]), off_color) S-Funktion setcolor.m holt die Farben mit get_param von der Maske color_on_s = get_param(sysname, on_color); color_off_s = get_param(sysname, off_color); ndert komplettes Icon-Kommando der Maske abhngig vom Eingangswert set_param(sysname, MaskDisplay, icon); Problem stndiges Setzen des gleichen Wertes fhrt zu Flackern Lsung letzten Wert (an/aus) als Zustand speichern nur bei nderung des Zustands Icon-Kommando neu setzen Funktion setup definiert einen Eingang, keinen Ausgang Funktion DoPostPropSetup definiert einen diskreten Zustand Funktion Update holt Farbwerte aus dem Block prft, ob neu gezeichnet werden muss setzt ggf. Icon-Kommando neu (Parameter MaskDisplay) setzt ggf. Zustand auf neuen Wert Anwendung schieberegisterled.mdl
32
Aufbau der Steuerung mit Flipflops: taktgesteuert Zustnde Ruhe StartL, TransportR, AuslaufR StartR, TransportL, AuslaufL Warn Eingnge LiL, LiR Lichtschranken links/rechts Wert = 1 inaktiv Ausgnge Sperrgitter hoch Motor an (links/rechts)
33
Warnlampe an Zustandsdiagramm
einfache Umsetzung pro Zustand ein D-Flipflop Weiterschalten durch Logik gesteuert Ausgnge durch Kombination der Zustnde Eingangslogik: Wann wird der Zustand aktiv? Beispiel TransportL (StartR aktiv) oder (TransportL aktiv & LichtschrankeL aktiv) fertiges Modell (Download)
34
Anmerkung "richtiger" Schaltungsentwurf verwendet weniger Flipflops kompliziertere Logik Vorteil: "verbotene" Zustnde (etwa Ruhe & Start) unmglich Aufgaben: Aufgabe 6 Aufgabe 7
35
36
x w e u
aktueller Wert der zu regelnden Gre gibt Sollposition der Regelgre vor e=w-x Gre zur Manipulation der Regelstrecke
Verzgerungsglied als Regelstrecke (PT1): reagiert mit Zeitverzgerung T auf nderung der Stellgre Beispiele Temperaturanstieg durch Heizung Mengenanstieg durch Zufluss Systemgleichung
37
Gedmpfter Schwingkreis als Regelstrecke (PT2): Feder-Dmpfer-System mit uerer Anregung Systemgleichung
direkt umsetzbar mit Simulink-Block Transfer Fcn Parameter sind Koeffizienten des Zhler- und Nenner-Polynoms
38
Laufkatze der Masse M k am Seil der Lnge l hngt Last der Masse M l Position der Laufkatze x Winkel der Last Antriebskraft u des Motors Erdbeschleunigung g Systemgleichungen (Herleitung)
39
keine Dmpfung, zweidimensional nicht-lineare Kopplungen Standard-Verfahren klappen schlecht Reaktion auf Sprung der Stellgre (s. bruecke.mdl)
"Arbeitspferd" der Regelungstechnik ausgefeilte Theorie fr lineare Regelstrecken schlecht geeignet fr manche nichtlinearen Systeme (z.B. Verladebrcke) einfacher Beispiel-Regelkreis mit (K p , K i , K d ) = (10, 20, 5)
40
Bibliothek mit Regler-Bausteinen: neu anlegen mit File/New/Library fertige Blcke hineinziehen und Bibliothek abspeichern
Blcke aus regler1 fr neue Modelle verwenden Modell enthlt Verweis (Link) auf Bibliotheksblock Bibliotheks-Blcke knnen markiert werden mit Format/Library Link Display/All
nderung eines Blocks in der Bibliothek: wird automatisch in Modelle bertragen beim nchsten Laden eines Modells bei Edit/Update Diagram Block in der Bibliothek gelscht Modell zeigt Block als "Bad Link"
41
funktioniert nicht mehr nderung eines Bibliothek-Blocks im Modell: Parameter in der Maske sind lokal (modellbezogen) nderung im Modell direkt mglich Werte in der Bibliothek nur Startwerte nderung in der Bibliothek ndert Modelle nicht andere nderungen im Modell nur mglich nach Disable Link alle nderungen bleiben lokal sptere nderungen in Bibliothek werden nicht weitergeleitet wieder mit Bibliothek synchronisieren Men-Eintrag Edit/Link options/Restore link entweder lokale nderungen verwerfen (Use library block) oder lokale nderung in Bibliotek bertragen (Update library) Bezug zur Bibliothek vllig aufheben mit Edit/Link options/Break link Aufgaben: Aufgabe 8
42
43
Fuzzy-Variablen berdecken Wertebereich von x im einfachsten Fall alle Funktionen mit gleicher Breite etwa fr fnf Bereiche
Fuzzifizierung macht aus Wert den Zugehrigkeitsvektor, z.B. x = 1.0 [0, 0, 0.4, 0.6, 0] Inferenz: aus unscharfer Regeldifferenz unscharfe Stellgre ableiten bekommt Fuzzy-Vektor fr jede Einflussgre (Eingang) erzeugt Fuzzy-Vektor fr jede Stellgre (Ausgang) Basis: linguistische Regeln = WENN-DANN-Beziehungen zwischen Eingangs- und Ausgangsgren Vielfalt an Methoden, i.f. nur "SUM-PROD-Verfahren mit Singletons" Beispiel Abstandsteuerung von Pkws: Eingangs- und Ausgangsgren (E/A)
44
Name E1 E2 A
Bedeutung
Fuzzifizierung
einige Beispielregeln WENN E1 klein UND E2 gro DANN A = Vollbremsung WENN E1 gro UND E2 mittel DANN A = Gas bersichtlich als Tabelle
E2 E1
klein
mittel
gro
Berechnung des Ausgangs-Vektors mit SUM-PROD-Verfahren suche in Tabelle zu Ausgangswert alle Paare von Eingangswerten multipliziere jeweils die beiden Eingangswerte eines Paares Ausgangswert = Summe ber die Produkte Beispiel Bremsen A.Bremsen = E1.klein * E2.mittel + E1.mittel * E2.gro konkrete Zahlen mit E = [klein, mittel, gro] E1 = [0.9, 0.2, 0.0] ("Abstand eher klein") E2 = [0.7, 0.3, 0.0] ("Geschwindigkeit eher klein") A.Bremsen = 0.9*0.3 + 0.2*0.0 = 0.27 ("nur wenig bremsen") insgesamt A = [0, 0.27, 0.69, 0.14, 0.0] ("leicht bremsen") Defuzzifizierung: erzeugt aus Fuzzy-Vektor f i scharfen Wert u fr die Stellgre einfachstes Verfahren: Schwerpunktmethode ordne unscharfen Werten f i Werte u i fr die Ausgangsgre zu berechne u durch Gewichtung der u i gem
45
Fuzzy-Vektor sei f i = [0.0, 0.1, 0.3, 0.7, 0.2] scharfer Wert damit u = 16.9 Aufgaben: Aufgabe 9
46
Regelgre (x, ), zweidimensional Sollgre auch zweidimensional (gibt x und vor) Sprungfunktion fr x ("gehe von 0 nach xw") Winkel konstant 0 Linguistische Regeln (vgl. [4]) unscharfe Gren Position x mit 5 Werten ("zu klein", "etwas zu klein", "richtig", "etwas zu gro", "zu gro") Winkel mit 3 Werten ("links", "mitte", "rechts") Motorantrieb u mit 3 Werten ("rck", "null", "vor") Formulierung von Regeln z.B. WENN x zu klein UND links DANN u vor WENN x etwas zu klein UND rechts DANN u vor WENN x etwas zu klein UND links DANN u null Tabellenform der Regeln
x links
zu klein etwas zu klein richtig etwas zu gro zu gro vor null vor vor rck null vor rck rck null rck rck rck
Aufbau des Fuzzy-Reglers: benutzt die Blcke der Reglerbibliothek aus Aufgabe 9
47
zustzliches Vorzeichen, denn Eingang ist e = w - x Fuzzifizierung 5-Kanal-Fuzifizierung fr xd (genaue Positionskontrolle) 3-Kanal-Fuzzifierung fr d (nur Winkel 0 interessant) Breiten wx, wth werden Maskenparameter des Fuzzy-Regler-Blocks Inferenz ein Inferenzregelblock fr einen dreielementigen Ausgabevektor (rck, null, vor) Tabelle als Matrix eintragen (E1 ist theta!): [3 2 1 1 1; 3 3 2 1 1; 3 3 3 2 1] Defuzzifizierung Werte fr rck/null/vor: [-1 0 1] Verstrkungsfaktor Kp als Maskenparameter des Reglers Download Regelverlauf: Werte der Laufkatze
48
Ergebnis enttuschend
auch mit anderen Reglerwerten kaum zu verbessern Ursache Trgheit der Katze zu gro Regler zu langsam Fuzzy-PID-Regler: Fuzzifizierung bisher nur fr Regeldifferenz e selbst (Fuzzy-P-Regler) schnellere/genauere Regler durch Einbeziehung von Ableitung/Integral von e als zustzlicher Eingangsgre dadurch viele Fuzzy-Gren komplizierte Interferenzregeln Erweiterung Neuro-Fuzzy = Parameter werden selbstttig gelernt mit neuronalen Netzwerken Aufgaben: Aufgabe 10
49
Alternative Systembeschreibungen
Bondgraphen System-Dynamics-Diagramme Objektorientierte Darstellungen
50
Bondgraphen
Einleitung Grundlegende Elemente Entwicklung von Bondgraphen Ableitung der Zustandsgleichungen Simulation von Bondgraphen
51
Einleitung
Grundidee: Strukturbilder universell verwendbar alle Signalwege explizit zu detailliert Bauteildarstellungen z.B elektrische oder pneumatische Schaltbilder leicht zu verstehen eingeschrnkter Anwendungsbereich (Bibliotheken) zu unflexibel Abstraktionsstufe dazwischen graphische Darstellung von Energieflssen Energiefluss hufig Produkt zweier "konjugierter" Gren, z.B. P = F v (mechanisch) P = U I (elektrisch) verknpft verschiedene physikalische Bereiche Mechanik (Translation/Rotation) Elektrotechnik Hydraulik/Pneumatik (Thermodynamik, Chemie) Struktur eines Bondgraphen: gerichteter Graph Knoten (Elemente) = Bauteile oder Verknpfungen Kanten (Bonds) = gerichteter Energiefluss
jede Kante beschreibt zwei Gren Effort e Flow f Energiefluss gegeben durch P=ef in konkreten Anwendungsbereichen
52
f Geschwindigkeit v
Richtung des Halbpfeils Richtung des Energieflusses bei positiven Werten fr e und f abhngig von Vorzeichenkonventionen hufig weitgehend flexibel handhabbar ndern der Richtung andere Vorzeichen der zugehrigen e- und f-Werte Kausaler Bondgraph: beschreibt Ursache und Wirkung im System ein Element legt e fest das andere Element legt f fest durch kleine Querstriche gekennzeichnet Querstrich auf der Seite, die f festlegt zwei Mglichkeiten A legt f fest, B legt e fest
53
Grundlegende Elemente
Quellen: beschreiben Wechselwirkung mit der Umgebung zwei Typen S e , legt e fest S f , legt f fest haben genau einen Port feste Kausalitt und (in der Regel) festes Vorzeichen
Werte knnen auch zeitabhngig sein Beispiele fr S e Spannungsquelle, externe Krfte oder Momente Beispiele fr S f Konstantstromquelle, vorgegebene Geschwindigkeit Kapazitt C (Capacity): speichert "potentielle" Energie grundlegende Beziehungen im linearen Fall
mit Ladung Q und Kapazitt C bevorzugte Kausalitt und Vorzeichenkonvention f gegeben, Integrieren e auch nichtlinear mglich
54
mit Funktion c (z.B. Federkennlinie) Trgheit I (Inertia): speichert "kinetische" Energie grundlegende Beziehungen im linearen Fall
Induktivitt
mit Stromstrke i und Induktivitt I bevorzugte Kausalitt e gegeben, Integrieren f ebenfalls nichtlinear mglich Reibung R (Resistor): verbraucht Energie (d.h. wandelt sie in Wrme um) grundlegende Beziehungen im linearen Fall
mit konstantem Wert R Mechanik: R viskoser Dmpfer mit Dmpfung R Elektrotechnik: R Widerstand mit Stromstrke i und Widerstand R keine bevorzugte Kausalitt auch wieder nichtlinear mglich
55
Verknpfungen: Verbindungen zwischen Elementen sammeln oder verteilen Energie verlustlos zwei Typen: 0-Element, 1-Element
1 Bond keine Funktion, weglassen 2 Bonds einfacher Bond 0-Element: grundlegende Beziehung
f1 = f2 + f3
f1 + f2 = f3 Elektrotechnik Parallelschaltung Spannungen gleich Strme addieren sich Mechanik Reihenschaltung von Elementen Krfte gleich Orte (und damit Geschwindigkeiten) addieren sich Kausalitt ein e als Eingang andere es liegen fest zwei fs als Eingang letztes f liegt fest Beispiele
56
Elektrotechnik Reihenschaltung Strme gleich Spannungen addieren sich Mechanik Parallelschaltung von Elementen Orte (und damit Geschwindigkeiten) gleich Krfte addieren sich Kausalitt ein f als Eingang andere fs liegen fest zwei es als Eingang letztes e liegt fest Transformator TF: 2-Port-Element zur verlustlosen Umwandlung von Energie grundlegende Beziehung
Beispiele Hebel Zahnrad-Paar Wechselspannungs-Transformator auch zum Wechsel des Anwendungsbereich, z.B. Mechanik/Translation Mechanik/Rotation (Schubkurbelgetriebe) Kausalitt ein e bzw. f bestimmt das andere daher zwei Mglichkeiten
beschreibt z.B. Kreiseleffekte tritt auch auf bei Wechsel des Anwendungsbereich, z.B. Elektrotechnik Mechanik/Rotation (Elektromotor) Kausalitt
57
58
Vorgehen Reihenschaltung (1-Verknpfung) von U, R 1 und RestA RestA = Parallelschaltung (0-Verknpfung) von C 1 und RestB RestB = Reihenschaltung (1-Verknpfung) von R 2 und RestC RestC = Parallelschaltung von C 2 und L Ergebnis
Systematisches Vorgehen in der Elektrotechnik: 1. Schreibe eine 0-Verknpfung fr jede auftretende Spannung 2. Setze jedes 1-Port-Element (C, I, R, S e , S f ) an eine 1-Verknpfung, die mit den entsprechenden zwei 0-Verknpfungen verbunden wird. 3. Whle Richtungen der Bonds, wobei die Leistung durch die 1-Elemente "durchfliet"
4. Whle eine 0-Verknpfung als "Masse" (Spannung 0). Entferne sie und ihre anhngenden Bonds. 5. Ersetze "durchlaufende" Verknpfungen mit nur zwei Bonds durch einen einfachen Bond
59
am Klemmenpaar AB wird Ausgangsspannung gemessen idealisierte Messung kein Strom zwischen AB 1. Schritt: Spannungen bei A, B, C, D
2. Schritt: 1-Port-Elemente
60
Systematisches Vorgehen in der Mechanik (Translation): 1. Schreibe eine 1-Verknpfung fr jede auftretende Geschwindigkeit 2. Setze jede Masse (I-Element) an ihren 1-Knoten. Setze die anderen 1-Port-Element an eine 0-Verknpfung, die mit den entsprechenden zwei 1-Verknpfungen verbunden wird. 3. Fhre ggf. TF-Elemente zwischen 1-Ports ein. 4. Whle Richtungen der Bonds, wobei die Leistung durch die 1-Elemente "durchfliet". 5. Entferne 1-Verknpfungen mit Geschwindigkeit 0 ("Bezugssystem") und ihre anhngenden Bonds. 6. Vereinfache den Graphen durch Ersetzen "durchlaufender" Verknpfungen mit nur zwei Bonds durch einen einfachen Bond Ersetzen zweier parallel wirkender Krfte durch ihre Summe
61
Aufgaben: Aufgabe 11
62
Element Se Sf 0 1 TF GY C I R e f
Festlegung
einmal f, sonst e einmal e, sonst f einmal e, einmal f zweimal e oder zweimal f bevorzugt e (integrale Kausalitt) bevorzugt f (integrale Kausalitt) egal
bei Simulationsprogramm 20sim automatisch bei Eingabe eines Bondgraphen manuell in folgenden Schritten 1. Whle eine Quelle, lege Kausalitt fest, verfolge ber alle Verbindungen und 2-Port-Elemente. Wiederhole fr alle Quellen. 2. Whle ein C- oder I-Element, gehe vor wie in 1, wiederhole fr alle C und I 3. Whle ggf. ein undefiniertes R, gehe vor wie in 1, wiederhole fr alle freien R, schlielich ggf. fr noch undefinierte Bonds. meistens nur Schritte 1/2 ntig (Standardfall) mgliche Schwierigkeiten Schritt 3 erforderlich C oder I mit differentieller Kausalitt algebraische Beziehungen zwischen Gren vgl. [9, Kap. 5] Beispiel 2-Massen-Schwinger: Ausgangsgraph
63
whle I rechts unten, legt alle Bonds an 1 fest, legt 0 fest, legt 1 darber fest, fertig
Zustandsgleichungen im Standardfall: alle Bonds durchnummerieren Gren e 1 , f 1 , e 2 , f 2 , ... Quellen-Elemente liefern Eingangsgren u i C- und I-Elemente liefern Zustandsgren durch Integration bei C Zustandsgre q mit
zusammengefasst zu Zustandsvektor x Relationen der den Zustandsgren konjugierten Gren aufschreiben (Koenergie-Variablen) bei C zugehriges e bei I zugehriges f Gleichungen fr Ableitungen der Zustandsgren Rckverfolgen der kausalen Beziehungen solange, bis nur noch Zustands- und Koenergiegren berbleiben schlielich Koenergie-Beziehungen einsetzen liefert Zustandsgleichung in der Form
64
65
66
Verbindungen hinzufgen immer Element Bond, Bond Element Tipp: Linien auerhalb der Elemente fhren ggf. dnne Verbindungslinien unsichtbar machen alles markieren Palettenfarbe ("Drawing outline") auf wei setzen Parameter eingeben: Element anklicken Parameter erscheinen im Inspector Werte von I, R, C jeweils 1 (ist schon voreingestellt) Frequenz bei Se von 1 Hz umstellen auf = 1 1/s, also freqHz = 1/(2*pi) Speichern nicht vergessen Simulation: Ziel: Ortskurven der Massen, d.h. state-Variable (q) der beiden I-Elemente dazu entsprechende Dq-Elemente einfgen und direkt mit I verbinden Messpunkte (Probes) an den Signalausgngen anbringen Probes umnennen zu m1/x bzw. m2/x
67
unter Settings Simulationszeit auf t f = 20 setzen bei Plots Show Window deselektieren, um Standardfenster zu unterdrcken mit -- Add Window -- neues Plotfenster beliebigen Namens (z. B. Plots) definieren Plot definieren mit Klick auf Eintrag Empty bei Primary Y-axis die Variable m1: x auswhlen mit Add Variable die Variable m2: x hinzufgen Simulation starten mit File/Simulate...
68
Aufgabe 13 Aufgabe 14
69
System-Dynamics-Diagramme
Simulation mit MapleSim Beispiel Ruber-Beute-Beziehung Beispiel Fertigungsstrae
70
System-Dynamics-Bibliothek SystemDynamics.mo fr MapleSim: angelehnt an SystemDynamics 2.0 von Cellier [14] Design gendert (fr Oven etc.), stark vereinfacht und an MapleSim angepasst
71
Einbinden in MapleSim File/Import Modelica... Import Modelica models SystemDynamics.mo auswhlen beliebiges Verzeichnis fr SystemDynamics.msimlib auswhlen erscheint im Reiter Libraries Grundaufbau Bibliotheken Reservoirs, Flows und Converters fr jede Gleichung extra Block ntig hufig verwendete Gleichungen vordefiniert Erstellen neuer Blcke mit Modelica sehr einfach Einfaches Wachstumsmodell: einzige Zustandsgre Bevlkerungsgre Wachstum (Zustrom) durch "Ventilgre" Geburten Ratengre, d.h. Anzahl/Zeit wird beeinflusst durch feste Geburtenrate und Wert der Bevlkerungsgre Diagramm
Gleichung Geburten = Geburtenrate * Bevlkerungsgre Aufbau des Modells: Bausteine auswhlen und im Modellfenster hinzufgen aus Reservoirs: Stock, CloudSource aus Flows: Mult2Flow (y = u1*u2) aus Converters: ConstantConverter (y = k) Blcke verbinden Verbesserung der Optik: Flusslinien dicker darstellen (mit Drawing linestyle)
Eingabe der Parameter (im Inspector nach Klick auf entsprechendes Element) Anfangswert der Bevlkerungsgre (Stock S1): m0 = 10 Geburtenrate (ConstantConverter CC1): constValue = 0.03 Simulationslauf in MapleSim:
72
unter Settings Stopzeit t f = 100 eingeben Ausgabegren definieren Messpunkt (Probe) an Ausgang des Stocks Probe umnennen zu Bevlkerung.N
73
Beispiel Ruber-Beute-Beziehung
Modellierung von Ruber- und Beute-Populationen Zustandsgren fr Anzahl Ruber und Anzahl Beute Zu- und Abflsse jeweils Geburten und Tode Flsse zunchst wie bei einfachem Wachstumsmodell konstante Geburten- und Sterberaten Zahl der Geburten bzw. Tode proportional zu Rate * Populationsgre
Wechselwirkung der Arten Fnge = Anzahl der geschlagenen Beutetiere abhngig von Zahl der Ruber und Beutetiere und einer Fangquote vergrert direkt die Todeszahl der Beutetiere verringert die Todeszahl der Ruber Bedarf = Zahl der Beutetiere (pro Zeit), die ein Ruber zum berleben braucht Beziehungen fr die Zwischengren Geburten_Beute = Geburtenrate_Beute*Beute Tode_Beute = Sterberate_Beute*Beute + Fnge Geburten_Ruber = Geburtenrate_Ruber*Ruber Tode_Ruber = Sterberate_Ruber*Ruber - Fnge/Bedarf Fnge = Fangquote*Ruber*Beute Gesamtmodell damit
74
Simulation des Modells: besondere Blcke Fnge: Mult3Converter (y = u1*u2*u3) Tode Beute: Mult2AddFlow (y = u1*u2 + u3) Tode Ruber: Mult2SubDiv2Flow (y = u1*u2 - u3/u4) Festlegung der Parameter Geburtenrate Beute = 0.2 Geburtenrate Ruber = 0.1 Sterberate Beute = 0.1 Sterberate Ruber = 0.2 Fangquote = 0.01 Bedarf = 2 Anfangswerte Beute = 300 Ruber = 10 Simulationsparameter Endzeit = 300 Messpunkte bei Stocks von Ruber und Beute fertiges MapleSim-Modell Ergebnis
75
Problem Zahl der Fnge pro Ruber ist proportional zur Zahl der Beutetiere kann beliebig gro werden sollte begrenzt werden dazu als Zwischenvariable einfhren
Funktionen in Form von Graphen: Sttigungskurve qualitativ definiert als lineare Interpolation von Sttzpunkten
76
ins Modell eingefhrt mit Block Mult2GraphConverter multipliziert Eingnge und wendet Interpolations-Funktion auf Ergebnis an Werte kommen aus faengeProRaeuber.csv Datei in MapleSim bekannt machen mit Project/Attachments/Data Sets/Attach File Block ist wegen Bug in MapleSim bisher nicht in SystemDynamics-Bibliothek enthalten mit Copy und Paste aus fertigem Modell entnehmen
77
bei 3000 Beutetieren wird die Zahl der Beutetiere negativ! Ursache Zahl der Fnge wird grer als Zahl der Beutetiere Abhilfe Zahl der Fnge auf Zahl der Beutetiere begrenzen Fnge = MIN(FngeHyp, Beute) verwendet Block Min2Converter Fertiges Modell: MapleSim-Modell
78
Beutetiere und Ruber sterben (fast) aus aber: bei Settings die engine Mark I einstellen ergibt
Fazit: Modell ist numerisch instabil, Ergebnisse fragwrdig! zugrunde liegendes Problem: System hat (fr einige Parameterwerte) chaotisches Verhalten Aufgaben: Aufgabe 15
79
Beispiel Fertigungsstrae
Modell (vgl. [7, p. 351ff]):
Anlieferung von 2 Einheiten Rohmaterial pro Zeiteinheit landen im Eingangslager, Anfangsbestand = 7 Weg 2 schafft 2 Teile pro Zeit Maschine 1 bearbeitet 4 Teile auf einmal, braucht 2 Zeiteinheiten Band 12 bentigt 2 Zeiteinheiten fr den Transport Zwischenlager als Puffer, am Anfang leer Weg 5 schafft 2 Teile pro Zeit Maschine 2 bearbeitet 2 Teile auf einmal, braucht 1 Zeiteinheit Endlager sammelt fertige Produkte, anfangs leer Ziele: Endlager wchst nach Verzgerung um 2 Teile pro Zeiteinheit Zwischenlager mglichst klein gleichmiger Strom von 2 Teilen pro Zeiteinheit Frderband (Conveyor): in Stella eingefhrt als spezielles Speicherelement hier in MapleSim nachgebaut bernimmt Eingang gibt ihn nach Laufzeit (Transit time) an den Ausgang Beispiel rein = 5 (pro Zeiteinheit) Transit time = 3 raus: Eingang, um Transit time verzgert
Ergebnis
80
Achtung Simulation jetzt getaktet mit t S = 1 1. Schritt bei 0.99 dazu auch diskreten Speicher StockD Fertigungssttte (Oven): weiteres Speicherelement in Stella bzw. Nachbau in Simile Backblechmodell: Blech fllen, Backen, Ausladen Fllen Werte vom Eingang holen, bis Kapazitt (Capacity) erreicht ist maxin gibt Maximalwert an tatschlicher Eingangsfluss so, dass Kapazitt und Vorrat im Eingangslager nicht berschritten werden Ausgangsfluss = 0 Fertigen Verarbeitungszeit (Cook time) wird abgewartet Eingangsfluss = 0 Ausgangsfluss am Ende der Cook time = Kapazitt Beispiel mit maxin = 2 Capacity = 3 Cook time = 2
81
Ergebnis
82
durchschnittlicher Durchlauf: 1.5 Teile pro Zeiteinheit alle Einzelwerte erlauben aber 2 Teile pro Zeiteinheit! Ursache Verhalten bei Maschine 1
Weg 2 transportiert immer hchstens 2 kann whrend der Verarbeitungszeit nichts liefern beim Fllen werden dann vier Teile bentigt, aber nur zwei geliefert Lsung: Weg 2 muss 4 Teile pro Zeiteinheit transportieren knnen
83
84
85
Objekte in MapleSim
Zwei Arten von Zustandsgren: Flussvariable f sind Flsse (Zeitableitung) einer erhaltenen Gre addieren sich an Verbindungsknoten zu 0 (bei Richtungswahl "alle in die Knoten") in MapleSim "Through-Variable" Potentialvariable p haben an Verbindungsknoten einen gemeinsamen Wert in MapleSim "Across-Variable" hufig ist Produkt die bertragene Leistung P=fp Beispiel Mechanik f = Kraft (= Zeitableitung des Impulses) p = Geschwindigkeit anderes herum als bei Bondgraphen! alternativ wird auch p = Ort verwendet Beispiel Hydraulik f = Volumenstrom p = Druck zustzlich ("leistungslose") Signale zur Steuerung Grundtypen von Bauteilen: physikalisches Element hat beliebig viele Anschlsse (Multipol), jeweils mit f- und p-Variable stellt Beziehungen her zwischen f- und p-Gren kann zustzlich Signalanschlsse haben mechanische Beispiele: Masse, Feder, Dmpfer, Einspannung, Hebel Signalglied berechnet beliebige Ausgangssignale aus Eingangssignalen entspricht Simulink-Block Kopplung zwischen Signalen und Fluss-/Potentialgren Sensor wandelt Gren an einem Knoten in Signalgren um Krafteinleitung wandelt Signalgre in Kraft um Typen im berblick
86
Kausalitt: Festlegung, welche Gre woraus berechnet wird ergibt sich hier erst im Kontext des Gesamtmodells physikalische Elemente und Verbindungen definieren Gleichungen (x = y), keine Zuweisungen (x := y) Modell wird mathematisch durch implizite Gleichungen (DAEs) realisiert und mit DAE-Solver gelst Vielzahl an (hufig trivialen) Gleichungen zunchst algebraisch vereinfachen
87
Modell in MapleSim
Modell-Aufbau: Objekte holen gewnschte Objekte aus Bibliothek (links) ins Modellfenster ziehen Modell verwendet Objekte aus 1-D Mechanical/Translational/Common und Signal Blocks/Sources/Real Objekte anpassen durch Verschieben positionieren Einspannung drehen mit Men <rechte Maustaste>/Rotate Counterclockwise Objekte verbinden Anschlusspunkte gekennzeichnet als grne Kstchen (mechanische Anschlsse) oder blaue Pfeile (Signalanschlsse) Maus ber Verbindungspunkt wird mit grnem Kreis markiert Mausklick darauf Beginn der Leitung Mausklick auf zweiten Anschluss Ende der Leitung Erzeugen von geknickten Leitungen durch Klick an den Zwischenstellen Anpassen der Parameter: Klick auf Objekt Parameter werden im Inspector-Fenster (rechts) angezeigt
88
Werte fr Massen (m) und Feder/Dmpfer (c, d) auf 1 setzen periodische uere Kraft (Sine Source) soll sin(3t) sein Wert des Parameters f auf 3 setzen Einheit von f von Hz auf rad/s ndern Parameter bezeichnet statt f Simulationsparameter durch Klick auf die Modellflche Endzeit t f auf 40 Zahl der Plotpunkte plot points auf 800 compiler auf false MapleSim-Modell zum Download Auswahl von Ausgabewerten: Hinzufgen von Mess-Sonden ("Probes") definiert anzuzeigende Gren auf Probe-Werkzeug klicken auf gewnschte Signalleitung klicken Probe-Symbol an gewnschte Stelle ziehen und durch weiteren Klick fixieren Konfigurieren der Mess-Sonden Probe-Symbol anklicken im Inspector-Fenster Name ndern (F, m1, m2) gewnschte Ausgabegren auswhlen (Real bzw. Length) und ihre Bezeichnungen anpassen (F:ext, m1:s und m2:s) Starten der Simulation mit File/Simulate oder Klick auf das Start-Symbol Konfiguration der Ausgabeplots: Standardeinstellung zeigt jeden Wert in eigenem Achsensystem zur Darstellung der drei gewnschten Werte in einem Achsensystem im Plots-Panel (rechts) die Standard-Plots ausschalten durch Deselektion von Show Window bei Auswahlbox (Default Plot Window) Menpunkt Add Window anwhlen und Namen eingeben auf Feld Empty klicken weitere Parameter werden angezeigt bei Primary Y-axis Variable F:ext auswhlen bei Secondary Y-axis mit Add Variable Variablen m1:s und m2:s hinzufgen Starten der Simulation erzeugt gewnschten Plot zur Nachbearbeitung
89
Plot m2:s durch Klick auf die Kurve auswhlen Farbe ndern mit Color/Blue Ergebnis
90
Grundaufbau wie in [11, Abb. 3.3], Parameterwerte nach [1, Kap. D.2] Objekte berwiegend aus Bibliothek 1-D Mechanical/Rotational Beschriftungen mit Text-Werkzeug Bestandteile im einzelnen: Motor einfach konstantes Moment von 100 Nm Schwungmasse J m = 0.6 kg m 2 Anfangsdrehzahl von J m = 800 Upm (Bug in MapleSim4.5: umrechnen in rad/s !) Kupplung rotatorische Reibstelle mit Haft- und Gleitreibung Gleitreibungsmoment M g = 280 Nm, Losreimoment M h = 300 Nm MapleSim-Block verwendet andere Parameter, s.u. Getriebe Trgheitsmoment J g = 0.2 kg m 2 , Anfangsdrehzahl 0 = 0 feste bersetzung i = 2.5 ( 2. Gang) wie blich i = (Antrieb)/(Abtrieb) Gear-Element in MapleSim: r = (flange a )/(flange b ) flange a ist der dunklere Anschluss Antriebswelle (Kardanwelle) Steife 10000 Nm Dmpfung 1 Nms Differentialgetriebe Trgheitsmoment J d = 0.05 kg m 2 , Anfangsdrehzahl 0 = 0
91
bersetzung 3.27 addiert hier einfach die Radmomente keinerlei Radausgleich Seitenwellen Steife 7500 Nm keine Dmpfung Rder grob vereinfacht als starr bersetzung von rotatorischer auf translatorische Bewegung bersetzungsverhltnis = Rollradius 0.3 m wegen v=r Fahrzeugmasse Masse, die sich linear mit v bewegt Angriffspunkt fr externe Krfte (Luftwiderstand, Hangabtrieb) m F = 1200 kg, v 0 = 0 Kupplung in MapleSim: Eingang f in zwischen 0 und 1, skalierbar mit Parameter fn max Kennlinie () fr Reibungskoeffizienten als Funktion der Relativ-Winkelgeschwindigkeit Parameter pos enthlt Paare [, ()] pos = [0, 0.5] fr konstantes = 0.5 Geometriefaktor c geo bercksichtigt Plattengeometrie Gleitreibungsmoment damit M g = c geo () fn max f in Haftreibungsmoment mit Parameter peak M h = peak c geo (0) fn max f in fr Beispielwerte am einfachsten peak = M h / M g = 300/280 c geo = 2 M g = 560 Ergebnisse der Simulation: Solver-Engine auf Mark I umstellen (Bug in MapleSim 4.5) betrachten Motordrehzahl (bei J m ) Geschwindigkeit (bei Fahrzeugmasse)
92
Analyse konstantes Drehmoment lineare Zunahme von Drehzahl und Geschwindigkeit fr grere Zeiten vllig unrealistisch berlagerte Schwingungen des Triebstrangs Ausschnittsvergrerung Ausschnitt mit Skalierungs- und Verschiebewerkzeug whlen genauer mit Men Axes/Properties...
93
zunchst gleitet die Kupplung haftet ab t > 0.19 s direkt sichtbar mit Kupplung-Ergebnisgre Zustand der Reibstelle
94
Werte stehen als ASCII-Daten in gaspedal_3stufen.csv Motormoment abhngig von Drehzahl und Gaspedalstellung modelliert als Kennlinienschar
Werte stammen - wie alle Werte des Triebstrangs - aus [1] stehen als ASCII-Tabelle in in motorkennfeld.csv
95
Erstellen des Modells: Constant Torque-Block durch Torque-Block ersetzen weitere Blcke und Verkabelung wie im Bild
Tabellendaten zum Modell hinzufgen mit Attach File aus dem Kontextmen von Projects/Attachments/Data Sets Bei Motorkennfeld (2D Lookup Table) und Gaspedal (Time Lookup Table) entsprechenden Datensatz bei Parameter data auswhlen bei Gaspedal smoothness auf linare Interpolation setzen Gesamtmodell triebstrang2a Erzeugen des Motorsubmodells: Motorblcke markieren (Motormoment, Jm, Drehzahl, Motorkennfeld) Edit/Create Subsystem auswhlen und Namen ("Motor") angeben Submodell mit Doppelklick ffnen und Anschlsse verschieben (Tipp: dazu zwischendurch beim grid options tool die Option Snap to Connector deaktivieren)
Darstellung Icon-Werkzeug anklicken Fill-Werkzeug aktivieren, Bitmap motor.bmp laden und Image aktivieren Submodell in der Arbeitsflche entsprechend fllen Parameter Parameters-Werkzeug anklicken 2 Parameter eintragen bei Motor subsystem default settings
96
im Motordiagramm Trgheit auswhlen, Parameter J auf Jm setzen, Initial Conditions: 0 auf om0 zurck ins Gesamtmodell durch Klick auf Main alle Gren nachtrglich nderbar nach Doppelklick auf Motor Gesamtmodell triebstrang2.msim: enthlt Icon fr Motor-Makro
Motorparameter im Inspector-Fenster
97
Geschwindigkeit steigt mit Gas am Anfang starkes Ruckeln bei Vollgas Sttigung erreicht Geschwindigkeit sinkt langsam bei Gaswegnahme Anzeigefenster fr Motormoment/Motordrehzahl
fester Gang Drehzahl nahezu proportional Fahrzeuggeschwindigkeit Motormoment steigt bei sprunghafter Gaszufuhr sprunghaft kein Gas Motormoment sackt sehr schnell wird schlielich negativ (Bremsmoment)
98
Icon kupplung.bmp Parameter Gleitreibungsmoment Mg = 280 Nm Haftreibungsmoment Mh = 300 Nm Parameter in Clutch-Block eintragen Peak = Mh/Mg cgeo = 0.002 Mg fnmax = 1000 Schaltgetriebe: Eingang fr den Gang hat Werte -1 (Rckwrtsgang), 0 (Leerlauf), 1, 2, 3, 4, 5 zugehrige bersetzungen: -4.15, 0, 4.15, 2.52, 1.69, 1.24, 1 Tabelle in schaltgetriebe.csv Gesamttrgheit des Getriebes ndert sich durch die bersetzung antriebs- und abtriebsseitige Trgheiten einbauen Gear mit Eingang fr die bersetzung: neuer Block
99
beschrieben durch
Vorzeichenkonvention beachten! erstellen mit View/Create Attachment.../Browse/Component Templates/AlgebraicEquation.mw Maple-Sheet zur Definition ffnet sich Component Name: GearWithParameterInput Gleichungen (Component Equations) eq := [phia(t) = i(t)*phib(t), Ma(t) = -Mb(t)/i(t)] params := [] initialconditions := [] sys := DynamicSystems[AlgEquation](eq, inputvariable = [Ma(t),phib(t),i(t)], outputvariable = [Mb(t),phia(t)]) Anschlsse (Component Ports) Clear all Ports 3x Add Ports Port von unten nach oben mitte verschieben Anschluss links Port Type: Rotational Flange Angle: phia(t) Torque: Ma(t) Anschluss rechts Port Type: Rotational Flange Angle: phib(t) Torque: Mb(t) Anschluss oben Port Type: Signal Input Value: i(t) Generate MapleSim Block erscheint bei Project/Definitions/Components Subsystem fr Schaltgetriebe: Aufbau
100
Icon schaltgetriebe.bmp Parameter Getriebetrgheit Antrieb Jgi = 0.1 kg m 2 Getriebetrgheit Abtrieb Jgo = 0.1 kg m 2 Gesamtsystem triebstrang3
Ergebnisse einiger Simulationslufe: Auskuppeln bei Vollgas im 2. Gang Werte in gaspedal_3stufen.csv, kupplung_auskuppeln.csv
101
Motormoment bricht ein Drehzahl steigt auf Maximalwert Geschwindigkeit bleibt konstant (kein Luftwiderstand) Sanft einkuppeln und Durchstarten im 1. Gang Werte in gaspedal_anfahren.csv, kupplung_anfahren.csv
102
weicher Anstieg der Geschwindigkeit Triebstrang-Schwingungen bei Maximaldrehzahl (v = 57 km/h im 1. Gang!) dasselbe im 3. Gang
103
starkes Ruckeln beim Anfahren Endgeschwindigkeit bei 140 km/h Aufgaben: Aufgabe 20
104
ideales kinematisches Modell Momente auf beiden Abtriebswellen gleich Antriebsmoment = Summe der Abtriebsmomente Antriebdrehzahl = Mittelwert beider Abtriebsdrehzahlen
105
Kinematisches Differenzial als neuer Typ: Maple-Sheet ffnen mit View/Create Attachment.../Custom Component Component Name: Differential Gleichungen (beachte: Anschlussvariable ist , nicht ) eq := [omi(t) = diff(phii(t), t), oml(t) = diff(phil(t), t), omr(t) = diff(phir(t), t), 2*omi(t) = oml(t)+omr(t), Mr(t) = Ml(t), Mi(t) = -2*Ml(t)] params := [] initialconditions := [] sys := DynamicSystems[DiffEquation](eq, inputvariable = [Mi(t), phir(t), phil(t)], outputvariable = [Mr(t), Ml(t), phii(t)]) 3 Anschlsse: 1 links, 2 rechts Port Type: Rotational Flange Angle: phii(t), phil(t), phir(t) Torque: Mi(t), Ml(t), Mr(t) abschlieen mit Generate MapleSim Differenzialgetriebe mit Trgheiten und bersetzung: Subsystem aufbauen
Icon differenzial.bmp Parameter: Trgheit im Antrieb Ji = 0.04 Trgheit im Abtrieb Jo = 0.05 (auf beiden Seiten gleich) bersetzung i = 3.27 Parameter im Subsystem eintragen Gesamtmodell triebstrang4
106
Testlufe: Gasgeben in drei Stufen im 2. Gang und Auskuppeln bei Vollgas Momente und Drehzahlen im Differenzialgetriebe
107
Aufgaben:
108
Aufgabe 21
109
Systemgrenzen im Modell
Wechselwirkungen mit der Umgebung: Hangabtriebskraft F H = - m g sin() Straenneigung als externe Gre Luftwiderstand F W = - 0.5 c W A v |v| quadratisch in v, aber Richtung ist v entgegengesetzt greifen beide an der Masse an Karosserie als Subsystem: Konstanten incl. Vorzeichen in Gain-Blcke Modell
Icon karosserie.bmp Anschlsse translatorischer Anschluss zum Triebstrang Signaleingang fr Straenneigung Parameter Fahrzeugmasse m = 1200 kg c W -Wert cW = 0.36 angestrmte Flche A = 2 m 2 Dichte der Luft rho = 1.293 kg/m 3 Gesamtmodell triebstrang5
110
Geschwindigkeit nimmt jetzt ab Motorverhalten identisch zu Fall ohne Luftwiderstand - klar: der Motor ist abgekuppelt Sanft anfahren im 2. Gang bei 2 Straenneigung nahezu identisch zu vorher
111
112
113
114
115
Aufgaben
Aufgabe 1 Aufgabe 2 Aufgabe 3 Aufgabe 4 Aufgabe 5 Aufgabe 6 Aufgabe 7 Aufgabe 8 Aufgabe 9 Aufgabe 10 Aufgabe 11 Aufgabe 12 Aufgabe 13 Aufgabe 14 Aufgabe 15 Aufgabe 16 Aufgabe 17 Aufgabe 18 Aufgabe 19 Aufgabe 20 Aufgabe 21 Aufgabe 22
116
Aufgabe 1
Die Fourierreihe der Sgezahnfunktion
berprfen Sie dies mit einem kleinen Simulink-Modell, das die ersten 10 Schwingungen addiert.
117
Aufgabe 2
Benutzen Sie die Matlabfunktion quadl zur Berechnung der ersten zehn Fourierkoeffizienten (a i , b i ) der Rechteckfunktion
berprfen Sie das Ergebnis, indem Sie die 10 Schwingungen in Matlab explizit addieren und plotten.
118
Aufgabe 3
1. Skizzieren Sie mit Matlab die Funktion
und bestimmen Sie ihr Leistungsspektrum. Whlen Sie die Zeitauflsung so gro, dass Frequenzen bis zu 6 Hz aufgelst werden knnen. 2. Addieren Sie Rauschen der Amplitude 2.5 mit Hilfe der Funktion rand. Vergleichen Sie die Ergebnisse mit a. 3. Experimentieren Sie mit Werten fr T und N. ndern Sie insbesondere die Zeitauflsung so, dass die Grenzfrequenz nur noch 3 Hz betrgt und interpretieren Sie das Ergebnis.
119
Aufgabe 4
Konstruieren Sie einen Simulink-Block, der die Erregerfunktion des Beispiels (schwingproblem.mdl) mglichst gut nachbildet.
120
Aufgabe 5
Nachteil des vorgestellten Zhlers ist, dass die Flipflops ihren Takt nacheinander (asynchron) bekommen, so dass sich Schaltungslaufzeiten addieren. Beim synchronen Zhler bekommen alle Flipflops denselben Takt, mit Hilfe von Gattern wird festgelegt, wann sie weiterschalten. 1. Erstellen Sie ein Modell eines synchronen 4-Bit-Vorwrtszhlers. 2. Erstellen Sie ein Modell eines synchronen 4-Bit-Rckwrtszhlers. 3. Kombinieren Sie beide Modelle zu einem 4-Bit-Vorwrts-Rckwrtszhler, dessen Zhlrichtung mit einem zustzlichen Steuereingang bestimmt wird.
121
Aufgabe 6
Erstellen Sie mit Hilfe einer S-Funktion einen RAM-Baustein (Schreiblesespeicher) mit folgenden Eigenschaften: eine Speicherstelle fasst 2 Byte, die Zahl der Speicherstellen betrgt 2 10 , Eingnge Data in: zu speichernde Daten als 16-Bit-Binrvektor Address: angesteuerte Adresse als 10-Bit-Binrvektor R/W: 0 = Lesen, 1 = Schreiben T: Takteingang, Zustand ndert sich nur bei negativer Flanke (1 0) Ausgang Data out: Daten als 16-Bit-Binrvektor Lesemodus Data out = gespeicherter Wert Schreibmodus Data out = 0
optional (Checkbox in der Maske) wird der Inhalt des Speichers beim Start aus einer Datei ram.in gelesen und am Ende in eine Datei ram.out geschrieben.
122
Aufgabe 7
Ergnzen Sie die Frderband-Steuerung um einen Nothalt-Eingang. Wird er aktiviert, bleibt ggf. der Motor stehen. Wird er wieder deaktiviert, geht der Transport (in gleicher Richtung!) weiter.
123
Aufgabe 8
Erstellen Sie die Regler-Bibliothek regler1.mdl mit einem PID-Regler-Block und Blcken fr die drei vorgestellten Reglerstrecken. Verwenden Sie Sorgfalt auf die Erstellung der Masken: vernnftige Parameter knappe, aber aussagekrftige Erklrungen Icon-Darstellungen mit Wiedererkennungswert
124
Aufgabe 9
Erweitern Sie die Regler-Bibliothek um folgende Blcke: 1. Fuzzifizierungsblcke mit 3 und 5 Bereichen jeweils alle Funktionen mit fester Breite Wert der Breite als Maskenparameter 2. Inferenzregelblcke, die aus zwei Eingngen einen Ausgangsvektor mit 2, 3, 4 oder 5 Komponenten berechnen, 3. einen Defuzzifizierungsblock. Versuchen Sie, alle Blcke mglichst allgemein verwendbar zu machen. Achten Sie auch auf eine sinnvolle Masken-Gestaltung.
125
Aufgabe 10
Erweitern Sie den Fuzzy-Regler der Verladebrcke zu einem Fuzzy-PD-Regler, der das Problem auch wirklich lst, indem Sie die Ableitung von x (also die Geschwindigkeit v der Laufkatze) als weitere Eingangsgre fuzzifizieren, die Fuzzifizierung des Motorantriebs um die Gren "stark vor" und "stark rck" erweitern, die bisherigen Inferenzregeln bernehmen, aber ergnzen durch WENN x positiv UND v positiv DANN "stark rck" WENN x negativ UND v negativ DANN "stark vor" den Gren "stark vor" und "stark rck" beim Defuzzifizieren einen (groen) Wert s zuweisen, der ber die Maske des Fuzzy-Regler-Blocks gesetzt wird. Als Beweis, dass dies wirklich mglich ist, hier der Regelungsverlauf eines entsprechend der Aufgabe erweiterten Reglers:
126
Aufgabe 11
Entwickeln Sie einen Bondgraphen fr einen von einer Gleichstromquelle angetriebenen Gleichstrommotor, der ber ein Getriebe eine Last antreibt gem dem Blockschaltbild
Die einzelnen Blcke werden folgendermaen spezifiziert: Die Stromquelle hat einen Kurzschlussstrom i 0 sowie Innenwiderstand R 1 und Kapazitt C
Der Motor hat einen Innenwiderstand R2 und eine Induktivitt L (alles in Reihe). Er erzeugt abhngig vom Strom i das Drehmoment M=ki Der Antriebsteil des Motors hat ein Trgkeitsmoment J m und einen Reibungswert b m (gegen Ruhe!), die Drehsteifigkeit der Antriebswelle betrgt c m . Das Getriebe sei ideal (keine Verluste) und habe ein bersetzungsverhltnis 1:N. Die Last hat ein Trgkeitsmoment J l .
127
Aufgabe 12
Bestimmen Sie smtliche Zustandsgleichungen beim Bondgraphen des 2-Massen-Schwingers. Zeigen Sie, dass sich daraus die blichen Bewegungsgleichungen 2. Ordnung herleiten lassen. Hinweis: Fhren Sie die physikalischen Bezeichnungen (m, b, c) wieder ein. Leiten Sie dann die Gleichungen fr 5 , 9 nach der Zeit ab und eliminieren Sie p 8 und p 2 .
128
Aufgabe 13
Entwickeln Sie eine "Bondgraph-Bibliothek" fr Simulink. Beachten Sie, dass Sie Simulink-Blcke fr die verschiedenen Richtungen des Energieflusses und der Kausalitt brauchen. Beschrnken Sie sich bei den 0- und 1-Verknpfungen auf 3-Port-Elemente. Ersetzen Sie im Bondgraphen des Zwei-Massen-Schwingers
das 4-Port-1-Element durch zwei 3-Port-Elemente. bertragen Sie den Graphen mit Hilfe der Bondgraph-Bibliothek in ein Simulink-Modell und berprfen Sie das Ergebnis eines Simulationslaufs. Modellieren Sie den 2-Massen-Schwinger in "normaler" Weise in Simulink und vergleichen Sie die Ergebnisse.
129
Aufgabe 14
Machen Sie den Bondgraphen des Systems aus Aufgabe 11 per Hand kausal. Simulieren Sie das Modell mit MapleSim fr einfache Parameterwerte.
130
Aufgabe 15
Erstellen Sie Simulink-Modelle, die die drei Ruber-Beute-Modelle nachbilden 1. mit der einfachen Formel fr die Fnge, 2. mit der graphischen Funktion, 3. inclusive der Beschrnkung auf positive Werte. Vergleichen Sie die Ergebnisse mit denen der Simile-Modelle.
131
Aufgabe 16
Beide Maschinen der Fertigungsstrae sollen nur von einer Person betreut werden. Dazu wird Maschine 2 so umgebaut, dass sie ebenfalls vier Teile in zwei Zeiteinheiten bearbeitet. Der Betreuer halte sich bei Maschine 1 auf, wenn sie gerade leer ist, sonst bei Maschine 2. Erweitern Sie das MapleSim-Modell um den Betreuer und vergleichen Sie das Ergebnis.
132
Aufgabe 17
Erstellen Sie ein Simulink-Modell, das die Fertigungsstrae (ohne Betreuer) nachbildet.
133
Aufgabe 18
Bauen Sie das 2-Massen-Schwinger-Modell aus MapleSim in Simulink nach, indem Sie Blcke erzeugen, die den MapleSim-Objekten entsprechen.
134
Aufgabe 19
Erstellen Sie ein Modell fr die Funktion einer Kupplung aus folgenden Teilen (vgl. [12, Kap. 3.3]): einer Coulomb-Reibstelle Gleitreibungsmoment = 190 Nm Haftreibungsmoment = 250 Nm einem motorseitigen Trgheitsmoment Trgheitsmoment = 1 kg m 2 Anfangsdrehgeschwindigkeit = 200 1/s einem abtriebseitigen Trgheitsmoment Trgheitsmoment = 5 kg m 2 Anfangsdrehgeschwindigkeit = 0 einem zeitlich vernderlichen Antriebsmoment folgender Form
Betrachten Sie die zeitliche Entwicklung der Drehzahlen beider Trgheiten. 1. Benutzen Sie MapleSim. Wie ndern sich die Eigenschaften des Reibstellen-Objekts beim bergang vom Gleiten zum Haften? 2. Erstellen Sie ein analoges Modell in Simulink. Verwenden Sie dafr, soweit mglich, MapleSim-artige Blcke fr Reibstelle, Trgheiten und Momente.
135
Aufgabe 20
Bilden Sie das Beispiel-Modell triebstrang2 in Simulink nach, wobei Sie wieder Subsysteme bilden, die den MapleSim-Objekten entsprechen.
136
Aufgabe 21
Zeigen Sie, dass das Modell fr das Differenzialgetriebe wirklich die Gleichungen aus [11] nachbildet. Hinweise: Schreiben Sie fr jeden Block die Gleichungen auf, die er implementiert, und eliminieren Sie innere Gren. Beachten Sie die unterschiedlichen Vorzeichenkonventionen.
137
Aufgabe 22
Erweitern Sie den Triebstrang 5 um folgendes Reifen-Modell (nach [1]): Die Umfangsgeschwindigkeit v r des Reifens und die Geschwindigkeit v des Fahrzeugs werden unterschieden. Der Schlupf in Prozent wird dann bestimmt aus
wobei der Nenner nach unten begrenzt wird, um numerische Instabilitten bei sehr niedrigen Fahrzeuggeschwindigkeiten bzw. beim Anfahren zu vermeiden. Aus dem Schlupf und dem Reibungsbeiwert F erhlt man die statische Reifenkraft F s nach der Formel von Pacejka
Die tatschliche Radkraft F baut sich durch die Radverformung etwas verzgert auf. Dieses Verhalten bildet man nach, indem man F aus F s mit Hilfe folgender Differentialgleichung ermittelt
Bercksichtigen Sie auerdem das Trgheitsmoment des Rades. Betrachten Sie Schlupf und Geschwindigkeit bei Anfahrvorgngen im 1. und 3. Gang.
138
Anhang
Literatur- und Quellenverzeichnis Herleitung der Bewegungsgleichungen der Verladebrcke Matlab-Beispiele Simulink-Beispiele MapleSim-Beispiele Prfungsleistung Themenvorschlge Bisher bearbeitete Themen
139
140
Kinetische Energie T
mit
also
Fr q 1 = x
141
fr q 2 =
142
Matlab-Beispiele
schwingungsanalyse.m setcolor.m taste.m
143
schwingungsanalyse.m
% lasse Simulink-Modell laufen [t,x,y] = sim(schwingproblem); t = ScopeData.time; s_in = ScopeData.signals(1).values; s_out = ScopeData.signals(2).values; % N = 2^14; tmax = max(t); tmin = min(t); dt = (tmax - tmin)/N; ts = tmin:dt:tmax; ts = ts(1:end-1); % % Simulink erzeugt Werte zu selbstgewaehlten Zeiten. % Besorge gleichmaessig gesampelte Werte durch Interpolation % Voraussetzung: hinreichend viele Werte im Simulink-Signal! % fs_in = interp1(t, s_in, ts); % % FFT und Plot des kritischen Bereichs % Xin = fft(fs_in); F_in = Xin(1:N/2); omega = 2*pi/(tmax - tmin) * ([1:N/2] - 1); imax = max(find(omega <= 100)); plot(omega(1:imax), abs(F_in(1:imax))); axis([0 100 0 600]);
144
setcolor.m
function setcolor(block) % setzt die Hintergrundfarbe abhaengig vom Eingangswert setup(block); end %% ------------------------------------------------------------------function setup(block) block.NumInputPorts = 1; block.NumOutputPorts = 0; block.SetPreCompInpPortInfoToDynamic; % properties are inherited block.SampleTimes = [-1 0]; % inherited block.RegBlockMethod(PostPropagationSetup, @DoPostPropSetup); block.RegBlockMethod(Update, @Update); end %% ------------------------------------------------------------------function DoPostPropSetup(block) block.NumDworks = 1; block.Dwork(1).Name = x0; block.Dwork(1).Dimensions = 1; block.Dwork(1).DatatypeID = 0; block.Dwork(1).Complexity = Real; block.Dwork(1).UsedAsDiscState = true; end function Update(block) sysname = gcs; input = block.InputPort(1).Data; state = block.Dwork(1).Data; color_on_s = get_param(sysname, on_color); color_off_s = get_param(sysname, off_color); % Icon nur bei Aenderung malen, sonst Flackern! if (input > 0.5) && (state == 0) icon = [patch(sin([0:0.1:2*pi]), cos([0:0.1:2*pi]), , color_on_s, )]; set_param(sysname, MaskDisplay, icon); state = 1; elseif (input <= 0.5) && (state == 1) icon = [patch(sin([0:0.1:2*pi]), cos([0:0.1:2*pi]), , color_off_s, )]; set_param(sysname, MaskDisplay, icon); state = 0; end block.Dwork(1).Data = state; % setzt Zustand auf neuen Wert end
145
taste.m
function taste() blk = gcb; sw = get_param(blk, Value); if sw==1 sw=0; else sw=1; end set_param(blk, Value, sw);
146
Simulink-Beispiele
bruecke.mdl flipflops.mdl foerderband.mdl pt1.mdl pt2.mdl regelkreis.mdl regler1.mdl schieberegister.mdl schieberegisterLed.mdl schwingfilter.mdl schwingproblem.mdl schwingspektrum.mdl simplefuzzy.mdl testled.mdl testtaste.mdl zaehler1.mdl zaehler2.mdl
147
MapleSim-Beispiele
bondschwing2d.msim bevoelkerung.msim raeuberbeute1.msim raeuberbeute2a.msim raeuberbeute2.msim fertigung.msim schwing2d.msim triebstrang1.msim triebstrang2.msim triebstrang2a.msim triebstrang3.msim triebstrang4.msim triebstrang5.msim
Hilfsdateien
faengeProRaeuber.csv gaspedal_3stufen.csv gaspedal_3stufen_voll.csv gaspedal_anfahren.csv kupplung_anfahren.csv kupplung_auskuppeln.csv kupplung_ausrollen.csv motorkennfeld.csv schaltgetriebe.csv
148
Prfungsleistung
Eines der vorgeschlagenen oder - in Absprache mit dem Dozenten - ein selbstgewhltes Simulationsprojekt wird mit Simulink oder einem anderen der vorgestellten Programme bearbeitet. Abzugeben sind eine schriftliche Ausarbeitung (Umfang etwa 20 - 30 Seiten) sowie eine CD mit den lauffhigen Modellen und der Ausarbeitung als PDF-Datei. Grundaufbau der Ausarbeitung (Vorschlag): Einfhrung in den Problembereich qualitative Beschreibung des zu simulierenden Systems Modellierung des Systems (z.B. durch Differential- oder Differenzengleichungen) Beschreibung des Simulink-Modells Erluterung der Simulationslufe und -ergebnisse Ausblick
149
Themenvorschlge
Antriebsregelung fr ein Hybridfahrzeug Steuerung eines Frderbands Lsung der Aufgaben aus Simulationstechnik 2 Regelung eines dreiachsigen SCARA-Roboter Realistische Reibungsmodellierung eines Magnetschwebe-Systems Vertikalschwingungen eines LKWs Modul-Synthesizer mit VCF Triebstrang eines PKWs mit MapleSim Signaturen mit dem MD5-Verfahren Ausbreitung von Infektionskrankheiten Blcke zur graphischen Ein- und Ausgabe
150
151
152
153
154
155
156
157
158
159
160
161
162