Objektorientierte Modellierung und Simulation mechatronischer Systeme mit Modelica und Dymola Martin Otter Deutsches Zentrum für Luft- und Raumfahrt (DLR) Institut für Robotik und Mechatronik (www.robotic.dlr.de) ETH-Zürich, 11. Dez. 2003
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
1
Inhalt 1. Einführung 2. Objektdiagramme 3. Grundlagen von Modelica 4. Transformations-Algorithmen 5. Unstetige und Strukturvariable Systeme 6. Zusammenfassung
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
2
1. Einführung Ziel: Modellierung und Simulation physikalischer Systeme, die aus Komponenten unterschiedlicher Fachgebiete bestehen
Beispiel: detailliertes Fahrzeugmodell • Fahrzeugdynamik (3D Mechanik) • Antriebsstrang (1D Mechanik) • Hydraulik • Verbrennung • Elektrische/elektronische Systeme • Klimaanlage (Thermo-Fluid Systeme) • Regler (Ein/Ausgangsblöcke, Statecharts, ...) • ... M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
4
Objektorientierte Modellierung • Technik zur multidisziplinären Modellierung komplexer Systeme. • 1978 von H. Elmqvist am Lund Institute of Technology (Schweden) entwickelt Seit 1992 eigene Firma (Dynasim) zur Weiterentwicklung von Dymola. • Wird seit Anfang der 90er Jahre an vielen Stellen weiterentwickelt. (Dymola, gPROMS, NMF, ObjectMath, Omola, Smile, U.L.M, EcoSim, ...) Standardisierung mit der frei verfügbaren Modellierungssprache • wird von der (non-profit) Modelica Association seit 1996 entwickelt. • Differentialgleichungen, algebraische und diskrete Gleichungen. • Deklarativ (= mathematische Gleichungen) statt prozedural • Viele Modelica Bibliotheken verfügbar (meist “public domain”): 1D/3D Mechanik, Elektronik, Hydraulik, elektr. Energiesysteme, Thermo-Fluid, ... • Erste Anwendungen mit Modelica 1.3 (Dezember 1999) Aktuelle Version ist Modelica 2.0 (Januar 2002) M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
5
Homepage:
www.Modelica.org
Tutorial:
www.Modelica.org/documents/ModelicaTutorial14.pdf
Sprachdefinition:
www.Modelica.org/documents/ModelicaSpec20.pdf
Modell Bibliotheken:
www.Modelica.org/libraries.shtml
Veröffentlichungen:
www.Modelica.org/publications.shtml
Programme:
www.Modelica.org/tools.shtml Dymola (www.Dynasim.se) MathModelica (www.MathCore.se)
Bücher: - Introduction to Physical Modeling with Modelica von Michael Tiller. Kluwer Academic Publisher, 2001, http://www.Dynasim.se/Tiller/BookInfoPage/. - Principles of Object Oriented Modeling and Simulation with Modelica von Peter Fritzson, 2003. 940 Seiten, Wiley-IEEE press; ISBN 0-471-47163-1. - Elektrische Antriebe - Regelung von Antriebssystemen von D. Schröder Kapitel 20, S. 894 - 1004, von M. Otter, Springer Verlag, 2001, http://www.springer.de M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
6
Zusammenhang Modelica ↔ Dymola (= ähnlich wie: C++ ↔ Microsoft Visual Studio) Modelica (freie Spezifikation): Textuelles Format um Modell + Graphik + Animation von Komponenten zu definieren
Dymola (Kommerzielles Programm von Dynasim): Graphischer Editor für Modelica Modelle
Dymola: Übersetzung von Modelica nach C (Symbolische Transformationen), + simulieren + plotten, Animation M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
7
2. Objektdiagramme Komponente
Verbindung
Schnittstelle
• Jedes Icon repräsentiert eine physikalische Komponente. z.B. elektrischer Widerstand, mechanisches Getriebe, Pumpe
• Die Verbindungslinien repräsentieren die aktuelle physikalische Verbindung. Z.B. elektrisches Kabel, starre mechanische Verbindung, Wärmefluß.
• Eine Komponente besteht aus verbundenen Sub-Komponenten (= hierarchische Struktur) und/oder wird durch Gleichungen beschrieben.
• Mit symbolischen Algorithmen, wird die "high level" Modelica Beschreibung in die Zustandsform transformiert (dx/dt = f(x, t)) M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
8
Moment gegeben
Entwurfsprinzipien von Modelica Gerät (rot. Trägheit)
• Modelica Komponenten entsprechen realen Geräten (nur eine Version) Winkel gegeben
• Gleiche Verschaltungmöglichkeiten wie physikalisches Gerät (→ DAEs mit höherem Index; verlangt z.T. symbolische Differentiation)
merging of volumes
• Gleiche oder bessere Effizienz als "Standard" Software Nur möglich durch spezialisierte symbolische Vorverarbeitung mit hierfür entworfenen Algorithmen M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
9
Drag & drop Modellierung
Dymola
Modelica Bibliothek Modelica.Mechanics.Rotational M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
10
Übersetzen (Modelica → C → Objektcode) + Simulieren + Visualisieren
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
11
Modelica Bibliotheken Modelica Standard Bibliothek • • • • • • • • •
SI unit types (450 types) Control systems (continuous/sampled) Electric and electronic systems 1D translational 1D rotational (clutches, brakes, ...) 1D heat transfer MultiBody systems (Jan. 2004) Media (Jan. 2004; 1250 Medium Modelle) Fluid (Frühjahr 2004; Rohrströmungen)
Kommerzielle Bibliotheken • Hydraulic components (HyLib) • Pneumatic components (PneuLib) • Vehicle power trains (PowerTrain)
Import/Export (kommerziell)
Andere "public domain" Bibliotheken • • • • • • •
ThermoFluid ThermoPower Electric power systems Vehicle dynamics (Beta) SPICElib (electronics; SPICE subset) WasteWater ...
"Public domain" in Entwicklung • • • • •
Digital electrical systems Advanced Sampled ↔ Continuous Interpolation (B-Splines) Linear algebra (LAPACK) Electrical motors
• Simulink → Modelica converter (Simelica) • Modelica → Simulink converter (Dymola Option) M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
12
Beispiel: MultiBody Bibliothek 1D damper revolute joint
body
• Automatische Visualisierung von jedem Objekt • Automatische Zustandswahl • Automatische Schleifenbehandlung • Analytische Lösung einer Klasse von Schleifen. • Keine Einschränkungen bei der Verschaltung
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
13
Beispiel: Industrie-Roboter (DLR, Dynasim, KUKA)
model Resistor extends OnePort; parameter Real R; equation v = R*i; end Resistor;
1000 nichttriviale algebraische Gleichungen, 80 Zustände. mit “Mixed-Mode Integration”: schneller als Echtzeit auf 650 Mhz PC. M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
14
Beispiel: Gesamt-Systemmodell eines Verkehrsflugzeugs (EU-Projekt POA: 40 Ausrüsterfirmen, 100MEuro)
elektrisch
hydraulisch
mechanisch
pneumatisch M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
15
Beispiel: Hardware-in-the-Loop Simulation von Automatikgetrieben (verschiedene KFZ Hersteller, wie Toyota, BMW)
Steuergerät (Hardware)
gewünschter Druck
(Simulation)
+ Fahrer + Motor + Wandler + 1D Fahrzeugdynamik
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
16
Beispiel: Grosses, detailliertes Fahrzeugmodell (Ford, Dynasim, DLR; SAE paper 2001-01-0334) 3D-Mechanik (60 Gelenke, 70 Körper)
• 25000 nichttriviale algebraische Gleichungen • 320 Zustände
Hydraulik
Motor (Verbrennung)
Antriebsstrang (Automatik-Getriebe) M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
17
Beispiel: Autopilot zum automatischen Landen (EU-Projekt REAL: Airbus, Delft University, DLR, NLR, ONERA) • Entwicklung einer Technologie um Autopiloten schneller zu entwerfen
Dymola Modell ist Teil des Reglers
• Regler enthält im Kern ein nichtlineares Flugzeug-Dynamik Modell als inverses Modell. Modell
Eingänge sind gegeben Flugzeugmodell Flugzeugmodell
Eingänge werden berechnet
Ausgänge werden berechnet
Ausgänge sind gegeben
6 Flugtests im August 2000 (mit ATTAS Forschungsflugzeug von DLR)
Inverses Modell M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
18
Beispiel: Energie-Erzeugung und -Verteilung (SyCon Consulting, Schweden) p
TurbineControl
QuickStop
tagnr=3
TurbinControlV
SuperHeater
DumpValv e
Pipe
LT
Distpipe TagNr = 28 - 30
PT TagNr = 1
pidpFWTank
Pipe5
M
Pipe2
FWTValv e
BurnerPowerAct
Pipe11
Pipe10
M
Pipe1
Drum
Pipe8
Furnace
GeneratorNet
TagNr = 4 - 14
tagnr=2
SaeV tagnr=31
SNod4c
Atmos
G12
M
SNod
FWTank
Condenser
LT DistrictHeat PT
TagNr = 24 - 25
LT
TagNr = 26 - 27
LC
TagNr = 22 - 23
M
FeedWaterStrip
TagNr = 15 - 19
LC M
M
CondensateStrip
M
3. Grundlagen von Modelica 3.1 Gleichungsorientierte Modellierung Objektorientierte Modellierungssprachen (Modelica, gPROMS, VHDL-AMS, ...) basieren auf Gleichungen und nicht auf Zuweisungen wie bei Blockdiagrammen.
AC=220
expression = expression
Bei der Transformation in die Zustandsform, werden Gleichungen abhängig von der Verschaltungsstruktur aufgelöst, z.B. u = R*i: i := u/R
L=0.1
C=0.01
z.B. J*der(x) = t1 + t2
G
R1=10
G
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
20
R3=40
R2=40
(Residuum; Gleichungssystem)
Vg
u := R*i ε := R*i - u
R2=100
R1=10
Die allgemeine Form in Modelica:
3.2 Variablen (type) vordefinierte Datentypen: Real, Integer, Boolean, String neuer Datentyp
vordefinierter Datentyp (Gleitpunktzahl)
type Angle
= Real(quantity ="Angle” , displayUnit="deg"); type Torque = Real(quantity ="Torque” , type Mass = Real(quantity ="Mass” , type Pressure = Real(quantity ="Pressure", displayUnit="bar” ,
Attribute (z.B. Einheit)
unit="rad", unit="N.m"); unit="kg", min=0); unit ="Pa", nominal=1.e5);
Attribute: quantity, unit, displayUnit, min, max, start, fixed, nominal, stateSelect Bibliothek Modelica.SIunits: 450 vordefinierte Typen nach ISO Einheiten-Standard M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
21
3.3 Schnittstellen-Definition (connector) Verbindungs-Klasse
Neue Connector-Klasse
connector Pin import SI=Modelica.SIunits; SI.Voltage v; flow SI.Current i; end Pin;
connector Flange import SI=Modelica.SIunits; SI.Position s; flow SI.Force f; end Flange;
Fluß-variable
Verwendung:
Potential-Variable Fluß-Variable
Pin p, n; equation connect(p, n) Verbundene Variable sind identisch Verbundene Variable erfüllen die Null-Summen-Gleichung
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
22
1D-mechanisch
elektrisch
R3
v1
s3 i3
v3
v2
R1 (i1 = R1.p.i, etc.)
i1
R2
i2
s1
m3
m1
m2
s2
connect(R1.p, R2.p); connect(R1.p, R3.p);
f3
f1
f2
connect(m1.flange_a, m2.flange_a); connect(m1.flange_a, m3.flange_a);
s1 = s2
v1 = v2
s1 = s3
v1 = v3
f1 + f 2 + f 3 = 0
i1 + i2 + i3 = 0
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
23
Vordefinierte, elementare Schnittstellen type electrical
potential electrical potential
flow
location (Modelica library)
current
Modelica.Electrical.Analog.Interfaces.PositivePin
translational distance
force (scalar)
Modelica.Mechanics.Translational.Interfaces.Flange_a
rotational
torque (scalar)
Modelica.Mechanics.Rotational.Interfaces.Flange_a
heat transfer temperature
heat flow rate
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a
hydraulic
pressure
volume flow rate HyLibLight.Interfaces.Port_A
pneumatic
pressure
mass flow rate
mechanical
position vector, transformation matrix
cut-force (vector) MultiBody.Interfaces.Frame_a cut-torque (vector)
pressure,
mass flow rate, enthalpy flow rate,
angle
thermo-fluid specific enthalpy, mass flow rate of mass fractions
signal
Real, Boolean, Integer Vektor
icon
PneuLibLight.Interfaces.Port_1
Modelica_Fluid.Interfaces.FluidPort_a
substances Modelica.Blocks.Interfaces.InPort /OutPort Modelica.Blocks.Interfaces.BooleanInPort/OutPort Modelica.Blocks.Interfaces.IntegerInPort /OutPort
(hydraulic : incompressible pipe flow pneumatic : compressible pipe flow thermo-fluid: incompressible/compressible multi-substances/phases pipe flow with heat transport) M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
24
3.4 Komponenten Modelle (model) p.i
u
n.i
Beispiel: Kapazität graphische Information
p.v
Konstante (Wert kann vor Simulationsbeginn interaktiv geändert werden)
n.v Datentyp (Gleitpunktzahl)
Wert der Konstante (Voreinstellung)
model Capacitor import SI = Modelica.SIunits; parameter SI.Capacitance C = 0.01; SI.Voltage u ”Spannungsabfall”; Pin p, n; Beschreibungstext annotation(Diagram(Rectangle(..)..); (wird in Menues angezeigt) equation 0 = p.i + n.i; u = p.v - n.v; mathematische Gleichung, keine Zuweisung! C*der(u) = p.i; end Capacitor; Differentation nach der Zeit M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
25
Beispiel: Hierarchisches Modell
Bibliotheksname abkürzen neue Modell-Klasse
Modell-Klasse Modell-Instanz (Komponente) Modifikation model Drive import R = Modelica.Mechanics.Rotational; import E = Modelica.Electrical.Analog.Basic; R.Inertia Inertia1 (J = 0.002); R.IdealGear IdealGear1(ratio = 100) E.Resistor Resistor1 (R = 0.2) ... annotation(Diagram(Rectangle(extent=..)..)..); equation connect(Inertia1.flange_b, IdealGear1.flange_a); connect(Resistor1.n , Inductor1.p); ... end SimpleDrive; Connector "flange_a" von IdealGear1 Verbindung Connector "n" (= Klemme) von Resistor1 grafische Informationen M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
26
3.5 Modelica Bibliotheken (package) Modelica Bibliotheken sind hierarchisch aufgebaut und werden auf dieselbe Hierarchie im Dateisystem abgebildet. Damit können Klassenbeschreibungen automatisch im Dateisystem gefunden werden: \Modelica \Blocks \Electrical \Analog package.mo Basic.mo Semiconductors.mo Sources.mo ... \Mechanics package.mo Rotational.mo Translational.mo Constants.mo Icons.mo Math.mo SIunits.mo ...
within Modelica.Electrical.Analog; package Basic model Resistor ... neue Bibliothek end Resistor; model Capacitor ... end Capacitor; ... end Basic; File: ...\Modelica\Electrical\Analog\Basic.mo Bibliothek: Modelica.Electrical.Analog.Basic
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
27
3.6 Felder und Komponentenfelder Felder ähnlich wie in Matlab: parameter Real A[:,:] = [11, 12, 13; 21, 22, 23];
Aber: Felder können von jeder Modell-Klasse definiert werden. R2
R3
R4
R=R
R=R
R=R
R=R
p
n C3
C=C
C2
C=C
C1
C=C
Beispiel: verlustbehaftete elektrische Leitung
R1
ground
import Basic = Modelica.Electrical.Analog.Basic; parameter Integer n=4; Basic.Resistor Rvec[n] // 4 Widerstände equation for i in 1:n-1 loop connect(Rvec[i].n, Rvec[i+1].p); // Verbindungsdefinition end for;
Erlaubt komfortable Diskretisierung einfacher partieller Differentialgleichungen M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
28
3.7 Weitere Sprachelemente von Modelica • Prozedurale Teile (algorithm Sektion) • if, for, while • Funktionen (ähnlich wie Matlab m-Files) • Einbindung externer C-Funktionen (viel einfacher als bei Matlab) • Vererbung (extends) • Hierarchische Datenstrukturen (record) • Austauschbare Komponenten (replaceable/redeclare) • Physikalische Felder, wie elektrisches Feld (inner/outer; Art von globaler Var.) • Unstetige Systeme (when; Triggerung von Ereignissen durch Relationen) • Strukturvariable Systeme (Coulomb-Reibung, ideale Diode, ...) • Neuinitialisierung nach Ereignissen (reinit; z.B. Stoß) • Wahl von Zustandsvariablen (stateSelect = never, avoid, default, prefer, always) M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
29
4. Transformations-Algorithmen 4.1 Grundlagen Ausgangsgleichungssystem = alle Komponentengleichungen + alle Verbindungsgleichungen (connect) Dies ist ein differential-algebraisches Gleichungssystem (DAE: Differential-Algebraic Equation system):
0 = f (x& , x, y , t )
x: Variable, die abgeleitet auftreten y: algebraische Variable Transformation in Zustandsform
x& = f1 (x, t ) y = f 2 ( x, t )
d.h. löse nichtlineares algebraisches Gleichungssystem 0 = f ( x& , y ) nach den beiden unbekannten Vektoren Löse Zustandsform numerisch mit Standard-Integrationsverfahren
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
30
Beispiel: gegeben: C.u, L.i1, t + Konstanten (R1.R, ...) gesucht : dC.u /dt, dL.i1 /dt Dies sind 27 Gleichungen
für die 27 Unbekannten R1.i1 , R1.i2, R2.i1 , R2.i2, C.i1 , C.i2 , dL.i1/dt, L.i2 , S.i1 , S.i2 , g.i1 , g.v1
R1.v1, R1.v2 , R1.u, R2.v1, R2.v2, R2.u, C.v1 , C.v2 , dC.u/dt, L.v1 , L.v2 , L.u, S.v1 , S.v2 , S.u,
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
31
Symbolische Sortierung, Umformung, Elimination von Hilfsgrößen, Reduktion von algebraischen Gleichungssystemen mit speziellen Algorithmen führt auf rekursive Auswertungsvorschrift: R2.u R1.v1 L.u R1.u C.i1 dL.i1 /dt dC.u /dt
:= R2.R*L.i1 := S.A*sin(S.w*t) := R1.v1 - R2.u := R1.v1 - C.u := R1.u / R1.R := L.u / L.L := C.i1 / C.C
Algorithmen sind für große Systeme geeignet (z.B. Dymola: > 100 000 Gleichungen)
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
32
4.2 Singuläre Systeme (DAE's mit höherem Index) Um in die Zustandsform transformieren zu können müssen eventuell Teile der Modellgleichungen differenziert werden. Dies ist immer dann notwendig, wenn Zahl der Zustände vom Gesamtsystem < Summe der Zustände der Komponenten Beispiele: lokale Zustände
1
Zwangsbedingung: u1
1
u1
u2
= u2
Zahl der Zustände vom Gesamtsystem: 1
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
33
lokale Zustände
2
2 Zahl der Zustände vom Gesamtsystem: 2
ideales Getriebe mit starrer mechanischer Kopplung
Solche Systeme treten bei der objektorientierten Modellierung sehr leicht auf. Diese werde in Dymola vollautomatisch behandelt, d.h., die zu differenzierenden Gleichungen werden ermittelt, genügend of analytisch differenziert und die Zahl der Zustände wird automatisiert reduziert (Algorithmen von Pantelides, sowie Mattsson und Söderlind)
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
34
4.3 Transformations-Algorithmen bei Dymola 1. Singuläre Systeme: Gleichungen symbolisch differenzieren + möglichst viele Zustände “statisch” festlegen. Verbleibende Zustände während der Simulation numerisch ausgewählen (Pantelides/Dummy-Derivative Methode). 2. Gleichungen sortieren, so dass möglichst kleine, voneinander entkoppelte algebraische Gleichungssysteme entstehen (BLT). 3. Dimensionen der algebraischen Gleichungssysteme durch “intelligente” Variablensubstitution reduzieren (Tearing). Wenn Dimension=1 und System linear, Gleichung symbolisch lösen. 4. Verbleibende algebraische Gleichungen während der Simulation numerisch lösen (verwende linearen Löser, wenn Gleichungen linear in den Unbekannten sind). 5. Reell/Boolsche Gleichungssysteme (Reibung/ideale Diode etc.) mit speziellen numerischen Verfahren an Ereignispunkten lösen (um neue Systemstruktur zu ermitteln) 6. Gleichungen umordnen, so dass “konstante” Teile nur einmal, am Beginn der Simulation, und “Ausgangsgleichungen” nur an Ausgabepunkten ausgewertet werden. 7. LU-Zerlegung von linearen algebraischen Gleichungssystemen mit fester Koeffizientenmatrix nur einmal, am Beginn der Simulation, durchführen (= sehr effiziente Lösung). 8. Wenn gewünscht, die Zahlenwerte von Parametern bei der Transformation ausnützen. Beispiel: L = sqrt(n’*n) wird vereinfacht zu: L= 1, wenn n=[1;0;0]. Bei 3D-mechanischen Systemen wird dadurch Zahl der Operationen in der Regel um 3 .. 10 reduziert. 9. Wenn gewünscht, Differentialgleichungen diskretisieren ("Inline Integration") und diskretisierte Gleichungen mit obigen Algorithmen lösen (für Echtzeit-Simulation "steifer" Systeme). M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
35
5. Unstetige und Strukturvariable Systeme y
Beispiel:
Modelica:
Relation triggert Ereignis
y = if u > 0 then 1 else -1;
u
y,u
y = y(t+)
6
stetige Fortsetzung zur Detektierung des Umschaltpunktes
7
y
t
u 1 Integratorschritte
Ereignis 2
3
5 4 pre(y) = y(t-)
Ein Modell behält solange den gewählten if-Zweig bei, bis der Zeitpunkt der Änderung der ifBedingung detektiert wurde. (kann mit noEvent(..) abgeschaltet werden).
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
36
Eine der Stärken von Modelica und Dymola: Strukturvariable Systeme: Wichtige strukturvariable Komponenten sind in Bibliotheken verfügbar und können direkt angewendet werden.
Beispiel: Komponenten basierend auf Coulomb-Reibung mit Modellierung der Haft/Gleiteffekte. XXX.mode = 2: friction is not active = 1: forward sliding = 0: stuck (no relative motion) = -1: backward slidingd
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
37
Beispiel: Automatik-Getriebe mit 6 Kupplungen (Reibelementen)
Kupplung Modelica Modell M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
38
Beispiel: ideales Diodenmodell idealisiertes Modell detailliertes Modell (schnellere Simulation)
i
i
i
i = f(u)
i = g(u)
u u
u
i
Beispiel: ideales Thyristormodell ig, fire i i ig > 0
s>0
u
u
s0
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
u
39
Beispiel: Implementierung eines idealen Diodenmodells in Modelica
i1 v1 i1 s
i2 v2
u u
= v1 - v2
0
= i1 + i2
off = s < 0
s
s=0
u
u
= if off then 0 else s
i1 = if off then s else 0
parametrisierte Kurvendarstellung: u = u(s) i = i(s)
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
40
Beispiel: Gleichrichter-Schaltkreis mit 4 idealen Diodenmodellen An einem Ereignispunkt müssen 8 Gleichungen in 4 Real Unbekannten s1, s2, s3, s4 und 4 Boolean Unbekannten m1, m2, m3, m4 gelöst werden, um den Schaltzustand der idealen Dioden zu ermitteln (Einsatz spezieller Algorithmen in Dymola): m1 = s1 < 0 m2 = s2 < 0 m3 = s3 < 0 m4 = s4 < 0 0 m1 m 1 +1− m 1 R1 m −1 1
0 m2 m4 s − uC 1 0 − m2 − m4 s m3 2 ⋅ = u0 − m2 0 s3 m3 − 1 R1 R1 s 0 m2 − 1 1 − m3 − m4 4
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
41
6. Zusammenfassung Mit Modelica (= Sprache) und Dymola (= Modelica Simulationsumgebung) können Modelle anwendungsnah mit Objektdiagrammen definiert und simuliert werden, wenn die Modelle durch • Differentialgleichungen und/oder • algebraischen Gleichungen und/oder • diskreten Gleichungen (Abtastregler etc.) und/oder • einfache partielle Differentialgleichungen mathematisch beschrieben werden können. Die Code-Erzeugung von Dymola hat insbesondere Optionen zum Export von Modellen nach SIMULINK (= am weitesten verbreitetes “allgemeines” Simulationsprogramm) und zur Echtzeitsimulation (z.B. spezielle Integrationsverfahren mit fester Schrittweite für steife Systeme).
M. Otter: Objektorientierte Modellierung mit Modelica und Dymola, ETH Zürich, 11. 12. 2003
42