19.01.2013 Aufrufe

Inhalt der 1. Vorlesung

Inhalt der 1. Vorlesung

Inhalt der 1. Vorlesung

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!