Inhalt der 1. Vorlesung
Inhalt der 1. Vorlesung
Inhalt der 1. Vorlesung
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Simulation von elektromechanischen Systemen<br />
und<br />
Objektorientierte Modellierung mechatronischer Systeme<br />
Prof. Dr.-Ing. Martin Otter (DLR)<br />
<strong>1.</strong> <strong>Vorlesung</strong><br />
Veranstaltet vom Lehrstuhl für Elektr. Antriebssysteme und Leistungselektronik (Prof. Kennel), TU München<br />
Dozent: Prof. M. Otter: Tel. 08153/28-2473, Martin.Otter@dlr.de,<br />
www.robotic.dlr.de/Martin.Otter/vorlesung.html<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 1<br />
<strong>1.</strong> <strong>Vorlesung</strong>sübersicht<br />
2. Übersicht “objektorientierte Modellierung”<br />
3. Objektdiagramme<br />
<strong>Inhalt</strong> <strong>der</strong> <strong>1.</strong> <strong>Vorlesung</strong><br />
4. Modelica Bibliotheken<br />
Rechnerübung<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 2
zwischen Gilching und Weßling<br />
Deutsches Zentrum für Luft- und Raumfahrt (DLR)<br />
Institut für Robotik und Mechatronik<br />
www.robotic.dlr.de<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 3<br />
<strong>1.</strong> <strong>Vorlesung</strong>sübersicht<br />
Multidisziplinäre Modellierung und Simulation<br />
großer Systeme mit mechanischen, elektrischen,<br />
thermischen, strömungsmechanischen und<br />
regelungstechnischen Komponenten im Hinblick<br />
auf Hardware-in-the-Loop Simulation und<br />
„embedded control“.<br />
DLR Weltraumroboter<br />
(ROKVISS auf ISS)<br />
KUKA Industrieroboter<br />
Justin (mobile Plattform mit zwei DLR Leichtbaurobotern)<br />
KUKA/DLR Bewegungssimulator<br />
Fahrzeuggesamtmodell<br />
Echtzeitmodell flexibles Flugzeug<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 4
Energy landscape (ABB/DLR): power plant + wind turbines + hydropower +<br />
distribution of electric power + consumers<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 5<br />
Beispiel: detailliertes Fahrzeugmodell (1)<br />
• Fahrzeugdynamik (3-dim. Mechanik)<br />
• Antriebsstrang (1-dim. Mechanik)<br />
• Hydraulik<br />
• Verbrennung<br />
• Klimaanlage<br />
(Thermofluid Systeme)<br />
• Elektrische/elektronische Systeme<br />
• Hierarchische Zustandsmaschinen<br />
• Regler (Ein/Ausgangsblöcke, ...)<br />
• ...<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 6
Beispiel: detailliertes Fahrzeugmodell (2)<br />
courtesy DLR/Vires<br />
Modelica Gesamtfahrzeugmodell<br />
Verbrennungsmotor<br />
Automatik Getriebe<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 7<br />
kontinuierliche Systeme Theorie unstetige/strukturvariable Systeme<br />
Objektdiagramm<br />
Differential-algebraische Gleichungen (DAE)<br />
DAE und Zustandsform<br />
Konsistente Anfangswerte einer DAE<br />
Index einer DAE, singuläre DAEs<br />
Integrationsverfahren<br />
<strong>Vorlesung</strong>sübersicht<br />
Anwendungen<br />
Zeit- und Zustandsereignisse<br />
Synchronisierung von Ereignissen<br />
hierarchische Zustandsmaschinen<br />
viele ideale Schaltelemente<br />
Reel/Bool'sche Gleichungssysteme<br />
Modelica (Sprache) und Dymola (Programm)<br />
elektrische Systeme/Motoren, Antriebsstränge,<br />
3-dim. Mechanik, Wärmeleitung.<br />
Ein/Ausgangsblöcke<br />
Inverse Modelle für die Regelung<br />
Schaltende Elemente (Diode, Thyristor, Reibung, Kupplung, ...)<br />
Echtzeit-Anwendungen<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 8
In <strong>der</strong> <strong>Vorlesung</strong> + Übung:<br />
Dymola (da mo<strong>der</strong>nstes multi-disziplinäres Simulationsprogramm).<br />
Oft: Modellierung komplexer Teile in Dymola -> Import in Simulink<br />
(Simulink ist weit verbreitet, sehr gut für regelungstechnische Aufgaben)<br />
Betreute Rechnerübungen mit Dymola finden im Raum 1903 statt.<br />
Hier gibt es 20 PCs an denen jeweils 2 Studenten arbeiten können.<br />
Übung nach <strong>der</strong> <strong>Vorlesung</strong>, betreut von mir.<br />
Studenten <strong>der</strong> <strong>Vorlesung</strong> erhalten die neueste Version Dymola 7.4 um die<br />
Rechnerübungen auch daheim bearbeiten zu können. Dies ist eine eingeschränkte<br />
Studentenversion (Dymola Student-Learn License).<br />
Diese wird aus Mitteln <strong>der</strong> Studienbeiträge bezahlt.<br />
Details werden in <strong>der</strong> ersten <strong>Vorlesung</strong>sstunde mitgeteilt.<br />
Voraussetzungen:<br />
Windows XP, Vista, 7 (kein Linux)<br />
Die Lizenz ist für ein Jahr gültig (nicht übertragbar, nur für Ausbildungszwecke).<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 9<br />
<strong>Vorlesung</strong>sunterlagen<br />
Werden als pdf-Files auf meiner DLR Web-Seite zur Verfügung gestellt<br />
(http://www.robotic.dlr.de/Martin.Otter/vorlesung.html)<br />
• Kopien <strong>der</strong> Vortragsfolien<br />
• <strong>Vorlesung</strong>sskript (pdf-File; weitere Version: Anfang Jan.)<br />
• Musterlösungen <strong>der</strong> Übungen + typische Prüfungsaufgaben (im Dez.)<br />
Bücher zur <strong>Vorlesung</strong>:<br />
• D. Schrö<strong>der</strong>: Elektrische Antriebe - Regelung von Antriebssystemen.<br />
3. Auflage, Kapitel 21 von M. Otter,<br />
"Objektorientierte Modellierung von Antriebssystemen” S. 1049 - 1165,<br />
Springer Verlag 2009 (http://www.springer.de/, 140 €)<br />
• M. Tiller: Introduction to Physical Modeling with Modelica.<br />
Kluwer Academic Publisher, 2001, ca. 150 €<br />
(http://www.Dynasim.se/Tiller/BookInfoPage/)<br />
• P. Fritzson: Principles of Object Oriented Modeling and Simulation with<br />
Modelica. 940 Seiten, Wiley-IEEE press, Jan. 2005.<br />
ISBN 0-471-47163-1, ca. 55 €<br />
• F. Cellier, E. Kofman: Continuous System Simulation.<br />
Springer Verlag, Dez. 2005 (53,45 €).<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 10
2. Übersicht “objektorientierte Modellierung”<br />
Warum Simulation in <strong>der</strong> Industrie?<br />
Qualität eines Produkts verbessern<br />
(schneller, sicherer, vibrationsärmer, ...).<br />
Herstellungskosten senken<br />
(mehr „Elektronik“, weniger „Mechanik“).<br />
Entwicklungs-Zeit und -Kosten verringern.<br />
(weniger reale Versuche, „first shot“ approach).<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 11<br />
Wie?<br />
Schnelles Ausprobieren verschiedener Varianten<br />
(z.B. bessere Reglerstruktur, Reglereinstellung).<br />
Test-Automatisierung<br />
(z.B. um neue Version eines Steuergeräts zu überprüfen)<br />
Entwurfsoptimierung<br />
(basierend auf Simulationen ermittelt ein Optimierer verbesserte<br />
Parameter).<br />
Fehler-Situationen überprüfen, die in realen Versuchen schwierig o<strong>der</strong><br />
gefährlich sind.<br />
Ursachen von Fehlern im Produkt lokalisieren<br />
(z.B. warum vibriert das Teil zu stark?)<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 12
Erstellung eines Gesamtmodells von einem Produkt inklusive<br />
Ermittlung <strong>der</strong> Modell-Parameter ist zeitaufwendig und teuer<br />
wird selten gemacht<br />
Oft besser: Hardware-in-the-Loop Simulation<br />
Meßgröße<br />
Hardware<br />
Simulation (Umgebung)<br />
Umgebung muß in „Echtzeit“ simuliert werden<br />
Stellgröße<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 13<br />
Beispiel: Antriebsstrang mit Automatikgetriebe<br />
(Simulation)<br />
Steuergerät<br />
(Hardware)<br />
Courtesy ZF Friedrichshafen<br />
Solldruck <strong>der</strong> Kupplungen<br />
+ Motor + Kupplung +<br />
KFZ-Längsmodell<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 14
Vorteile <strong>der</strong> Hardware-in-the-Loop Simulation:<br />
Kein Modell <strong>der</strong> „Hardware“ notwendig bzw.<br />
„echte“ Hardware ist „bestes“ Modell.<br />
Verbesserung <strong>der</strong> Inbetriebnahme:<br />
Automatisierte Funktions- und Fehlertests <strong>der</strong> Hardware<br />
Schnelle Simulationen, d.h., es können viele Varianten durchprobiert<br />
werden (Online Tuning von Parametern, Online-Optimierung)<br />
aber:<br />
Schwierig Umgebung in „Echtzeit“zusimulieren.<br />
Beispiele:<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 15<br />
Umgebung (in Echtzeit zu simulieren) Echtzeit<br />
Elektrisches Leitungsnetz und Generatoren<br />
für Regeleinrichtung + Überwachung<br />
10 �s<br />
Bremse + KFZ-Mechanik für ABS-Regler 1 ms<br />
Automatikgetriebe für Ansteuerelektronik 5 ms<br />
Satellit für Lageregelungssystem 100 ms<br />
Verfahrenstechnische Prozesse 1 s - 1 h<br />
Durchdringung zweier Galaxien 10 6 Jahre<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 16
Eingesetzte Hardware für die Echtzeit-Simulation. Zum Beispiel:<br />
dSPACE (http://www.dspace.de/)<br />
z.B. PowerPC, 1 GHz ("Overrun" möglich, viele Interfaces)<br />
MathWorks (http://www.mathworks.com/products/xpctarget)<br />
Echtzeit-Kernel auf zweitem PC (beliebiger PentiumPC)<br />
z.B. Intel 3 GHz<br />
SYSCON (http://www.syscongroup.de/)<br />
Real-time Linux auf zweitem PC (beliebiger Pentium PC)<br />
z.B. Intel 3 GHz (kostengünstig)<br />
CARTS Realtime Solutions GmbH (http://www.carts.de)<br />
VME-Bus Rechnerverbund + Ansteuerung über Windows PC<br />
(insbeson<strong>der</strong>e geeignet für viele parallele Rechner;<br />
z.B. bei VW: 15 Rechner für Echtzeitmodell von Gesamtfahrzeug)<br />
Opal-RT (http://www.opal-rt.com/)<br />
Echtzeit-Kernel auf zweitem PC (Parallelrechner werden unterstützt)<br />
Man beachte, das Windows-Betriebssystem ist für Echtzeitanwendungen nicht geeignet!<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 17<br />
Model/Software-in-the-Loop Simulation<br />
Trend:<br />
Weg von Hardware-in-the-Loop Simulation, hin zu<br />
• Software-in-the-Loop<br />
Die Original C-Code Steuergeräte Software wird direkt im<br />
Simulationsmodell verwendet.<br />
• Model-in-the-Loop<br />
Die Steuergeräte-Software liegt als Simulationsmodell vor<br />
(z.B. Simulink Regler/Zustandsmaschine) und kann<br />
– direkt im Simulationsmodell verwendet werden<br />
– direkt zur C-Code Erzeugung <strong>der</strong> Steuergeräte-Software<br />
benutzt werden.<br />
Vorteile: • Viel früher im Entwicklungsprozess einsetzbar<br />
(z.B. Steuergeräte Hardware muss noch nicht verfügbar sein)<br />
• Kostengünstiger<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 18
Modellierung mechatronischer Systeme erfor<strong>der</strong>t:<br />
Mechanik (Antriebsstränge, 3D-Mechanik)<br />
Elektrotechnik (Motoren, Leistungselektronik, ...)<br />
Hydraulik (Pumpen, Zylin<strong>der</strong>, ...)<br />
Thermodynamik (Wärmeübertragung, ...)<br />
Strömungsmechanik (Kühlsysteme, Klimaanlage, ...)<br />
Regelungstechnik (Blockschaltbil<strong>der</strong>)<br />
Steuerungstechnik (hierarchische Zustandsmaschinen)<br />
...<br />
Objektorientierte Modellierung<br />
Alles in einer Umgebung mit einer Sprache<br />
keine Spezialsoftware für ein Fachgebiet<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 19<br />
Objektorientierte Modellierung<br />
(im Sinne von Komponenten/Geräte-orientierte Modellierung)<br />
Neu Technik zur multidisziplinären Modellierung komplexer Systeme.<br />
1978 von Hilding Elmqvist am Lund Institute of Technology,<br />
Department of Automatic Control, Lund Schweden, entwickelt.<br />
Seit 1992 eigene Firma (Dynasim) zur Weiterentwicklung von Dymola.<br />
Weitere Entwicklungen seit 1990 von Forschungsgruppen<br />
(Lund Institute of Technology, Royal Institute of Technology Stockholm,<br />
Gaz de France Paris, Imperial College London, GMD Berlin, DLR, ...)<br />
• Transformations-Algorithmen<br />
• Modellierungssprachen<br />
• Modell-Bibliotheken<br />
• Anwendungen<br />
Modelica Initiative 1996:<br />
Verbesserung und Standardisierung <strong>der</strong> objekt-orientierten<br />
Modellierungssprachen und Bibliotheken<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 20
Ziel von Modelica:<br />
Verhaltensmodellierung technischer Systeme<br />
die aus mechanischen, elektrischen, thermischen,<br />
hydraulischen, pneumatischen, regelungstechnischen<br />
und an<strong>der</strong>en Komponenten bestehen.<br />
Modelle werden durch<br />
Differentialgleichungen,<br />
algebraische, und diskrete Gleichungen<br />
beschrieben.<br />
Keine (direkte) Beschreibung von partiellen Differentialgleichungen, d.h.,<br />
kein FEM (finite element method) und<br />
kein CFD (computational fluid dynamics).<br />
Ergebnisse von z.B. FEM können aber genutzt werden.<br />
Einfach diskretisierbare partielle Differentialgleichungen können in<br />
Modelica beschrieben werden (z.B. 1-dim. finite Volumen-Methode)<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 21<br />
Modelica und die Modelica Association<br />
http://www.Modelica.org<br />
• Modelica ist eine freie Modellierungssprache und wird von <strong>der</strong> (non-profit)<br />
Modelica Association seit 1996 entwickelt<br />
2000: Erste Anwendungen<br />
2005: Modelica 2.2<br />
2007: Modelica 3.0<br />
2009: Modelica 3.1<br />
2010: Modelica 3.2 (aktuell)<br />
50. Design Meeting in Wien, Sept. 2006<br />
• Modelica Modelle werden mathematisch durch Differentialgleichungen,<br />
algebraische und diskrete Gleichungen beschrieben.<br />
• Die Modelica Association entwickelt auch die größte freie Bibliothek für<br />
multi-disziplinäre Modelle (Modelica Standard Library)<br />
• Alle Infos unter www.Modelica.org<br />
(Sprach-Spezifikation, Simulationsumgebungen, freie Bibliotheken, Papers, ...)<br />
• Weit verbreitet z.B. in Fahrzeugindustrie (BMW, Daimler, Toyota, Ford, ...)<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 22
Modelica-Sprache und Modelica Simulations-Umgebungen<br />
Graphischer Editor<br />
für Modelica Modelle<br />
Textuelle Beschreibung<br />
auf File (Gleichungen,<br />
"schematic", Animation)<br />
Übersetzung von Modelica<br />
Modellen in C-Code,<br />
Simulation, und<br />
interaktives Scripting<br />
(plot, freq. resp., ...)<br />
Modelica Simulations-<br />
Umgebung (z.B. Dymola)<br />
Freie Modelica-Sprache<br />
Modelica Simulations-<br />
Umgebung (z.B. Dymola)<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 23<br />
Modelica Simulations-Umgebungen<br />
Kommerzielle Modelica Umgebungen<br />
CATIA Systems von Dassault Systèmes (Dymola mit PLM Integration)<br />
Dymola von Dynasim, Schweden (2006 von Dassault Systèmes aufgekauft).<br />
SimulationX von ITI GmbH, Dresden, BRD<br />
MapleSim von Maplesoft, Waterloo, Kanada<br />
MathModelica von MathCore AB, Schweden.<br />
AMESim von Imagine, Frankreich (in Entwicklung).<br />
AMESim wurde 2007 von LMS International aufgekauft.<br />
Freie Modelica Umgebungen<br />
OpenModelica von Linköping Universität, Schweden<br />
(in Entwicklung, Untermenge von Modelica verfügbar)<br />
SCICOS von INRIA, Frankreich<br />
(in Entwicklung, Untermenge von Modelica verfügbar).<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 24
Verbindung<br />
Schnittstelle<br />
3. Objektdiagramme<br />
Komponente<br />
• Jedes Icon repräsentiert eine physikalische Komponente.<br />
z.B. elektrischer Wi<strong>der</strong>stand, mechanisches Getriebe, Pumpe<br />
• Die Verbindungslinien repräsentieren die aktuelle<br />
physikalische Verbindung. Z.B. elektrisches Kabel,<br />
starre mechanische Verbindung, Wärmefluß.<br />
• Eine Komponente besteht aus verbundenen Sub-Komponenten<br />
(= hierarchische Struktur) und/o<strong>der</strong> wird durch Gleichungen beschrieben.<br />
• Mit symbolischen Algorithmen, wird die "high level" Modelica Beschreibung<br />
in die Zustandsform transformiert (dx/dt = f(x, t))<br />
Graphics editing tools<br />
Package browser<br />
Component browser<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 25<br />
Drag & drop Modellierung mit Dymola<br />
Drag and drop<br />
Diagram layer<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 26
Übersetzung (Modelica → C → Object-code) + Simulation + Plots<br />
Plot selection<br />
Change initial<br />
condition<br />
Change parameter<br />
Export nach Simulink<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 27<br />
Modelica-Modelle, die Ein- und Ausgangssignale besitzen, können mit Dymola<br />
in Simulink in Form eines S-Function C-Mex Files einfach eingebunden<br />
werden (Simulink Export-Lizenz):<br />
in Dymola<br />
in SIMULINK<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 28
model Resistor<br />
extends OnePort;<br />
parameter Real R;<br />
equation<br />
v = R*i;<br />
end Resistor;<br />
Beispiel: Industrie-Roboter (DLR, Dynasim, KUKA)<br />
(von Modelica.Mechanics.MultiBody.Examples.Systems.RobotR3.fullRobot)<br />
1000 nichttriviale algebraische Gleichungen, 80 Zustände.<br />
mit “Mixed-Mode Integration”:<br />
schneller als Echtzeit auf 650 Mhz PC.<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 29<br />
Beispiel: Hardware-in-the-Loop Simulation von Automatikgetrieben<br />
(verschiedene KFZ Hersteller)<br />
Steuergerät<br />
(Hardware)<br />
(Simulation)<br />
gewünschter Druck<br />
Courtesy ZF Friedrichshafen<br />
+ Fahrer + Motor + Wandler +<br />
1D Fahrzeugdynamik<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 30
3D-Mechanik<br />
(60 Gelenke, 70 Körper)<br />
Motor (Verbrennung)<br />
Beispiel: Grosses, detailliertes Fahrzeugmodell<br />
(Ford, Dynasim, DLR; SAE paper 2001-01-0334)<br />
Antriebsstrang<br />
(Automatik-Getriebe)<br />
• 25000 nichttriviale algebraische<br />
Gleichungen<br />
• 320 Zustände<br />
Hydraulik<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 31<br />
Beispiel: Autopilot zum automatischen Landen<br />
(EU-Projekt REAL: Airbus, Delft University, DLR, NLR, ONERA)<br />
• Entwicklung einer Technologie um<br />
Autopiloten schneller zu entwerfen<br />
• Regler enthält im Kern ein<br />
nichtlineares Flugzeug-Dynamik<br />
Modell als inverses Modell.<br />
Eingänge sind<br />
gegeben<br />
Modell<br />
Flugzeugmodell<br />
Flugzeugmodell<br />
Eingänge<br />
werden berechnet<br />
Inverses Modell<br />
Ausgänge werden<br />
berechnet<br />
Ausgänge sind<br />
gegeben<br />
Dymola Modell ist Teil des Reglers<br />
6 Flugtests mit ATTAS<br />
(Forschungsflugzeug von DLR)<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 32
Benutzung von "inversen" nichtlinearen Modellen<br />
Details siehe (wird auch in <strong>der</strong> <strong>Vorlesung</strong> besprochen):<br />
www.modelica.org/events/Conference2005/online_proceedings/Session3/Session3c3.pdf<br />
y c,d(t)<br />
reference<br />
model<br />
controller<br />
(p)<br />
y cr,d,y cr,d..,y cr,d<br />
inverse<br />
plant model<br />
y m,d<br />
yc,d controller<br />
feedback inverse u<br />
controller plant model<br />
Controller<br />
-<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 33<br />
e<br />
feedback<br />
controller<br />
u c<br />
u d<br />
u<br />
plant<br />
Example:inverse model in feedforward path<br />
plant<br />
y m<br />
Example: inverse model in feedback path<br />
Beispiel: Fahrzeug Klimaanlage<br />
(Modelon; Einsatz u.a. bei allen deutschen KFZ Firmen)<br />
Accumulator<br />
Expansion<br />
valve<br />
Evaporator<br />
Condenser<br />
Sensor<br />
Compressor<br />
Pipe<br />
courtesy Modelon AB<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 34<br />
y c<br />
y m
4. Verfügbare Modelica Bibliotheken<br />
aktuellste Versionen unter www.Modelica.org/libraries<br />
Library „Modelica“istdie<br />
Modelica Standard Library<br />
die von <strong>der</strong> Modelica Association entwickelt wird.<br />
Sie ist frei im Quelltext verfügbar und kann modifiziert und<br />
in kommerziellen Programmen eingesetzt werden.<br />
Alle 6 .. 12 Monate gibt es eine verbesserte Version.<br />
In Dymola 7.4: Version 3.1 von Aug. 2009:<br />
920 models and blocks<br />
620 functions<br />
1450 packages (vor allem Media Definitionen)<br />
Neue Version Ende Oktober 2010 (benötigt Dymola 7.5)<br />
mit 1280 models and blocks + 910 functions;<br />
enthält u.a. neue Subbibliothek “Spice3”.<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 35<br />
Library Modelica: Elektrische und magnetische Unterbibliotheken<br />
Analoge elektrische und elektronische Komponenten, wie<br />
resistor, capacitor, transformers, diodes, transistors, transmission<br />
lines, switches, sources, sensors.<br />
Digitale elektrische Komponenten basierend auf VHDL<br />
Standard, wie basic logic blocks with 9-value logic, delays,<br />
gates, sources, converters between 2-, 3-, 4-, and 9-valued logic.<br />
Elektrische Maschinen<br />
(asynchronous-, synchronous-, DC-motors and generators)<br />
Elektro-magnetische Komponenten<br />
"lumped" magnetische Netzwerke, mag. Quellen,<br />
Sensoren, Wandler, magnetische Materialen.<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 36
Library Modelica: Fluid und Media-Unterbibliotheken<br />
Dichte als Funktion von Druck und Enthalpy (für Wasser)<br />
Große Media Bibliothek mit<br />
- 1240 Gasen und Gasgemischen.<br />
- Tabellen-basierte Media (h = h(T), etc.)<br />
- sehr detailliertes Wassermodell (IF97)<br />
- feuchte Luft.<br />
Allgemeine Bibliothek für Rohrströmungen für alle<br />
Medien von Modelica.Media<br />
• ein und mehrere Substanzen<br />
• ein und mehrere (homogene) Phasen<br />
• inkompressibel und kompressibel<br />
Einfache thermo-fluid Rohrströmungen, insbeson<strong>der</strong>e um<br />
Kühlsysteme für Maschinen (Wasser/Luft) zu modellieren<br />
(pipes, pumps, valves, ambient, sensors, sources) und<br />
Wärmeleitung mit heat capacitors, thermal conductors,<br />
convection, body radiation, sources and sensors.<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 37<br />
Library Modelica: Mechanische Unterbibliotheken<br />
3-dim. mechanische Systeme bestehend aus<br />
joints, bodies, force and sensor elements.<br />
Gelenke können mit Antriebsstränge <strong>der</strong> 1-dim.<br />
mechanischen System-Bibliothek angetrieben<br />
werden.<br />
1-dim. rot. mechanische Systeme, z.B.,<br />
Antriebsstränge, Planetengetriebe<br />
einfache Definition Momenten/Geschw.abhängiger<br />
Reibung (clutches, brakes, ..)<br />
1-dim. trans, mechanische Systeme, z.B.,<br />
Masse, Masse mit Anschlag, Kraftelemente,<br />
Reibung, Bremse, Getriebe, ...<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 38
Library Modelica: Regelung und Script Unterbibliotheken<br />
A = [1,2,3;<br />
3,4,5;<br />
2,1,4];<br />
b = {10,22,12};<br />
x = Matrices.solve(A,b);<br />
Matrices.eigenValues(A);<br />
Kontinuierliche und diskrete input/output<br />
Blöcke (Modelica_LinearSystems2). Einfach<br />
umschaltbar zwischen kontinuierlicher und<br />
diskreter Block-Beschreibung, d.h. zwischen<br />
"schnellen" und "detaillierten" Modellen.<br />
Hierarchische Zustandsmaschinen mit ähnlicher<br />
Mächtigkeit wie Statecharts. Modelica wird als<br />
synchrone "action language" benutzt, so dass<br />
deterministisches Verhalten garantiert ist (in <strong>der</strong><br />
Regel bei Statecharts nicht <strong>der</strong> Fall)<br />
Logische Blöcke wie "and, or, edge, timer, ", ...<br />
Funktionen auf Matrizen, z.B., zum Lösen von<br />
linearen Systemen, Berechnung von<br />
Eigenwerten, singulären Werten etc.<br />
und Funkionen die auf strings, streams, files,<br />
operieren, z.B. File kopieren o<strong>der</strong> löschen.<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 39<br />
Überblick über 30 Bibliotheken: www.modelica.org/ModelicaLibrariesOverview<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 40
Details (mit Download) unter www.Modelica.org/libraries<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 41<br />
Kommerzielle Bibliotheken (Auswahl)<br />
HyLib (hydraulische Systeme)<br />
PneuLib (pneumatische Systeme)<br />
AirConditioning (Klimaanlagen)<br />
PowerTrain<br />
VehicleDynamics<br />
SmartElectricDrives<br />
FlexibleBodies<br />
Import/Export<br />
Simulink → Modelica (Simelica)<br />
Modelica → Simulink (Dymola option)<br />
M. Otter: Simulation von elektromechanischen Systemen, <strong>1.</strong> <strong>Vorlesung</strong> 42
Simulation von elektromechanischen Systemen<br />
und<br />
Objektorientierte Modellierung mechatronischer Systeme<br />
Prof. Dr.-Ing. Martin Otter (DLR)<br />
2. <strong>Vorlesung</strong><br />
Veranstaltet vom Lehrstuhl für Elektr. Antriebssysteme und Leistungselektronik (Prof. Kennel), TU München<br />
Dozent: Prof. M. Otter: Tel. 08153/28-2473, Martin.Otter@dlr.de,<br />
www.robotic.dlr.de/Martin.Otter/vorlesung.html<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
<strong>Inhalt</strong> <strong>der</strong> 2. <strong>Vorlesung</strong><br />
<strong>1.</strong> Gleichungsorientierte Modellierung<br />
2. Grundlagen <strong>der</strong> objekt-orientierten Modellierung<br />
am Beispiel eines elektrischen Schaltkreises<br />
3. Grundlagen <strong>der</strong> objekt-orientierten Modellierung<br />
am Beispiel eines mechanischen Systems (Übung)<br />
Rechnerübung<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
1<br />
2
<strong>1.</strong> Gleichungsorientierte Modellierung<br />
Objektorientierte Modellierungssprachen basieren auf Gleichungen,<br />
im Gegensatz zu Blockdiagrammen, die auf Zuweisungen basieren.<br />
z.B.<br />
Gleichungsorientierte Modellierungssprachen:<br />
i 2<br />
i 1<br />
• Modelica (www.Modelica.org)<br />
Wird in <strong>der</strong> <strong>Vorlesung</strong> benutzt. Einsatz vor allem in <strong>der</strong> Mechatronik.<br />
• VHDL-AMS (www.eda.org/twiki/bin/view.cgi/P10761/WebHome)<br />
Abkürzung steht für “Very high speed integrated circuits Hardware<br />
Description Language - Analog and Mixed Signals”.<br />
IEEE-Standard. Einsatz vor allem in <strong>der</strong> Elektronik.<br />
• gPROMS (www.psenterprise.com/gproms)<br />
Einsatz in <strong>der</strong> Prozess-Simulation (Verfahrenstechnik)<br />
i 3<br />
i 4<br />
Ohm’sches Gesetz:<br />
i<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
Allgemeine Form (bei Modelica, VHDL-AMS, gPROMS, ...):<br />
expression = expression<br />
Summe <strong>der</strong> einfließenden Ströme = Summe <strong>der</strong> ausfließenden Ströme<br />
R<br />
i � i � i � i<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
1<br />
2<br />
lokal ist nicht bekannt, nach welcher Variable die<br />
Gleichung aufgelöst werden sollte<br />
i<br />
u � R �i<br />
R �i<br />
� u<br />
i � u / R<br />
u 0 � u � R �i<br />
3<br />
4<br />
gleichwertige Formulierungen.<br />
Welche ist die “Beste”?<br />
3<br />
4
Ziel: Modell automatisiert in Zustandsform transformieren, da hierfür<br />
sehr gute numerische Lösungsverfahren zur Verfügung stehen<br />
Beispiel 1:<br />
u R<br />
� R �i<br />
u u<br />
0<br />
C<br />
Beispiel 2:<br />
( ), ), ( ( ) ( x x x f x � �<br />
� t t t t t �<br />
du<br />
C �<br />
dt<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
u R<br />
� R �i<br />
u0 L u<br />
u<br />
u<br />
u<br />
R<br />
C<br />
0 )<br />
Ausgangsgleichungen<br />
� u<br />
R � C 0<br />
� R �i<br />
� i<br />
Zustandsform (x=u C):<br />
Ausgangsgleichungen<br />
R � L 0<br />
Zustandsform (x=i):<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
u<br />
u<br />
u<br />
R<br />
� u<br />
� R �i<br />
di<br />
L � � u<br />
dt<br />
L<br />
0<br />
dt<br />
Auswertungs-<br />
Reihenfolge<br />
uR<br />
: � u0<br />
� u<br />
i : � u / R<br />
du<br />
dt<br />
C<br />
R<br />
: � i / C<br />
duC C � 0<br />
:<br />
u � u<br />
R �C<br />
5<br />
di u � R �i<br />
�<br />
dt L<br />
0 :<br />
6<br />
C<br />
Auswertungs-<br />
Reihenfolge<br />
u<br />
u<br />
R<br />
L<br />
: � R �i<br />
: � u<br />
di<br />
: � u<br />
dt<br />
0<br />
L<br />
� u<br />
/ L<br />
R
Beispiel 3:<br />
u0<br />
i1<br />
u1<br />
u2<br />
i2<br />
i3<br />
Erfor<strong>der</strong>t Lösung eines<br />
algebraischen Gleichungssystems<br />
y � u , u , u , i , i , i ]<br />
[ 1 2 3 1 2 3<br />
T<br />
u3<br />
Gleichungen können nicht auf eine rekursive<br />
Berechnungsvorschrift zur Berechnung <strong>der</strong><br />
Unbekannten überführt werden.<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
Ausgangsgleichungen<br />
u<br />
0 � f ( y,<br />
t)<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
1<br />
� u<br />
u<br />
u<br />
u<br />
i<br />
u<br />
2<br />
2<br />
1<br />
1<br />
2<br />
3<br />
� u<br />
� u<br />
� i<br />
2<br />
0<br />
3<br />
1<br />
� R<br />
2<br />
� R<br />
� i<br />
3<br />
1<br />
�i<br />
�i<br />
3<br />
� R �i<br />
2<br />
3<br />
0 � u<br />
0 � i<br />
1<br />
1<br />
0 � u<br />
0 � u<br />
2<br />
1<br />
0 � u<br />
0 � u<br />
� i<br />
2<br />
3<br />
� u<br />
2<br />
2<br />
� u<br />
3<br />
1<br />
� R<br />
� R<br />
� i<br />
2<br />
3<br />
� u<br />
3<br />
� R �i<br />
Zusammenfassung:<br />
An Hand von Beispielen wurde gezeigt, dass die Gleichungen einer<br />
physikalischen Komponente je nach Einsatzart nach unterschiedlichen<br />
Variablen aufgelöst werden muss.<br />
Implementierung in einer<br />
Komponente: Wi<strong>der</strong>stand Programmiersprache:<br />
u : � R �i<br />
i :� u /<br />
R<br />
0 � u � R �i<br />
u = f 1(R,i)<br />
i = f 2(R,u)<br />
1<br />
�i<br />
�i<br />
2<br />
3<br />
7<br />
Residuum = f 3(R,i,u)<br />
8<br />
0
Wenn die Gleichungen einer physikalischen Komponente mit einer<br />
Programmiersprache implementiert werden (FORTRAN, C, C++, C#, Java, ...),<br />
müssen unterschiedliche Unterprogramme für die benötigten aufgelösten<br />
Gleichungen zur Verfügung gestellt werden.<br />
Z.B. sind bei <strong>der</strong> Komponente "elektrischer Wi<strong>der</strong>stand"<br />
3 Funktionen erfor<strong>der</strong>lich (o<strong>der</strong> 3 Blöcke eines Blockschaltbilds)<br />
Aus diesem Grund:<br />
Bei gleichungsorientierten Sprachen werden nur die mathematischen<br />
Gleichungen von Komponenten angegeben, d.h. die Gleichungen werden<br />
in einer Form definiert.<br />
Das Simulationsprogramm formt diese Gleichungen so um,<br />
wie es die aktuelle Verschaltungsstruktur erfor<strong>der</strong>t!<br />
Blockschaltbild:<br />
elektrisch<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
v 1<br />
i 1<br />
v<br />
v<br />
i<br />
1<br />
v 3<br />
1<br />
1<br />
Verschaltung von Komponenten<br />
� v<br />
� v<br />
� i<br />
2<br />
2<br />
3<br />
� i<br />
3<br />
i 3<br />
v 2<br />
i 2<br />
� 0<br />
y 1<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
u 2<br />
1D-mechanisch<br />
s 2<br />
s 1<br />
s �<br />
s<br />
s<br />
1<br />
1<br />
� s<br />
s 3<br />
2<br />
3<br />
1<br />
u 2 = y 1<br />
9<br />
Verbindungsgleichung:<br />
f 1<br />
0 � f � f � f<br />
2<br />
3<br />
f 3<br />
f 2<br />
10
Gleichungsorientierte Modellierung: Drei Arten von Schnittstellen Variablen<br />
Potential-Variable Verbundene Variable sind identisch<br />
(potential, across, effort variable)<br />
Fluß-Variable Verbundene Variable erfüllen die<br />
Null-Summen-Gleichung<br />
(flow, through variable)<br />
Stream-Variable Komplexere Gleichung für bi-direktionale<br />
Fluid-Strömung (nur Modelica)<br />
In einer Komponenten-Schnittstelle muss definiert werden, welchen Typ<br />
jede Variable <strong>der</strong> Schnittstelle besitzt.<br />
Das Modellierungssystem kann dann jede Verbindung automatisch in<br />
eine Menge von Gleichungen umwandeln.<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
2. Grundlagen <strong>der</strong> objekt-orientierten Modellierung<br />
am Beispiel eines elektrischen Schaltkreises<br />
Aufbau einer Bibliothek von elektrischen Basiselementen:<br />
(elektr. Strom)<br />
(elektr. Potential)<br />
v 1<br />
Schnittstellen-Variablen:<br />
i 1 i2<br />
u<br />
v 2<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
0 = i 1 + i 2<br />
u = v 1 -v 2<br />
Potential-Variable v1 ,v2 Verbundene Variable sind identisch<br />
Fluss-Variable i1, i2 Verbundene Variable erfüllen die<br />
Null-Summen-Gleichung<br />
Wichtig:<br />
Einheitliche Definition <strong>der</strong> positiven Flußrichtung in allen Elementen.<br />
In <strong>der</strong> Regel: Positiver Fluß = Fluß in das Element gerichtet<br />
11<br />
12
Wie viele Gleichungen in einer Komponente?<br />
Bei einem Ein/Ausgangsblock (z.B. PT1 Block) ist es klar, wie viele<br />
Gleichungen benötigt werden: Alle Parameter und Eingangsgrößen sind<br />
bekannt. Für N weitere Variable werden N Gleichungen benötigt.<br />
Beispiel: Wi<strong>der</strong>stand<br />
u<br />
Zur Beschreibung des Wi<strong>der</strong>stands werden 5 Variablen verwendet<br />
(i1, i2, v1, v2, u). Wie viele Gleichungen werden benötigt?<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
i 1<br />
v 1<br />
Grundregel in Modelica ("balanced model"):<br />
Potential- und Flussvariable müssen immer paarweise auftreten, d.h.<br />
Zahl <strong>der</strong> Potential Variablen = Zahl <strong>der</strong> Flussvariablen.<br />
Entwe<strong>der</strong> Potential o<strong>der</strong> Flussvariable, sowie Eingangrößen werden durch die<br />
Verbindung von außen festgelegt. Deswegen:<br />
Zahl <strong>der</strong> Gleichungen = Unbekannte – Flussvariable<br />
Beim Wi<strong>der</strong>stand: 5 Unbekannte – 2 Flussvariable = 3 Gleichungen<br />
Wi<strong>der</strong>stand<br />
Kapazität<br />
Induktivität<br />
Spannungsquelle<br />
Erdung<br />
i 1<br />
i 1<br />
i 1<br />
i 1<br />
v 1<br />
v 1<br />
v 1<br />
v 1<br />
i 1<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
L<br />
C<br />
R<br />
u<br />
u<br />
u<br />
u<br />
v 1<br />
R<br />
i 2<br />
v 2<br />
i 2<br />
v 2<br />
i 2<br />
v 2<br />
i 2<br />
v 2<br />
i 2<br />
v 2<br />
0 = i 1 + i 2<br />
u = v 1 -v 2<br />
u = R i 1<br />
0 = i 1 + i 2<br />
u = v 1 -v 2<br />
i 1 = C du/dt<br />
0 = i 1 + i 2<br />
u = v 1 -v 2<br />
u = L di 1 /dt<br />
0 = i 1 + i 2<br />
u = v 1 -v 2<br />
u = A sin(wt)<br />
v 1 = 0<br />
13<br />
14
0 = R<strong>1.</strong>i 1 + R<strong>1.</strong>i 2<br />
R<strong>1.</strong>u = R<strong>1.</strong>v 1 - R<strong>1.</strong>v 2<br />
R<strong>1.</strong>u = R<strong>1.</strong>R*R<strong>1.</strong>i 1<br />
0 = C.i 1 + C.i 2<br />
C.u = C.v 1 -C.v 2<br />
C.i 1 = C.C*dC.u/dt<br />
0 = S.i 1 + S.i 2<br />
S.u = S.v 1 - S.v 2<br />
S.u = S.A sin(S.wt)<br />
R1<br />
S.v1 = R<strong>1.</strong>v1 1<br />
S.v1 = R2.v1 0 = S.i1 + R<strong>1.</strong>i1 + R<strong>1.</strong>i2 g.v1 = C.v2 2<br />
g.v1 = L.v2 g.v1 = S.v2 0 = g.i1 + C.i1 + L.i1 + S.i1 0 = R2.i 1 + R2.i 2<br />
R2.u = R2.v 1 - R2.v 2<br />
R2.u = R2.R*R2.i 1<br />
C 0 = L.i1 + L.i2 L<br />
L.u = L.v1 -L.v2 L.u = L.L dL.i1 /dt<br />
S g<br />
g.v1 = 0<br />
3<br />
R<strong>1.</strong>v2 = C.v1 0 = R<strong>1.</strong>i2 + C.i1 R2.v 2 = L.v 1<br />
0 = R2.i 2 + L.i 1<br />
R2<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
4<br />
27 Gleichungen<br />
Unbekannte???<br />
Ziel: Transformation in Zustandsform (Anfangswertproblem)<br />
( ), ), ( ( ) ( x x x f x � �<br />
� t t t t t �<br />
da diese mit Standardmethoden numerisch gelöst werden kann.<br />
x0<br />
Modell:<br />
Integrator<br />
ti, x ( ti<br />
) x� ( ti<br />
)<br />
x� �<br />
f ( x,<br />
t)<br />
x(t)<br />
0 )<br />
0<br />
15<br />
D.h. bei gegebenem Zustand x muß<br />
die Ableitung des Zustands dx/dt im<br />
Modell berechnet werden.<br />
16
Formalere Sicht:<br />
Das Ausgangsgleichungssystem, d.h. alle Komponentengleichungen + alle<br />
Verbindungsgleichungen, ist ein differential-algebraisches Gleichungssystem<br />
(DAE: Differential-Algebraic Equation system):<br />
wobei:<br />
p<br />
Parameter (Konstante)<br />
u(t) Eingangsgrößen<br />
y(t) algebraische Variablen<br />
( t<br />
)<br />
0 � f ( x�<br />
, x,<br />
y,<br />
u,<br />
p,<br />
t)<br />
x(t) Zustandsgrößen Zustandsgrößen x sind<br />
x� Ableitung <strong>der</strong> Zustandsgrößen<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
0 � f ( x�<br />
, x,<br />
y,<br />
u,<br />
p,<br />
t)<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
alle Variablen, <strong>der</strong>en<br />
Ableitung dx/dt im<br />
Modell auftritt.<br />
x�<br />
� f ( x,<br />
u,<br />
p,<br />
t)<br />
1<br />
y � f<br />
Transformation in Zustandsform<br />
2<br />
( x,<br />
u,<br />
p,<br />
t)<br />
Die Transformation in Zustandsform bedeutet damit, dass ein nichtlineares<br />
algebraisches Gleichungssystem 0 �<br />
f ( x�<br />
, y)<br />
nach den beiden unbekannten<br />
Vektoren aufgelöst werden muss.<br />
17<br />
18
Was ist <strong>der</strong> Zustandsvektor x bei dem Beispiel?<br />
Einfache Regel:<br />
Alle Variablen die abgeleitet auftreten, sind Zustände.<br />
Alle an<strong>der</strong>en Variablen sind (rein algebraische) Hilfsgrößen y<br />
Bestimmung von:<br />
gegeben:<br />
gesucht:<br />
x�<br />
� f ( x,<br />
u,<br />
p,<br />
t)<br />
1<br />
y � f<br />
x,<br />
u,<br />
p,<br />
t<br />
x, � y<br />
für die 27 Unbekannten<br />
R<strong>1.</strong>i1 R2.i1 2<br />
( x,<br />
u,<br />
p,<br />
t)<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
Beispiel:<br />
, R<strong>1.</strong>i2, R<strong>1.</strong>v1, R<strong>1.</strong>v2 , R<strong>1.</strong>u,<br />
, R2.i2, R2.v1, R2.v2, R2.u,<br />
C.i1 , C.i2 , C.v1 , C.v2 , dC.u/dt,<br />
dL.i1/dt, L.i2 , L.v1 , L.v2 , L.u,<br />
S.i1 , S.i2 , S.v1 , S.v2 , S.u,<br />
g.i1 , g.v1 gegeben: C.u, L.i 1, t + Konstanten (R<strong>1.</strong>R, ...)<br />
gesucht : dC.u /dt, dL.i 1 /dt<br />
Dies sind 27 Gleichungen<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
19<br />
20
Symbolische Sortierung, Umformung, Elimination von Hilfsgrößen,<br />
Reduktion von algebraischen Gleichungssystemen mit speziellen Algorithmen<br />
führt auf rekursive Auswertungsvorschrift:<br />
R2.u := R2.R*L.i1 R<strong>1.</strong>v1 := S.A*sin(S.w*t)<br />
L.u := R<strong>1.</strong>v1 -R2.u<br />
R<strong>1.</strong>u := R<strong>1.</strong>v1 -C.u<br />
C.i1 := R<strong>1.</strong>u / R<strong>1.</strong>R<br />
dL.i1 /dt := L.u / L.L<br />
dC.u /dt := C.i1 / C.C<br />
Algorithmen sind für große Systeme geeignet<br />
(z.B. Dymola: > 100 000 Gleichungen)<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
Zusammenfassung des prinzipiellen Vorgehens:<br />
Gesamt-Gleichungssystem =<br />
Lokale Gleichungen aller Komponenten (Objekte).<br />
+ Gleichungen auf Grund von Verbindungen.<br />
Gesamtgleichungssystem vereinfachen und auf Zustandsform<br />
transformieren.<br />
(Soweit zur Theorie. In <strong>der</strong> Praxis ist es nicht ganz so einfach,<br />
da <strong>der</strong> Teufel im Detail steckt, wie wir noch sehen werden).<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
21<br />
22
Fazit<br />
• Vorgehen ist sehr systematisch (Gesamtsystem =<br />
Komponenten-Gleichungen + Verbindungs-Gleichungen)<br />
• Manuelles Auflösen <strong>der</strong> Gleichungen ist auch schon bei kleinen Systemen<br />
aufwendig. Aber: kann vollkommen automatisiert werden.<br />
• Verständnis wird erleichtert:<br />
Nur lokale Gleichungen für die Komponenten müssen verstanden werden.<br />
Komplexität ergibt sich durch Zusammenschalten<br />
(wird von Programm durchgeführt)<br />
• Keine globalen Prinzipien notwendig, wie 2. Kirchhoffsches Gesetz<br />
(Summe <strong>der</strong> Spannungen ist Null), Prinzip <strong>der</strong> virtuellen Arbeit,<br />
Lagrange'sche Gleichungen 2. Art, Hamilton Prinzip, etc.<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
3. Grundlagen <strong>der</strong> objekt-orientierten Modellierung<br />
am Beispiel eines mechanischen Systems (Übung)<br />
Aufbau einer Bibliothek von mechanischen Basiselementen:<br />
y<br />
x<br />
� 1<br />
� 1<br />
Potential-Variable<br />
Fluß-Variable<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
� 2<br />
� 2<br />
23<br />
��: Drehwinkel<br />
���: Schnittmoment<br />
24
Drehträgheit<br />
Elastizität<br />
externes Moment<br />
� 1<br />
� 1<br />
� 2<br />
� 1 � 2<br />
Hinweis: Drallsatz: ��� � � � i<br />
W 1<br />
F<br />
1<br />
� 1<br />
u<br />
� 2<br />
� 2<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
c<br />
J<br />
� 2<br />
� 2<br />
J �<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
Gleichungen<br />
3 4<br />
u<br />
ext W1 W2 1 2 F 3 4<br />
W1 .J F.c<br />
W2 .J<br />
ext<br />
2<br />
25<br />
W 2<br />
26
Für die Transformation in die Zustandsform<br />
gegeben (x): ________________________<br />
gesucht (x� ) : ________________________________________<br />
Das vorstehende Gleichungssystem sind<br />
___ Gleichungen für die ___ Unbekannten:<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
x� �<br />
f ( x,<br />
t)<br />
Symbolische Sortierung, Umformung, Elimination von<br />
Hilfsgrößen, führt auf die rekursive Auswertungsvorschrift:<br />
M. Otter: Simulation von elektromechanischen Systemen, 2. <strong>Vorlesung</strong><br />
27<br />
28
Simulation von elektromechanischen Systemen<br />
und<br />
Objektorientierte Modellierung mechatronischer Systeme<br />
Prof. Dr.-Ing. Martin Otter (DLR)<br />
3. <strong>Vorlesung</strong><br />
Veranstaltet vom Lehrstuhl für Elektr. Antriebssysteme und Leistungselektronik (Prof. Kennel), TU München<br />
Dozent: Prof. M. Otter: Tel. 08153/28-2473, Martin.Otter@dlr.de,<br />
www.robotic.dlr.de/Martin.Otter/vorlesung.html<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
<strong>Inhalt</strong> <strong>der</strong> 3. <strong>Vorlesung</strong><br />
<strong>1.</strong> Struktur eines einfachen Modelica Modells<br />
2. Hierarchische Modelica Modelle, Teil 1<br />
3. Entwurf von Komponenten-Schnittstellen<br />
Rechnerübung<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
1<br />
2
<strong>1.</strong> Struktur eines einfachen Modelica-Modells<br />
Ziele <strong>der</strong> Modelica Sprache (www.Modelica.org):<br />
Wie<strong>der</strong>verwendbarkeit von physikalischen Modellen<br />
Komponenten aus unterschiedlichen Fachrichtungen<br />
(elektrisch, mechanisch, thermisch, hydraulisch, ...).<br />
Beschreibung durch Differentialgleichungen,<br />
algebraischen und diskreten Gleichungen.<br />
Vereinheitlichung und Verbesserung bestehen<strong>der</strong><br />
objekt-orientierter Modellierungssprachen, wie<br />
Dymola-Sprache, gPROMS, NMF, ObjectMath, Omola, Smile, U.L.M., ...<br />
Deklarativ (= mathematische Gleichungen) statt<br />
prozedural (= Zuweisungen einer Progammiersprache).<br />
Sicherstellen, daß effizient simuliert werden kann.<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
Prinzipielle Struktur um Modelica-Modell in Dymola<br />
zu simulieren:<br />
Graphischer Editor<br />
Modelica Modell (Textfile: test<strong>1.</strong>mo)<br />
model test1<br />
Modelica.Mechanics.Rotational.Inertia J1(J=0.002)<br />
...<br />
C-Funktion<br />
(dsmodel.c)<br />
übersetzen + laden<br />
(dymosim.exe)<br />
void dsblock(double *x,<br />
...<br />
Simulator<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
File: ..\Modelica\Mechanics\Rotational.mo<br />
Komponenten-<br />
Bibliothek<br />
3<br />
4
Version 1:<br />
grafische Informationen<br />
Konstante (Wert kann vor Simulationsbeginn<br />
interaktiv geän<strong>der</strong>t werden)<br />
Einfaches Modelica-Modell<br />
s<br />
m = 2 kg<br />
f = 6 N<br />
neues Modell<br />
Gleitpunktzahl<br />
Name + Default-Wert<br />
model MovingMass1 "Mit konstanter Kraft gezogene Masse";<br />
parameter Real m=2 "Masse des Blocks";<br />
parameter Real f=6 "Zugkraft";<br />
Real s "Position des Blocks";<br />
Real v "Geschwindigkeit des Blocks";<br />
annotation(Diagram(Rectangle(extent=)));<br />
equation<br />
v = <strong>der</strong>(s);<br />
m*<strong>der</strong>(v) = f;<br />
end MovingMass1;<br />
Differentation nach <strong>der</strong> Zeit<br />
mathematische Gleichung, keine Zuweisung!<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
m ��s � �<br />
vordefinierte Basis-Datentypen in Modelica<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
f<br />
Beschreibungstext<br />
(wird in Menues angezeigt)<br />
Real Gleitpunktvariable, z.B. <strong>1.</strong>0, -2.3e-5<br />
Integer Ganzzahlige Variable, z.B. 1, 4, -333<br />
Boolean Bool’sche Variable, z.B. false, true<br />
String Zeichenkette, z.B. "Von File:"<br />
5<br />
6
diagram layer<br />
(hier: Prinzipskizze)<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
text layer<br />
Grafische Elemente werden<br />
im Text-Layer ausgeblendet<br />
Mit rechter Maustaste in Window klicken und dann<br />
"Expand / Show entire text" selektieren<br />
-> Kompletter Modelica-Code wird angezeigt<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
7<br />
8
Absturzursache des Mars Climate Orbiter am 23. Sept. 1999<br />
(Mars-Wettersatellit)<br />
Mars Climate Orbiter Failure Board Release Report, Nov. 10, 1999:<br />
... "The 'root cause' of the loss of the spacecraft was the failed<br />
translation of English units into metric units in a segment of groundbased,<br />
navigation-related mission software, as NASA has previously<br />
announced," said Arthur Stephenson, chairman of the Mars Climate<br />
Orbiter Mission Failure Investigation Board.<br />
Version 2:<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
s<br />
m = 2 kg<br />
f = 6 N<br />
model MovingMass2<br />
parameter Real m(min=0,unit="kg") = 2;<br />
parameter Real f(unit="N") = 6;<br />
Real s;<br />
Real v;<br />
equation<br />
v = <strong>der</strong>(s);<br />
m*<strong>der</strong>(v) = f;<br />
end MovingMass2;<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
Picture from NASA/JPL/Caltech.<br />
m ��s � �<br />
f<br />
Attribute eines Real Typs<br />
Einheit, in <strong>der</strong> die Gleichungen angegeben sind<br />
9<br />
10
Jede Einheit kann in ein Produkt <strong>der</strong> 7 SI-Basiseinheiten zerlegt werden:<br />
kg, m, s, A, K, mol, cd<br />
Frage:<br />
Sind zwei physikalische Größen äquivalent, wenn die Einheiten bezüglich<br />
<strong>der</strong> 7 SI-Basiseinheiten identisch sind?<br />
Beispiel:<br />
Art Einheit in SI-Basiseinheiten<br />
Moment Nm kgm 2 /s 2<br />
Energie J kgm 2 /s 2<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
Behandlung von Einheiten in Modelica<br />
durch Attribute von Real Variablen:<br />
Beispiele:<br />
quantity Art <strong>der</strong> physikalischen Größe<br />
unit Einheit, in <strong>der</strong> die Gleichungen angeschrieben sind<br />
displayUnit Einheit, die bei <strong>der</strong> Ein- und Ausgabe als Voreinstellung<br />
zur Anzeige benutzt wird<br />
Art quantity = unit = displayUnit =<br />
Moment "Torque" "N.m"<br />
Energie "Energy" "J"<br />
Winkel "Angle" "rad" "deg"<br />
Syntax für Einheiten nach ISO, Beispiele (wird von Dymola auch so gefor<strong>der</strong>t):<br />
kg.m2/s2, kg.m.m/(s.s), rad/s, 1/s, s-1<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
11<br />
12
weitere Attribute von Real Variablen:<br />
min Minimaler Wert <strong>der</strong> Größe<br />
max Maximaler Wert <strong>der</strong> Größe<br />
start Anfangswert von Zuständen. Zum Beispiel:<br />
, ( 0) 3 � � � t v f v m �<br />
Beispiel:<br />
fixed = true : Wert von „start“ ist fester Anfangswert<br />
= false: Wert von „start“ ist Schätzwert (z.B. zum<br />
Iterationsstart einer nichtlinearen Gleichung)<br />
nominal Nominalwert zur Skalierung <strong>der</strong> numerischen Routinen<br />
stateSelect = StateSelect.never/avoid/default/prefer/always<br />
Beeinflussung <strong>der</strong> Wahl <strong>der</strong> Zustandsvariablen<br />
parameter Real m(min=0, quantity="mass", unit="kg") = 2;<br />
Real v(quantity="velocity", unit="m/s", start=3);<br />
Aber:<br />
Zu aufwendig, wenn bei je<strong>der</strong> Deklaration die Attribute einer Variablen<br />
angegeben werden müssen.<br />
Beispiele für Typ-Klassen:<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
type Angle = Real(quantity = "Angle", unit = "rad",<br />
displayUnit = "deg");<br />
type Torque = Real(quantity = "Torque" , unit="N.m");<br />
type Mass = Real(quantity = "Mass" , unit="kg", min=0);<br />
type Velocity = Real(quantity = "Velocity", unit="m/s");<br />
Verwendung von Typ-Klassen:<br />
parameter Mass m = 2;<br />
Velocity v(start=3);<br />
Typ-Klassen<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
13<br />
14
In <strong>der</strong> Modelica Bibliothek Modelica.SIunits stehen alle<br />
ca. 450 ISO-Standardeinheiten in Form von type-Klassen zur Verfügung!<br />
Variante 1 (voller Name):<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
Benutzung <strong>der</strong> Modelica.SIunits Bibliothek<br />
parameter Modelica.SIunits.Mass m = 2;<br />
Modelica.SIunits.Velocity v(start=3);<br />
Variante 2 (abgekürzter Name):<br />
import Modelica.SIunits;<br />
parameter SIunits.Mass m = 2;<br />
SIunits.Velocity v(start=3);<br />
Variante 3 (stark abgekürzter Name):<br />
import SI = Modelica.SIunits;<br />
parameter SI.Mass m = 2;<br />
SI.Velocity v(start=3);<br />
Letzter Namensteil <strong>der</strong> “import” Anweisung<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
rechte<br />
Maustaste<br />
15<br />
16
„drag“ von Typ-Name mit <strong>der</strong> Maus in das Textfeld<br />
drag<br />
o<strong>der</strong>:<br />
(1) Unit (z.B. "Angle") mit <strong>der</strong> Maus selektieren<br />
(2) " C" um Definition in Clipboard zu kopieren<br />
(3) " V" um Clipboard in Text zu kopieren<br />
Version 3:<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
s<br />
m = 2 kg<br />
f = 6 N<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
m ��s � �<br />
model MovingMass3<br />
import SI = Modelica.SIunits;<br />
parameter SI.Mass m = 2 "mass of block";<br />
parameter SI.Force f = 6 "force to pull block";<br />
SI.Position s "position of block";<br />
SI.Velocity v "velocity of block";<br />
equation<br />
v = <strong>der</strong>(s);<br />
m*<strong>der</strong>(v) = f;<br />
end MovingMass3;<br />
Auf diese Weise sollte in Modelica modelliert werden!<br />
f<br />
17<br />
18
Unterstützung von Einheiten in Dymola 7<br />
• Für Parameterwindow und Plotten wird "displayUnit" als Default benutzt.<br />
Kann leicht auf an<strong>der</strong>e Einheiten geän<strong>der</strong>t werden:<br />
displayUnits<br />
• Einheiten werden syntaktisch überprüft.<br />
• Beim Verschalten, müssen "unit" Einheiten übereinstimmen (sonst Fehler)<br />
• Einheiten werden "propagiert". Z.B. "c = a [m/s] + b[]" → c,b in [m/s]<br />
• Einheiten werden in den Gleichungen überprüft. Z.B.:<br />
m*a = f;<br />
Fehler z.B. wenn "m" in [kg], "a" in [m/s2], "f" in [N.m]<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
Die in den Menüs angebotenen Einheiten Alternativen,<br />
können mit den folgenden Kommandos definiert werden:<br />
defineUnitConversion("rad/s", "r/min",<br />
30/Modelica.Constants.pi);<br />
Beziehung zwischen Einheit "rad/s" und "r/min"<br />
defineDefaultDisplayUnit("rad/s", "r/min");<br />
Ein Signal mit <strong>der</strong> Einheit "rad/s" wird standardmäßig mit<br />
"r/min" für Ein- und Ausgabe benutzt.<br />
Wenn Dymola gestartet wird, werden eine Reihe von Einheiten über das Script-<br />
File "displayunit.mos" im Directory "..Dymola\insert" schon definiert. Am<br />
einfachsten, dort die gewünschten Än<strong>der</strong>ungen vornehmen, damit diese<br />
global immer wirksam sind.<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
19<br />
20
Beispiel: Modell eines einfacher Antriebsstrangs<br />
diagram layer<br />
text layer<br />
2. Hierarchische Modelica Modelle, Teil 1<br />
elektrische Klemme<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
Gleichstrommotor<br />
Flansch<br />
Motor-Trägheit + ideales Getriebe + Last-Trägheit<br />
rechte Maustaste<br />
21<br />
22
Elemente des Antriebsstrang-Modells<br />
(ohne Grafik-Information)<br />
Neue Modell-Klasse<br />
Connection<br />
model SimpleDrive<br />
Modelica.Mechanics.Rotational.Inertia Inertia1(J=0.002);<br />
Modelica.Mechanics.Rotational.IdealGear IdealGear1(ratio=100)<br />
...<br />
Modelica.Electrical.Analog.Basic.Resistor Resistor1(R=0.2)<br />
...<br />
equation<br />
connect(Inertia<strong>1.</strong>flange_b, IdealGear<strong>1.</strong>flange_a);<br />
connect(Resistor<strong>1.</strong>n, Inductor<strong>1.</strong>p);<br />
...<br />
end SimpleDrive;<br />
Connector "n" (= Klemme) von Resistor1<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
Zwei Arten von Connector-Variablen<br />
Modell-Klasse Modell-Instanz (Komponente)<br />
Connector "flange_a" von IdealGear1<br />
Potential-Variable Verbundene Variable sind identisch<br />
Fluß-Variable Verbundene Variable erfüllen die<br />
Null-Summen-Gleichung<br />
Connector-Klasse Name <strong>der</strong> neuen Connector-Klasse<br />
connector Pin<br />
import SI=Modelica.SIunits;<br />
SI.Voltage v;<br />
flow SI.Current i;<br />
end Pin;<br />
Fluss-variable<br />
Schnittstellen-Definition<br />
Verwendung:<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
Modifier<br />
connector Flange<br />
import SI=Modelica.SIunits;<br />
SI.Angle phi;<br />
flow SI.Torque tau;<br />
end Flange;<br />
Pin p, n;<br />
equation<br />
connect(p, n)<br />
23<br />
24
connector Pin<br />
Voltage v;<br />
flow Current i;<br />
end Pin;<br />
elektrisch<br />
R1<br />
R<strong>1.</strong>p<br />
R<strong>1.</strong>p.i<br />
R3.p<br />
R3<br />
connect(R<strong>1.</strong>p, R2.p);<br />
connect(R<strong>1.</strong>p, R3.p);<br />
Verwendung einer Schnittstelle<br />
R3.p.i<br />
R2.p<br />
R3.p.i<br />
R<strong>1.</strong>p.v = R2.p.v<br />
R<strong>1.</strong>p.v = R3.p.v<br />
0 = R<strong>1.</strong>p.i + R2.p.i + R3.p.i<br />
R2<br />
1-dim. mechanisch<br />
m3.flange.s<br />
m2.flange.s<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
connector Flange<br />
Position s;<br />
flow Force f;<br />
end Flange;<br />
m3.flange.f<br />
m3<br />
m1 m2<br />
m<strong>1.</strong>flange.s<br />
m<strong>1.</strong>flange.f<br />
m2.flange.f<br />
connect(m<strong>1.</strong>flange, m2.flange);<br />
connect(m<strong>1.</strong>flange, m3.flange);<br />
m<strong>1.</strong>flange.s = m2.flange.s<br />
m<strong>1.</strong>flange.s = m3.flange.s<br />
0 = m<strong>1.</strong>flange.f + m2.flange.f + m3.flange.f<br />
Um die Schnittstellen bei einem Element leicht unterscheiden zu können,<br />
wird meist eine unterschiedliche grafische Darstellung verwendet<br />
(die Modelica-Gleichungen sind jedoch identisch).<br />
PositivePin p NegativePin n<br />
Connector PositivePin = Pin + gefülltes Rechteck Icon<br />
Connector NegativePin = Pin + leeres Rechteck Icon<br />
Connector Flange_a = Flange + gefülltes Rechteck Icon<br />
Connector Flange_b = Flange + leeres Rechteck Icon<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
25<br />
26
Konstante (Wert kann vor Simulationsbeginn<br />
interaktiv geän<strong>der</strong>t werden)<br />
Differentation nach <strong>der</strong> Zeit<br />
Beispiel: Kapazität (Capacitor)<br />
p.i u<br />
n.i<br />
p n<br />
p.v n.v<br />
Datentyp (Gleitpunktzahl)<br />
model Capacitor<br />
import SI = Modelica.SIunits;<br />
parameter SI.Capacitance C;<br />
SI.Voltage u ”Spannungsabfall”;<br />
Pin p, n;<br />
equation<br />
0 = p.i + n.i;<br />
u = p.v - n.v;<br />
C*<strong>der</strong>(u) = p.i;<br />
end Capacitor;<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
Beispiel: Rotationsträgheit (Inertia)<br />
flange_a flange_b<br />
flange_a.phi<br />
flange_a.tau<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
Beschreibungstext<br />
(wird in Menues angezeigt)<br />
mathematische Gleichung, keine Zuweisung!<br />
model Inertia<br />
import SI = Modelica.SIunits;<br />
parameter SI.Inertia J;<br />
Flange flange_a, flange_b;<br />
SI.AngularVelocity w;<br />
equation<br />
flange_a.phi = flange_b.phi;<br />
w = <strong>der</strong>(flange_a.phi);<br />
J*<strong>der</strong>(w) = flange_a.tau + flange_b.tau;<br />
end Inertia;<br />
flange_b.phi<br />
flange_b.tau<br />
27<br />
28
Son<strong>der</strong>regel bei Modelica:<br />
Wenn ein Connector nicht verschaltet ist, werden automatisch Gleichungen<br />
erzeugt, so dass die Fluss-Variablen verschwinden.<br />
Beispiel:<br />
Mit dieser Son<strong>der</strong>regel ist das<br />
Schnittmoment hier Null<br />
(motorInertia.flange_b.tau = 0)<br />
Zusammenfassung<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
import R = Modelica.Mechanics.Rotational;<br />
import E = Modelica.Electrical.Analog;<br />
import SI = Modelica.SIunits;<br />
model Resistor<br />
parameter SI.Resistance R = 1;<br />
SI.Voltage v;<br />
E.Interfaces.PositivePin p;<br />
E.Interfaces.NegativePin n;<br />
equation<br />
0 = p.i + n.i;<br />
v = p.v - n.v;<br />
v = R*p.i;<br />
end Resistor;<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
Ohne diese Son<strong>der</strong>regel müsste ein explizites<br />
externes Null-Moment gesetzt werden.<br />
model SimpleDrive<br />
R.Inertia Inertia1 (J=0.002);<br />
R.IdealGear IdealGear1(ratio=100)<br />
E.Basic.Resistor Resistor1 (R=0.2)<br />
...<br />
equation<br />
connect(Inertia<strong>1.</strong>flange_b, IdealGear<strong>1.</strong>flange_a);<br />
connect(Resistor<strong>1.</strong>n, Inductor<strong>1.</strong>p); ...<br />
end SimpleDrive;<br />
type Voltage =<br />
Real(quantity="Voltage",<br />
unit ="V");<br />
connector PositivePin<br />
SI.Voltage v;<br />
flow SI.Current i;<br />
end PositivePin;<br />
29<br />
30
3. Entwurf von Komponenten-Schnittstellen<br />
???<br />
Wahl <strong>der</strong> Variablen in den Verbindungen zur Umgebung?<br />
Entwurf von Schnittstellen ist ein zentraler Schritt bei <strong>der</strong> objektorientierten<br />
Modellierung, da<br />
• voneinan<strong>der</strong> unabhängige Teile eines Modells festgelegt werden,<br />
• nach <strong>der</strong> Schnittstellen-Definition Komponenten unabhängig voneinan<strong>der</strong><br />
entwickelt und getestet werden können<br />
Bei Blockschaltbil<strong>der</strong>n einfach: Schnittstelle = Ein/Ausgangsverhalten<br />
Physikalische Schnittstellen???<br />
???<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
Beispiele:<br />
elektrische Klemme<br />
???<br />
translatorischer mechanischer Flansch<br />
rotatorischer mechanischer Flansch<br />
hydraulischer Anschluss<br />
pneumatischer Anschluss<br />
Motorventil (thermo-fluid Strömung)<br />
Fenster (Wärmeleitung)<br />
Elektroden einer Batterie (chemische Umwandlung)<br />
Generelle Regel:<br />
Abstrahierte Schnittstelle einer Komponente<br />
sollte alle voneinan<strong>der</strong> unabhängigen Variablen<br />
enthalten die notwendig sind, um die<br />
beabsichtigten Effekte in <strong>der</strong> realen<br />
Schnittstelle zu beschreiben.<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
???<br />
31<br />
32
Anfor<strong>der</strong>ungen zum Entwurf von Komponenten-Schnittstellen<br />
frei schneiden<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
Verbindungspunkt<br />
(infinitesimal klein)<br />
<strong>1.</strong> Unabhänge Schnittstellen-Variablen:<br />
Die Variablen in einer Schnittstellen sollten unabhängig voneinan<strong>der</strong> sein (und<br />
nicht algebraisch, durch Differentiation o<strong>der</strong> Integration voneinan<strong>der</strong><br />
berechenbar sein). Wird diese Regel nicht eingehalten, können Komponenten<br />
nicht beliebig verschaltet werden.<br />
2. Die Gleichungen <strong>der</strong> "connect(...)" Anweisung müssen auf die<br />
relevanten Randbedingungen an Verbindungspunkten führen.<br />
3. Die Gleichungen <strong>der</strong> "connect(...)" Anweisung müssen auf die<br />
relevanten Bilanzgleichungen (= Erhaltungsgleichungen) bei frei<br />
geschnittenen Verbindungspunkten führen, damit die Bilanzgleichungen<br />
sowohl in einer Komponente als auch bei <strong>der</strong> Verbindung erfüllt sind.<br />
Beispiele für Randbedingungen<br />
(an einem infinitesimal kleinen Verbindungspunkt):<br />
vi � vj<br />
(Elektrische Potentiale sind gleich)<br />
Vmag, i � Vmag,<br />
j<br />
mag<br />
si � sj<br />
(Positionen sind gleich)<br />
�i � �j<br />
(Winkel sind gleich)<br />
Ti � Tj<br />
p � p<br />
(Temperaturen sind gleich)<br />
i j<br />
(Magnet. Potentiale sind gleich; V ���ds; H mag. Erregung)<br />
H<br />
(Drücke sind gleich)<br />
Variablen v, V mag, s, φ, T, p, etc. als Potential-<br />
Variable in die Schnittstelle mit aufnehmen, da dann<br />
connect(..) auf die obigen Gleichungen führt:<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
s<br />
33<br />
connector XXX<br />
Voltage v;<br />
Real V_mag;<br />
Position s;<br />
Angle phi;<br />
Temperature T;<br />
Pressure p;<br />
...<br />
end XXX;<br />
34
Beispiele für Bilanzgleichungen<br />
(an einem infinitesimal kleinen Verbindungspunkt, ohne Masse/Trägheit/Energiespeicher ....)<br />
0 �<br />
0 � �<br />
0 �<br />
0 �<br />
0 �<br />
0 �<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
i<br />
0 � m� �v<br />
i<br />
f<br />
�<br />
i<br />
i<br />
i<br />
i<br />
Q�<br />
i<br />
m�<br />
i i<br />
(Kirchhoffsche Stromregel: Summe <strong>der</strong> Ströme ist Null)<br />
(Summe <strong>der</strong> magnetischen Flüsse ist Null)<br />
(Kräftebilanz: Summe <strong>der</strong> Schnittkräfte ist Null)<br />
(Momentenbilanz: Summe <strong>der</strong> Schnittmomente ist Null)<br />
(Energiebilanz bei Wärmeleitung: Summe <strong>der</strong> Wärmeströme ist Null)<br />
(Massenbilanz eines Fluids: Summe <strong>der</strong> Massenströme ist Null)<br />
(Impulsbilanz eines Fluids: Summe <strong>der</strong> Impulse ist Null)<br />
��<br />
� �<br />
Beispiel für Ableitung: m�s � fi ���� 0 � f<br />
m�0<br />
i<br />
Bilanzgleichung idealisierte Bilanzgleichung<br />
(keine Speicherung von<br />
Erhaltungsgrössen)<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
Variablen i, �, f, �, Q flow, m flow, G flow (= m flow*v), etc. als Fluss-Variable in die<br />
Schnittstelle mit aufnehmen, da dann connect(..) auf die Bilanzgleichungen führt:<br />
connector XXX<br />
flow Current i;<br />
flow MagneticFlux Phi;<br />
flow Force f;<br />
flow Torque tau;<br />
flow MassFlowRate m_flow;<br />
flow HeatFlowRate Q_flow;<br />
flow MomentumFlux G_flow;<br />
...<br />
end XXX;<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
35<br />
z.B. elektrisch:<br />
connect(R<strong>1.</strong>p, R2.p);<br />
connect(R<strong>1.</strong>p, R3.p);<br />
R<strong>1.</strong>p.v = R2.p.v<br />
R<strong>1.</strong>p.v = R3.p.v<br />
0 = R<strong>1.</strong>p.i + R2.p.i + R3.p.i<br />
36
Energiesatz als fundamentale Bilanzgleichung<br />
Die Energiebilanz muss bei je<strong>der</strong> Schnittstellen-Definition auch erfüllt sein<br />
(da dies die fundamentalste Bilanzgleichung ist).<br />
Diese Bilanzgleichung wird automatisch erfüllt, wenn <strong>der</strong> Energiestrom entwe<strong>der</strong><br />
schon als Flussvariable benutzt wird, o<strong>der</strong> wenn "korrespondierende"<br />
Potential-und Flussvariablen in <strong>der</strong> Schnittstelle verwendet werden.<br />
Beispiel: 1-dim. translatorisch bewegte Systeme<br />
connector Translational<br />
Position s;<br />
flow Force f;<br />
end Translational;<br />
s �s �s � s� �s� �s�<br />
dE<br />
P �<br />
dt<br />
�s� � f �s� � f �s� � f<br />
1 2 3 1 2 3<br />
1 1 2 2 3 3<br />
3 Komponenten verbunden: �s�1�� f1� f2 � f3�<br />
1 0 �s�� � 0<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
→ Energiesatz<br />
ist erfüllt<br />
Typ Potential-V. Fluss-Variable Connector-Name (Modelica library) Icon<br />
electrical<br />
electrical<br />
potential<br />
current Modelica.Electrical.Analog.Interfaces.PositivePin<br />
translational distance force (scalar) Modelica.Mechanics.Translational.Interfaces.Flange_a<br />
rotational angle torque (scalar) Modelica.Mechanics.Rotational.Interfaces.Flange_a<br />
heat transfer temperature heat flow rate Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a<br />
mechanical<br />
signal<br />
position vector,<br />
transformation<br />
matrix<br />
Real, Boolean,<br />
Integer Vektor<br />
Einige vordefinierte, elementare Schnittstellen<br />
cut-force (vector)<br />
cut-torque (vector) Modelica.Mechanics.MultiBody.Interfaces.Frame_a<br />
Modelica.Blocks.Interfaces.RealInput /Output<br />
Modelica.Blocks.Interfaces.BooleanInput/Output<br />
Modelica.Blocks.Interfaces.IntegerInput /Output<br />
Schnittstellen für Fluidströmungen sind komplizierter.<br />
Werden später behandelt.<br />
M. Otter, Simulation von elektromechanischen Systemen, 3. <strong>Vorlesung</strong><br />
37<br />
38
Simulation von elektromechanischen Systemen<br />
und<br />
Objektorientierte Modellierung mechatronischer Systeme<br />
Prof. Dr.-Ing. Martin Otter (DLR)<br />
4. <strong>Vorlesung</strong><br />
Veranstaltet vom Lehrstuhl für Elektr. Antriebssysteme und Leistungselektronik (Prof. Kennel), TU München<br />
Dozent: Prof. M. Otter: Tel. 08153/28-2473, Martin.Otter@dlr.de,<br />
www.robotic.dlr.de/Martin.Otter/vorlesung.html<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 1<br />
<strong>1.</strong> Schnittstellen für Antriebsstränge<br />
2. Schnittstellen für Wärmeleitung<br />
3. Signal-Schnittstellen<br />
4. Bus-Schnittstellen<br />
5. Hierarchische Schnittstellen<br />
6. Vererbung<br />
<strong>Inhalt</strong> <strong>der</strong> 4. <strong>Vorlesung</strong><br />
Rechnerübung<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 2
<strong>1.</strong> Schnittstellen für Antriebsstränge<br />
(1-dimensionale, rotatorische, mechanische Systeme)<br />
Abstützmoment gegen Umgebung<br />
Wenn Abstützmoment nicht benötigt wird, kann es auch weggelassen werden<br />
(in Parameter-Menu "useSupport" abschalten)<br />
Modelica.Mechanics.Rotational<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 3<br />
Rotational.Sources:<br />
Umwandlung von Eingangssignalen in<br />
Vorgabe von "Flange" für Winkel,<br />
Drehzahl, Beschleunigung, Moment<br />
Rotational.Components:<br />
Rotations-Trägheit, -Fe<strong>der</strong>, -Dämpfer,<br />
Lagerreibung, Kupplung, Bremse,<br />
ideals Getriebe, Getriebe, ...<br />
Rotational.Sensors<br />
Abfrage von "Flange" Grössen:<br />
(Absolute/Relativ-Winkel, -Drehzahl,<br />
-Beschleunigung, Moment) und<br />
Bereitstellung als Ausgangssignal<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 4
<strong>1.</strong>1 Schnittstellen-Definition<br />
�<br />
�<br />
<strong>1.</strong>2 Vektorielle Größen<br />
connector Flange_b<br />
import SI = Modelica.SIunits;<br />
SI.Angle phi;<br />
flow SI.Torque tau;<br />
end Flange_b;<br />
In einer Komponente kann die Winkelgeschwindigkeit<br />
durch Differentiation erhalten werden:<br />
w = <strong>der</strong>(flange_b.phi)<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 5<br />
für jede Komponente lokales<br />
Koordinatensystem einführen;<br />
alle Vektoren + alle Gleichungen in<br />
diesem System ausdrücken:<br />
J<br />
xx<br />
�<br />
� � e<br />
�<br />
� � � � e<br />
� a �b<br />
x<br />
x<br />
�<br />
� � � � e<br />
�<br />
x<br />
�<br />
��a��b��ex ey �<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 6<br />
ex �<br />
Modelica<br />
phi = flange_a.phi<br />
phi = flange_b.phi<br />
w = <strong>der</strong>(phi)<br />
J*<strong>der</strong>(w) = flange_a.tau + flange_b.tau
Verschalten <strong>der</strong> Flansche von zwei Komponenten bedeutet, daß die<br />
entsprechenden Komponenten-Koordinatensysteme identisch sind, d.h.,<br />
dass alle Vektoren im gleichen Koordinatensystem ausgedrückt werden.<br />
Beispiel:<br />
Deswegen sind die 3 folgenden Antriebsstränge identisch<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 7<br />
<strong>1.</strong>3 Winkel und nicht Drehzahl in <strong>der</strong> Schnittstelle<br />
Genauere Erläuterung, warum "Winkel" und nicht "Drehzahl" für<br />
1-dim. rotatorische Systeme verwendet werden sollten:<br />
Z.B. soll <strong>der</strong> Gelenkwinkel eines Roboters geregelt werden.<br />
Hierzu werde <strong>der</strong> Winkel über "angleSensor" abgefragt.<br />
model Inertia<br />
Flange flange_b<br />
...<br />
end Inertia<br />
model angleSensor<br />
Flange flange<br />
...<br />
end angleSensor<br />
connect(inertia.flange_b, angleSensor.flange)<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 8
Variante 1: Winkel im Flange Connector<br />
model Inertia<br />
import SI=Modelica.SIunits;<br />
parameter SI.Inertia J;<br />
Flange flange_a;<br />
phi, w sind Zustände<br />
Flange flange_b;<br />
(wegen <strong>der</strong>(..) Operator)<br />
SI.Angle phi;<br />
Deswegen können Anfangsbedingungen<br />
SI.AngularVelocity w; gesetzt werden.<br />
equation<br />
phi = flange_a.phi;<br />
phi = flange_b.phi;<br />
w = <strong>der</strong>(phi);<br />
J*<strong>der</strong>(w) = flange_a.tau + flange_b.tau;<br />
end Inertia<br />
model angleSensor<br />
Flange flange;<br />
RealOutput phi;<br />
equation<br />
phi = flange.phi;<br />
0 = flange.tau;<br />
end angleSensor<br />
durch “connect(..)” Anweisung:<br />
inertia.flange_b.phi =<br />
angleSensor.flange.phi<br />
-> unproblematisch<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 9<br />
Variante 2: Drehzahl im Flange Connector<br />
model Inertia<br />
import SI=Modelica.SIunits;<br />
parameter SI.Inertia J;<br />
Flange flange_a;<br />
phi, w sind Zustände<br />
Flange flange_b;<br />
(wegen <strong>der</strong>(..) Operator);<br />
SI.Angle phi;<br />
Deswegen können Anfangsbedingungen<br />
SI.AngularVelocity w; gesetzt werden.<br />
equation<br />
w = flange_a.w;<br />
w = flange_b.w;<br />
w = <strong>der</strong>(phi);<br />
J*<strong>der</strong>(w) = flange_a.tau + flange_b.tau;<br />
end Inertia<br />
model angleSensor<br />
Flange flange;<br />
RealOutput phi;<br />
equation<br />
flange.w = <strong>der</strong>(phi);<br />
0 = flange.tau;<br />
end angleSensor<br />
y ist ein Zustand (wegen <strong>der</strong>(..) Operator);<br />
Deswegen können Anfangsbedingungen<br />
gesetzt werden.<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 10
Connector-Gleichung:<br />
inertia.flange_b.w = angleSensor.flange.w<br />
D.h. die Drehzahlen von "inertia" und "angleSensor" sind identisch.<br />
Das heißt aber nicht, dass auch die Winkel identisch sind.<br />
Wenn z.B. für inertia.phi und für angleSensor.phi unterschiedliche<br />
Anfangswerte angegeben werden, dann sind die Winkel nicht identisch.<br />
Zusammenfassung <strong>der</strong> Nachteile von Variante 2:<br />
• Im "angleSensor" muss eine Anfangsbedingung für den<br />
Winkel phi angegeben werden, da phi über eine Differentialgleichung<br />
(Integrator) definiert ist.<br />
In Variante 1 muss keine Anfangsbedingung definiert werden.<br />
•Die beiden Anfangsbedingungen in "inertia" und "angleSensor" müssen<br />
übereinstimmen, sonst sind die Winkel unterschiedlich und<br />
"angleSensor" misst nicht den Winkel von "inertia".<br />
In Variante 1 sind die Winkel immer identisch.<br />
Verbindungsgleichungen:<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 11<br />
<strong>1.</strong>4 Verbindungsgleichungen (Übung)<br />
connect(I<strong>1.</strong>flange_b, I2.flange_a);<br />
connect(I<strong>1.</strong>flange_b, I3.flange_b);<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 12
Verbindungsgleichungen:<br />
Drallsatz:<br />
Energiesatz:<br />
Erhaltungsgleichungen an einem Verbindungspunkt<br />
�3<br />
�1<br />
�1<br />
� 3<br />
�2<br />
� 2<br />
J = 0 (masselos)<br />
wird erfüllt (ja/nein)<br />
wird erfüllt (ja/nein)<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 13<br />
<strong>1.</strong>5 Elektrisch – Mechanische Energiewandlung<br />
hierfür gibt es verschiedene Modelle in <strong>der</strong> Modelica Standard-Bibliothek<br />
(1) stark idealisiert (Modelica.Electrical.Analog.Basic.Emf):<br />
u<br />
i<br />
Die “emf” Komponente wandelt elektrische Energie<br />
verlustlos in mechanische Energie um.<br />
�:<br />
Drehzahl<br />
� : Motormoment<br />
� � � �<br />
u �emf. pv . �emf.<br />
nv .<br />
k���u k�i ���<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 14
(2) Maschinen-Modelle (in Modelica.Electrical.Machines.BasicMaschines):<br />
Gleichstrom-Maschinen:<br />
DC_PermanentMagnet<br />
(entspricht dem Modell von <strong>der</strong> ersten Übung):<br />
DC_ElectricalExcited<br />
DC_SeriesExcited<br />
+ Synchron und Asynchron Maschinen (nur ungeregelte Modelle)<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 15<br />
IdealGear ohne "support" Flansch<br />
<strong>1.</strong>6 Abstützmomente<br />
model IdealGearWithSupport // with support flange<br />
import SI=Modelica.SIunits;<br />
Modelica.Mechanics.Rotational.Interfaces.Flange_a flange_a;<br />
Modelica.Mechanics.Rotational.Interfaces.Flange_b flange_b;<br />
parameter Real ratio;<br />
equation<br />
// Getriebegleichungen<br />
flange_a.phi = ratio* flange_b.phi;<br />
0 = ratio*flange_a.tau + flange_b.tau;<br />
end IdealGearWithSupport;<br />
Zahl an Gleichungen = 4 (Zahl an Unbekannten) - 2 (Zahl an Flussvariablen) = 2<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 16
IdealGear mit "support" Flansch<br />
model IdealGearWithSupport // with support flange<br />
import SI=Modelica.SIunits;<br />
Modelica.Mechanics.Rotational.Interfaces.Flange_a flange_a;<br />
Modelica.Mechanics.Rotational.Interfaces.Flange_b flange_b;<br />
Modelica.Mechanics.Rotational.Interfaces.Flange_a support;<br />
parameter Real ratio;<br />
SI.Angle phi_a;<br />
SI.Angle phi_b;<br />
equation<br />
phi_a = flange_a.phi – support.phi;<br />
phi_b = flange_b.phi – support.phi;<br />
// Getriebegleichungen<br />
phi_a = ratio*phi_b;<br />
0 = ratio*flange_a.tau + flange_b.tau;<br />
// Momentenbilanz<br />
0 = flange_a.tau + flange_b.tau + support.tau;<br />
end IdealGearWithSupport;<br />
Zahl an Gleichungen = 8 (Zahl an Unbekannten) - 3 (Zahl an Flussvariablen) = 5<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 17<br />
Abstützmomente bei elektrischen Motoren<br />
Motor ist auf Boden montiert<br />
Motor kann auf bewegtem<br />
Körper, z.B. Roboter o<strong>der</strong><br />
Fahrzeug, montiert werden.<br />
Die Abstützmomente werden<br />
dann korrekt berücksichtigt.<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 18
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 19<br />
2. Schnittstellen für Wärmeleitung<br />
Aus <strong>der</strong> Bibliothek Modelica.Thermal.HeatTransfer:<br />
connector HeatPort_a<br />
SI.Temperature T;<br />
flow SI.HeatFlowRate Q_flow;<br />
end HeatPort_a;<br />
Transportiert nur den Wärmestrom, aber speichert die Energie nicht<br />
für Stab: G = k*A/L<br />
A: Querschnitt<br />
L: Länge<br />
k: spez. Wärmeleitfähigkeit (z.B. Aluminium: 220 W/(m.K))<br />
connector HeatPort_b<br />
SI.Temperature T;<br />
flow SI.HeatFlowRate Q_flow;<br />
end HeatPort_b;<br />
model ThermalConductor "only heat transfer"<br />
parameter SI.ThermalConductance G;<br />
HeatPort_a port_a;<br />
HeatPort_b port_b;<br />
equation<br />
0 = port_a.Q_flow + port_b.Q_flow;<br />
port_a.Q_flow = G*(port_a.T – port_b.T);<br />
end ThermalConductor;<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 20
Speichert nur die Energie, transportiert aber keinen Wärmestrom<br />
model HeatCapacitance "only storage of heat"<br />
parameter SI.HeatCapacity C;<br />
HeatPort_a port;<br />
equation<br />
port.Q_flow = C*<strong>der</strong>(port.T);<br />
end HeatCapacitance;<br />
C = cp*m cp: spez. Wärmekapazität (z.B. Aluminum: 900 J/(kg.K))<br />
m : Masse<br />
model Convection "only heat transfer"<br />
parameter SI.ThermalConductance G;<br />
input Modelica.Blocks.Interfaces.RealInput Gc;<br />
HeatPort_a solid; HeatPort_b fluid;<br />
equation<br />
0 = solid.Q_flow + fluid.Q_flow;<br />
solid.Q_flow = Gc*(solid.T – fluid.T);<br />
end Convection;<br />
model FixedTemperature "fixed temperature"<br />
import Cv=Modelica.SIunits.Conversions;<br />
import NonSI=Modelica.SIunits.Conversions.NonSIunits;<br />
parameter NonSI.Temperature_degC T;<br />
HeatPort_b port;<br />
equation<br />
port.T = Cv.from_degC(T);<br />
end FixedTemperature;<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 21<br />
Beispiel: Wärmestrom von elektrischem Motor an die Umgebung:<br />
Gleichstrom-Motor<br />
stark idealisiert:<br />
Wärmeenergie in den<br />
Ankerwicklungen wird in einem<br />
"HeatCapacitor" gespeichert,<br />
und über einen ThermalConductor<br />
und Konvektion an die Umgebung<br />
abgeführt.<br />
u � R( T) �i<br />
(Spannungsabfall)<br />
Q���u�i (Verlustleistung)<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 22
Alle elektrischen Komponenten die Verlustleistung produzieren, haben einen<br />
optionalen "useHeatPort" Connector um diese über einen HeatPort abzuführen<br />
An<strong>der</strong>e Komponenten mit optionalem "useHeatPort"<br />
Variante 1:<br />
Variante 2:<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 23<br />
3. Signal-Schnittstellen<br />
connector RealInput<br />
Real signal;<br />
end RealInput;<br />
connector RealInput<br />
input Real signal;<br />
end RealInput;<br />
"input" bzw. "output" in einer Deklaration definiert,<br />
dass diese Größe nur so verschaltet werden darf, wie<br />
es in Blockschaltbil<strong>der</strong>n üblich ist.<br />
Z.B. Nicht erlaubt, zwei Ausgänge zu verschalten<br />
(→ Fehlermeldung).<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 24
Nachteil von Variante 2:<br />
Hierarchischer Zugriff auf Variable:<br />
model FirstOr<strong>der</strong><br />
RealInput inPort;<br />
RealOutput outPort;<br />
...<br />
end FirstOr<strong>der</strong><br />
Variante 3 (Kurzdefinition eines Connectors mit einer Variablen):<br />
connector RealInput = input Real;<br />
connector RealOutput = output Real;<br />
model FirstOr<strong>der</strong><br />
RealInput u;<br />
RealOutput y;<br />
...<br />
end FirstOr<strong>der</strong><br />
firstOr<strong>der</strong>.inPort.signal<br />
firstOr<strong>der</strong>.u<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 25<br />
k<br />
y � �u<br />
T � s �1<br />
T � y�<br />
� y � k �u<br />
= model, wobei alle Interface Variablen<br />
input, output, parameter o<strong>der</strong> constant sind.<br />
block FirstOr<strong>der</strong><br />
import Modelica.Blocks.Interfaces;<br />
parameter Real k=1 "gain";<br />
parameter Real T=0.01 "time constant";<br />
Interfaces.RealInput u;<br />
Interfaces.RealOutput y;<br />
equation<br />
T*<strong>der</strong>(y) + y = k*u;<br />
end FirstOr<strong>der</strong>;<br />
Wenn Modell als "block" statt als "model" definiert wird, wird garantiert,<br />
dass dieser nur wie in einem Blockschaltbild benutzt werden kann<br />
(→ bessere Fehlermeldungen, wenn etwas falsch gemacht wird).<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 26
4. Bus-Schnittstellen<br />
Signal-Schnittstellen werden sehr schnell unhandlich wenn viele Signale<br />
übertragen werden. Deswegen werden bei Fahrzeugen, Flugzeugen,<br />
Antriebssystemen etc. Bus-Systeme eingesetzt.<br />
Stark idealisiert ist das auch in Modelica möglich.<br />
Hier: Datenübertragung zwischen einzelnen Systemen im Fahrzeug.<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 27<br />
Definition von "Bus" in Modelica:<br />
expandable connector XX<br />
/* keine Signaldefinitionen notwendig<br />
*/<br />
end XX;<br />
Ab Modelica 3.1 (Dymola 7.4):<br />
(1) Alle hier definierten, aber nicht<br />
benutzten, Signale werden ignoriert.<br />
(2) input/output Definition nicht notwendig.<br />
Wird aus Verschaltung abgeleitet.<br />
Icon für bus connector normalerweise von:<br />
Modelica.Icons.Signalbus<br />
Die Variablen im Connector werden automatisch durch<br />
Verbindungen zum "expandable connector" aufgebaut.<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 28
Beispiel:<br />
<strong>1.</strong> Ein- o<strong>der</strong> Ausgangssignal mit Bus-Connector verbinden:<br />
2. Menu wird angezeigt, um Signal im Connector zu definieren<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 29<br />
3. Neues Signal definieren (hier: "speed")<br />
Hierdurch wird implizit neue<br />
Variable definiert:<br />
controlBus.speed<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 30
Beispiel<br />
Unterbus<br />
(controlBus.transmissionControlBus)<br />
Busvariablen in<br />
Plot-Variablenliste<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 31<br />
5. Hierarchische Schnittstellen<br />
connector Pin<br />
import SI=Modelica.SIunits;<br />
SI.Voltage v<br />
flow SI.Current i;<br />
end Pin;<br />
connector Plug<br />
Pin phase, ground;<br />
end Plug;<br />
C1=0.01<br />
L1=0.1<br />
ist äquivalent zu:<br />
connector PlugExpanded<br />
import SI=Modelica.SIunits;<br />
SI.Voltage phase.v<br />
SI.Voltage ground.v<br />
flow SI.Current phase.i;<br />
flow SI.Current ground.i;<br />
end PlugExpanded;<br />
C1=0.01<br />
L1=0.1<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 32
Auf Verbindungslinie klicken<br />
plug und pin connector verbinden<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 33<br />
Komplexe Schnittstellen: Aus Elementarschnittstellen aufbauen<br />
Beispiel: Triebwerk<br />
• 3D-Mechanik Schnittstelle um Triebwerk an Flügel befestigen<br />
• Hydraulik Schnittstellen für Triebwerks-Hydraulik<br />
• Elektrische Schnittstellen für elektrische Versorgung<br />
• Signal Schnittstellen<br />
connector Engine<br />
import E = Modelica.Electrical.Analog;<br />
import B = Modelica.Blocks;<br />
MultiBody.Interfaces.Frame_a frame;<br />
HyLib.Interfaces.Port_A hydraulicPort_a;<br />
HyLib.Interfaces.Port_B hydraulicPort_b;<br />
E.Interfaces.Pin pin[3];<br />
ControlBus bus;<br />
end Engine<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 34
connector Pin<br />
SI.Voltage v;<br />
flow SI.Current i;<br />
end Pin;<br />
partial model TwoPin<br />
Pin p,n;<br />
SI.Current i;<br />
SI.Voltage u;<br />
equation<br />
0 = p.i + n.i;<br />
u = p.v - n.v;<br />
i = p.i;<br />
end TwoPin;<br />
6. Vererbung<br />
model Capacitor<br />
extends TwoPin;<br />
parameter SI.Capacitance C;<br />
equation<br />
C*<strong>der</strong>(u) = i;<br />
end Capacitor;<br />
partial: Unvollständiges Modell.<br />
Kann nicht instanziiert, d.h. direkt<br />
benutzt, werden:<br />
TwoPin p; // Fehler, nicht erlaubt<br />
extends:<br />
Vererbung<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 35<br />
Vorstehendes Modell ist identisch zu:<br />
connector Pin<br />
SI.Voltage v;<br />
flow SI.Current i;<br />
end Pin;<br />
partial model TwoPin<br />
Pin p,n;<br />
SI.Current i;<br />
SI.Voltage u;<br />
equation<br />
0 = p.i + n.i;<br />
u = p.v - n.v;<br />
i = p.i;<br />
end TwoPin;<br />
model Capacitor<br />
extends TwoPin;<br />
parameter SI.Capacitance C;<br />
equation<br />
C*<strong>der</strong>(u) = i;<br />
end Capacitor;<br />
Vorteil von extends:<br />
Gemeinsame Eigenschaften<br />
nur einmal definieren!<br />
model Capacitor<br />
Pin p,n;<br />
SI.Current i;<br />
SI.Voltage u;<br />
parameter SI.Capacitance C;<br />
equation<br />
0 = p.i + n.i;<br />
u = p.v - n.v;<br />
i = p.i;<br />
C*<strong>der</strong>(u) = i;<br />
end Capacitor;<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 36
Damit lassen sich die elektrischen Grundelemente sehr kompakt definieren:<br />
model Capacitor<br />
extends TwoPin;<br />
parameter SI.Capacitance C;<br />
equation<br />
C*<strong>der</strong>(u) = i;<br />
end Capacitor;<br />
model Inductor<br />
extends TwoPin;<br />
parameter SI.Inductance L;<br />
equation<br />
L*<strong>der</strong>(i) = u;<br />
end Inductor;<br />
model Resistor<br />
extends TwoPin;<br />
parameter SI.Resistance R;<br />
equation<br />
u = R*i;<br />
end Resistor;<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 37<br />
Beispiel: Modelica.Electrical.Analog.Basic.Capacitor<br />
M. Otter: Simulation von elektromechanischen Systemen, 4. <strong>Vorlesung</strong> 38
Simulation von elektromechanischen Systemen<br />
und<br />
Objektorientierte Modellierung mechatronischer Systeme<br />
Prof. Dr.-Ing. Martin Otter (DLR)<br />
5. <strong>Vorlesung</strong><br />
Veranstaltet vom Lehrstuhl für Elektr. Antriebssysteme und Leistungselektronik (Prof. Kennel), TU München<br />
Dozent: Prof. M. Otter: Tel. 08153/28-2473, Martin.Otter@dlr.de,<br />
www.robotic.dlr.de/Martin.Otter/vorlesung.html<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 1<br />
<strong>1.</strong> Gleichungssortierung (BLT-Transformation)<br />
2. Variablensubstitution (Tearing)<br />
3. Beispiel<br />
<strong>Inhalt</strong> <strong>der</strong> 5. <strong>Vorlesung</strong><br />
Rechnerübung<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 2
<strong>1.</strong> Gleichungssortierung (BLT-Transformation)<br />
Das Anfangswertproblem eines gewöhnlichen Differentialgleichungssystems<br />
(= Zustandsform)<br />
( ), ), ( ( ) ( x x x f x � �<br />
� t t t t t �<br />
kann mit Standardmethoden numerisch gelöst werden.<br />
x0<br />
Modell:<br />
Integrator<br />
ti, x ( ti<br />
) x� ( ti<br />
)<br />
x� �<br />
f ( x,<br />
t)<br />
x(t)<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 3<br />
Beispiel: Integrator = Explizites Euler-Verfahren<br />
0 )<br />
0<br />
D.h. bei gegebenem Zustand x muß<br />
die Ableitung des Zustands dx/dt im<br />
Modell berechnet werden.<br />
Hier wird dx/dt zum Zeitpunkt t i durch eine Vorwärtsdifferenz approximiert:<br />
Einsetzen in<br />
x(<br />
ti<br />
� �t)<br />
� x(<br />
ti<br />
)<br />
x� ( ti<br />
) �<br />
�t<br />
dx<br />
x(<br />
ti<br />
� �t)<br />
� x(<br />
ti<br />
)<br />
( ti) � fx ( ( ti), ti)<br />
ergibt � f ( x(<br />
ti<br />
), ti<br />
)<br />
dt<br />
�t<br />
ausgeschrieben:<br />
x( ti � �t)<br />
� x(<br />
ti<br />
) � �t<br />
�f<br />
( x(<br />
ti<br />
), ti<br />
)<br />
x1 �x( t1 �t0 �1 ��t) �x0 ��t�f( x0,<br />
t0)<br />
x2 �x( t2 ...<br />
�t0 �2 ��t) �x1��t�f( x1,<br />
t1)<br />
x �x( t �t �n��t) �x ��t�f( x , t )<br />
n n 0 n�1 n�1 n�1<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 4
Zusammenfassung:<br />
Aus Sicht des Integrators<br />
x(t 0) ist bekannt,<br />
x(t) und dx(t)/dt sind unbekannt und werden berechnet<br />
Aus Sicht des Modells:<br />
x(t i) ist bekannt,<br />
dx(t i)/dt ist unbekannt und wird berechnet<br />
Da wir im weiteren ausschließlich das Modell betrachten,<br />
wird <strong>der</strong> Zustand x immer als bekannt angesehen<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 5<br />
Aufstellen <strong>der</strong> Gleichungen eines Modelica Modells:<br />
Das Ausgangsgleichungssystem, d.h. alle Komponentengleichungen + alle<br />
Verbindungsgleichungen, ist ein differential-algebraisches Gleichungssystem<br />
(DAE: Differential-Algebraic Equation system):<br />
wobei:<br />
0�f( x�, x, y,<br />
t)<br />
y(t) algebraische Variablen<br />
x(t) Variablen die abgeleitet auftreten<br />
( t<br />
)<br />
x� Ableitungen von x<br />
Da es für Anfangswertprobleme von Differentialgleichungssystemen<br />
(= Zustandsform) sehr gute numerische Integratoren gibt, soll die obige<br />
DAE in die Zustandsform transformiert werden.<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 6
0 � f ( x�<br />
, x,<br />
y,<br />
t)<br />
0 � f ( z,<br />
x,<br />
t)<br />
Transformation in Zustandsform<br />
�x�<br />
�<br />
o<strong>der</strong> kompakter mit z � � �<br />
�y�<br />
x�<br />
� f ( x,<br />
t)<br />
( x,<br />
t)<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 7<br />
1<br />
y � f<br />
2<br />
z � g(<br />
x,<br />
t)<br />
Die Transformation in Zustandsform bedeutet damit, dass ein nichtlineares<br />
algebraisches Gleichungssystem 0 = f(z) gelöst werden muss.<br />
Eine eindeutige Lösung existiert, wenn<br />
�f<br />
�z<br />
�f<br />
�z<br />
� 0<br />
regulär ist, d.h. (wird vorerst vorausgesetzt)<br />
Bei <strong>der</strong> objektorientierten Modellierung (mit Modelica, gPROMS, VHDL-AMS,<br />
etc.) ist die Zahl <strong>der</strong> Gleichungen in <strong>der</strong> Regel sehr gross, jedoch sind in je<strong>der</strong><br />
Gleichung nur wenige Variable enthalten.<br />
Beispiel von <strong>der</strong> 2. <strong>Vorlesung</strong>:<br />
27 Gleichungen für<br />
27 Unbekannte.<br />
Maximal 3 Unbekannte<br />
pro Gleichung.<br />
Solche Gleichungssysteme können nur dann effizient gelöst werden, wenn die<br />
“dünne Besetzung” <strong>der</strong> Gleichungen im Algorithmus berücksichtigt wird<br />
(“Sparse Matrix” Verfahren).<br />
Wichtiges Verfahren: Block Lower Triangular Transformation<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 8
Beispiel:<br />
0 � f ( z , z )<br />
0 � f<br />
0 � f<br />
0 � f<br />
1<br />
2<br />
3<br />
4<br />
5<br />
3<br />
( z<br />
0 � f ( z , z , z )<br />
2<br />
2<br />
)<br />
( z , z )<br />
1<br />
( z , z , z )<br />
1<br />
4<br />
3<br />
2<br />
3<br />
5<br />
5<br />
z<br />
1<br />
�0<br />
�<br />
�<br />
0<br />
�0<br />
�<br />
�1<br />
�<br />
�1<br />
z<br />
2<br />
0<br />
1<br />
1<br />
1<br />
0<br />
z<br />
1<br />
0<br />
1<br />
0<br />
1<br />
3<br />
z<br />
1<br />
0<br />
0<br />
0<br />
0<br />
4<br />
z<br />
5<br />
0�<br />
0<br />
�<br />
�<br />
1�<br />
�<br />
0�<br />
1�<br />
�<br />
Inzidenzmatrix S:<br />
Wenn S ij=1, enthält die<br />
i-te Gleichung die Variable j<br />
BLT-Transformation (= sortieren = ermittle kleinste algebraische Schleifen)<br />
0 � f<br />
0 � f<br />
0 � f<br />
2<br />
4<br />
3<br />
5<br />
1<br />
( z<br />
)<br />
( z , z<br />
0 � f ( z , z , z )<br />
1<br />
2<br />
)<br />
( z , z , z<br />
1<br />
3<br />
2<br />
2<br />
3<br />
3<br />
0 � f ( z , z )<br />
4<br />
5<br />
5<br />
)<br />
z<br />
2<br />
�1<br />
�<br />
�<br />
1<br />
�1<br />
�<br />
�0<br />
�<br />
�0<br />
z<br />
1<br />
0<br />
1<br />
0<br />
1<br />
0<br />
z<br />
0<br />
0<br />
1<br />
1<br />
1<br />
3<br />
z<br />
0<br />
0<br />
1<br />
1<br />
0<br />
5<br />
z<br />
4<br />
0�<br />
0<br />
�<br />
�<br />
0�<br />
�<br />
0�<br />
1�<br />
�<br />
Durch Permutation von<br />
Zeilen und Spalten wird die<br />
Inzidenzmatrix auf untere<br />
Block-Dreiecksform<br />
transformiert<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 9<br />
Aus <strong>der</strong> BLT-Form kann die Lösung direkt ermittelt werden.<br />
0 � f<br />
0 � f<br />
0 � f<br />
2<br />
4<br />
3<br />
5<br />
1<br />
( z<br />
)<br />
( z , z<br />
0 � f ( z , z , z )<br />
1<br />
2<br />
)<br />
( z , z , z<br />
1<br />
3<br />
2<br />
2<br />
3<br />
3<br />
0 � f ( z , z )<br />
4<br />
5<br />
5<br />
)<br />
<strong>1.</strong> Löse f 2 nach z 2<br />
2. Löse f 4 nach z 1<br />
3. Löse f 3 und f 5 nach z 3 und z 5<br />
4. Löse f 1 nach z 4<br />
Wenn die unterstrichenen Variablen nur linear in <strong>der</strong> jeweiligen Gleichung<br />
auftreten, ist für <strong>1.</strong>, 2., und 4. eine analytische Lösung <strong>der</strong> Gleichung möglich.<br />
Für 3. muss ein lineares Gleichungssystem gelöst werden. Ansonsten sind<br />
voneinan<strong>der</strong> entkoppelte nichtlineare Gleichungssysteme zu lösen.<br />
0 � f ( z , z ) sei linear in z<br />
Beispiel: 4 1 2 1<br />
� 0 �c ( z )* z � f ( z )<br />
4a 2 1 4b 2<br />
� z : ��f<br />
( z )/ c<br />
1 4b 2 4a<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 10
Übung zur BLT Transformation:<br />
u 0<br />
�<br />
x � �<br />
�<br />
�<br />
�<br />
�<br />
y � �<br />
�<br />
�<br />
��<br />
u 1<br />
u 3<br />
i 1<br />
i 2<br />
u 2<br />
u 4<br />
Gleichungen des Systems<br />
0 � u<br />
0 � u<br />
0 � u<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 11<br />
0 � f ( x�<br />
, x,<br />
y,<br />
t)<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
��<br />
0 �<br />
0 �<br />
0 �<br />
0 �<br />
0 �<br />
0 �<br />
f<br />
f<br />
f<br />
f<br />
f<br />
f<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
( u , i )<br />
(<br />
(<br />
(<br />
(<br />
(<br />
1<br />
1<br />
(nur unbekannte Größen,<br />
d.h. dx/dt und y, aufführen;<br />
x wird als bekannt angesehen)<br />
)<br />
)<br />
)<br />
)<br />
)<br />
1<br />
2<br />
2<br />
1<br />
� R<br />
� u<br />
1<br />
� R<br />
4<br />
3<br />
2<br />
�i<br />
1<br />
�i<br />
2<br />
du3<br />
0 � C � � i1<br />
dt<br />
di2<br />
0 � L � � u4<br />
dt<br />
0 � u � u � u<br />
� u<br />
0<br />
2<br />
( � f<br />
� u<br />
4<br />
1<br />
( � f<br />
)<br />
2<br />
( � f<br />
( � f<br />
3<br />
4<br />
( � f<br />
)<br />
)<br />
5<br />
)<br />
)<br />
( � f<br />
gegeben: R R , C,<br />
L,<br />
u ( t)<br />
0 �<br />
0 �<br />
0 �<br />
0 �<br />
0 �<br />
0 �<br />
1,<br />
2<br />
0<br />
sortiert (BLT-Form)<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 12<br />
f<br />
f<br />
f<br />
f<br />
f<br />
f<br />
(<br />
(<br />
(<br />
(<br />
(<br />
(<br />
6<br />
)<br />
)<br />
)<br />
)<br />
)<br />
)<br />
)
Allgemeine Aufgabenstellung <strong>der</strong> BLT-Transformation:<br />
Transformiere die Inzidenzmatrix S mit den Permutationsmatrizen P und Q auf<br />
untere Dreiecksform mit den Diagonalblöcken B ij, so dass die B ij eine minimale<br />
Dimension besitzen (Permutationsmatrix = Einheitsmatrix, bei <strong>der</strong> Zeilen bzw.<br />
Spalten vertauscht sind)<br />
� B<br />
�<br />
�<br />
B<br />
P �S<br />
�Q<br />
� � B<br />
�<br />
� ...<br />
�<br />
�B<br />
m<br />
11<br />
21<br />
31<br />
1<br />
B<br />
B<br />
B<br />
0<br />
22<br />
32<br />
...<br />
m2<br />
Die BLT-Form ist (im wesentlichen) eindeutig. Z.B. können B 22 und B 11 auch<br />
vertauscht werden, wenn B 21=0. Diese BLT-Formen sind äquivalent.<br />
Um auf diese Form zu transformieren, sind höchstens O(n*m) Operationen nötig,<br />
wobei n die Zahl <strong>der</strong> Gleichungen und m die Zahl <strong>der</strong> “1” Elemente in <strong>der</strong><br />
Inzidenzmatrix sind! In <strong>der</strong> Regel ist die Zahl <strong>der</strong> Operationen jedoch O(m).<br />
B<br />
0<br />
0<br />
...<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 13<br />
Literaturstellen für BLT-Transformation:<br />
I.S.Duff, A.M.Erismann, J.K.Reid: Direct Methods for Sparse Matrices. Oxford University Press. 1986.<br />
Kapitel 6: “Reduction to block triangular form”. Dort für lineare Systeme beschrieben, gilt auch<br />
für nichtlineare Systeme. Aber: Beschreibung nicht geeignet für Implementierung.<br />
Die BLT-Transformation setzt sich aus zwei Algorithmen zusammen:<br />
<strong>1.</strong> Zuordnungsproblem (output set assignment):<br />
Frage: Nach welcher Variablen wird eine Gleichung gelöst?<br />
Kompakter Algorithmus in Pseude-Code in:<br />
...<br />
Pantelides C.C: The consistent initialization of differential-algebraic systems.<br />
SIAM Journal of Scientific and Statistical Computing, No. 9, S. 213-231, 1988.<br />
2. Schleifen (strong components) eines gerichteten Graphen:<br />
Kompakter Algorithmus in Pseude-Code in:<br />
Tarjan R.E.: Depth First Search and Linear Graph Algorithms.<br />
SIAM Journal of Comp., Vol. 1, S. 146-160, 1972.<br />
33<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 14<br />
0<br />
0<br />
0<br />
...<br />
...<br />
B<br />
0<br />
0<br />
0<br />
0<br />
mm<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�
Schritt 1: Lösung des Zuordnungsproblem<br />
Aufgabenstellung:<br />
Ermittle, nach welcher Variablen eine Gleichung aufgelöst werfen muss.<br />
Beispiel:<br />
0 � f ( z , z )<br />
0 � f<br />
0 � f<br />
0 � f<br />
0 � f<br />
0 � f<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
3<br />
( z , z , z )<br />
1<br />
( z , z )<br />
1<br />
( z , z , z )<br />
( z<br />
3<br />
2<br />
2<br />
)<br />
( z , z<br />
3<br />
4<br />
6<br />
0 � f ( z , z )<br />
5<br />
2<br />
3<br />
7<br />
)<br />
7<br />
6<br />
0 � f1(<br />
z 3,<br />
z4<br />
)<br />
0 � f<br />
0 � f<br />
0 � f<br />
0 � f<br />
0 � f<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
( z , z , z )<br />
1<br />
( z , z )<br />
1<br />
( z , z , z )<br />
( z<br />
3<br />
2<br />
2<br />
)<br />
( z , z<br />
3<br />
6<br />
0 � f ( z , z )<br />
5<br />
2<br />
3<br />
7<br />
)<br />
7<br />
6<br />
0 � f ( z , z )<br />
0 � f<br />
0 � f<br />
0 � f<br />
0 � f<br />
0 � f<br />
( z , z , z )<br />
( z , z<br />
( z , z , z )<br />
( z , z )<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 15<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
3<br />
3<br />
1<br />
( z<br />
1<br />
2<br />
2<br />
3<br />
)<br />
4<br />
6<br />
0 � f ( z , z )<br />
Variable, nach denen eine Gleichung aufgelöst wird, werden entsprechend<br />
gekennzeichnet. Alle Möglichkeiten werden systematisch durchprobiert.<br />
0 � f ( z , z<br />
0 � f<br />
0 � f<br />
0 � f<br />
0 � f<br />
0 � f<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
3<br />
( z , z , z )<br />
3<br />
( z , z<br />
1<br />
( z , z , z )<br />
( z<br />
1<br />
2<br />
2<br />
)<br />
)<br />
)<br />
( z , z )<br />
3<br />
4<br />
6<br />
0 � f ( z , z )<br />
5<br />
2<br />
3<br />
7<br />
7<br />
6<br />
f 6 kann nicht nach z 2 aufgelöst<br />
werden, weil f 4 nach z 2<br />
aufgelöst wird. Deswegen:<br />
Zuordnung von z 2 än<strong>der</strong>n.<br />
0 � f ( z , z<br />
0 � f<br />
0 � f<br />
0 � f<br />
0 � f<br />
0 � f<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
3<br />
( z , z<br />
( z<br />
0 � f<br />
0 � f<br />
0 � f<br />
)<br />
)<br />
)<br />
( z , z )<br />
6<br />
4<br />
2<br />
( z , z , z )<br />
1<br />
3<br />
( z , z , z )<br />
2<br />
3<br />
4<br />
6<br />
0 � f ( z , z )<br />
1<br />
2<br />
5<br />
2<br />
3<br />
7<br />
7<br />
6<br />
( z<br />
2<br />
)<br />
( z , z<br />
1<br />
)<br />
( z , z , z )<br />
1<br />
2<br />
6<br />
7<br />
f 7 kann we<strong>der</strong> nach z 3 noch nach z 7<br />
aufgelöst werden. Deswegen:<br />
Zuordnung von z 3 än<strong>der</strong>n.<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 16<br />
5<br />
2<br />
3<br />
7<br />
0 � f<br />
0 � f<br />
0 � f<br />
0 � f<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
)<br />
7<br />
6<br />
0 � f ( z , z )<br />
0 � f<br />
3<br />
( z , z<br />
( z<br />
( z<br />
)<br />
, z<br />
)<br />
)<br />
...<br />
En<strong>der</strong>gebnis<br />
( z , z , z )<br />
1<br />
3<br />
( z , z , z )<br />
2<br />
6<br />
0 � f ( z , z )<br />
1<br />
2<br />
3<br />
4<br />
5<br />
2<br />
3<br />
7<br />
7<br />
6
Hinweis:<br />
Wenn es nicht möglich ist eine Zuordnung zu finden (d.h. jede Unbekannte<br />
wird eindeutig aus einer Gleichung berechnet), dann ist das Gleichungssystem<br />
strukturell singulär. D.h. es gibt keine eindeutige Lösung, gleichgültig wie<br />
die nichtlinearen Funktionen aufgebaut sind.<br />
Beispiel:<br />
0 � f1(<br />
z1,<br />
z3)<br />
0 � f2<br />
( z2<br />
)<br />
0 � f ( z )<br />
3<br />
2<br />
• Wenn f 2(..) = f 3(..) gibt es unendlich viele Lösungen.<br />
• Wenn f 2 im Wi<strong>der</strong>spruch zu f 3 steht, gibt es keine<br />
Lösung<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 17<br />
Zuordnungsalgorithmus kann kompakt als rekursive Funktion geschrieben werden<br />
(in Modelica ähnlicher Pseudocode Notation):<br />
Integer Assigned[n];<br />
Boolean Visited [n];<br />
Boolean Success;<br />
algorithm<br />
Assigned := zeros(n);<br />
for i in 1:n loop<br />
Visited := fill(false,n);<br />
Success := assign(i);<br />
if not Success then<br />
error(“singular”);<br />
end if;<br />
end for<br />
function assign<br />
input Integer i;<br />
output Boolean Success;<br />
algorithm<br />
if ’a variable j of equation i exists,<br />
such that Assigned[j] = 0’ then<br />
Success := true;<br />
Assigned[j] := i;<br />
else<br />
Success := false;<br />
for ’every variable j of equation i<br />
with Visited[j] = false’<br />
Visited[j] := true;<br />
Success := assign(Assigned[j]);<br />
if Success then<br />
Assigned[j] = i;<br />
return;<br />
end if<br />
end for<br />
end if<br />
end assign;<br />
Globale Fel<strong>der</strong>:<br />
i=Assigned[j]: Gleichung i wird nach Variable j aufgelöst. Wenn<br />
i=0, gibt es noch keine Zuordnung für Variable j.<br />
Visited[i] : =false/true: Variable not/visited<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 18
Schritt 2: Schleifen eines gerichteten Graphen bestimmen<br />
(Algorithmus von Tarjan)<br />
Mit dem vom<br />
Zuordnungsalgorithmus<br />
ermittelten Ergebnis<br />
0 1 f<br />
0 � f ( z , z )<br />
1<br />
2<br />
3<br />
0 � f ( z , z )<br />
4<br />
3<br />
0 � f ( z , z , z )<br />
1<br />
3<br />
6<br />
0 � f ( z , z )<br />
kann ein gerichteter Graph erstellt werden:<br />
1<br />
4<br />
5<br />
2<br />
7<br />
0 � f ( z , z , z )<br />
: z4<br />
� 2 7 : 0 z f � 6 2 : 0 z f � 7 3 : 0 z f �<br />
5 6 : 0 z f �<br />
3 5 : 0 z f � 4 1 : 0 z f �<br />
z 4 wird aus Gleichung f 1 berechnet<br />
Ergebnis:<br />
5<br />
6<br />
0 � f ( z , z )<br />
7<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 19<br />
2<br />
0 � f ( z )<br />
Die Schleifen im Graph entsprechen den<br />
algebraischen Schleifen minimaler Dimension<br />
� : z4<br />
6 2 : 0 z f �<br />
3 5 : 0 z f � 4 1 : 0 z f �<br />
0 � f2<br />
, f5<br />
, f7<br />
: z3,<br />
z6<br />
, z7<br />
0 f1<br />
algebraisches<br />
Gleichungssystem<br />
0 � f<br />
0 � f<br />
0 � f<br />
0 � f<br />
0 � f<br />
0 � f<br />
6<br />
4<br />
2<br />
5<br />
7<br />
1<br />
3<br />
( z<br />
( z , z<br />
( z , z , z<br />
( z<br />
1<br />
( z<br />
2<br />
3<br />
2<br />
1<br />
3<br />
)<br />
, z<br />
, z<br />
( z , z<br />
3<br />
2<br />
6<br />
3<br />
4<br />
7<br />
5<br />
)<br />
, z<br />
)<br />
0 � f ( z , z )<br />
)<br />
7<br />
6<br />
)<br />
)<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 20<br />
2<br />
3<br />
3<br />
7<br />
6<br />
start
Zusammenfassung:<br />
• Es gibt einen effizienten graphentheoretischen Algorithmus um Gleichungen<br />
und Variablen so zu permutieren, daß die Unbekannten in einer Vorwärts-<br />
Rekursion berechnet werden können.<br />
• Der Algorithmus findet die algebraischen Schleifen minimaler Dimension<br />
(bezüglich Variablen/Gleichungs-Permutationen).<br />
• Diagonal-Blöcke mit Dimension > 1 entsprechen algebraischen Schleifen die<br />
simultan mit einem (linearen o<strong>der</strong> nicht-linearen) Gleichungslöser gelöst<br />
werden müssen.<br />
• Es zeigt sich, daß das Sortieren von 10000 Gleichungen auch auf einem PC<br />
innerhalb weniger Sekunden durchgeführt werden kann.<br />
Aber: Für viele (physikalische) Systeme sind die ermittelten<br />
Gleichungssysteme noch unnötig groß!<br />
Beispiel:<br />
Es gibt verschiedene Verfahren, um die algebraischen Schleifen effizient<br />
weiter zu bearbeiten (siehe: I.S.Duff, A.M.Erismann, J.K.Reid: Direct<br />
Methods for Sparse Matrices. Oxford University Press. 1986).<br />
z<br />
z<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 21<br />
3. Variablensubstitution (Tearing)<br />
z<br />
z<br />
z<br />
1<br />
2<br />
3<br />
4<br />
5<br />
� f ( z )<br />
�<br />
�<br />
�<br />
f<br />
f<br />
f<br />
1<br />
2<br />
3<br />
4<br />
5<br />
5<br />
( z<br />
1<br />
1<br />
)<br />
� f ( z , z )<br />
( z , z )<br />
2<br />
( z , z )<br />
4<br />
2<br />
3<br />
1<br />
die Dimension (= 5) dieser algebraischen<br />
Schleife kann durch BLT-Transformation<br />
(= Sortierung) nicht verkleinert werden.<br />
Numerische Lösung dieses nicht-linearen Gleichungssystems erfolgt<br />
dadurch, dass <strong>der</strong> Gleichungslöser so lange die Iterationsvariablen<br />
variiert, bis die Residuen "klein" genug sind:<br />
input : Iterationsvariablen z 1, z 2, z 3, z 4, z 5<br />
output: Residuen r 1, r 2, r 3, r 4, r 5<br />
r1: � z1� f1( z5)<br />
r2 : � z2 � f2( z1)<br />
r3: � z3� f3( z1, z2)<br />
r4 : � z4 � f4( z2, z3)<br />
r : � z � f ( z , z )<br />
5 5 5 4 1<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 22
z<br />
z<br />
z<br />
z<br />
z<br />
1<br />
2<br />
3<br />
4<br />
5<br />
� f ( z )<br />
�<br />
�<br />
�<br />
f<br />
f<br />
f<br />
1<br />
2<br />
3<br />
4<br />
5<br />
5<br />
( z<br />
1<br />
1<br />
)<br />
� f ( z , z )<br />
( z , z )<br />
2<br />
( z , z )<br />
4<br />
2<br />
3<br />
1<br />
input : Iterationsvariable z 5<br />
output: Residuum r 5<br />
z1: � f1( z5)<br />
z2 : � f2( z1)<br />
z3: � f3( z1, z2)<br />
z4 : � f4( z2, z3)<br />
r : � z � f ( z , z )<br />
5 5 5 4 1<br />
Mit Variablen-Substitution (“Tearing”) kann auf<br />
ein System <strong>der</strong> Dimension 1 reduziert werden:<br />
"Optimale" Wahl <strong>der</strong> Iterationsvariablen kann<br />
nur durch Ausprobieren aller Möglichkeiten<br />
ermittelt werden (zu uneffizient). Aber:<br />
Gutes heuristisches Verfahren verfügbar<br />
(wird in Dymola verwendet)<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 23<br />
Wenn alle unbekannten Variablen nur linear in das Gleichungssystem eingehen,<br />
kann explizit auf eine kleinere Dimension reduziert werden:<br />
Nach Ermittlung <strong>der</strong> Iterationsvariablen z 2 und entsprechen<strong>der</strong> Umsortierung<br />
hat das lineare Gleichungssystem die folgende Struktur (L ist eine untere<br />
Dreiecksmatrix, wobei die Diagonal-Elemente garantiert nicht-Null sind):<br />
� L J � �z � �b �<br />
� �<br />
12 1 1<br />
� � � � � �<br />
�J21 J22 � �z2� �b2� Da L eine reguläre untere Dreiecksmatrix ist, kann die Matrix effizient<br />
invertiert werden. Dies führt auf eine BLT-Form mit üblicherweise stark<br />
verkleinertem (nicht-trivialen) Diagonalblock:<br />
�J �J �L �J 0� �z� �b �L �b<br />
�<br />
�1 �1<br />
�<br />
�<br />
22 21<br />
�J12 12 2<br />
��� � ��<br />
L� �z1� �<br />
2<br />
b1<br />
1<br />
�<br />
�<br />
(kleines lin. Gleichungssystem)<br />
(untere Dreiecksform wegen L,<br />
kann also durch eine Vorwärtsrekursion<br />
gelöst werden)<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 24
4. Beispiel<br />
Die vorstehend erläuterten Algorithmen werden auf ein größeres Modell<br />
angewandt. Das Ausgangsgleichungssystem besteht aus rund<br />
1200 Gleichungen mit 1200 Unbekannten z <strong>der</strong> Form: 0 = f(z)<br />
Im folgenden wird die Struktur <strong>der</strong> Jacobi-Matrix<br />
�f<br />
�z<br />
gezeigt.<br />
x-Achse ist die Nummer <strong>der</strong> Variable,<br />
y-Achse ist die Nummer <strong>der</strong> Gleichung<br />
Wenn eine Variable i in <strong>der</strong> Gleichung j auftritt, wird im Diagram ein<br />
“blauer Punkt” bei <strong>der</strong> Koordinate (i,j) angegeben<br />
Die folgenden Diagramme wurden mit Dymola erzeugt.<br />
Ausgangsgleichungssystem<br />
Zahl an Nicht-Null<br />
Elementen = 3995<br />
Gleichungen<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 25<br />
0<br />
200<br />
400<br />
600<br />
800<br />
1000<br />
Komponentengleichungen<br />
Verbindungsgleichungen<br />
1200<br />
0 200 400 600 800 1000 1200<br />
Variablen<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 26
Einfache Manipulation<br />
<strong>der</strong> Gleichungen:<br />
• Elimination von “a=b”<br />
und “a=-b” Ausdrücken<br />
• Ausnutzung von<br />
“Null”- Elementen<br />
Zahl an Nicht-Null<br />
Elementen = 1017<br />
BLT – Form<br />
(Block Lower Triangular)<br />
0<br />
50<br />
100<br />
150<br />
200<br />
250<br />
300<br />
0 50 100 150 200 250 300<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 27<br />
0<br />
50<br />
100<br />
150<br />
200<br />
algebraische Schleifen<br />
250<br />
0 50 100 150 200 250<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 28
Endstruktur nach<br />
Tearing<br />
Endstruktur nach<br />
Tearing (vergössert)<br />
0<br />
50<br />
100<br />
150<br />
200<br />
algebraische Schleifen<br />
250<br />
0 50 100 150 200 250<br />
nz = 916<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 29<br />
20<br />
30<br />
40<br />
50<br />
60<br />
70<br />
80<br />
90<br />
100<br />
nicht-lineares Gleichungssystem<br />
Iterationsvariablen<br />
Lineare Gleichungssysteme<br />
(Transformation mittels<br />
Iterationsvariablen, Folie 31)<br />
20 30 40 50 60<br />
nz = 916<br />
70 80 90 100<br />
M. Otter: Simulation von elektromechanischen Systemen, 5. <strong>Vorlesung</strong> 30
Simulation von elektromechanischen Systemen<br />
und<br />
Objektorientierte Modellierung mechatronischer Systeme<br />
Prof. Dr.-Ing. Martin Otter (DLR)<br />
6. <strong>Vorlesung</strong><br />
Veranstaltet vom Lehrstuhl für Elektr. Antriebssysteme und Leistungselektronik (Prof. Kennel), TU München<br />
Dozent: Prof. M. Otter: Tel. 08153/28-2473, Martin.Otter@dlr.de,<br />
www.robotic.dlr.de/Martin.Otter/vorlesung.html<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 1<br />
<strong>Inhalt</strong> <strong>der</strong> 6. <strong>Vorlesung</strong><br />
<strong>1.</strong> Matrizen und Fel<strong>der</strong> in Modelica, Teil 1<br />
2. Schnittstellen für 3-dim. Mechanik<br />
3. Initialisierung von Modellen<br />
Rechnerübung<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 2
<strong>1.</strong> Matrizen und Fel<strong>der</strong> in Modelica, Teil 1<br />
Deklaration von Vektoren, Matrizen, mehrdimensionalen Fel<strong>der</strong>n:<br />
Real v[3]; // Vektor mit 3 Elementen<br />
Real M[4,4]; // Matrix mit 4*4 Elementen<br />
Real F[2,6,3,9]; // 4-dimensionales Feld<br />
Real[2,3] D; // Matrix mit 2*3 Elementen<br />
Wenn die Dimensionen unbekannt sind, “:” verwenden:<br />
parameter Real Nenner[:]; // Dimensionen noch unbekannt<br />
parameter Real A[:,:];<br />
Zugriff auf ein Feldelement mit [..]:<br />
equation<br />
v[1]*v[1] + v[2]*v[2] = M[1,3]*M[3,1] + F[1,3,4,5];<br />
Das erste Element beginnt immer bei 1; d.h.<br />
Real v[3]; definiert die 3 Elemente v[1], v[2], v[3]<br />
Feld-Konstruktor mit { ... }<br />
Matrix-Konstruktor mit [ ... ]<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 3<br />
Jedes Verwenden von {...} erzeugt eine neue Dimension. Damit<br />
können Fel<strong>der</strong> beliebiger Dimensionen aufgebaut werden. Beispiele:<br />
parameter Real v[3] = {1, 2, 3};<br />
parameter Real m[2,3] = {{11,12,13}, {21,22,23}};<br />
parameter Real a[4,2,3] = {m, 2*m, 3*m, 4*m};<br />
parameter Real m2[2,3] = [11, 12, 13; 21, 22, 23];<br />
Mit [...] werden Matrizen aufgebaut (Matlab kompatibel).<br />
Generell erzeugt [...] eine Matrix.<br />
Zum Beispiel ist [v] eine 3 x 1 Matrix, wenn v ein 3-Vektor ist.<br />
Erlaubt einfaches Zusammensetzen von Vektoren und Matrizen:<br />
parameter Real m3[3,3] = [m; transpose([v])];<br />
�11<br />
�<br />
�21<br />
�11<br />
�<br />
�<br />
21<br />
��<br />
1<br />
�11<br />
�<br />
�21<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 4<br />
12<br />
22<br />
2<br />
12<br />
22<br />
12<br />
22<br />
13 �<br />
23<br />
�<br />
�<br />
13�<br />
23<br />
�<br />
�<br />
3 ��<br />
13 �<br />
23<br />
�<br />
�
Beispiel für Parameter Menu für Vektoren und Matrizen<br />
model TestMatrix<br />
parameter Real vector[:] "Vektor-Parameter";<br />
parameter Real matrix[:,:] "Matrix-Parameter";<br />
...<br />
end TestMatrix;<br />
Eingabe von Feld mit<br />
Feld-Konstruktor in Eingabefeld.<br />
o<strong>der</strong><br />
Eingabe von Feld mit Feld-Editor:<br />
Auf "Tabellensymbol" klicken<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 5<br />
2. Schnittstellen für 3-dim. Mechanik<br />
Doppelpendel (2 Drehgelenke + 2 Körper).<br />
Modelica.Mechanics.MultiBody<br />
• Automatische Visualisierung<br />
von jedem Objekt.<br />
• Jedes Objekt kann beliebig<br />
verschaltet werden.<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 6
Weltsystem<br />
(= Inertialsystem)<br />
Beispiele:<br />
Drehgelenk<br />
Beispiel: Doppelpendel<br />
1D rotatorischer Dämpfer<br />
1D rotatorischer Flansch um<br />
Drehgelenk anzutreiben<br />
Körper<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 7<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 8
Schnittstellen-Definition<br />
a f<br />
a �<br />
cut plane<br />
frame a<br />
a<br />
0 r 0a<br />
R 0a<br />
0<br />
world frame<br />
connector Frame<br />
import SI = Modelica.SIunits;<br />
import Modelica.Mechanics.MultiBody.Frames;<br />
SI.Position r_0[3]"= 0 r 0a ";<br />
Frames.Orientation R "= R 0a ";<br />
flow SI.Force f[3] "= a f";<br />
flow SI.Torque t[3] "= a �";<br />
end Frame;<br />
Real r_0[3]: Ortsvektor vom Weltsystem zum "Frame" System (Koordinaten im Weltsystem)<br />
Real R[3,3]: Drehmatrix vom Weltsystem ins "Frame" System<br />
Real f[3] : Schnittkraft (Koordinaten im "Frame" System)<br />
Real t[3] : Schnittmoment (Koordinaten im "Frame" System)<br />
Ähnlich wie bei Antriebssträngen, können Geschwindigkeit v, Beschleunigung a,<br />
Winkelgeschwindigkeit w und Winkelbeschleunigung z<br />
durch Differentiation ermittelt werden:<br />
frame_b<br />
n<br />
v = <strong>der</strong>(frame.r_0);<br />
a = <strong>der</strong>(v);<br />
w = MultiBody.Frames.angularVelocity1(frame.R);<br />
z = <strong>der</strong>(w);<br />
n = {0,0,1}<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 9<br />
Jedes Modell muss auf oberster Ebene eine Instanz von<br />
MultiBody.World haben. Hier wird z.B. das Gravitationsfeld<br />
definiert, sowie Voreinstellungen für die Animation<br />
phi<br />
frame_a<br />
Drehgelenk wird im wesentlichen definiert durch Vektor n<br />
in Richtung <strong>der</strong> Drehachse. Die 3 Koordinaten von n werden im<br />
frame_a (linker Connector) angegeben. Der Ursprung von<br />
frame_a und frame_b (rechter Connector) stimmt überein und die<br />
beiden Frames werden entlang von n um den Winkel phi verdreht.<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 10
Körper mit Masse und Trägheitstensor. Wird im wesentlichen<br />
definiert durch Vektor von frame_a zum Massenmittelpunkt (r_CM),<br />
sowie durch Masse und Trägheitstensor<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 11<br />
Weitere Bauteile (aus Modelica.Mechanics.MultiBody.Parts):<br />
Fester Punkt (Frame) im Weltsystem<br />
Feste Translation von frame_b relativ zu frame_a<br />
(um z.B. Punkte auf einem Körper zu definieren)<br />
Körper mit zwei Frames (ansonsten wie "Body")<br />
Qua<strong>der</strong> (spezieller Körper). Masse und Trägheitstensor wird<br />
über Abmessungen und Dichte berechnet<br />
Zylin<strong>der</strong> (spezieller Körper). Masse und Trägheitstensor wird<br />
über Abmessungen und Dichte berechnet<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 12
Referenzkonfiguration:<br />
In <strong>der</strong> Regel sind die Koordinatensysteme aller Connectoren parallel<br />
zueinan<strong>der</strong>, wenn die Gelenkkoordinaten (wie Drehwinkel eines Drehgelenks)<br />
Null sind. Diese Referenzkonfiguration erlaubt eine einfache Definition<br />
aller vektoriellen Größen, da alle lokalen Koordinatensysteme parallel zum<br />
Weltsystem sind. Beispiel:<br />
Beispiel: Gewählte Referenzkonfiguration vom "Doppelpendel"<br />
n = {0,0,1}<br />
r = {0.5,0,0} r = {0.5,0,0}<br />
n = {0,0,1}<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 13<br />
( ), ), ( ( ) ( x x x f x � �<br />
� t t t t t �<br />
kann mit Standardmethoden numerisch gelöst werden.<br />
Aber: Der benötigte Anfangszustand x 0 ist nicht immer bekannt.<br />
Stattdessen zum Beispiel:<br />
3. Initialisierung von Modellen<br />
Initialisierung von Systemen in Zustandsform:<br />
Anfangswerte so, dass System in einem stationären Zustand ist, d.h.<br />
x� ( t � t0)<br />
� x�<br />
0 � 0<br />
Daraus können die für den Integrator benötigten Anfangswerte berechnet werden:<br />
, ) x f<br />
Löse 0 �<br />
nach x0 ( 0 0 t<br />
(d.h. Lösung eines nichtlinearen Gleichungssystems)<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 14<br />
0 )<br />
0
Initialisierung von regulären DAEs:<br />
0 � f ( x�<br />
, x,<br />
y,<br />
t)<br />
Auch hier genügt es die Anfangszeit t 0 und den Anfangszustand x 0 vorzugeben.<br />
Dann ist die DAE ein nichtlineares Gleichungssystem zur Bestimmung <strong>der</strong><br />
an<strong>der</strong>en Variablen am Startzeitpunkt (= dasselbe Gleichungssystem, das auch<br />
während <strong>der</strong> Integration zu lösen ist, da in jedem Schritt vom Integrator auch <strong>der</strong><br />
Zustand x(t) vorgegeben wird):<br />
0 � f x�<br />
, x , y , t ) mit x� � x�<br />
t ), x � x(<br />
t ), y � y(<br />
t )<br />
gegeben: t0, x0 gesucht : 0 , y 0 x�<br />
( 0 0 0 0<br />
0<br />
( 0 0 0 0 0<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 15<br />
Allgemeinere Anfangsbedingungen:<br />
Die DAE muss am Anfangszeitpunkt t 0 erfüllt sein, d.h.<br />
0 � f x�<br />
, x , y , t ) mit x� � x�<br />
t ), x � x(<br />
t ), y � y(<br />
t )<br />
( 0 0 0 0<br />
0<br />
( 0 0 0 0 0<br />
Statt x 0, werden alternativ dim(g) = dim(x) Bedingungen vorgegeben:<br />
0 � g(<br />
x�<br />
0,<br />
x0,<br />
y 0,<br />
t0)<br />
Dann liegt ein nichtlineares Gleichungssystem in 2*dim(x) + dim(y)<br />
Gleichungen in den 2*dim(x) + dim(y) Unbekannten x� 0 , x0,<br />
y0<br />
vor,<br />
das zum Anfangszeitpunkt t0 gelöst werden muss.<br />
0 � f ( x�<br />
, x , y , t )<br />
0<br />
0 � g(<br />
x�<br />
, x , y , t )<br />
0<br />
0<br />
0<br />
0<br />
0<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 16<br />
0<br />
0
Dymola generiert im Prinzip zwei unterschiedliche Codes:<br />
• einen zur Initialisierung<br />
(Gleichungen f(...) und g(...); alle Variaben sind unbekannt)<br />
• einen zur Simulation<br />
(Gleichungen f(...); Variablen x(t) sind bekannt, x� ( t), y(<br />
t)<br />
werden berechnet)<br />
Vorteil:<br />
Durch Dymolas symbolische Vorverarbeitung von beiden<br />
Gleichungssystemen, gibt es eine effiziente und robuste Lösung<br />
<strong>der</strong> Initialisierungsgleichungen mit guter Diagnostik in Problemfällen.<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 17<br />
Anfangswertgleichungen g(..) können in Modelica auf zwei unterschiedliche<br />
Weisen definiert werden.<br />
<strong>1.</strong> Durch zusätzliche Attribute von Variablen<br />
start Anfangswert <strong>der</strong> Variable bei t0 (Voreinstellung = 0)<br />
fixed = true : v(start=v0, fixed=true) ergibt die Gleichung<br />
"v = v0" bei <strong>der</strong> Initialisierung<br />
(Voreinstellung für Parameter)<br />
= false: "start" ist ein Schätzwert, <strong>der</strong> während <strong>der</strong><br />
Initialisierung geän<strong>der</strong>t werden darf.<br />
(Voreinstellung für alle an<strong>der</strong>en Variablen)<br />
2. Durch Gleichungen in <strong>der</strong> “initial equation” o<strong>der</strong> “initial algorithm”<br />
Sektion. Die Gleichungen/Zuweisungen in diesen Sektionen werden<br />
nur bei <strong>der</strong> Initialisierung benutzt.<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 18
Beispiel:<br />
k<br />
y � �u<br />
T � s �1<br />
model FirstOr<strong>der</strong> // initialize state<br />
parameter Real T=0.01 "time constant";<br />
input Real u;<br />
Real y(start=1, fixed=true);<br />
equation<br />
T*<strong>der</strong>(y) + y = k*u;<br />
end FirstOr<strong>der</strong>;<br />
Bei <strong>der</strong> Initialisierung gibt es 2 Gleichungen:<br />
mit <strong>der</strong> Lösung:<br />
y = 1;<br />
T*<strong>der</strong>(y) + y = k*u(t 0 );<br />
y := 1;<br />
<strong>der</strong>(y) := (k*u(t 0 ) - y)/T;<br />
T � y�<br />
� y � k �u<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 19<br />
k<br />
y � �u<br />
T � s �1<br />
T � y�<br />
� y � k �u<br />
model FirstOr<strong>der</strong> // stationary initialization<br />
parameter Real T=0.01 "time constant";<br />
input Real u;<br />
Real y;<br />
equation<br />
T*<strong>der</strong>(y) + y = k*u;<br />
initial equation<br />
<strong>der</strong>(y) = 0;<br />
end FirstOr<strong>der</strong>;<br />
Bei <strong>der</strong> Initialisierung gibt es 2 Gleichungen:<br />
<strong>der</strong>(y) = 0;<br />
T*<strong>der</strong>(y) + y = k*u(t 0 );<br />
mit <strong>der</strong> Lösung:<br />
<strong>der</strong>(y) := 0;<br />
y := k*u(t0 );<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 20
Beispiel:<br />
Fe<strong>der</strong>-Massesystem im<br />
Schwerefeld<br />
s<br />
Gleichungen:<br />
s� � v<br />
mv ���mg � �c� s�s Resultat:<br />
m � g<br />
s(<br />
t0<br />
) � s0<br />
�<br />
c<br />
v(<br />
t ) � 0<br />
0<br />
� �<br />
mit<br />
s : Abstand zum Nullpunkt<br />
v : Geschwindigkeit<br />
m: Masse<br />
g : Gravitationsbeschleunigung<br />
c : Fe<strong>der</strong>konstante<br />
s0 : Länge <strong>der</strong> unausgelenkten Fe<strong>der</strong><br />
Stationäre Initialisierung:<br />
s�<br />
� 0<br />
v�<br />
� 0<br />
+<br />
s� � v<br />
mv ���mg � �c� s�s M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 21<br />
0<br />
� �<br />
Wenn zu viele Initialisierungsbedingungen vorgegeben werden<br />
(also > dim(x) Gleichungen), bricht Dymola mit einer Fehlermeldung ab:<br />
hier:<br />
es gibt 2 Anfangsbedingungen zu viel<br />
Wenn zu wenig Initialisierungsbedingungen vorgegeben werden<br />
(also < dim(x) Gleichungen), verwendet Dymola automatisch<br />
die "start" Werte von geeigneten Zustandsgrößen als Anfangsbedingungen.<br />
Wenn kein "start" Wert gesetzt wurde, wird hierzu <strong>der</strong> "default start" Wert<br />
von Null benutzt.<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 22<br />
0
Wenn zu wenig Initialisierungsbedingungen vorgegeben werden<br />
und im Eingabefenster des Simulations-Windows die Option<br />
Advanced.DefaultSteadyStateInitialization = true<br />
gesetzt wurde, verwendet Dymola automatisch die Anfangsbedingungen<br />
<strong>der</strong>(x) = 0 für geeignet gewählte Zustände x. D.h. wenn keinerlei<br />
Anfangsbedingungen gesetzt wurden, wird im Stationärzustand initialisiert.<br />
Beispiel:<br />
Real y1(start=1, fixed=true);<br />
Real y2; // obige Option wurde gesetzt<br />
equation<br />
T*<strong>der</strong>(y1) + y1 = k1*u;<br />
T*<strong>der</strong>(y2) + y2 = k2*y1;<br />
Bei <strong>der</strong> Initialisierung gibt es 4 Gleichungen:<br />
y1 = 1;<br />
<strong>der</strong>(y2) = 0;<br />
T*<strong>der</strong>(y1) + y1 = k1*u(t 0 );<br />
T*<strong>der</strong>(y2) + y2 = k2*y1;<br />
Beispiel: MultiBody Bibliothek<br />
Starte von gegebenem Startwinkel<br />
phi_start = 0 und Startdrehzahl<br />
w_start = 0<br />
mit <strong>der</strong> Lösung<br />
y1 := 1;<br />
<strong>der</strong>(y1) := (k1*u(t 0 ) – y1)/T<br />
<strong>der</strong>(y2) := 0;<br />
y2 := k2*y1;<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 23<br />
Gelenke können<br />
über ein Menü<br />
initialisiert werden<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 24
Stationäre Initialisierung<br />
w = 0, <strong>der</strong>(w) = 0,<br />
phi_start wird als Schätzwert benutzt (für nichtlineares Gleichungssystem)<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 25<br />
Damit können in Modelica sehr flexibel Anfangswertgleichungen definiert<br />
werden. Dies erlaubt insbeson<strong>der</strong>e die Definition und Lösung schwieriger, nichtstandard<br />
Initialisierungsprobleme industrieller Anwendungen. Beispiele:<br />
• Stationäre Initialisierung um eine konstante Vorwärtsgeschwindigkeit eines<br />
Flugzeugs (d.h. nicht alle Zustandsableitungen verschwinden).<br />
• Stationäre Initialisierung um periodische Lösungen,<br />
wie sie in Systemen <strong>der</strong> Leistungselektronik o<strong>der</strong> bei Motormodellen<br />
auftreten.<br />
• Stationäre Initialisierung von kontinuierlichen Systemen, die über<br />
Abtastsysteme geregelt werden (die diskreten Zustände <strong>der</strong><br />
Abtastregler werden so berechnet, dass sich das Gesamtsystem in einem<br />
stationären Zustand befindet).<br />
• Initialisierung von unstetigen und strukturvariablen Systemen, z.B., Systeme<br />
mit Reibung, Lose etc. (bei <strong>der</strong> Initialisierung wird eine glatte Approximation<br />
<strong>der</strong> Unstetigkeit verwendet).<br />
• Initialisierung von Parametern (z.B. Fe<strong>der</strong>konstante).<br />
M. Otter: Simulation von elektromechanischen Systemen, 6. <strong>Vorlesung</strong> 26
Simulation von elektromechanischen Systemen<br />
und<br />
Objektorientierte Modellierung mechatronischer Systeme<br />
Prof. Dr.-Ing. Martin Otter (DLR)<br />
7. <strong>Vorlesung</strong><br />
Veranstaltet vom Lehrstuhl für Elektr. Antriebssysteme und Leistungselektronik (Prof. Kennel), TU München<br />
Dozent: Prof. M. Otter: Tel. 08153/28-2473, Martin.Otter@dlr.de,<br />
www.robotic.dlr.de/Martin.Otter/vorlesung.html<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 1<br />
<strong>Inhalt</strong> <strong>der</strong> 7. <strong>Vorlesung</strong><br />
<strong>1.</strong> Einführung in singuläre Systeme<br />
2. Allgemeine Behandlung singulärer Systeme<br />
3. Test zu “singuläre Systeme”<br />
Rechnerübung<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 2
Ziel:<br />
<strong>1.</strong> Einführung in singuläre Systeme<br />
0 � f ( x�<br />
, x,<br />
y,<br />
t)<br />
0 � f ( z,<br />
x,<br />
t)<br />
Transformation in Zustandsform<br />
�x�<br />
�<br />
o<strong>der</strong> kompakter mit z � � �<br />
�y�<br />
x�<br />
� f ( x,<br />
t)<br />
( x,<br />
t)<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 3<br />
1<br />
y � f<br />
2<br />
z � g(<br />
x,<br />
t)<br />
Die Transformation in Zustandsform bedeutet damit, dass ein nichtlineares<br />
algebraisches Gleichungssystem 0 = f(z) gelöst werden muss.<br />
Eine eindeutige Lösung existiert, wenn<br />
�f<br />
�z<br />
regulär ist, d.h.<br />
� �f<br />
�<br />
det� � � 0<br />
� �z<br />
�<br />
Diese Voraussetzung wird jetzt fallengelassen, d.h. es werden Systeme<br />
betrachtet bei denen<br />
�f<br />
��f<br />
�<br />
�z<br />
�<br />
��x�<br />
�f<br />
�<br />
�y<br />
�<br />
�<br />
� �f<br />
�<br />
� �<br />
� �z<br />
�<br />
singulär ist, d.h. det � 0<br />
Diese werden im folgenden als “singuläre Systeme” bezeichnet.<br />
In <strong>der</strong> Literatur wird auch von “Systemen mit höherem Index” gesprochen.<br />
Der Zusammenhang mit “singulären Systemen” wird später aufgezeigt.<br />
Hinweis: Eine Matrix ist auf jeden Fall singulär, wenn eine Zeile o<strong>der</strong> Spalte<br />
<strong>der</strong> Matrix nur aus „Nullen“ besteht, zum Beispiel:<br />
�1<br />
�<br />
�<br />
0<br />
��<br />
2<br />
0<br />
0<br />
3<br />
2�<br />
0<br />
�<br />
�<br />
0��<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 4
Beispiel:<br />
0 � � � ��<br />
0 � J<br />
1<br />
1<br />
2<br />
1<br />
1<br />
1<br />
2<br />
1<br />
0 � � � i ��<br />
0 � i ��<br />
��<br />
� � � ��<br />
( t)<br />
��<br />
2<br />
2<br />
0<br />
0 � � �2<br />
��<br />
2<br />
0 � J � � � ��<br />
� 0( t)<br />
0 � f ( x�<br />
, x,<br />
y,<br />
t)<br />
2<br />
Inertia1<br />
1<br />
Inertia2<br />
IdealGear<br />
gegeben: τ 0(t), J 1, J 2, i<br />
Test<br />
0 � C<br />
0 � u<br />
0 � i<br />
0 � f ( x�<br />
, x,<br />
y,<br />
t)<br />
0<br />
1<br />
0 � u<br />
1<br />
0 � C<br />
0<br />
2<br />
�u�<br />
� i<br />
1<br />
1<br />
�u�<br />
2<br />
� u<br />
� i<br />
2<br />
� i<br />
� R �i<br />
1<br />
� i<br />
2<br />
0<br />
��1<br />
�<br />
� �<br />
�<br />
�1<br />
x � �<br />
��<br />
� � � �<br />
2 1 �<br />
� � �<br />
��<br />
�<br />
�<br />
2 � �<br />
�1<br />
�<br />
� � � � 2<br />
z � � �<br />
�<br />
� � �2<br />
�<br />
��<br />
1 � � �<br />
y � �1<br />
� �<br />
��<br />
� �<br />
2 � ��<br />
� 2 ��<br />
�������<br />
� 1 0 0 0 0 0 �<br />
�<br />
�<br />
0 J1<br />
0 0 1 0<br />
�f<br />
� 0 0 1 0 0 0<br />
� �<br />
�z<br />
� 0 0 0 J 2 0 �1<br />
� 0 0 0 0 0 0<br />
�<br />
��<br />
0 0 0 0 i �1�<br />
nicht regulär<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 5<br />
2<br />
� u<br />
gegeben: u 0(t), C 1, C 2, R<br />
1<br />
�<br />
x �<br />
�<br />
�<br />
��<br />
y �<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
��<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
u 0<br />
i 0<br />
�<br />
�<br />
�<br />
�<br />
z � �<br />
�<br />
�<br />
�<br />
��<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
��<br />
�<br />
�<br />
�<br />
�f<br />
�<br />
� �<br />
�z<br />
�<br />
�<br />
�<br />
��<br />
u 1 u2<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 6<br />
i 1<br />
regulär (ja/nein):<br />
i 2<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
��
Singuläre Systeme können durch algebraische Transformationen nicht in<br />
Zustandsform überführt werden, da das zu lösende nicht-lineare<br />
algebraische Gleichungssystem keine eindeutige Lösung besitzt.<br />
Generell gilt:<br />
�f<br />
Wenn singulär ist, liegt einer <strong>der</strong> folgenden beiden Fälle vor:<br />
�z<br />
• Es gibt keine eindeutige Lösung<br />
(das Modell ist "falsch" o<strong>der</strong> "zu stark idealisiert")<br />
• Es gibt Zwangsbedingungen zwischen potentiellen Zustandsgrößen,<br />
so daß das Gesamtsystem weniger Zustandgrößen hat, als die Summe <strong>der</strong><br />
potentiellen Zustandsgrößen <strong>der</strong> Einzelkomponenten.<br />
D.h. die DAE kann eindeutig gelöst werden. Allerdings erfor<strong>der</strong>t dies eine<br />
(nicht-triviale) Transformation in eine an<strong>der</strong>e Zustandsform, mit weniger<br />
Zustandsgrößen!<br />
Singuläre Systeme treten in allen Gebieten <strong>der</strong> Physik auf!<br />
Hinweise:<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 7<br />
•Für spezielle singuläre Systeme (z.B. Mehrkörpersysteme) gibt es eine<br />
ganze Reihe unterschiedlicher Lösungsverfahren.<br />
• In <strong>der</strong> <strong>Vorlesung</strong> wird jedoch nur ein Verfahren besprochen<br />
(= Dummy Derivative Methode), welches für die objektorientierte<br />
Modellierung am besten geeignet ist, da damit eine sehr große Klasse<br />
von Systemen automatisch behandelt werden kann.Dieses Verfahren<br />
wird auch in objekt-orientierten Modellierungssystemen<br />
wie Dymola, Abacus, EquaPro, etc. eingesetzt.<br />
• Bei an<strong>der</strong>en Verfahren, wie <strong>der</strong> direkten numerischen Lösung <strong>der</strong> DAE,<br />
können nur sehr spezielle Klassen von singulären Systemen behandelt<br />
werden.<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 8
Analyse eines singulären Systems:<br />
J<br />
J<br />
2<br />
0 � f ( x�<br />
, x,<br />
y,<br />
t)<br />
1<br />
� � � �<br />
1<br />
1<br />
2<br />
2<br />
1<br />
i ��<br />
��<br />
1<br />
0<br />
� � � ��<br />
2<br />
2<br />
1<br />
� � � ��<br />
��<br />
� � � �<br />
2<br />
� � i ��<br />
2<br />
1<br />
Trägheit 1<br />
Trägheit 2<br />
Getriebe<br />
� 0( t)<br />
Zustandsgrößen<br />
anschaulich ist klar, dass durch Vorgabe von � 1, � 1, auch die Zustandsgrößen<br />
� 2, � 2 von Trägheit 2 festliegen, da das Getriebe die Trägheiten starr koppelt.<br />
Damit können � 1, � 1 , � 2, � 2 nicht mehr unabhängig vorgegeben werden und<br />
zwei <strong>der</strong> Grössen können deswegen keine Zustandsgrößen sein!<br />
J<br />
J<br />
2<br />
1<br />
� � � �<br />
1<br />
1<br />
2<br />
� � � ��<br />
2<br />
1<br />
i ��<br />
��<br />
1<br />
0<br />
2<br />
2<br />
1<br />
� � � ��<br />
��<br />
� � � �<br />
2<br />
� � i ��<br />
2<br />
2<br />
0<br />
4<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 9<br />
2<br />
1<br />
��1<br />
�<br />
� �<br />
�<br />
�1<br />
x � �<br />
��<br />
� 2<br />
� �<br />
��<br />
2 �<br />
��<br />
1 �<br />
y � � �<br />
��<br />
2 �<br />
� � �1<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�1<br />
�<br />
� � � � 2<br />
z � � �<br />
� � �2<br />
�<br />
��<br />
�<br />
1<br />
� �<br />
��<br />
� 2 ��<br />
6 Gleichungen zur Berechnung <strong>der</strong><br />
6 Unbekannten z<br />
Ist aber eine Gleichung, in <strong>der</strong><br />
keine <strong>der</strong> Unbekannten auftritt.<br />
Zustandsgrößen können an einem Anfangszeitpunkt beliebig vorgegeben<br />
werden. Auf Grund von “� 1=i � 2” gibt es aber eine algebraische Beziehung<br />
zwischen Zustandsgrößen, so daß dies hier nicht möglich ist. Hieraus folgt, daß<br />
eine <strong>der</strong> beiden Größen kein Zustand sein kann.<br />
Es werde angenommen, daß �1 kein Zustand ist. Solche Variablen werden in<br />
Zukunft als Dummy-Zustände bezeichnet. Damit wird eine neue Unbekannte<br />
eingeführt. Da es aber nur 6 Gleichungen für die jetzt 7 Unbekannten gibt,<br />
wird eine zusätzliche Gleichung benötigt. Diese ergibt sich durch<br />
Differentiation aus <strong>der</strong> Zwangsbedingung:<br />
� � i<br />
��<br />
� � � i � � �<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 10<br />
1<br />
2<br />
1<br />
2
Hinweise:<br />
Die Zwangsgleichungen zwischen potentiellen Zuständen können mit <strong>der</strong><br />
folgenden hinreichenden strukturellen Bedingung aus den Gleichungen<br />
einer DAE ermittelt werden:<br />
� � i ��<br />
1 Gleichung > 0 Unbekannte<br />
hier: 1 2<br />
Zahl <strong>der</strong> Gleichungen > Zahl <strong>der</strong> Unbekannten<br />
in einer möglichst kleinen Untermenge <strong>der</strong> DAE-Gleichungen<br />
Dummy-Zustände und Ihre Ableitungen, wie �1,�� 1,<br />
sind rein<br />
algebraische Variable.<br />
J<br />
J<br />
2<br />
1<br />
� � � �<br />
1<br />
1<br />
2<br />
� � � ��<br />
2<br />
1<br />
i ��<br />
��<br />
1<br />
1<br />
1<br />
� � � ��<br />
��<br />
0<br />
� � � �<br />
2<br />
2<br />
2<br />
� � i ��<br />
� � � i � � �<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 11<br />
2<br />
2<br />
1<br />
��1<br />
�<br />
x �<br />
� �<br />
�<br />
�2<br />
�<br />
��<br />
� � 2 �<br />
��<br />
1 �<br />
� �<br />
�<br />
� 2<br />
y � �<br />
��<br />
� 1<br />
� �<br />
� � �1�<br />
� � �1<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�2<br />
�<br />
� � � � 2<br />
� �<br />
z � ��<br />
1 �<br />
��<br />
�<br />
2<br />
� �<br />
��1<br />
�<br />
� �<br />
� � �1<br />
�<br />
7 Gleichungen zur Berechnung <strong>der</strong><br />
7 Unbekannten z<br />
3 Gleichungen für 2 Unbekannte ( �1 , � �2),<br />
da die Zustandsgrößen<br />
�1, �2 als bekannt angenommen werden.<br />
�<br />
Damit liegen wie<strong>der</strong> Zwangsgleichungen zwischen Zuständen vor, so<br />
dass einer <strong>der</strong> beiden kein Zustand sein kann.<br />
Einer <strong>der</strong> beiden Zustände muss so als Dummy-Zustand ausgewählt<br />
werden, dass mit diesen 3 Gleichungen die 3 Unbekannten <strong>der</strong> Gleichung<br />
berechnet werden können.<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 12
Hier: � 1 ist Dummy-Zustand, d.h. eine neue Unbekannte<br />
Mit dieser Wahl sind die 3 Gleichungen regulär, da<br />
Differentiation <strong>der</strong> 3 Zwangsgleichungen gibt 3 neue<br />
Gleichungen und 2 neue Unbekannte ( � , ��<br />
) � � �<br />
J<br />
J<br />
2<br />
1<br />
� � � �<br />
1<br />
1<br />
2<br />
� � � ��<br />
2<br />
1<br />
i ��<br />
��<br />
1<br />
1<br />
1<br />
2<br />
1<br />
1<br />
� � � ��<br />
��<br />
0<br />
� � � �<br />
2<br />
2<br />
2<br />
� � i ��<br />
� � � i � � �<br />
� ��<br />
� � �<br />
1<br />
� ��<br />
� � �<br />
2<br />
2<br />
2<br />
� ��<br />
� i � � ��<br />
2<br />
1<br />
��<br />
2 �<br />
x � � �<br />
��<br />
2 �<br />
��1<br />
�<br />
� �<br />
�<br />
� 2 �<br />
��<br />
� 1<br />
� �<br />
� � �1<br />
y �<br />
�<br />
� � ��<br />
�<br />
1<br />
� �<br />
��1<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�1<br />
�<br />
��<br />
� ��<br />
� 2 �<br />
� � �2<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�2<br />
�<br />
��<br />
� 1<br />
� �<br />
��<br />
2 �<br />
��<br />
�<br />
1<br />
z � � �<br />
� � �1<br />
�<br />
�<br />
�<br />
�<br />
�<br />
��<br />
1 �<br />
��<br />
� 1<br />
� �<br />
� � �1<br />
�<br />
� �<br />
� � ��<br />
2 �<br />
1<br />
2<br />
� � : � �<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 13<br />
2<br />
1<br />
� : � � �<br />
1<br />
2<br />
� � : � i � � �<br />
10 Gleichungen zur Berechnung <strong>der</strong><br />
10 Unbekannten z.<br />
System ist jetzt regulär!<br />
Dymola erstellt dieses Gleichungssystem<br />
automatisch und formt es<br />
um in:<br />
� � : � �<br />
2<br />
2<br />
i ��<br />
0(<br />
t)<br />
� �2<br />
: �<br />
J � i �i<br />
� J<br />
+ Gleichungen für Hilfsgrössen<br />
2. Allgemeine Behandlung singulärer Systeme<br />
Vorgehensweise (Pantelides Algorithmus + Dummy Derivative Methode):<br />
(1) Möglichst kleine Teilmengen Ci von Zwangsgleichungen suchen, die<br />
keinen vollen Rang besitzen (mit Zuweisungsalgorithmus, siehe <strong>Vorlesung</strong> 6).<br />
Hinreichende Bedingung: Zahl <strong>der</strong> Gleichungen > Zahl <strong>der</strong> Unbekannten<br />
Unbekannte z sind die höchsten Ableitungen <strong>der</strong> auftretenden Variablen<br />
Zu Beginn von 0 � f ( x�<br />
, x,<br />
y,<br />
t)<br />
sind dies z � [ x�<br />
, y]<br />
Zur Erinnerung:<br />
Mit dem Zuordnungsalgorithmus <strong>der</strong> BLT Transformation wurde ermittelt,<br />
nach welcher Variablen eine Gleichung aufgelöst wird. Diejenigen<br />
Gleichungen, für die keine Zuordnung gefunden werden kann, sind<br />
strukturell singulär und sind die Zwangsgleichungen.<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 14<br />
2<br />
1<br />
2<br />
1
(2) Die Zwangsgleichungen C i differenzieren, und die differenzierten<br />
Gleichungen D i und durch das Differenzieren neu auftretende Unbekannte z neu<br />
zur DAE hinzunehmen. (Welche Gleichungen differenziert werden hängt nicht<br />
davon ab, welche Dummy-Zustände ausgewählt werden. Aus numerischen<br />
Gründen ist es besser, die Dummy-Zustände erst nach Vorliegen aller<br />
Zwangsgleichungen festzulegen).<br />
(3) Die Ausgangs-DAE ohne Zwangsgleichungen C i aber mit D i nach (1) und (2)<br />
bearbeiten (immer bezüglich <strong>der</strong> jeweils höchsten auftretenden Ableitungen).<br />
Abbruch, wenn es keine Zwangsgleichungen, d.h. singuläre Teilmengen-<br />
Gleichungen, mehr gibt.<br />
(4) Aus allen Zwangsgleichungen Ci so viele Zustände als Dummy-Zustände xd auswählen, bis diese Gleichungen vollen Rang besitzen<br />
(d.h. werden als unbekannte algebraische Größen angesehen;<br />
zuvor waren xd d d<br />
x und x�<br />
bekannte Größen).<br />
Literatur:<br />
Pantelides C.C: The consistent initialization of differential-algebraic systems.<br />
SIAM Journal of Scientific and Statistical Computing, No. 9, S. 213-231, 1988.<br />
Mattsson S.E. und Soe<strong>der</strong>lind G.: Index Reduction in Differential-Algebraic Equations Using<br />
Dummy Derivatives. SIAM Journal on Scientific Computing. Vol. 14, S. 677-692, Mai 1992<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 15<br />
Es gibt spezielle DAEs bei <strong>der</strong> die hinreichende Bedingung nicht hilft. Z.B.:<br />
0 � x�<br />
1<br />
0 � x<br />
1<br />
0 � 2x<br />
� x<br />
�<br />
1<br />
y<br />
�<br />
1<br />
1<br />
� 2y<br />
y<br />
�<br />
1<br />
y<br />
�<br />
2<br />
y<br />
1<br />
�1<br />
2<br />
� 3y<br />
2<br />
� x� 1 �<br />
z �<br />
� �<br />
�<br />
y1<br />
�<br />
��<br />
y � 2 �<br />
1 2 3<br />
� �f<br />
�<br />
det� � � 0 1 1 � 0<br />
� �z<br />
�<br />
0 1 1<br />
3 Gleichungen für die 3 Unbekannten x� 1 , y1,<br />
y2<br />
Hier gibt die hinreichende Bedingung keine Aussage und es wird nicht erkannt,<br />
dass die DAE singulär ist. Auch diese DAE kann auf Zustandsform transformiert<br />
werden: x1<br />
�1, y1<br />
� �5,<br />
y2<br />
� 3<br />
Man beachte: wird einer <strong>der</strong> Vorfaktoren von y1 o<strong>der</strong> y2 in den letzten beiden<br />
Zeilen etwas geän<strong>der</strong>t, z.B. von 1 in 0.9999999, so ist diese DAE regulär!<br />
Hinweis:<br />
Es ist schwierig ein System zu konstruieren bei dem die hinreichende<br />
Bedingung nicht zutrifft, wenn das System durch eine Zusammenschaltung von<br />
Einzelkomponenten entsteht, die jeweils einer physikalischen Komponente<br />
entsprechen. D.h. dieser Fall tritt in <strong>der</strong> Praxis sehr selten auf.<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 16
Eine singuläre DAE kann nicht auf Zustandsform transformiert werden,<br />
wenn die DAE keine eindeutige Lösung besitzt. Beispiel:<br />
Differentiation <strong>der</strong> Zwangsgleichung<br />
beliebig oft differenzieren gibt niemals<br />
0 � f� 3(<br />
y1,<br />
y�<br />
1)<br />
eine neue Gleichung für x� o<strong>der</strong> y2. Anschaulich:<br />
0 � f ( x�<br />
, x,<br />
y<br />
0 �<br />
0 �<br />
f<br />
f<br />
1<br />
2<br />
3<br />
( y<br />
( y<br />
1<br />
1<br />
)<br />
)<br />
2<br />
)<br />
nach x� o<strong>der</strong> y2 auflösen<br />
nach y 1 auflösen<br />
Zwangsgleichung<br />
Wenn die letzten beiden Funktionen identisch sind, gibt es beliebig viele<br />
Lösungen, ansonsten gibt es keine Lösung, da ein Wi<strong>der</strong>spruch vorliegt um<br />
y 1 zu bestimmen.<br />
Eine solche DAE wird als strukturell inkonsistent bezeichnet.<br />
(Diese Eigenschaft wird von Dymola beim Übersetzen erkannt).<br />
4.1 Dämpfer<br />
0 � f ( x�<br />
, x,<br />
y,<br />
t)<br />
J<br />
J<br />
2<br />
1<br />
��<br />
��<br />
���<br />
�<br />
�<br />
1<br />
���<br />
1<br />
2<br />
2<br />
1<br />
2<br />
� �<br />
� �<br />
� �<br />
� �<br />
0<br />
2<br />
��<br />
� �<br />
1<br />
1<br />
� �<br />
2<br />
2<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 17<br />
3. Test zu “singulären Systemen”<br />
� �<br />
1<br />
� �<br />
� d ����<br />
Eingangsgröße<br />
inertia1<br />
inertia2<br />
1<br />
damper<br />
gegeben: τ 0(t), J 1, J 2, d<br />
�0<br />
( t)<br />
Variable vom Ausgangsgleichungssystem:<br />
�<br />
�<br />
�<br />
x � �<br />
�<br />
�<br />
�<br />
�<br />
�<br />
y � �<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
z �<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 18<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
welche Gleichungen<br />
müssen differenziert<br />
werden?
<strong>1.</strong> Differenzierte Gleichung(en):<br />
2. Variablen vom<br />
End-Gleichungssystem<br />
� �<br />
�<br />
x �<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
y � �<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
4.2 Parallele Kapazitäten<br />
0 � f ( x�<br />
, x,<br />
y,<br />
t)<br />
0 � C<br />
0<br />
1<br />
1<br />
0 � C<br />
0 � u<br />
0 � i<br />
0 � u<br />
0<br />
2<br />
�u�<br />
� i<br />
1<br />
1<br />
�u�<br />
2<br />
� u<br />
� i<br />
2<br />
� i<br />
� R �i<br />
gegeben: u 0(t), R, C 1, C 2<br />
1<br />
� i<br />
2<br />
0<br />
3. Gleichungen um die Ableitung des<br />
Zustandsvektors zu berechnen:<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 19<br />
2<br />
� u<br />
1<br />
u 0<br />
Variable vom Ausgangsgleichungssystem:<br />
�<br />
�<br />
�<br />
x � �<br />
�<br />
�<br />
�<br />
�<br />
�<br />
y � �<br />
�<br />
i 0<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
z �<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 20<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
u 1 u2<br />
i 1<br />
i 2<br />
welche Gleichungen<br />
müssen differenziert<br />
werden?
<strong>1.</strong> Differenzierte Gleichung(en):<br />
2. Variablen vom<br />
End-Gleichungssystem<br />
� �<br />
T<br />
q<br />
q<br />
q<br />
1<br />
1<br />
2<br />
2<br />
�<br />
x �<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
y � �<br />
�<br />
�<br />
�<br />
� T0<br />
( t)<br />
� c �m1<br />
�T�<br />
1<br />
� c �m<br />
�T�<br />
2<br />
2<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
4.3 Wärmeleitung<br />
0 � f ( x�<br />
, x,<br />
y,<br />
t)<br />
�A<br />
� �(<br />
T1<br />
�T<br />
L<br />
3. Gleichungen um die Ableitung des<br />
Zustandsvektors zu berechnen:<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 21<br />
Eingangsgröße T 0(t)<br />
2<br />
)<br />
tempSource<br />
heatCapacitor1<br />
heatCapacitor2<br />
thermalConductor<br />
gegeben: T 0(t), c, m 1, m 2, λ, A, L<br />
Variablen vom Ausgangsgleichungssystem:<br />
�<br />
x � �<br />
�<br />
�<br />
y � �<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
z �<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 22<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
welche Gleichungen<br />
müssen differenziert<br />
werden?
<strong>1.</strong> Differenzierte Gleichung(en):<br />
2. Variablen vom<br />
End-Gleichungssystem<br />
� �<br />
�<br />
x �<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
y � �<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
�<br />
3. Gleichungen um die Ableitung des<br />
Zustandsvektors zu berechnen:<br />
M. Otter: Simulation von elektromechanischen Systemen, 7. <strong>Vorlesung</strong> 23
Simulation von elektromechanischen Systemen<br />
und<br />
Objektorientierte Modellierung mechatronischer Systeme<br />
Prof. Dr.-Ing. Martin Otter (DLR)<br />
8. <strong>Vorlesung</strong><br />
Veranstaltet vom Lehrstuhl für Elektr. Antriebssysteme und Leistungselektronik (Prof. Kennel), TU München<br />
Dozent: Prof. M. Otter: Tel. 08153/28-2473, Martin.Otter@dlr.de,<br />
www.robotic.dlr.de/Martin.Otter/vorlesung.html<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 1<br />
<strong>Inhalt</strong> <strong>der</strong> 8. <strong>Vorlesung</strong><br />
<strong>1.</strong> Test zu singulären Systemen<br />
2. Regler mit linearen, inversen Modellen<br />
3. Regler mit nicht-linearen, inversen Modellen<br />
Rechnerübung<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 2
<strong>1.</strong> Test zu "singulären Systemen"<br />
Analysieren Sie die folgenden Systeme:<br />
• Schreiben Sie die Zahl <strong>der</strong> lokalen Zustände neben die Komponenten<br />
• Wie viele Zustände hat das jeweilige Gesamtsystem?<br />
Beispiel:<br />
lokale Zustände<br />
1 1<br />
u 1 u2<br />
Zwangsbedingungen: u 1 = u 2<br />
Zahl <strong>der</strong> Zustände vom<br />
Gesamtsystem: 1<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 3<br />
Zahl <strong>der</strong> Zustände<br />
vom Gesamtsystem:<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 4
Differentialgetriebe<br />
1<br />
�0<br />
� �<br />
2<br />
� ��<br />
1<br />
2<br />
0<br />
����� 1<br />
0 ��<br />
��<br />
��<br />
1<br />
2<br />
2<br />
Zahl <strong>der</strong> Zustände<br />
vom Gesamtsystem:<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 5<br />
Zahl <strong>der</strong> Zustände<br />
vom Gesamtsystem:<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 6
Standard-Regelkreis (Regler mit 1 strukturellen Freiheitsgrad)<br />
Sollgröße<br />
(wird vorgegeben)<br />
2. Regler mit linearen, inversen Modellen<br />
y d<br />
P � R<br />
Fw() s �<br />
1�P�R<br />
P � R<br />
Fz() s �<br />
1�P�R<br />
1<br />
Fd() s �<br />
1�P�R<br />
(= wichtige Anwendung von singulären DAEs)<br />
-<br />
d<br />
R(s)<br />
u<br />
P(s) y<br />
Regler Strecke<br />
y � F () s �y�F () s �z�F () s �d Übertragungsfunktion<br />
y d<br />
w d z d<br />
Führungsübertragungsfunktion<br />
(gewünscht: R so, dass F w ≈ 1)<br />
Messübertragungsfunktion<br />
(gewünscht: R so, dass F z ≈ 0)<br />
Störübertragungsfunktion<br />
(gewünscht: R so, dass F d ≈ 0)<br />
Störgröße (ist unbekannt)<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 7<br />
Regler mit 2 strukturellen Freiheitsgraden – Grundidee:<br />
(für die Praxis sehr wichtige Reglerstruktur, die einen wesentlich<br />
besseren Kompromiss für den Reglerentwurf erlaubt)<br />
W(s)<br />
-<br />
�1<br />
d d<br />
e�W �y �P�( P �W) �y �0<br />
W(s)�P -1 (s)<br />
e � 0<br />
P(s)<br />
-<br />
z<br />
Messrauschen<br />
(ist unbekannt)<br />
Schwierig R zu<br />
entwerfen, da sehr<br />
unterschiedliche<br />
Anfor<strong>der</strong>ungen<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 8<br />
u<br />
Strecke<br />
Inverses Modell<br />
<strong>der</strong> Strecke<br />
y<br />
y � W ( s)<br />
�<br />
Wenn z = 0, d = 0, und exakte Inversion, dann ist <strong>der</strong> Regelfehler e = 0<br />
(d.h. Steuerung ist für Führungsübertragung "zuständig" und<br />
Regler ist für Stabilisierung, Störgrößen, Streckenunsicherheiten,<br />
Messrauschen "zuständig")<br />
yd
Regler mit 2 strukturellen Freiheitsgraden – Analyse<br />
y d<br />
Sollgröße<br />
Fw () s � W<br />
W(s)<br />
P � R<br />
Fz() s �<br />
1�P�R<br />
-<br />
W(s)�P -1 (s)<br />
Regler<br />
Strecke<br />
u<br />
R(s) P(s)<br />
y � F () s �y�F () s �z�F () s �d Übertragungsfunktion<br />
w d z d<br />
1<br />
Fd() s �<br />
1�P�R<br />
Führungsübertragungsfunktion<br />
(gewünscht: W so, dass F w ≈ 1)<br />
Messübertragungsfunktion<br />
(gewünscht: R so, dass F z ≈ 0)<br />
Störübertragungsfunktion<br />
(gewünscht: R so, dass F d ≈ 0)<br />
Inverses Modell<br />
<strong>der</strong> Strecke<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 9<br />
Die vorigen Überlegungen gelten nur für lineare Regler die für<br />
lineare Regelstrecken entworfen werden.<br />
d<br />
Störgröße (ist unbekannt)<br />
-<br />
z<br />
y<br />
Messrauschen<br />
(ist unbekannt)<br />
Da W nur in F w<br />
und R nur in F z, F d<br />
ist besserer<br />
Kompromiss<br />
möglich<br />
Diese fundamentale Reglerstruktur kann aber so erweitert werden,<br />
dass in <strong>der</strong> Vorsteuerung die Inverse des nicht-linearen Streckenmodells<br />
verwendet wird, und diese Inverse mit Modelica und Dymola automatisiert<br />
erstellt werden kann (da die Grundidee dieselbe ist, um mit einer geeigneten<br />
Vorsteuerung im idealen Fall einen Regelfehler von Null zu erreichen).<br />
Der Hauptvorteil ist, dass die Vorsteuerung so ausgelegt werden kann,<br />
dass diese für alle Betriebspunkte <strong>der</strong> Regelstrecke gilt (<strong>der</strong> vorige<br />
Reglerentwurf mit einem linearen Regelstreckenmodell gilt nur für<br />
einen Betriebspunkt <strong>der</strong> Regelstrecke).<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 10
Lineare Inverse Modelle<br />
Für lineare Systeme<br />
z(<br />
s)<br />
y � �u<br />
n(<br />
s)<br />
y(t) wird aus u(t) berechnet<br />
Inversion<br />
u y<br />
z<br />
Fuy<br />
n<br />
�<br />
F<br />
F<br />
( s)<br />
( s)<br />
n(<br />
s)<br />
u � � y<br />
z(<br />
s)<br />
u(t) wird aus y(t) berechnet<br />
Differenzgrad<br />
d F = Grad(n F) - Grad(z F)<br />
Die Übertragsungsfunktion F ist<br />
kausal (= realisierbar), wenn<br />
d F � 0, d.h. Grad(n F) � Grad(z F)<br />
u y<br />
( s �1)<br />
Nullstellen s = 1<br />
Fuy �<br />
Pole s = 2, s = -3<br />
( s � 2)(<br />
s � 3)<br />
Differenzgrad d = 1<br />
w<br />
( s(<br />
s�<br />
�3<br />
)( 3)(<br />
s �s<br />
�4<br />
)( 4)(<br />
s �s<br />
�5<br />
) 5)<br />
( s �(<br />
s2�<br />
)( 1s)(<br />
�s<br />
T�<br />
)( 2)<br />
s �T<br />
)<br />
1<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 11<br />
Inverse Modelle können z.B. als Steuerung für stabile Strecken, o<strong>der</strong><br />
als Vorsteuerung für ein geregeltes System benutzt werden:<br />
Ziel einer Steuerung: Vorgabe einer Wunschübertragungsfunktion W(s)<br />
S<br />
Steuerung S(s)<br />
2<br />
W<br />
u<br />
(s-1) im Nenner von S(s) nicht<br />
möglich, da S(s) sonst instabil ist<br />
W() s �<br />
( s�T1)( s�T2) M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 12<br />
F<br />
y<br />
stabile Regelstrecke F(s)<br />
( s �1)(<br />
s � 2)<br />
( s � 3)(<br />
s � 4)(<br />
s � 5)<br />
( s �1)<br />
Anfor<strong>der</strong>ungen<br />
• S stabil und kausal<br />
• Wstabil<br />
welche W(s) sind<br />
dann wählbar ?<br />
(d = 1)<br />
(d = 1)
Vorgehen zum Entwurf einer Steuerung für eine stabile Strecke:<br />
<strong>1.</strong> Die Pole <strong>der</strong> Strecke werden die Nullstellen <strong>der</strong> Steuerung.<br />
2. Die stabilen Nullstellen <strong>der</strong> Strecke werden die Pole <strong>der</strong> Steuerung.<br />
3. Es werden so viele Pole T i bei <strong>der</strong> Steuerung hinzugefügt, bis die Steuerung<br />
mindestens so viele Pole wie Nullstellen hat, d.h. <strong>der</strong> Differenzgrad >= 0 ist<br />
(damit die Steuerung realisierbar ist).<br />
4. Die Pole T i werden geeignet gewählt (= Wunschübertragungsfunktion).<br />
Da die Wunschübertragungsfunktion = 1 ist, sollte diese möglichst<br />
lange bei "1" sein und dann abfallen:<br />
→ Verwende Tiefpassfilter als Wunschübertragungsfunktion, d.h.<br />
Nach Vorgabe <strong>der</strong> Eckfrequenz (sowie des Filtertyps)<br />
und <strong>der</strong> Filterordnung ≥ (Strecken-Differenzgrad + instabile Nullstellen)<br />
ist alles festgelegt. Die Eckfrequenz soll so gross wie möglich sein<br />
(wird durch "Probieren" ermittelt, bzw. erster Ansatzpunkt:<br />
bis zu welcher Frequenz stimmt Modell <strong>der</strong> Strecke mit realer Strecke<br />
überein?)<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 13<br />
Welchen Filtertyp verwenden?<br />
Eingang: Step<br />
Ausgang: Filterausgang<br />
→ Als Wunschübertragungsfunktion kommt nur<br />
"CriticalDamping" o<strong>der</strong> "Bessel" Filter in Frage, z.B.<br />
Modelica.Blocks.Continuous.CriticalDamping o<strong>der</strong><br />
Modelica_LinearSystems2.Sampled.Filter (analogFilter = Bessel)<br />
sonst weicht das gefilterte Eingangssignal zu stark vom<br />
Eingangssignal ab und hat unerwünschte Schwingungen.<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 14
3. Regler mit nicht-linearen, inversen Modellen<br />
Verallgemeinerung auf nichtlineare DAEs (u: Eingänge, y: Ausgänge):<br />
0 � f ( x�<br />
, x,<br />
y,<br />
u,<br />
t)<br />
Inverses Modell: Bedeutung von Ein- und Ausgang vertauschen.<br />
Z.B. ein Ausgang y i ist Eingangssignal (war vorher unbekannt),<br />
ein Eingang u i ist Ausgangssignal (war vorher bekannt).<br />
Vertauschung von Ein- und Ausgängen führt in <strong>der</strong> Regel auf<br />
singuläre DAEs, d.h. Gleichungen müssen differenziert werden,<br />
um auf Zustandsform transformiert werden zu können.<br />
Bei linearen Systemen gibt <strong>der</strong> Differenzgrad an, wie oft das<br />
inverse Modell differenziert werden muss, um auf Zustandsform<br />
transformiert zu werden. Beispiel<br />
( s � 2)<br />
y �<br />
�u<br />
( s � 3)(<br />
s � 4)(<br />
s � 5)<br />
d = 2<br />
(2-Mal differenzieren)<br />
Beispiel:<br />
( s � 3)(<br />
s � 4)(<br />
s � 5)<br />
u �<br />
� y<br />
( s � 2)<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 15<br />
x<br />
m<br />
f (t)<br />
Normalerweise: f(t) gegeben, x(t) gesucht.<br />
Inverses Modell: x(t) gegeben, f(t) gesucht<br />
f ��<br />
Lösung: � m � x<br />
m � �x<br />
� �<br />
D.h. <strong>der</strong> "Eingang" x(t) muss zwei Mal differenziert werden.<br />
Üblicherweise ist das nicht möglich. Deswegen wird x(t) zuerst<br />
gefiltert (entspricht bei linearen Systemen dem Hinzufügen <strong>der</strong><br />
T i-Pole, bis <strong>der</strong> Differenzgrad >= 0 ist).<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 16<br />
f
Beispiel: Filter erster Ordnung<br />
1<br />
y � �u<br />
T � s �1<br />
bzw.<br />
und damit: y� �u�y� �<br />
T<br />
1<br />
Beispiel: Filter zweiter Ordnung<br />
Ergebnis Eingang : x<br />
Ausgang: f<br />
1<br />
y �<br />
�u<br />
2<br />
� s � s<br />
� �<br />
� 2�<br />
D � �1<br />
��<br />
� �<br />
1 2 � D<br />
� �x<br />
�f<br />
� x�<br />
f � x f � x<br />
2<br />
� �<br />
T � y�<br />
� y � u<br />
bzw. mit<br />
u(t) := x(t)<br />
y(t) := x f(t) (= gefiltertes x)<br />
Wenn x f als Eingang verwendet<br />
wird, und x f differenziert wird,<br />
stehen die <strong>1.</strong> und 2. Ableitung<br />
zur Verfügung!<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 17<br />
1 2 � D<br />
� �x<br />
�f<br />
� x�<br />
2<br />
� �<br />
f � m � �x<br />
�<br />
f<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 18<br />
f<br />
� x<br />
f<br />
� x<br />
Der Eingang x wird über das Filter geglättet. Gleichzeitig wird über<br />
das Filter d2xf/dt2 berechnet und dann im inversen Modell verwendet<br />
um f zu berechnen. Da im Beispiel alles linear ist, kann das inverse Modell<br />
hier auch als Übertragungsfunktion dargestellt werden:<br />
1<br />
Strecke: xs � � f 2<br />
m � s<br />
Steuerung:<br />
(inv. Strecke)<br />
m � s<br />
f �<br />
� x<br />
1 2 2 � D<br />
� s � s �1<br />
2<br />
� �<br />
1<br />
Reihenschaltung: xs �<br />
� x<br />
1 2 2 � D<br />
� s � s �1<br />
2<br />
� �<br />
(= Wunschübertragungsfunktion)<br />
2
in Modelica<br />
Vorgegebene Position s<br />
<strong>der</strong> Masse<br />
o<strong>der</strong> kürzer<br />
Filter 2. Ordnung<br />
(Modelica.Blocks.Continuous.CriticalDamping)<br />
Eingang von „force“<br />
wird berechnet<br />
Inverse Verschaltung von Ein- und Ausgang<br />
(Modelica.Blocks.Math.InverseBlockConstraints):<br />
(die Komponente<br />
"Position" hat einen<br />
eingebauten Filter)<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 19<br />
Funktioniert auch bei nichtlinearen Systemen<br />
Hier: Vorgabe des Lastwinkels (inertia2.flange_b.phi) über die CombiTimeTable<br />
und Berechnung des hierfür benötigten Antriebsmomentes (torque.tau).<br />
Problem bei nichtlinearen Systemen:<br />
Es ist normalerweise nicht im vorneherein klar, wie oft die Eingangssignale<br />
differenziert werden müssen, d.h. die minimale Filterordnung ist unbekannt.<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 20
Vorgehen: Eingangssignal-Connector verwenden (kann von Dymola nicht<br />
differenziert werden) und Filter entfernen. Dies ergibt eine Fehlermeldung, in <strong>der</strong><br />
die nötige Differentiationsordnung angegeben ist:<br />
Ab Filterordnung 4<br />
kann dieses Modell<br />
also übersetzt<br />
werden.<br />
y c,d(t)<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 21<br />
Beispiel für Einsatz eines nicht-linearen inversen Modells in <strong>der</strong> Regelung:<br />
reference<br />
model<br />
controller<br />
(p)<br />
y cr,d,y cr,d..,y cr,d<br />
inverse<br />
plant model<br />
y m,d<br />
-<br />
e<br />
feedback<br />
controller<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 22<br />
u c<br />
u d<br />
u<br />
plant<br />
<strong>1.</strong> Die Sollvorgaben des Regelgrößen y c,d gehen in das Referenzmodell,<br />
z.B. ein Filter.<br />
2. Die Ausgangsgrößen des Referenzmodells sind die Eingänge <strong>der</strong> inversen<br />
Strecke. Dort werden die Soll-Steuergrößen u d und die Soll-Meßgrößen<br />
y m,d berechnet.<br />
3. Der "feedback controller" regelt die Strecke mit den Meßgrößen y m auf<br />
die Soll-Messgrößen y m,d<br />
4. Der Eingang in die Strecke u ist <strong>der</strong> Soll-Eingang u d vom inversen<br />
Streckenmodell + Korrekturen u c auf Grund des Reglers<br />
y c<br />
y m
Beispiel aus Script (Kapitel 19.7):<br />
Soll-Konzentration<br />
Regelung eines Mischreaktors:<br />
Tc: Kühltemperatur (Stellgröße)<br />
T : Reaktortemperatur (Messgröße)<br />
c : Konzentration (Regelgröße)<br />
inverse Strecke<br />
Man beachte: Hier ist Messgröße und Regelgröße unterschiedlich<br />
(das was geregelt werden soll, wird nicht gemessen)<br />
Strecke<br />
M. Otter: Simulation von elektromechanischen Systemen, 8. <strong>Vorlesung</strong> 23