Behandlung von Unstetigkeiten Wir wollen uns heute dem
Behandlung von Unstetigkeiten • Wir wollen uns heute dem Problem der Behandlung von Unstetigkeiten in der Modellbeschreibung zuwenden. • Modelle aus den Ingenieurbereichen weisen häufig Unstetigkeiten auf, die Schaltvorgänge, Begrenzer, trockene Reibung, Stösse oder ähnliche Vorgänge repräsentieren mögen. • Die Modellierungsumgebung muss sich dieser Vorgänge speziell annehmen, da sie in starkem Masse die Numerik der Differentialgleichungslöser beeinflussen. 2. Februar, 2005 Anfang Präsentation
Übersicht • • • 2. Februar, 2005 Die numerische Lösung von Differentialgleichungen Unstetigkeiten in Zustandsgleichungen Integration über Unstetigkeiten Zustandsereignisse Ereignisbearbeitung Mehrwertige Kennlinien Der elektrische Schalter Die ideale Diode Die Reibungskennlinie Anfang Präsentation
Numerische Differentialgleichungslöser • Alle heute im Einsatz stehenden numerischen Differentialgleichungslöser arbeiten mit Polynomextrapolation. • Der Wert einer Zustandsvariablen x zum Zeitpunkt t+h, wobei h die momentane Schrittlänge ist, wird ermittelt, indem durch bereits bekannte Stützwerte von x und dx/dt der jetzigen Zeit t sowie der Vergangenheit ein Polynom nter Ordnung hindurchgelegt wird. Der Wert dieses Polynoms zum Zeitpunkt t+h repräsentiert die angenäherte Lösung der Differentialgleichung. • Bei impliziten Verfahren wird die Zustandsableitung zum Zeitpunkt t+h ebenfalls als Stützwert beigezogen. 2. Februar, 2005 Anfang Präsentation
Beispiele Explizites Eulerverfahren erster Ordnung: · x(t+h) x(t) + h · x(t) Implizites Eulerverfahren erster Ordnung: · x(t+h) x(t) + h · x(t+h) 2. Februar, 2005 Anfang Präsentation
Unstetigkeiten in der Zustandsbeschreibung • Polynome sind immer stetig und stetig differenzierbar. • Wenn also die Zustandsraumbeschreibung des Systems: · = f(x(t), t) x(t) • eine Unstetigkeit aufweist, ist die Polynomextrapolation eine sehr schlechte Approximation der Wirklichkeit. • Somit weisen Verfahren mit fester Schrittlänge einen grossen Integrationsfehler auf, während Verfahren mit variabler Schrittlänge den Schritt in der Umgebung der Unstetigkeit sehr stark reduzieren. 2. Februar, 2005 Anfang Präsentation
Integration über Unstetigkeiten • Ein Verfahren variabler Schrittlänge reduziert die Schrittlänge bei jeder Unstetigkeit. • Nach der Unstetigkeit wird die Schrittlänge nur langsam wieder vergrössert, da das Verfahren nicht unterscheiden kann zwischen einer Unstetigkeit und einem Punkt grosser lokaler Steifigkeit (mit grossem absolutem Wert der Ableitung). h Unstetigkeiten t 2. Februar, 2005 Die Schrittlänge ist dauernd viel zu klein. Das Verfahren ist zumindest sehr ineffizient, falls nicht ungenau. Anfang Präsentation
Das Zustandsereignis • Diese Probleme können vermieden werden, wenn dem System explizit mitgeteilt wird, wo es Unstetigkeiten in der Modellbeschreibung gibt. Beispiel: Begrenzerfunktion fp f(x) a xm 2 1 fm 3 x xp f = fm f = m·x f = fp m = tg(a) f = if x < xm then fm else if x < xp then m*x else fp ; 2. Februar, 2005 Anfang Präsentation
Die Ereignisbearbeitung I fp xm f(x) a xp x x xp Iteration Schwellwert h fm h xp t Ereignis 2. Februar, 2005 Schrittlängenreduktion während Iteration x Modellumschaltung h Anfang Präsentation t
Die Ereignisbearbeitung II h h t Schrittlänge ohne Ereignisbehandlung 2. Februar, 2005 t Schrittlänge mit Ereignisbehandlung Anfang Präsentation
Repräsentation von Unstetigkeiten f = if x < xm then fm else if x < xp then m*x else fp ; • In Modelica wird die Unstetigkeit durch ein if-Statement repräsentiert. • Bei der Übersetzung werden diese Statements in korrekte Ereignisbeschreibungen (Sätze von Modellen mit Umschaltbedingungen) abgebildet. • Der Benützer braucht sich um die Ereignisbeschreibungsmechanismen selbst nicht zu kümmern. Diese bleiben hinter den if-Statements verborgen. 2. Februar, 2005 Anfang Präsentation
Probleme • Der Benützer sollte beachten, dass während der Iteration die unstetige Kennlinie temporär verlassen wird. q = | Dp = p 1 – p 2 ; abs. Dp = if Dp > 0 then Dp else –Dp ; q = sqrt(abs. Dp) ; • ist gefährlich, da abs. Dp temporär negativ werden kann. Dp = p 1 – p 2 ; abs. Dp = no. Event( if Dp > 0 then Dp else –Dp ) ; q = sqrt(abs. Dp) ; • löst dieses Problem. 2. Februar, 2005 Anfang Präsentation
Die „no. Event“-Klausel Dp = p 1 – p 2 ; abs. Dp = no. Event( if Dp > 0 then Dp else –Dp ) ; q = sqrt(abs. Dp) ; • Die no. Event-Klausel sorgt dafür, dass if-Statements oder Boole’sche Ausdrücke, die normalerweise in Simulationscode übersetzt würden, bei welchem die Diskontinuitäten durch Ereignisse abgefangen werden, so stehengelassen werden, wie sie im Modellierungscode formuliert wurden. • Dadurch wird die korrekte Simulation dieser Diskontinuitäten der Schrittsteuerung des numerischen Integrationsverfahrens überlassen. 2. Februar, 2005 Anfang Präsentation
Mehrwertige Kennlinien I • Die bisher eingeführten Sprachelemente reichen nicht aus, um damit mehrwertige Kennlinien, wie zum Beispiel Hysteresefunktionen zu beschreiben. f(x) fp xm xp x fm • Wenn x grösser wird als xp, muss f von fm nach fp umgeschaltet werden. • Wenn x kleiner wird als xm, muss f von fp nach fm umgeschaltet werden. 2. Februar, 2005 Anfang Präsentation
Mehrwertige Kennlinien II f(x) fp xm xp x fm when initial() then reinit(f , fp); end when; wird grösser when x > xp or x < xm then f = if x > 0 then fp else fm; end when; ist grösser 2. Februar, 2005 Ausgeführt am Anfang der Simulation. } Diese Statements werden nur ausgeführt, wenn entweder x grösser wird als xp oder aber wenn x kleiner wird als xm. Anfang Präsentation
Der elektrische Schalter I i u Wenn der Schalter offen ist, ist der Strom i=0. Wenn der Schalter zu ist, ist die Spannung u=0. 0 = if offen then i else u ; Das if-Statement in Modelica ist akausal. sortiert, genau wie alle anderen Statements. 2. Februar, 2005 Es wird Anfang Präsentation
Der elektrische Schalter II Mögliche Implementation: Schalter offen: SF f=0 Schalter geschlossen: SE 2. Februar, 2005 e=0 Schalter offen: s = 1 Schalter geschlossen: s = 0 0 = s·i + (1–s)·u s Sw e f Die Kausalität des Switch Elements ist eine Funktion des Werts des Steuersignals s. Anfang Präsentation
Die ideale Diode I i Schalter geschlossen i u u Schalter offen = u < 0 ; 0 = if offen then i else u ; 2. Februar, 2005 Wenn u < 0 ist, ist der Schalter offen. Kein Strom fliesst. Wenn u > 0 ist, ist der Schalter geschlossen. Strom kann fliessen. Die ideale Diode verhält sich wie ein Kurzschluss. D f e Anfang Präsentation
Die ideale Diode II • Da Strom, wenn er durch die Diode fliesst, nicht einfach unterbrochen werden kann, muss das Diodenmodell noch leicht modifiziert werden. offen = u <= 0 and not i > 0 ; 0 = if offen then i else u ; • Die Variable offen muss als Boolean deklariert werden. Ihr wird der Wert des logischen Ausdrucks rechts vom Gleichheitszeichen zugewiesen. 2. Februar, 2005 Anfang Präsentation
Die Reibungskennlinie I • Kompliziertere Vorgänge, wie zum Beispiel die Reibungskennlinie müssen sorgfältig analysiert werden. • Der Vorgang wird hier an Hand der Reibung erklärt. R 0 Rm f. B Gleitreibung v Haftreibung -Rm -R 0 2. Februar, 2005 Wenn v 0 , ist die Reibungskraft eine Funktion der Geschwindigkeit. Wenn v = 0 , wird die Reibungskraft so gerechnet, dass die Geschwindigkeit 0 bleibt. Anfang Präsentation
Die Reibungskennlinie II • Wir unterscheiden fünf Fälle: v=0 a=0 Haftung: Die Reibungskraft kompensiert die Summe der angreifenden Kräfte, es sei denn |Sf | > R 0. v>0 Vorwärtsbewegung: Die Reibungskraft berechnet sich zu: f. B = Rv · v + Rm. v<0 Rückwärtsbewegung: Die Reibungskraft berechnet sich zu: f. B = Rv · v - Rm. v=0 a>0 Einsetzen der Die Reibungskraft berechnet sich zu: Vorwärtsbewegung: f. B = Rm. v=0 a<0 Einsetzen der Die Reibungskraft berechnet sich zu: Rückwärtsbewegung: f. B = -Rm. 2. Februar, 2005 Anfang Präsentation
Das Zustandsübergangsdiagramm • Der genaue Vorgang kann in einem Zustandsübergangsdiagramm dargestellt werden. Anfang v<0 Sf < -R 0 v < 0 Rückwärtsbewegung (v < 0) v>0 Rückwärtsbeschleunigung (a < 0) 2. Februar, 2005 Sf > +R 0 Haftung (a = 0) a 0 and not v < 0 v=0 v > 0 Vorwärtsbeschleunigung (a > 0) Vorwärtsbewegung (v > 0) a 0 and not v > 0 v 0 Anfang Präsentation
Das Reibungsmodell I model Reibung; parameter Real R 0, Rm, Rv; parameter Boolean ic=false; Real f. B, fc; Boolean Haft(final start = ic); Boolean Vor(final start = ic), Rück(final start = ic); Boolean Start. Vor(final start = ic), Start. Rück(final start = ic); f. B = if Vor then Rv*v + Rm else if Rück then Rv*v - Rm else if Start. Vor then Rm else if Start. Rück then -Rm else fc; 0 = if Haft or initial() then a else fc; 2. Februar, 2005 Anfang Präsentation
Das Reibungsmodell II when Haft and not initial() then reinit(v, 0); end when; Vor = initial() and v > 0 or pre(Start. Vor) and v > 0 or pre(Vor) and not v <= 0; Rück = initial() and v < 0 or pre(Start. Rück) and v < 0 or pre(Rück) and not v >= 0; 2. Februar, 2005 Anfang Präsentation
Das Reibungsmodell III Start. Vor = pre(Haft) and fc > R 0 or pre(Start. Vor) and not (v > 0 or a <= 0 and not v > 0); Start. Rück = pre(Haft) and fc < -R 0 or pre(Start. Rück) and not (v < 0 or a >= 0 and not v < 0); Haft = not (Vor or Rück or Start. Vor or Start. Rück); end Reibung; 2. Februar, 2005 Anfang Präsentation
Referenzen I • Cellier, F. E. (1979), Combined Continuous/Discrete System Simulation by Use of Digital Computers: Techniques and Tools, Swiss Federal Institute of Technology, ETH Zürich, Switzerland. • Elmqvist, H. , F. E. Cellier, and M. Otter (1993), “Objectoriented Modeling of Hybrid Systems, ” Proc. ESS'93, SCS European Simulation Symposium, Delft, The Netherlands, pp. xxxi-xli. • Cellier, F. E. , M. Otter, and H. Elmqvist (1995), “Bond Graph Modeling of Variable Structure Systems, ” Proc. ICBGM'95, 2 nd SCS Intl. Conf. on Bond Graph Modeling and Simulation, Las Vegas, NV, pp. 49 -55. 2. Februar, 2005 Anfang Präsentation
Referenzen II • Elmqvist, H. , F. E. Cellier, and M. Otter (1994), “Objectoriented Modeling of Power-electronic Circuits Using Dymola, ” Proc. CISS'94, First Joint Conference of International Simulation Societies, Zurich, Switzerland, pp. 156 -161. • Glaser, J. S. , F. E. Cellier, and A. F. Witulski (1995), “Object-oriented Switching Power Converter Modeling Using Dymola with Event-handling, ” Proc. OOS'95, SCS Object-Oriented Simulation Conference, Las Vegas, NV, pp. 141 -146. 2. Februar, 2005 Anfang Präsentation
- Slides: 26