Prof. Dr.-Ing. Attila Bilgiç Prof. Dr.-Ing. Jan Lunze Rechnergestützte Systemanalyse Vorlesungsskript für den Studiengang Elektrotechnik und Informationstechnik Sommersemester 2009 Ruhr-Universität Bochum Lehrstuhl für Automatisierungstechnik und Prozessinformatik 44780 Bochum 6. April 2009 Organisation der Lehrveranstaltung Die Lehrveranstaltung Rechnergestützte Systemanalyse“ besteht aus zwei Teilen: ” • Teil I: Einführung in MATLAB und Simulink Dozent: Prof. Dr.-Ing. Jan Lunze (Lehrstuhl für Automatisierungstechnik und Prozessinformatik) Verantwortlicher wissenschaftlicher Mitarbeiter: Dipl.-Ing. Jan Falkenhain (IC 3/141, Tel. 32 26632) • Teil II: Einführung in SPICE Dozent: Prof. Dr.-Ing. Attila Bilgiç (Lehrstuhl für Integrierte Systeme) Verantwortlicher wissenschaftlicher Mitarbeiter: Dipl.-Ing. Christoph Schmits (ICFO 03/510, Tel. 32 22187) Beide Teile untergliedern sich in jeweils 3 Vorlesungen im Hörsaal HIC und 4 Praktika im CIP-Pool der Fakultät Elektrotechnik und Informationstechnik. Die Vorlesungen geben eine Einführung in die beiden behandelten Programmpakete. In den Praktika wird der Umgang mit diesen Programmpaketen geübt. Es wird ausdrücklich darauf hingewiesen, dass alle Teilnehmer an den Praktika die Praktikumsaufgaben vor den Praktikumsterminen zu Hause soweit vorbereiten müssen, dass sich die Tätigkeit im CIP-Pool auf die rechnergestützte Lösung der Aufgaben konzentrieren kann. Inhaltsverzeichnis 1 Einführung in die rechnergestützte Systemanalyse am Beispiel von MATLAB . . 1.1 Ziele der Lehrveranstaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Struktur und Anwendungsgebiete von MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 5 2 Systemtheoretische Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 Blockschaltbild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Zustandsraummodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Modellgleichungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Zustandsbegriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3 Normierung der Signale und Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Zustandsraummodell gekoppelter Systeme [9] . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Reihenschaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 Parallelschaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.3 Rückkopplungsschaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 MATLAB-Funktionen für die Modellbildung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Vorhersage des Systemverhaltens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.1 Vorhersageaufgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.2 Lösung der Zustandsgleichung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6 MATLAB-Funktionen für die Analyse des Zeitverhaltens . . . . . . . . . . . . . . . . . . 8 8 12 12 17 18 20 21 22 23 25 29 29 30 33 3 Mathematische Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4 Aufgaben für das MATLAB-Praktikum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Einführung in MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 5.1 MATLAB-Interpreter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 5.2 Matrizenrechnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 5.2.1 Vektor- und Matrizenrechnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 5.2.2 Darstellung von Signalen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 5.3 Programmieren mit MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2 iv Inhaltsverzeichnis 5.3.1 Skripte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.2 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funktionen der Control System Toolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Erzeugung weißer Rauschsignale [6] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 12 13 16 Einführung in Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1 Simulink-Toolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Simulink – Kurzanleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Wichtige Simulink Blöcke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 6 7 Kommentiertes Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Zusatzaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 5.4 5.5 6 6 Prof. Dr.-Ing. Jan Lunze Rechnergestützte Systemanalyse Teil 1: Einführung in die rechnergestützte Systemanalyse am Beispiel von MATLAB Vorlesungsskript für den Studiengang Elektrotechnik und Informationstechnik Sommersemester 2009 Ruhr-Universität Bochum Lehrstuhl für Automatisierungstechnik und Prozessinformatik 44780 Bochum email: [email protected] 6. April 2009 1 Einführung in die rechnergestützte Systemanalyse am Beispiel von MATLAB Dieser Teil des Skripts gibt eine allgemeine Einführung in die rechnergestützte Ingenieurarbeit und stellt anschließend das Programmpaket MATLAB vor. 1.1 Ziele der Lehrveranstaltung Diese Lehrveranstaltung soll einen Einblick in die rechnergestützte Ingenieurarbeit geben. Anhand der beiden Programmsysteme MATLAB und SPICE soll gezeigt werden, • • • • dass die Aufbereitung des gegebenen ingenieurtechnischen Problems für die rechnergestützte Bearbeitung eine Aufgabe des Ingenieurs ist und nur punktuell durch Programme unterstützt werden kann, dass der Rechner neben der numerischen Lösung von mathematisch genau definierten Teilproblemen auch die Organisation der Problembearbeitung und die Visualisierung unterstützten kann, dass die Bedienung der Programmpakete heute vielfach über grafische Nutzerschnittstellen erfolgt, dass schlecht gestellte“ Aufgaben zu numerischen Problemen und folglich zu falschen oder ” gar keinen Ergebnissen führt. Um die Programmpakete geeignet für die Lösung einer gegebenen Aufgabe einsetzen zu können, muss man wissen, was die verwendeten Programme mit den eingegebenen Daten tun. Die Lehrveranstaltung behandelt zwei Programmpakete, die sich in ihrem Anwendungsgebiet grundlegend unterscheiden: • MATLAB entstand aus den umfangreichen Programmbibliotheken LINPACK und EISPACK zum Rechnen mit Matrizen. Es ist also ein unverselles Werkzeug, dass für alle Aufgaben eingesetzt werden kann, die sich als Matrizengleichungen formulieren lassen. Durch eine Vielzahl von Programmen, die in Toolboxen zusammengefasst sind, wird MATLAB in vielen Bereichen der Informationstechnik eingesetzt, vor allem für Probleme, die sich 1.2 Einführung 3 durch algebraische und Differenzialgleichungen beschreiben lassen und deren Hauptelemente Vektoren und Matrizen sind. Simulink ist eine grafische Oberfläche, mit der dynamische System blockorientiert eingegeben und Simulationsaufgaben durchgeführt werden können. • SPICE ist ein Programmpaket für die Analyse von elektrischen Schaltungen und Schaltkreisen. Es ist speziell auf diese Aufgabe zugeschnitten. Aus einer grafischen Eingabe der Schaltung stellt es selbstständig das für die Simulation verwendete Gleichungssystem auf. Es enthält eine Bibliothek mit den Ersatzschaltbildern und Parametern der wichtigsten Bauelemente. Beide Programmpakete sind heute in der Industrie weit verbreitet und werden in mehreren Lehrveranstaltungen des Hauptstudiums eingesetzt. Die behandelten Aufgaben werden die unterschiedlichen Einsatzgebiete beider Werkzeuge deutlich machen. Mit der Analyse einer Operationsverstärkerschaltung (Aufg. 4.3) wird jedoch auch gezeigt, dass Simulationsaufgaben mit beiden Programmpaketen gelöst werden können, hierfür jedoch eine sehr unterschiedliche Aufbereitung erfahren müssen. 1.2 Einführung A u fb e r e it u n g d e r A u fg a b e n s t e llu n g L ö su n g d e r g e g e b e n e n P r o b le m e V e rg a b e d e r z u lö s e n d e n P r o b le m e V e r w a lt u n g v o n D a t e n , M o d e lle n u n d E r g e b n is s e n I n t e r p r e t a t io n d e r E r g e b n is s e V is u a lis ie r u n g v o n D a t e n Abb. 1.1: Arbeitsteilung zwischen Rechner und Ingenieur bei der rechnergestützten Systemanalyse 4 1 Einführung in die rechnergestützte Systemanalyse am Beispiel von MATLAB Sie müssen die zu lösende Analyseaufgabe soweit aufbereiten, dass die Aufgabe in klar definierte Teilschritte zerlegt ist, die der Rechner ausführen kann. Der erste Schritt zielt auf eine klare Formulierung der Aufgabenstellung; der zweite beinhaltet häufig die Aufstellung des mathematischen Modells des zu analysierenden Systems. Die Praktikumsaufgaben geben Ihnen alle dafür notwendigen Informationen, aber sie sind absichtlich wie die in der Praxis vorkommenden Aufgaben formuliert: Die Informationen sind möglicherweise im Aufgabentext versteckt, weitere Informationen sind allgemein zugänglich und beispielsweise in Handbüchern nachzuschlagen, mögicherweise sind gar nicht alle angegebenen Informationen für die Lösung der Aufgabe relevant. Jeder Teilnehmer am Praktikum muss dehalb vor dem Praktikumstermin diese Vorbereitungsschritte ausgeführt haben! Dies gilt auch für Praktikumsaufgaben, bei denen der zur Vorbereitung zu lösende Teil nicht gesondert angegeben ist. Sie müssen den Überblick darüber behalten, was Sie gerade berechnen wollen, welche Informationen (Dateien, Parameter, Signale) Sie dafür benötigen und wie Sie das Ergebnis interpretieren müssen (z. B. welches Signal mit welcher physikalischen Maßeinheit das Ergebnis repräsentiert). Solange Ihre Vorgaben syntaktisch richtig sind, führt der Rechner diese Vorgaben aus, aber das Ergebnis muss nicht zwangsläufig sinnvoll sein. Behalten Sie den Überblick! Das allgemeine Vorgehen bei der rechnergestützten Systemanalyse kann man folgendermaßen zusammenfassen: Algorithmus 1.1 Rechnergestützte Systemanalyse Gegeben: Aufgabenstellung 1. Formulieren Sie die gegebene Aufgabe mit systemtheoretischen Begriffen und planen Sie Ihre Analyseschritte. 2. Stellen Sie ein dynamisches Modell auf und bringen Sie dieses in eine von dem verwendeten Programmsystem verarbeitbare Form. 3. Bringen Sie das Modell in die vom Programmsystem vorgegebene Syntax. 4. Führen Sie die Rechenschritte durch, die für die Lösung der Aufgabe notwendig sind. Protokollieren Sie die Ergebnisse. 5. Werten Sie Ihre Rechenergebnisse in Bezug zur Aufgabenstellung aus. Ergebnis: Lösung der Aufgabe Im ersten Schritt müssen Fragen wie die folgenden beantwortet werden: • • • • Welche Signale kommen in der Aufgabe vor? Welche Bedingungen sollen diese Signale erfüllen? Unter welchen Bedingungen soll das Systemverhalten berechnet und bewertet werden? Welche Kenngrößen des Systems bzw. welche Signalverläufe sind zu berechnen? 1.3 Struktur und Anwendungsgebiete von MATLAB 5 Als Ergebnis muss ein Plan entstehen, dessen Lösungsschritte mit Hilfe des verwendeten Programmsystems durchführbar sind. Im zweiten Schritt wird ein dynamisches Modell aufgestellt. Welche Form das Modell hat, ist vom verwendeten Programmsystem abhängig. Bei den in dieser Lehrveranstaltung behandelten Problemen beginnt die Modellbildung mit einer grafischen Darstellung des zu untersuchenden Systems als Blockschaltbild bzw. als elektrisches Schaltbild. Zur Modellbildung gehört die Ermittlung der Werte der Modellparameter. Der dritte Schritt dient der Übertragung des Modells in eine für das Programmsystem verständliche Weise. Viele Programmsysteme ermöglichen es, wichtige Programmierschritte grafisch auszuführen. Der Inhalt des vierten Schrittes hängt sehr stark von der Aufgabenstellung ab. Unter Verwendung der von dem Programmsystem zur Verfügung gestellten Funktionen sind Kenngrößen, Parameter, Signalverläufe, Zeiten usw. zu bestimmen, mit denen die in der Aufgabe genannten Fragen beantwortet werden können. Im fünften Schritt werden die erhaltenen Ergebnisse als Ganzes bewertet. Dabei soll auch festgestellt werden, inwieweit die gegebene Aufgabe gelöst wurde und ob – gegebenenfalls unter Verwendung eines anderen Programmsystems – weitere Untersuchungen notwendig sind. A u d ie e in A u fw a n d fü r L ö su n g e r fg a b e h o c h P r o g r a m m ie r sp ra c h e n C , F O R T R A N P sy st n u m L ö su n g s M A ro g ra m m e m e m it e r is c h e n a lg o r it h m e n T L A B A n w e n d u n g ss p e z ifis c h e P ro g ra m m sy ste m e S P IC E n ie d r ig b r e it sc h m a l A n w e n d u n g sg e b ie t Abb. 1.2: Einsatzgebiete von Programmsystemen 1.3 Struktur und Anwendungsgebiete von MATLAB Die Stärken von MATLAB lassen sich folgendermaßen zusammenfassen: 6 • • • 1 Einführung in die rechnergestützte Systemanalyse am Beispiel von MATLAB Ausgereiftes, zuverlässiges System mit einer Vielzahl implementierter Funktionen, einfache, intuitive Bedienung mit einer leicht zu erlernenden Programmierumgebung, sehr gute Grafikfähigkeiten. Aus diesem Grund ist es seit vielen Jahren in der Industrie verbreitet. Der Nachteil von MATLAB, insbesondere für die Lehre, ist der hohe Preis (> 3000 Euro pro vollwertiger Lizenz mit allen notwendigen Toolboxen; um 120 Euro für die Studentenlizenz). Struktur von MATLAB. Das System MATLAB ist in einen Kern und in Zusatzprogramme unterteilt. Der Kern enthält alle Grundoperationen, die beim Aufruf von MATLAB geladen werden. Dazu gehören • • • • • der MATLAB-Interpreter, der C-ähnliche Programme abarbeitet (vgl. for-Schleifen usw.), die Arbeitsumgebung für die Verwaltung von Variablen, Daten und M-Dateien, das MATLAB-Grafiksystem, die MATLAB-Funktionsbibliothek mit den elementaren mathematischen Funktionen und numerischen Lösungsalgorithmen (built-in functions), sowie die Programmierschnittstelle, mit der C- oder FORTRAN-Programme geschrieben werden können. Die Toolboxen sind Programmsammlungen für Zusatzprogramme, die das Anwendungsgebiet von MATLAB in unterschiedliche Richtungen erweitern, beispielsweise für die Analyse dynamischer Systeme (Berechnung des Systemverhaltens, Zeichnen von Bodediagrammen) oder die Signalanalyse (Berechnung von Spektren usw.). Im Rahmen dieser Lehrveranstaltung werden Funktionen der C ONTROL S YSTEM T OOLBOX und der S IGNAL P ROCESSING T OOL BOX eingesetzt. MATLAB ist ein offenes System. Darunter versteht man, dass man einerseits die in den Programmiersprachen C oder FORTRAN geschriebenen Programme in MATLAB einbinden kann und andererseits die in den Toolboxen zusammengefassten Funktionen einsehen und verändern kann. Toolboxen sind eine Sammlung von M-Dateien, die für bestimmte Aufgabenklassen benötigt werden. Die Gliederung der MATLAB-Programme in Toolboxen hat zwei Ziele: • • Einsparung von Speicherplatz: Toolboxen werden nur bei Bedarf geladen. Erweiterungsmöglichkeiten für MATLAB: Die in den Toolboxen enthaltenen Programme können vom Nutzer erweitert oder modifiziert werden. MATLAB wird aufgrund seiner Toolboxen u. a. in folgenden technischen Anwendungsgebieten eingesetzt: • • • • • • • Bioinformatik (B IOINFORMATICS T OOLBOX , S IM B IOLOGY) Bildverarbeitung (I MAGE P ROCESSING T OOLBOX , I MAGE ACQUISITION T OOLBOX , M AP PING T OOLBOX ) Finanzmathematik (F INANCIAL T OOLBOX F INANCIAL D ERIVATIVES T OOLBOX) Nachrichtentechnik und Signalverarbeitung [3], [6] (S IGNAL P ROCESSING T OOLBOX), Regelungstechnik [9] (C ONTROL S YSTEM T OOLBOX), Modellbildung und Systemidentifikation (S YSTEM I DENTIFICATION T OOLBOX), Optimierung (O PTIMIZATION T OOLBOX), 1.3 Struktur und Anwendungsgebiete von MATLAB • • 7 Simulationstechnik [2], [6] (MATLAB-Erweiterung Simulink, die in dieser Lehrveranstaltung behandelt wird), Echtzeitsimulation für Hardware-in-the-loop Tests und Rapid Prototyping, Code-Generierung (R EAL -T IME W ORKSHOP, X PC-TARGET, D S PACE) S CILAB ist eine frei verfügbare Software mit einem ähnlichen Funktionsumfang wie MATLAB, sowie eng verwandter, aber nicht identischer Syntax [10]. 2 Systemtheoretische Grundlagen Dieses Kapitel behandelt die systemtheoretischen Grundlagen, die für die Behandlung dynamischer Systeme mit MATLAB und Simulink notwendig sind. Weitere Einzelheiten dazu können in [14] nachgelesen werden. 2.1 Blockschaltbild Blockschaltbilder sind die Grundlage für die Anwendung von Simulink für die Simulation dynamischer Systeme. Durch das Blockschaltbild wird beschrieben, aus welchen Teilsystemen sich ein gegebenes System zusammensetzt und wie die Teilsysteme durch Signale verkoppelt sind. Diese auch als Wirkungsschema oder Strukturbild bezeichnete Darstellungsform grenzt ein dynamisches System von seiner Umgebung ab und symbolisiert es durch einen Block. Die Wechselwirkungen zwischen dem System und seiner Umgebung werden durch Signale beschrieben (Abb. 2.1). U m g e b u n g E in g a n g s g r ö ß e n A u sg a n g sg rö ß e n D y n a m is c h e s S y s t e m Abb. 2.1: Blockschaltbild eines Systems Für das Blockschaltbild gelten folgende Vereinbarungen: • Pfeile stellen Signale dar. • Blöcke kennzeichnen dynamische Systeme. • Signale haben eine eindeutige Wirkungsrichtung, die durch die Pfeile beschrieben wird. Die Blöcke sind rückwirkungsfrei. 2.1 Blockschaltbild 9 Die Blöcke können mehrere Eingangssignale und mehrere Ausgangssignale besitzen, die getrennt dargestellt oder zu Vektoren zusammengefasst sind. Der Pfeilanfang beschreibt, wo das Signal entsteht und die Pfeilspitze weist auf den Block, in dem das Signal als Ursache anderer Vorgänge auftritt. Auf Grund der Rückwirkungsfreiheit der Blöcke haben die Vorgänge innerhalb eines Blockes keinen direkten Einfluss auf die Eingangssignale. Wenn Rückkopplungen auf den Block, in dem das Signal entstanden ist, bestehen, kann dies durch ein weiteres Signal dargestellt werden. Spezielle Symbole. Für häufig wiederkehrende Abhängigkeiten zwischen Signalen hat man einfachere Symbole eingeführt, die in Abb. 2.2 gezeigt werden. Eine Signalverzweigung wird durch einen Punkt gekennzeichnet. Die zwei oder mehreren Pfeile, die von diesem Punkt abgehen, stellen dasselbe Signal dar. Im Unterschied dazu kennzeichnet ein Kreis eine Summationsstelle, bei der zwei oder mehrere ankommende Signale zu einem abgehenden Signal summiert werden. Setzt man ein Minuszeichen rechts neben die Pfeilspitze, so wird das betreffende Signal von den anderen subtrahiert. Die Summationsstelle kann natürlich nur bei wertekontinuierlichen Signalen verwendet werden. Ü b e r t r a g u n g s g lie d ( a llg e m e in ) u u 1 u u 3 u 2 u 1 S ig n a lv e r z w e ig u n g u 2 = u 3 1 = 3 u u S u m m a t io n s s t e lle u 1 + u 2 3 = 2 Abb. 2.2: Grundsymbole des Blockschaltbildes Häufig werden nichtlineare Systeme besonders gekennzeichnet, wenn innerhalb eines Blockschaltbildes sonst nur lineare Teilsysteme vorkommen (Abb. 2.3). Blöcke ohne Eingangsgröße beschreiben autonome Systeme, deren Ausgangssignal durch eine von außen nicht beeinflusste Systembewegung entsteht. Ein solcher Block kann beispielsweise einen Anlagenfahrer oder einen Signalgenerator darstellen, wenn diese unabhängig von ihrer Umgebung den Verlauf eines Signals vorgeben. Blöcke, die nur Eingangsgrößen, aber keine Ausgangsgrößen haben, stellen Messstellen oder Aufzeichnungsgeräte dar. Derartige Blöcke kommen vor allem in Blockschaltbildern vor, in denen gemessene oder angezeigte Signale besonders hervorgehoben werden sollen. Dabei muss das bei einer Simulation angezeigte Signal nicht unbedingt ein Signal sein, das an der betreffenden Anlage auch gemessen wird. Blockschaltbilder gekoppelter Systeme. Blockschaltbilder werden i. Allg. verwendet um darzustellen, wie sich das betrachtete System aus seinen Teilsystemen zusammensetzt. Häufig 10 2 Systemtheoretische Grundlagen y = f (u ) n ic h t lin e a r e s Ü b e r t r a g u n g s g lie d a u to n o m e s S y ste m O p e ra to r S ig n a lg e n e r a t o r S ig n a la n z e ig e M e s s g lie d Abb. 2.3: Spezielle Symbole des Blockschaltbildes wird anstelle der Darstellung des Systems durch einen einzigen Block wie in Abb. 2.1 eine Unterteilung des Systems in mehrere Teilsysteme vorgenommen, wie es Abb. 2.4 zeigt. Beispiel 2.1 Drehzahlgeregelter Gleichstrommotor Abbildung 2.4 zeigt das Blockschaltbild eines drehzahlgeregelten Gleichstrommotors. Die vier mittleren Blöcke stellen den Gleichstrommotor, den Drehzahlregler, das Messglied für die Drehkreisfrequenz und die Umrechnung von der Drehfrequenz zur Drehzahl dar. Der Drehzahlsollwert wird von einem Menschen vorgegeben. Der Messwert wird aufgezeichnet. D r e h z a h l- R e g e la b s o llw e r t w e ic h u n g n s o ll e D re h z a r e g le D re h z a h l n E in g a n g s F re q u e n z M e ssw e rt sp a n n u n g w u w M h lG le ic h s t r o m M e ssr m o to r g lie d U m re c h n u n g Abb. 2.4: Blockschaltbild des drehzahlgeregelten Gleichstrommotors Das Beispiel zeigt, dass sich Blockschaltbilder eignen, um bereits vor der Aufstellung mathematischer Modelle für alle verwendeten Blöcke einen Überblick über die Struktur des Systems zu bekommen. Beim drehzahlgeregelten Motor sind – wie bei allen Regelkreisen – alle Blöcke in beiden Richtungen miteinander verkoppelt, so dass der Motor auf den Regler und umgekehrt der Regler auf den Motor einwirkt. Man kann deshalb nicht ohne Weiteres von den Eigenschaften der Blöcke auf die Eigenschaften des Gesamtsystems schließen. Eine (rechnergestützte) Systemanalyse muss beispielsweise zeigen, ob der Regelkreis stabil ist. 2 2.1 Blockschaltbild 11 Hierarchische Modellbildung. Um die Struktur eines aus vielen Teilsystemen bestehenden Modells herausheben zu können, werden die Blöcke von mehreren Teilsystemen häufig zu einem gemeinsamen Block zusammengefasst, der dann innerhalb des Blockschaltbildes des Gesamtsystems diese Teilsysteme und deren direkte Verkopplungen repräsentiert. Es entsteht dabei ein Blockschaltbild, deren Blöcke aus Blöcken einer tieferen Hierarchiestufe zusammengesetzt sind. Drehzahlgeregelter Gleichstrommotor Beispiel 2.1 (Forts.) Abbildung 2.5 zeigt die hierarchische Modellbildung am Beispiel des drehzahlgeregelten Gleichstrommotors. Das Gesamtsystem kann als einzelner Block mit der Eingangsgröße nSoll (Solldrehzahl) und der Ausgangsgröße n (Drehzahl) dargestellt werden. Wenn man genauer in das System hineinsieht“, ” kann man einen Regelkreis erkennen, der aus dem Gleichstrommotor einschließlich des Messglieds als das geregelte System (Regelstrecke) und dem Drehzahlregler besteht. Betrachtet man den Block Gleichstrommotor mit Messglied“ noch genauer, so erkennt man, dass dieser Block aus dem Gleich” strommotor, dem Messglied und einem Glied zur Umrechnung des Messwertes ωM in die Drehzahl n besteht. n D r e h z a h lg e r e g e lt e r G le ic h s t r o m m o t o r s o ll n s o ll D r e h z a h lr e g le r n u - u G le ic h s t r o m m o t o r n G le ic h s t r o m m o t o r m it M e s s g lie d w w M e s s g lie d M U m re c h n u n g n Abb. 2.5: Hierarchisch strukturiertes Blockschaltbild Je genauer man sich das System ansieht, desto mehr Blöcke und Kopplungssignale zwischen den Blöcken erkennt man. Geht man von einer Abstraktionsebene zur nächsthöheren, so verschwinden die inneren Signale und es bleibt ein Block mit den externen Eingangsgrößen und externen Ausgangsgrößen übrig. Welche Abstraktionsebene die beste ist, hängt von der betrachteten Aufgabe ab. 2 12 2 Systemtheoretische Grundlagen 2.2 Zustandsraummodell 2.2.1 Modellgleichungen Es wird ein dynamisches System mit dem Eingangssignal u(t) und dem Ausgangssignal y(t) betrachtet (Abb. 2.6). Es soll ein mathematisches Modell aufgestellt werden, das den Zusammenhang zwischen diesen beiden Signalen beschreibt. Für die rechnergestützte Systemanalyse ist nicht nur die Form, die dieses Modell hat, sondern auch der Weg, auf dem man dieses Modell erhält, sehr wichtig. Es wird deshalb zunächst am Beispiel eines Gleichstrommotors gezeigt, wie man das mathematische Modell aufstellt. u (t) y (t) K o n t in u ie r lic h e s S y ste m x (t) Abb. 2.6: Kontinuierliches System u u R R L L J u u u M y = G le ic h s t r o m m o t o r y w i Abb. 2.7: Schaltbild des Gleichstrommotors Beispiel 2.2 Aufstellung des Zustandsraummodells für einen Gleichstrommotor Es soll ein Modell aufgestellt werden, das den in Abb. 2.7 gezeigten Gleichstrommotor beschreibt. Die Eingangsgröße ist die Motorspannung u, die Ausgangsgröße die Drehgeschwindigkeit ω. Die Modellbildung umfasst die folgenden vier Schritte: 1. Systemzerlegung: Wie die Schaltung zeigt, lässt sich der Gleichstrommotor in vier Komponenten zerlegen: den ohmschen Widerstand R, die Induktivität L des Ankerkreises, das System StatorRotor sowie die sich drehende Masse. Diese vier Elemente kommen nicht als vier voneinander getrennte elektrische bzw. mechanische Bauteile vor, sondern gehen aus einer Idealisierung der elektrischen und mechanischen Vorgänge im Motor hervor. So beinhaltet die rotierende Masse nicht nur die angetriebene Last, sondern auch die Masse des Rotors, und der Widerstand R umfasst den ohmschen Widerstand der Anschlussleitungen und des Stators. 2.2 Zustandsraummodell 13 2. Beschreibung der Komponenten: Widerstand und Spule sind durch die Gleichungen uR (t) = Ri(t) d uL (t) = L i(t) dt (2.1) (2.2) beschrieben, wobei uR und uL die Spannungen über den beiden Bauelementen, i den Strom durch den Motor und R bzw. L den ohmschen Widerstand bzw. die Induktivität des Motors bezeichnen. Auf Grund des Induktionsgesetzes induziert der Rotor die Spannung uM , die proportional zu seiner Winkelgeschwindigkeit ω ist: uM (t) = kM ω(t). (2.3) Das durch den Ankerstrom i erzeugte Magnetfeld beschleunigt den Rotor mit dem Drehmoment M , das in Richtung der Drehgeschwindigkeit ω wirkt und für das M (t) = kT i(t) (2.4) gilt. Die rotierende Masse wird durch die Reibung gebremst, die das Moment MR (t) = kR ω(t) (2.5) erzeugt, das dem Moment M entgegenwirkt. In den angegebenen Gleichungen beschreiben kT , kR und kM drei Parameter, die vom Aufbau des Motors abhängen. Das auf den Rotor wirkende Moment MB verändert die Winkelgeschwindigkeit entsprechend der Beziehung J ω̇(t) = MB (t), (2.6) wobei J das Trägheitsmoment der gesamten rotierenden Masse bezeichnet. 3. Beschreibung der Kopplungen: Die Kopplung zwischen den elektrischen Komponenten ist durch den Maschensatz beschrieben, demzufolge die Summe aller Spannungen gleich null ist: uR (t) + uL (t) + uM (t) − u(t) = 0. (2.7) Für die mechanischen Größen gilt, dass die Summe aller Momente gleich null ist: M (t) − MR (t) − MB (t) = 0. (2.8) Die Vorzeichen der Momente ergeben sich daraus, dass M in Richtung der Winkelgeschwindigkeit ω wirkt, während MR und MB der Drehrichtung entgegenwirken. 4. Zusammenfassung der Modellgleichungen: Die Gln. (2.1) – (2.8) beschreiben den Gleichstrommotor vollständig. In diesen Gleichungen kommen jedoch sehr viele Größen vor, die bei der Analyse des Motors nicht von Interesse sind, sondern nur eingeführt wurden, um das Modell aus den physikalischen Grundbeziehungen ableiten zu können. Im Wesentlichen kommt es ja nur auf den Zusammenhang zwischen der Eingangsgröße u(t) und der Ausgangsgröße ω(t) an. In den folgenden Umformungen werden deshalb eine Reihe von Signalen aus dem Modell eliminiert. Zunächst erhält man aus den Gln. (2.1) – (2.3) und (2.7) die Beziehung Ri(t) + L d i(t) + kM ω(t) = u(t). dt (2.9) Andererseits erhält man aus den Gln. (2.5), (2.6) und (2.8) die Beziehungen M (t) = J ω̇(t) + kR ω(t) (2.10) 14 2 Systemtheoretische Grundlagen und mit Gl. (2.4) kT i(t) = J ω̇(t) + kR ω(t). (2.11) Zum Zustandsraummodell des Gleichstrommotors kommt man durch Umformung der Gln. (2.9) und (2.11), durch die man d R kM 1 i(t) = − i(t) − ω(t) + u(t) dt L L L kT kR d ω(t) = i(t) − ω(t) dt J J erhält. Es sind dies zwei Differenzialgleichungen erster Ordnung, auf deren linken Seiten die beidi den Ableitungen dt und dω stehen und auf deren rechten Seiten außer den beiden nicht abgeleiteten dt Größen i und ω nur die Eingangsgröße u auftritt. Man kann die beiden Gleichungen deshalb in der Matrix-Vektor-Form ! ! ! ! ! ! 1 i(0) i0 − kLM i(t) i(t) −R d L L u(t), = (2.12) + = kT dt ω(t) ω(0) ω0 ω(t) 0 − kJR J ! i(t) (2.13) y(t) = (0 1) ω(t) schreiben, zu der eine zweite Gleichung hinzugefügt wurde, mit der der messbare Ausgang y = ω berechnet wird. In der ersten Gleichung stehen der Vektor ! i(t) x(t) = ω(t) sowie dessen Ableitung ẋ, so dass die beiden Gleichungen auch in der Form ! ! ! 1 −R i0 − kLM L L ẋ(t) = u(t), x(0) = x(t) + kT ω0 0 − kJR J y(t) = (0 1) x(t) (2.14) (2.15) geschrieben werden können. Um die Vektordifferenzialgleichung lösen zu können, müssen außer dem Verlauf der Eingangsspannung u auch Anfangswerte für die Winkelgeschwindigkeit ω(0) und die Winkelbeschleunigung ω̇(0) bekannt sein. u - L d i + R i = u - k d t M i w k . J w + k R w = k T i w M Abb. 2.8: Blockschaltbild des Gleichstrommotors Diskussion. Aus den während der Modellbildung aufgestellten Gleichungen kann man das in Abb. 2.8 gezeigte Blockschaltbild aufstellen, das die im Motor ablaufenden Prozesse gut strukturiert beschreibt. 2.2 Zustandsraummodell 15 Der linke Block enthält den durch Gl. (2.9) dargestellten Prozess, bei dem sich nach Anlegen einer Spannung u zunächst der Strom i erhöht. Dieser Prozess wird durch die Ankerinduktivität L verzögert. Der mit kT multiplizierte Strom ergibt das Antriebsmoment M (vgl. Gl. (2.4)), das zu einer Erhöhung der Winkelgeschwindigkeit ω führt. Dieser Prozess ist durch die Beziehung (2.11) beschrieben. Die Rückführung im Blockschaltbild gibt die Rückwirkung des mechanischen Teils des Gleichstrommotors auf den elektrischen Teil wieder. Demzufolge kann sich der Strom nur begrenzt erhöhen, da in den Ankerkreis eine drehzahlabhängige Gegenspannung kM ω induziert wird. Der im stationären Zustand verbleibende Strom i und das damit verbundene Drehmoment M dienen der Überwindung des drehzahlproportionalen Reibmomentes kR ω. In das Modell gehen mit R und L zwei elektrische Größen, mit kT , kR und kM drei Größen, die vom Aufbau des Motors abhängen, sowie mit J eine die mechanischen Eigenschaften des Rotors und der Last beschreibende Größe ein. Aus diesen Parametern werden die Elemente der in Gl. (2.14) vorkommenden Matrix und des Vektors gebildet. Bemerkenswerterweise entstehen dabei aus den sechs physikalischen Parametern fünf Modellparameter. Unterschiedliche Motoren können deshalb auf dieselben Modellparameter führen, sich also trotz ihrer unterschiedlichen physikalischen Parameter dynamisch gleichartig verhalten. 2 An Stelle der im Beispiel angegebenen zwei Differenzialgleichungen erster Ordnung treten im Allgemeinen n Differenzialgleichungen auf. Das als Vektordifferenzialgleichung geschriebene Modell heißt Zustandsraummodell. Es hat die folgende allgemeine Form: ẋ = Ax(t) + bu(t), y(t) = c′ x(t) + du(t). Zustandsraummodell: x(0) = x0 (2.16) Die erste Gleichung heißt Zustandsgleichung, die zweite Ausgabegleichung. x ist i. Allg. ein n-dimensionaler Vektor mit den zeitabhängigen Elementen xi (t) x1 (t) x2 (t) x(t) = . , .. xn (t) A eine konstante (n, n)-Matrix a11 a21 A=. .. a12 · · · a22 · · · .. . a1n a2n .. . an1 an2 · · · ann , die als Systemmatrix bezeichnet wird, b ein n-dimensionaler Spaltenvektor mit konstanten Elementen b1 b2 b= . .. bn 16 2 Systemtheoretische Grundlagen und c′ ein n-dimensionaler Zeilenvektor mit konstanten Elementen c′ = (c1 c2 ... cn ). d ist ein als Durchgriff bezeichneter Skalar, der bei vielen technischen Systemen verschwindet. x0 ist ein n-dimensionaler Vektor, der die Anfangswerte aller Komponenten xi von x enthält. Bei der Anwendung des Modells (2.16) wird i. Allg. vorausgesetzt, dass x0 bekannt ist. Die Dimension n der Vektoren und der Matrix heißt dynamische Ordnung des Systems. Wie das Beispiel weiterhin zeigt, erhält man das Zustandsraummodell in den folgenden Schritten: Algorithmus 2.1 Aufstellung eines Zustandsraummodells Gegeben: Kontinuierliches System mit Eingang u und Ausgang y 1. Das System wird in Komponenten zerlegt. 2. Es werden die physikalischen Gesetze aufgeschrieben, die das Verhalten der Komponenten beschreiben. 3. Es werden die Beziehungen beschrieben, die zwischen den Komponenten bestehen. 4. Die Gleichungen werden zu einem Zustandsraummodell zusammengefasst. Ergebnis: Zustandsraummodell (2.16) Blockschaltbild des Zustandsraummodells. Die durch die Gl. (2.16) beschriebenen Zusammenhänge zwischen den Signalen u(t), xi (t) und y(t) sind in der Abb. 2.9 durch ein Blockschaltbild veranschaulicht. Doppelpfeile stellen vektorielle Signale dar. Vier Blöcke sind statische Übertragungsglieder mit den Übertragungsfaktoren A, b, c′ und d, mit denen die Eingangsgrößen der Blöcke multipliziert werden, um auf die Ausgangsgrößen zu kommen. Der mittlere Block enthält n Integratoren für die n Komponenten des Vektors ẋ. d x u (t) b d d t x ò 0 t 0 x c ' y (t) A Abb. 2.9: Blockschaltbild der Zustandsraumbeschreibung Zustandsraumdarstellung von Mehrgrößensystemen. Das Zustandsraummodell (2.16) kann für Systeme mit mehr als einer Eingangsgröße u(t) und mehr als einer Ausgangsgröße y(t) erweitert werden. Derartige Systeme werden Mehrgrößensysteme genannt. Ihre m Eingangssignale ui (t) und r Ausgangssignale yi (t) werden zu den Vektoren u(t) bzw. y(t) zusammengefasst (Abb. 2.10): 2.2 Zustandsraummodell 17 u(t) = u = u u 1 u1 u2 .. . um y1 y2 y(t) = . . .. , yr S 2 y 1 y 2 = y Abb. 2.10: Zusammenfassung der Eingangsgrößen und Ausgangsgrößen von Mehrgrößensystemen zu den Vektoren u und y Das Zustandsraummodell hat dann die allgemeinere Form ẋ = Ax(t) + Bu(t), x(0) = x0 y(t) = Cx(t) + Du(t), (2.17) (2.18) in der folgende Größen vorkommen: Zustandsvektor Eingangsvektor Ausgangsvektor Systemmatrix Steuermatrix Beobachtungsmatrix Durchgangsmatrix x u y A B C D (n, 1)-Vektor (m, 1)-Vektor (r, 1)-Vektor (n, n)-Matrix (n, m)-Matrix (r, n)-Matrix (r, m)-Matrix. Gültigkeit des linearen Modells. Lineare Modelle werden verwendet, um das Verhalten des Systems in der Umgebung eines Arbeitspunktes (ū, x̄, ȳ) zu beschreiben. Die im Modell verwendeten Größen beschreiben dann Abweichungen vom Arbeitspunkt, d. h., dass der wahre Wert des Ausgangs nicht y(t), sondern y(t) + ȳ ist. Gilt ω(t) = 0, so heißt dies nicht, dass der Gleichstrommotor zur Zeit t steht, sondern, dass die Drehfrequenz mit dem Arbeitspunktwert ω̄ übereinstimmt. 2.2.2 Zustandsbegriff Ein für die Anwendung der hier behandelten Modelle sehr wichtiger Begriff ist der des Zustandes eines dynamischen Systems. Um zu verdeutlichen, warum man den in Gl. (2.16) vorkommenden Vektor x als Systemzustand bezeichnet, soll zunächst auf die Lösbarkeit der Zustandsgleichung ẋ = Ax(t) + bu(t), x(0) = x0 (2.19) eingegangen und dabei ein System ohne Eingangsgröße (autonomes System) 18 2 Systemtheoretische Grundlagen ẋ = Ax(t), x(0) = x0 betrachtet werden. Das Modell ist eine Vektordifferenzialgleichung, auf die alle Erkenntnisse über (skalare) lineare Differenzialgleichungen angewendet werden können. Bekanntlich besitzt diese Differenzialgleichung für eine beliebige durch x0 beschriebene Anfangsbedingung eine eindeutige Lösung, die jetzt über das Zeitintervall [0, te ] betrachtet und mit x[0,te ] bezeichnet werden soll. Die Existenz der Lösung kann folgendermaßen interpretiert werden: Wenn x0 bekannt ist, so kann x[0,te ] berechnet werden. Das hat insbesondere zur Folge, dass man zur Berechnung von x[0,te ] keine Informationen darüber benötigt, welche Werte der Vektors x(t) für t < 0 angenommen hat. In x0 stecken also alle diejenigen Informationen über die Bewegung des Systems bis zum Zeitpunkt t = 0, die für die zukünftige Bewegung des Systems maßgebend sind. Das ist der Grund, weshalb man den Vektor x als Systemzustand bezeichnet. Andererseits kann man ohne die Kenntnis des Zustandes x(0) nichts über die Bewegung des Systems im Zeitintervall [0, te ] aussagen. Also kann man ohne die Kenntnis von x(0) auch keine Simulationsuntersuchungen durchführen. Für alle dynamischen Elemente eines gegebenen Systems muss man den Anfangszustand kennen. Für das durch die Eingangsgröße u erregte System (2.19) gelten diese Aussagen, wenn die Eingangsgröße für das betrachtete Zeitintervall [0, te ] bekannt ist. Dass man u(t) im Zeitintervall [0, te ] kennen muss, um die Bewegung des Systems für dieses Zeitintervall berechnen zu können, ist klar. Wichtiger ist, dass man den Verlauf der Eingangsgröße für das davor liegende Zeitintervall t < 0 nicht kennen muss: Der Verlauf von x(t) im Zeitintervall [0, te ] hängt bei bekanntem Anfangszustand x(0) = x0 nicht von Werten der Eingangsgröße ab, die vor der Zeit t = 0 bzw. nach der Zeit te auftreten. Der Anfangszustand x0 enthält also auch alle diejenigen Information über den Verlauf der Eingangsgröße für t < 0, die für die zukünftige Bewegung des Systems wichtig sind. Es hängt vom Anwendungsfall ab, welche Länge n der Zustandsvektor hat und welche physikalischen Größen in diesem Zustandsvektor stehen. Die Zahl n der Zustandsvariablen stimmt häufig mit der Anzahl von Energiespeichern überein, die im Signalweg vom Eingang u zum Ausgang y auftreten, also bei elektrischen Systemen mit der Anzahl der Kondensatoren und Induktivitäten oder bei mechanischen Systemen mit der Anzahl der Massen und Federn. Die physikalischen Zustandsvariablen sind die den Inhalt dieser Energiespeicher beschreibenden Größen wie Ströme, Spannungen, Kräfte, Geschwindigkeiten oder Stoffkonzentrationen. 2.2.3 Normierung der Signale und Parameter Die Parameter und Signale, die im Zustandsraummodell auftreten, sind i. Allg. physikalische Größen, die durch ihren Zahlenwert und ihre physikalische Einheit beschrieben werden. Wenn man das Zustandsraummodell für Analyse- oder Entwurfsaufgaben einsetzt, schreibt man es 2.2 Zustandsraummodell 19 jedoch als reine Zahlenwertgleichungen. Um zu diesen Gleichungen zu kommen, normiert man alle Signale und Parameter bezüglich ihrer physikalischen Einheiten. Wenn man für alle Größen die Grundeinheiten (Sekunde, Meter, Gramm usw.) verwendet, kommt man von den die Maßeinheiten enthaltenden Größengleichungen zu den Zahlenwertgleichungen, indem man einfach die physikalischen Einheiten weglässt. Diese Vorgehensweise ist jedoch nicht immer zweckmäßig, weil man bei Verwendung der Grundeinheiten oft sehr kleine oder sehr große Zahlen erhält. Deshalb wählt man physikalische Einheiten, die für den betrachteten Anwendungsfall zweckmäßig sind, und misst beispielsweise bei schnellen elektromagnetischen Vorgängen die Zeit in Millisekunden oder bei sehr langsamen verfahrenstechnischen Prozessen die Zeit in Minuten oder Stunden. Man ist bei der Wahl der physikalischen Einheiten für alle Signale und Parameter frei, muss jedoch darauf achten, dass sich die Zahlenwertgleichungen nach diesen Maßeinheiten richten. Der Übergang von den Größengleichungen zu den Zahlenwertgleichungen wird dadurch vollzogen, dass man die auf die gewählte physikalische Einheit bezogenen Größen einführt und die Maßeinheiten dann aus den Gleichungen herauskürzt. Dies wird schrittweise im folgenden Beispiel vorgerechnet. Beispiel 2.2 (Forts.) Zustandsraummodell eines Gleichstrommotors Für den Gleichstrommotor werden folgende Parameter eingeführt: R = 0,5Ω L = 50mH mVs kM = 30 rad Nm A = 30 · 10−6 Nms kT = 30 · 10−3 kR J = 13 · 10−4 Nms2 . und die Zeit Der Strom i soll in Ampere, die Spannung u in Volt, die Winkelgeschwindigkeit ω in rad s t in Sekunden gemessen werden. Das bedeutet, dass im Modell an Stelle der Größen i, u, ω und t die neuen Signale u ω t i ĩ = , ũ = , ω̃ = rad und t̃ = A V s s auftreten sollen. Dazu kommt man, wenn man in die Größengleichungen die Signale i = ĩ · A, u = ũ · V, ω = ω̃ · rad und t = t̃ · s s einsetzt, wobei die kursiven Formelzeichen die Variablen und die steil gesetzten Symbole die physikalischen Maßeinheiten darstellen. Für die erste Zeile der Zustandsgleichung (2.12) erhält man auf diese Weise 20 2 Systemtheoretische Grundlagen R dĩ A 1 kM rad = − ĩ A − ω̃ + ũ V L L s L dt̃ s Vs 0,5 V 30 · 10−3 rad 1 rad A + ω̃ ũ V = − ĩ A − Vs Vs −3 −3 s 50 · 10 A 50 · 10 A 50 · 10−3 Vs A A A A dĩ A = −10 · · ĩ − 0,6 · · ω̃ + 20 · · ũ · s s s s dt̃ dĩ = −10 · ĩ − 0,6 · ω̃ + 20 · ũ. dt̃ In der letzten Beziehung kommen keine physikalischen Maßeinheiten mehr vor. Diese Zahlenwertgleichung ist eine Gleichung in den mit der Tilde markierten Signalen, die mit den o. a. physikalischen Einheiten multipliziert die ursprünglichen Signale i, u, ω und t ergeben. Obwohl sich diese Größen in ihrer Bedeutung unterscheiden, lässt man i. Allg. die Tilde weg und geht wieder zu den ursprünglichen Bezeichnungen über: d i(t) = −10 i(t) − 0,6 ω(t) + 20 u(t). dt In derselben Weise erhält man für die zweite Zeile der Zustandsgleichung die Beziehung d ω(t) = 2308 i(t) − 2,3 ω(t), dt so dass das Zustandsraummodell als Zahlenwertgleichung geschrieben wie folgt lautet: ! ! ! ! ! ! i0 i(0) 20 i(t) −10 −0,6 i(t) d = u(t), + = dt ω(t) ω0 ω(0) 0 ω(t) 23,08 −0,023 ! i(t) y(t) = (0 1) ω(t) (2.20) (2.21) Diese Zahlenwertgleichungen werden bei der rechnergestützten Systemanalyse verwendet. Man muss sich die verwendeten Maßeinheiten merken, um die Ergebnisse richtig interpretieren zu können. 2 2.3 Zustandsraummodell gekoppelter Systeme [9] Bei größeren Systemen wird man bei der Modellbildung zunächst Zustandsraummodelle für Teilsysteme aufschreiben und diese dann entsprechend den im Gesamtsystem geltenden Koppelbeziehungen verknüpfen. Diese Vorgehensweise soll hier für die Reihenschaltung, die Parallelschaltung sowie die Rückkopplung zweier Teilsysteme beschrieben werden. Alle Überlegungen lassen sich leicht auf mehr als zwei Teilsysteme erweitern. Gegeben seien die Zustandsraummodelle der beiden Teilsysteme ẋ1 (t) = A1 x1 (t) + b1 u1 (t), y1 (t) = c′1 x1 (t) + d1 u1 (t) und x1 (0) = x10 (2.22) (2.23) 2.3 Zustandsraummodell gekoppelter Systeme [9] 21 ẋ2 (t) = A2 x2 (t) + b2 u2 (t), y2 (t) = c′2 x2 (t) x2 (0) = x20 + d2 u2 (t). (2.24) (2.25) Gesucht ist das Zustandsraummodell ẋ(t) = Ax(t) + bu(t), x(0) = y(t) = c′ x(t) + du(t) x1 (0) x2 (0) (2.26) (2.27) der Zusammenschaltung beider Teilsysteme. Für alle drei Verknüpfungen der Teilsysteme setzt sich der Zustandsvektor des Gesamtsystems aus den beiden Zustandsvektoren der Teilsysteme zusammen: x1 x= . x2 Für die dynamische Ordnung n des Gesamtsystems gilt deshalb n = n1 + n2 , wobei n1 und n2 die dynamischen Ordnungen der Teilsysteme bezeichnen. Dementsprechend setzt sich auch der Anfangszustand des Gesamtsystems aus den Anfangszuständen der Teilsysteme zusammen: x1 (0) . x(0) = x2 (0) Bei Simulationsuntersuchungen muss man also für alle Teilsysteme die Anfangszustände vorgeben. Das Programmsystem Simulink setzt die Anfangszustände dynamischer Teilsysteme standardmäßig auf x(0) = 0. Dies muss man beachten, wenn man die Simulationsergebnisse bewertet! 2.3.1 Reihenschaltung Bei der Reihenschaltung ist der Ausgang y1 des ersten Teilsystems gleich dem Eingang u2 des zweiten Teilsystems (Abb. 2.11): u(t) = u1 (t) u2 (t) = y1 (t) u y(t) = y2 (t). (A 1 ,b 1,c 1,d 1) y 1 (A 2 ,b 2,c 2,d 2) y = u ( A ,b ,c ,d ) Abb. 2.11: Reihenschaltung zweier Teilsysteme y 22 2 Systemtheoretische Grundlagen Verknüpft man die Teilsystemgleichungen in dieser Weise, so erhält man das Modell (2.26), (2.27) des Gesamtsystems mit A1 A = b = O b2 c′1 A2 b1 d1 b2 ! (2.28) (2.29) c′ = (d2 c′1 c′2 ), (2.30) d = d 1 d2 . (2.31) 2.3.2 Parallelschaltung Bei der Parallelschaltung entsteht der Ausgang des Gesamtsystems durch Addition der Ausgänge y1 und y2 der Teilsysteme, die denselben Eingang u erhalten (Abb. 2.12): u(t) = u1 (t) = u2 (t) y(t) = y1 (t) + y2 (t). (A ,b 1,c 1,d 1) 1 y 1 u (A 2 ,b 2,c 2,d 2) y y = u ( A ,b ,c ,d ) y 2 Abb. 2.12: Parallelschaltung zweier Teilsysteme Aus diesen Koppelbeziehungen und den Teilsystemgleichungen erhält man das Modell (2.26), (2.27) des Gesamtsystems mit: 2.3 Zustandsraummodell gekoppelter Systeme [9] - (A O A2 (2.33) c′ = (c′1 c′2 ) (2.34) d = d1 + d2 . (2.35) y y 1 = y 2 (A 2 (2.32) b1 b = b2 ,b 1,c 1,d 1) 1 ! A1 O A = u 23 ,b 2,c 2,d 2) u u ( A ,b ,c ,d ) y 2 Abb. 2.13: Rückkopplungsschaltung zweier Teilsysteme 2.3.3 Rückkopplungsschaltung Entsprechend Abb. 2.13 gelten für die Rückkopplungsschaltung folgende Beziehungen: y(t) = y1 (t) u1 (t) = u(t) − y2 (t) u2 (t) = y1 (t). (2.36) (2.37) (2.38) Das Zustandsraummodell des Gesamtsystems erhält man besonders schnell, wenn beide Teilsysteme nicht sprungfähig sind, also d1 = 0 und d2 = 0 gilt. Dann setzt man die Beziehung (2.37) in die Zustandsgleichung (2.22) des ersten Teilsystems ein und erhält unter Verwendung von (2.25) die Beziehung ẋ1 = A1 x1 + b1 (u − y2 ) = A1 x1 − b1 c′2 x2 + b1 u. (2.39) Auf ähnliche Weise erhält man aus den Gln. (2.23), (2.24) und (2.38) die Gleichung ẋ2 = A2 x2 + b2 y1 = A2 x2 + b2 c′1 x1 . Für die Ausgangsgröße y gilt entsprechend Gl. (2.36) (2.40) 24 2 Systemtheoretische Grundlagen y = c′1 x1 . (2.41) Schreibt man die Gln. (2.39), (2.40) und (2.41) untereinander, so erhält man ! A1 −b1 c′2 x1 ẋ1 b1 + = u(t) ′ x2 ẋ2 0 b2 c1 A2 y = c′1 x1 und schließlich ein Modell der Form (2.26), (2.27) mit A1 −b1 c′2 A = b = b2 c′1 A2 ! b1 0 (2.42) (2.43) c′ = (c′1 0′ ) (2.44) d = 0, (2.45) wobei die beiden Nullvektoren die Dimensionen n2 haben. Die Gln. (2.42) – (2.44) zeigen, wie sich A, b und c aus den Teilsystemmodellen berechnen lassen, wenn nach Voraussetzung d1 = d2 = 0 gilt. Wenn beide Teilsysteme sprungfähig sind, wird die Berechnung etwas aufwändiger, denn u1 hängt über y2 direkt von y1 ab und y1 direkt wieder von u1 . Diese Abhängigkeiten sind durch die algebraischen Gleichungen (2.23), (2.25) und (2.37) beschrieben, weshalb man auch von einer algebraischen Schleife spricht. Die beiden Teilsysteme können genau dann zu einem Gesamtsystemmodell verknüpft werden, wenn die Bedingung d1 d2 6= −1 erfüllt ist, wovon im Folgenden ausgegangen wird. Für y2 erhält man aus den genannten Gleichungen y2 = c′2 x2 + d2 y1 = c′2 x2 + d2 c′1 x1 + d2 d1 u − d2 d1 y2 y2 = 1 (c′ x2 + d2 c′1 x1 + d1 d2 u) 1 + d1 d2 2 y1 = 1 (c′ x1 − d1 c′2 x2 + d1 u) . 1 + d1 d2 1 und analog dazu für y1 An Stelle der Gln. (2.39) – (2.41) führen die Zustandsgleichungen der Teilsysteme auf (2.46) 2.4 MATLAB-Funktionen für die Modellbildung 25 1 1 d2 ′ b1 c1 x1 − b1 c′2 x2 + b1 u ẋ1 = A1 − 1 + d1 d2 1 + d1 d2 1 + d1 d2 d1 d1 1 ẋ2 = A2 − b2 c′2 x2 + b2 c′1 x1 + b2 u 1 + d1 d2 1 + d1 d2 1 + d1 d2 y = d1 d1 1 c′1 x1 − c′2 x2 + u 1 + d1 d2 1 + d1 d2 1 + d1 d2 und zum Modell des Gesamtsystems (2.26), (2.27) mit A = A1 − d2 ′ 1+d1 d2 b1 c1 1 ′ 1+d1 d2 b2 c1 − 1+d11 d2 b1 c′2 A2 − 1 1+d1 d2 b1 d1 1+d1 d2 b2 c = 1 d1 c′ c′ 1 + d1 d2 1 1 + d1 d2 2 d = d1 . 1 + d1 d2 b = ′ d1 ′ 1+d1 d2 b2 c2 , (2.47) (2.48) (2.49) (2.50) Die Gleichungen zeigen, dass das Gesamtsystem sprungfähig ist, solange das Teilsystem im Vorwärtszweig sprungfähig ist (d1 6= 0). Der Faktor 1+d11 d2 , der durch die algebraische Schleife in die Gleichungen hineinkommt, entfällt, wenn eines der beiden Teilsysteme nicht sprungfähig ist. Für d1 = d2 = 0 geht schließlich das Gleichungssystem in die einfachere Form (2.26) – (2.44) über. Diskussion. Bei allen drei Zusammenschaltungen erscheinen die Systemmatrizen A1 und A2 der Teilsysteme als Hauptdiagonalblöcke in der Systemmatrix A des verkoppelten Systems. Bei der Reihenschaltung und der Parallelschaltung ist A eine Blockdreiecksmatrix bzw. eine Blockdiagonalmatrix. Bei der Rückkopplungsschaltung sind die beiden Teilsysteme in beiden Richtungen verkoppelt, was sich auch in der Zusammensetzung der Matrix A ausdrückt. 2.4 MATLAB-Funktionen für die Modellbildung Zustandsraummodelle der Form (2.17), (2.18) werden durch Angabe der Matrizen A, B, C und D sowie der Anfangsbedingung x0 notiert, wobei man zweckmäßigerweise für die Variablen in MATLAB dieselben Namen A, B, C, D und x0 verwendet. Die Variablen A, B, C, D werden durch die Funktion ss der Variablen System zugewiesen, so dass sie später unter Verwendung dieses gemeinsamen Namens aufgerufen werden können: >> System = ss(A, B, C, D); 26 2 Systemtheoretische Grundlagen An Stelle von System kann man aussagekräftige Namen wie Gleichstrommotor oder Teilsystem1 verwenden. Will man die Systemparameter für ein System auslesen, so verwendet man die Funktion ssdata: >> [A, B, C, D] = ssdata(System); Das Modell kann durch den Funktionsaufruf >> printsys(A, B, C, D) auf dem Bildschirm ausgegeben werden. Das Zustandsraummodell einer Reihen-, Parallel- oder Rückführschaltung zweier Teilsysteme, die als System1 und System2 bezeichnet sind, kann mit den Funktionen >> Reihenschaltung = series(System1, System2); >> Parallelschaltung = parallel(System1, System2); >> Rueckfuehrschaltung = feedback(System1, System2); entsprechend der Gln. (2.28) – (2.31), (2.32) – (2.35) bzw. (2.47) – (2.50) berechnet werden. Bei der Rückführschaltung wird von einer negativen Rückkopplung ausgegangen; andernfalls muss als drittes Argument +1 eingegeben werden. Simulationsuntersuchungen mit Simulink. Simulink ist ein zu MATLAB gehörendes Programmpaket, mit dessen Hilfe man von einem Blockschaltbild ausgehend Simulationsuntersuchungen durchführen kann. Dafür zeichnet man ein Blockschaltbild nach den Vorgaben aus Abschn. 2.1. Um das dynamische Verhalten des so dargestellten Systems untersuchen zu können, muss man genau angeben, durch welche mathematischen Modelle die einzelnen Blöcke beschrieben werden. Da es für häufig vorkommende Teilsysteme spezielle Blöcke gibt, beschränkt sich die Programmierung des betrachteten Systems auf die Auswahl und Zusammenschaltung geeigneter Blöcke und die Angabe der Parameterwerte. Das Vorgehen ist in Abb. 2.14 dargestellt. Die Blockschaltbilder werden in .mdl-Dateien gespeichert. Der Simulator bildet selbstständig aus den Gleichungen aller Blöcke ein Gleichungssystem für das Gesamtsystem und löst dieses Gleichungssystem für die vorgegebenen Anfangszustände der Blöcke und die ausgewählten Eingangssignale. Beispiel 2.2 (Forts.) Zustandsraummodell eines Gleichstrommotors Das Modell (2.20), (2.21) wird folgendermaßen in MATLAB definiert: >> >> >> >> >> AMotor = bMotor = cMotor = dMotor = x0 = [1; [-10 -0.6; 23.08 -0.023]; [20; 0]; [0 1]; 0; 1]; wobei wie im Modell des Eingrößensystems mit kleinen Buchstaben für die Variablen gearbeitet wird. Dem Modell wird durch die Anweisung >> Gleichstrommotor = ss(AMotor, bMotor , cMotor, dMotor); 2.4 MATLAB-Funktionen für die Modellbildung 27 S im u la t io n s a u fg a b e M o d e llb ild u n g B lo c k s c h a lt b ild , M o d e lle d e r T e ils y s t e m e , S ig n a lm o d e lle Ü b e r fü h r u n g in e in S im u lin k -B lo c k s c h a lt b ild M o d e ll.m d l S im u la t o r A u sw a h l v o n P a ra m e te rn S im u la t io n s e r g e b n is E r g e b n is .m a t V is u a lis ie r u n g M A T L A B / S im u lin k G r a fis c h e D a r s t e llu n g d e s E r g e b n is s e s Abb. 2.14: Simulationsuntersuchungen mit Simulink der Name Gleichstrommotor gegeben. Es wird nun angenommen, dass die Ausgangsgröße ω durch ein Messglied gemessen wird, das als Verzögerungsglied erster Ordnung mit der Zeitkostante T beschrieben wird 1 1 xM (t) + y(t), T T yM (t) = xM (t). ẋM (t) = − xM (0) = xM0 (2.51) (2.52) Das Messglied mit der Zeitkonstante T = 0,01 s wird durch >> >> >> >> >> >> T=0.01; AM = -1/T; bM = 1/T; cM = 1; dM = 0; Messglied = ss(AM, bM, cM, dM); definiert. Das Modell für die Reihenschaltung von Motor und Messglied erhält man dann durch den Funktionsaufruf MotorMitMessglied = series(Gleichstrommotor, Messglied); 28 2 Systemtheoretische Grundlagen Abb. 2.15: Simulink-Blockschaltbild des Gleichstrommotors Abb. 2.16: Simulink-Blockschaltbild des Gleichstrommotors wodurch das Modell entsprechend der Gln. (2.28) – (2.31) gebildet wird. Bei der Verwendung von Simulink wird das Modell entweder aus einem einzigen Block aufgebaut, der das gesamte Zustandsraummodell enthält. Die Eingangsgröße wird durch einen Signalgenerator (z. B. Block für die Erzeugung der Sprungfunktion σ(t)) erzeugt und die Ausgangsgröße durch einen Block ( Scope“) angezeigt oder in eine Datei geschrieben (Abb. 2.15). Die zweite Möglichkeit besteht darin, ” das Zustandsraummodell aus einzelnen Integrator- und Verstärkerblöcken zusammenzusetzen. Dabei 2.5 Vorhersage des Systemverhaltens 29 werden die beiden Zustandsgleichungen einzeln abgebildet, wie es Abb. 2.16 zeigt. Das entstehende Blockschaltbild wird wieder durch Blöcke für den Signalgenerator und die Anzeige ergänzt. Bei beiden Möglichkeiten kann die Berechnung der Ausgangsgröße ohne weitere Modellierungsschritte durch Anklicken des entsprechenden Feldes in der Menüleiste von Simulink gestartet werden. Dies zeigt, dass der Simulink-Interpreter die Modellgleichungen aus den einzelnen Blöcken selbst zum Modell des Gesamtsystems zusammensetzt, also insbesondere aus dem detaillierten Blockschaltbild (Abb. 2.15) das Zustandsraummodell (2.20), (2.21) bildet. Diese Eigenschaft von Simulink ist für nichtlineare Systeme besonders wichtig, weil dann die Zusammenfassung der Modellgleichungen erheblich größere Mühe bereitet als bei linearen Systemen. Für Simulationsuntersuchungen nichtlinearer Systeme wird in dieser Lehrveranstaltung deshalb ausschließlich Simulink eingesetzt. 2 2.5 Vorhersage des Systemverhaltens 2.5.1 Vorhersageaufgabe Eine wichtige Aufgabe der rechnergestützten Systemanalyse besteht in der Vorhersage des Systemverhaltens. Zu bestimmen ist dabei der Verlauf der Ausgangsgröße y für ein gegebenes Zeitintervall 0 ≤ t ≤ te . Dieser Verlauf wird mit y[0,te ] bezeichnet. Das Zustandsraummodell zeigt, dass für die Vorhersageaufgabe neben sämtlichen Modellparametern zwei Dinge bekannt sein müssen: der Anfangszustand x0 und der Verlauf der Eingangsgröße u(t) für das betrachtete Zeitintervall 0 ≤ t ≤ te , der mit u[0,te ] bezeichnet wird. S y ste m x 0 u [0 ,t e ] M o d e ll x 0 y E x p e r im e n t [0 ,t e ] V o rh e rsa g e Abb. 2.17: Vorhersageaufgabe Das Ziel der Vorhersage soll anhand von Abb. 2.17 erläutert werden. Im oberen Teil der Abbildung ist ein Experiment dargestellt, bei dem das reale System mit der verwendeten Eingangsgröße erregt und der Systemausgang gemessen wird. Bei der Vorhersage wird der im unteren Teil der Abbildung gezeigte Weg beschritten, bei dem aus der Eingangsgröße mit Hilfe eines Modells die Ausgangsgröße berechnet (und grafisch dargestellt) wird. Wenn idealisierender Weise angenommen wird, dass das Modell das gegebene System exakt repräsentiert und der Anfangszustand des Systems genau bekannt ist, so dass mit diesem Anfangszustand im Modell gerechnet werden kann, so stimmen beide Ergebnisse überein. Die Aufgabenstellung der Vorhersage (Prädiktion) kann also wie folgt zusammengefasst werden: 30 2 Systemtheoretische Grundlagen Vorhersageaufgabe Gegeben: Gesucht: Zustandsraummodell Anfangszustand x0 Verlauf der Eingangsgröße u[0,te ] Verlauf der Ausgangsgröße y[0,te ] In praktischen Anwendungen wird diese Aufgabe häufig nicht nur einmal, sondern mehrfach für unterschiedliche Anfangszustände und unterschiedliche Eingangsgrößen gelöst. Man spricht dann auch von einer Szenarienanalyse. 2.5.2 Lösung der Zustandsgleichung Die Grundlage für die Vorhersage des Systemverhaltens bildet die Lösung der Zustandsgleichung ẋ = Ax(t) + bu(t), x(0) = x0 . (2.53) Da es sich um eine lineare (Vektor)-Differenzialgleichung handelt, wird zunächst die homogene Gleichung ẋ = Ax(t), x(0) = x0 (2.54) betrachtet. Im Lösungsansatz x(t) = e At k (2.55) ist k ein n-dimensionaler Vektor. Die (n, n)-Matrix e At ist die Matrixexponentialfunktion, die durch die Reihe ∞ X Ai t i A 2 2 A3 3 e At = = I + At + t + t + ... (2.56) i! 2! 3! i=0 definiert ist. Diese Reihe konvergiert für alle quadratischen Matrizen A und alle Werte für t, so dass die Differenziation mit der Summenbildung vertauscht werden kann und man A3 2 A2 2 A3 3 d At e = A + A2 t + t + ... = A I + At + t + t + ... dt 2! 2! 3! d At e = A e At = e At A dt erhält. Die letzte Beziehung ist analog zu der für e-Funktionen bekannten Differenziationsregel d at = ae at . dt e Dass mit dem Ansatz (2.55) tatsächlich die allgemeine Lösung der homogenen Differenzialgleichung gefunden ist, erkennt man durch Einsetzen dieses Ansatzes in Gl. (2.54). Entsprechend der Methode der Variation der Konstanten wird für die Lösung der inhomogenen Differenzialgleichung (2.53) der Vektor k als zeitabhängig betrachtet, was auf den Ansatz x(t) = e At k(t) 2.5 Vorhersage des Systemverhaltens 31 führt. Differenziert man den Ansatz und setzt ihn in die Zustandsgleichung ein, so erhält man Ae At k + e At k̇ = Ae At k + bu. Die Matrixexponentialfunktion e At ist für beliebige Matrizen A und Zeiten t invertierbar, wobei −1 = e−At = e A(−t) e At gilt. Multipliziert man die vorherige Gleichung mit (e At )−1 von links und nutzt die Tatsache, dass in dem Produkt A · e At = e At · A die Reihenfolge der Faktoren vertauscht werden kann, so erhält man k̇ = e−At bu, woraus sich durch Integration die gesuchte Beziehung für k(t) Zt 0 k̇(τ ) dτ = k(t) − k(0) = Zt e−Aτ bu(τ ) dτ 0 ergibt. Nachdem k in den Ansatz eingesetzt wurde, erhält man unter Verwendung der Anfangsbedingung die Lösung der Zustandsgleichung: Bewegungsgleichung: x(t) = e At x0 + Zt e A(t − τ ) bu(τ ) dτ (2.57) 0 Gleichung (2.57) heißt Bewegungsgleichung des Systems. Die zweimal in dieser Gleichung vorkommende Matrix e At wird als Übergangsmatrix, Transitionsmatrix oder Fundamentalmatrix bezeichnet. Die Lösung (2.57) der Zustandsgleichung existiert für beliebige Modellparameter und beliebige Anfangszustände x0 . Mit Hilfe der Ausgabegleichung y(t) = c′ x(t) + du(t) kann aus der Lösung der Zustandsgleichung die Ausgangsgröße y(t) berechnet werden: Bewegungsgleichung für den Ausgang: Zt y(t) = c′ e At x0 + c′ e A(t − τ ) bu(τ ) dτ + d u(t). (2.58) 0 Diskussion der Lösung. Die Bewegung x(t) setzt sich aus zwei Komponenten zusammen x(t) = xfrei (t) + xerzw (t), die die Eigenbewegung (2.59) 32 2 Systemtheoretische Grundlagen x x x fr e i( x fre i 0 + t1) t 1 x x x (t e rz w e rz w x (t1) ) 1 0 = t t 1 t t 1 t Abb. 2.18: Zerlegung der Bewegung x(t) in die Eigenbewegung xfrei (t) und die erzwungene Bewegung xerzw (t) xfrei (t) = e At x0 (2.60) und die erzwungene Bewegung xerzw (t) = Z t 0 e A(t − τ ) bu(τ )dτ (2.61) des Systems beschreiben (Abb. 2.18). Die Eigenbewegung xfrei (t) wird durch den Anfangszustand x0 hervorgerufen. Wird das System nicht durch eine Eingangsgröße erregt (u = 0), so tritt ausschließlich diese Komponente der Bewegung auf und es gilt x(t) = xfrei (t). Da diese Bewegung das freie“ System betrifft, wird sie auch als freie Bewegung bezeichnet. Sie entfällt, ” wenn sich das System zum Zeitpunkt t = 0 in der Ruhelage befindet (x0 = 0). Die erzwungene Bewegung xerzw (t) wird durch die Eingangsgröße u hervorgerufen. Freie und erzwungene Bewegung überlagern sich additiv, weil das System linear ist. Dies ist für den Zeitpunkt t1 in Abb. 2.18 für ein System erster Ordnung mit dem Zustand x gezeigt. Die hier angegebene Zerlegung der Bewegung in zwei unabhängige Komponenten für die Eigenbewegung und die erzwungene Bewegung ist nur bei linearen Systemen möglich. Bei nichtlinearen Systemen bestimmen der Anfangszustand x0 und die Eingangsgröße u(t) gemeinsam die Bewegung x(t), ohne dass man ihre Beiträge wie hier durch zwei unabhängige Summanden angeben könnte. Kennfunktionen dynamischer Systeme. Das Verhalten linearer Systeme beurteilt man häufig anhand der folgenden Kennfunktionen, die den Verlauf der Ausgangsgröße für eine spezielle Wahl des Anfangszustands und der Eingangsgröße zeigen: • Die Übergangsfunktion (Sprungantwort) y(t) = h(t) erhält man für x0 = 0, wenn man den Einheitssprung 0 für t < 0 . (2.62) σ(t) = 1 für t ≥ 0 an den Eingang des Systems anlegt (u(t) = σ(t)): h(t) = Zt c′ e Aτ b dτ + d. (2.63) 0 Für stabile Systeme nähert sich die Übergangsfunktion für t → ∞ einem Endwert h(∞), der die statische Verstärkung des Systems beschreibt und mit ks bezeichnet wird. Aus Gl. (2.63) erhält man 2.6 MATLAB-Funktionen für die Analyse des Zeitverhaltens ks = −c′ A−1 b + d. • (2.64) Die Gewichtsfunktion (Impulsantwort) y(t) = g(t) erhält man für x0 = 0 bei impulsförmige Erregung u(t) = δ(t): g(t) = c′ eAt b + d δ(t). • 33 (2.65) Die Eigenbewegung yfrei (t) für den Anfangszustand x0 6= 0 erhält man für u(t) = 0: yfrei (t) = c′ e At x0 . (2.66) 2.6 MATLAB-Funktionen für die Analyse des Zeitverhaltens [9] Im Folgenden werden die Analysefunktionen behandelt, mit denen die behandelten Rechenoperationen ausgeführt werden können. Die Eigenwerte der Matrix A kann man sich mit der Funktion >> eig(A) ausgeben lassen. Für die Berechnung der Kennfunktionen im Zeitbereich stehen mehrere Funktionen zur Verfügung. Die Übergangsfunktion (2.63) des Systems erhält man als grafische Darstellung auf dem Bildschirm durch den Aufruf >> step(System); Die statische Verstärkung nach Gl. (2.64) erhält man durch den Funktionsaufruf >> ks=dcgain(System); Um die Gewichtsfunktion (2.65) zu erhalten, schreibt man >> impulse(System); wobei wiederum die grafische Darstellung auf dem Bildschirm erscheint. Die Eigenbewegung (2.66) erhält man für einen vorgegebenen Anfangszustand x0 mit der Anweisung >> initial(System, x0); Will man die Ausgangsgröße des Systems entsprechend Gl. (2.58) für eine beliebig vorgegebene Eingangsgröße berechnen, so müssen zunächst zwei Zeilenvektoren u und t gleicher Länge mit den Werten der Eingangsgröße bzw. mit den dazugehörigen Zeitpunkten belegt werden. Die Lösung der Bewegungsgleichung erhält man dann mit dem Funktionsaufruf >> lsim(System, u, t, x0); grafisch auf dem Bildschirm dargestellt. 34 2 Systemtheoretische Grundlagen Step Response 35 30 25 Amplitude 20 15 10 5 0 0 0.5 1 1.5 2 2.5 3 3.5 Time (sec) Abb. 2.19: Übergangsfunktion des Gleichstrommotors Beispiel 2.2 (Forts.) Zustandsraummodell eines Gleichstrommotors Der Funktionsaufruf >> step(Gleichstrommotor); führt auf die in Abb. 2.19 gezeigte Abbildung der Übergangsfunktion des Motors. 2 3 Mathematische Grundlagen Numerische Operationen führen aus zwei Gründen nicht immer zum erwarteten Ergebnis: • • Zahlen sind nur mit einer beschränkten Genauigkeit im Rechner darstellbar. Das vom Rechner zu lösende numerische Problem gibt das gegebene Problem nur näherungsweise wieder. Sie müssen die numerischen Schwierigkeiten der von Ihnen eingesetzten Operationen kennen, um zwischen Ergebnissen, die für Sie erstaunlich, aber richtig sind, und den Wirkungen schlecht konditionierter Probleme unterscheiden zu können. Beispiel 3.1 Numerische Probleme Das Folgende ist ein Beispiel für Fehler, die aus der endlichen Rechengenauigkeit entstehen. Zu berechnen ist a = 0,1 b = 1 c = a+b d = c−b e = d−a Wenn man die Gleichungen ineinander einsetzt, heißt das Ergebnis e = 0. Bei MATLAB erhält man aber das folgende Ergebnis: >> >> >> >> >> e = a=0.1; b=1; c=a+b; d=c-b; e=d-a 36 3 Mathematische Grundlagen 8.3267e-017 Der Grund hierfür ist die begrenzte Genauigkeit in der Zahlendarstellung. Bei Matrizenoperationen können sich derartige Fehler darin auswirken, dass beispielsweise nicht invertierbare Matrizen invertiert werden: >> A = [1 2 3; 4 5 6; 7 8 9]; >> det(A) ans = 0 >> inv(A) ans = 1.0e+016 * -0.4504 0.9007 -0.4504 0.9007 -1.8014 0.9007 -0.4504 0.9007 -0.4504 Es wird allerdings eine Fehlerausschrift ausgegeben Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.541976e-018. RCOND ist ein Maß, an dem man die numerische Genauigkeit des Ergebnisses beurteilen kann. Je kleiner RCOND ist, umso schlechter ist die Matrix A konditioniert (vgl. Informationen unter >> help rcond). 2 Was kann man in diesen Fällen tun? Generell muss man darauf achten, dass man numerisch stabile Lösungsverfahren einsetzt. Hierzu gibt es umfangsreiche Untersuchungen, auf die in dieser Vorlesung nicht eingegangen werden kann. Es soll lediglich anhand eines Beispieles auf dieses Problem hingewiesen werden. Beispiel 3.2 Lösung linearer Gleichungssysteme Bei der Lösung des Gleichungssystems Ax = b soll man aus numerischen Gründen nicht die Lösung mit Hilfe der inversen Matrix A−1 berechnen, sondern den Gaußschen Algorithmus vewenden, der in MATLAB in der Linksdivision A \ b implementiert ist: Mit der im Beispiel 3.1 angegebenen Matrix A erhält man >> b=[1; 1; 1]; >> inv(A)*b Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.541976e-018. ans = -2.5000 3 Mathematische Grundlagen 5.0000 -1.5000 >> A*ans ans = 3 6 9 Demgegenüber erhält man mit der Linksdivision, wie die Probe zeigt, eine korrekte Lösung. >> A\b Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.541976e-018. ans = -2.5000 4.0000 -1.5000 >> A*ans ans = 1 1 1 37 Prof. Dr.-Ing. Jan Lunze Rechnergestützte Systemanalyse Teil 2: Aufgaben für das MATLAB-Praktikum Vorlesungsskript für den Studiengang Elektrotechnik und Informationstechnik Sommersemester 2009 Ruhr-Universität Bochum Lehrstuhl für Automatisierungstechnik und Prozessinformatik 44780 Bochum email: [email protected] 6. April 2009 4 Aufgaben für das MATLAB-Praktikum Dieser Teil enthält die Aufgaben, die im MATLAB-Praktikum zu lösen sind. Es ist dringend erforderlich, dass die Lösung der Aufgaben vor dem Praktikum soweit vorbereitet werden, dass an den Praktikumsterminen sofort mit der rechnergestützten Bearbeitung des Lösungsweges begonnen werden kann. Aufgabe 4.1 Erste Schritte mit MATLAB In dieser Praktikumsaufgabe soll MATLAB interaktiv genutzt werden, um bekannte Rechenoperationen mit Matrizen auszuführen. Vorbereitung der Praktikumsaufgabe zu Hause. Wiederholen Sie die Grundlagen der Matrizenrechnung, die Sie für diese Praktikumsaufgabe benötigen. Lösung der Praktikumsaufgabe mit MATLAB. 1. Geben Sie die folgenden Matrizen in den Workspace ein: ! ! −10 −0,6 −10 2.5 , , AMotor = A1 = 23,08 −0,023 3 0.034 A2 = 1 1 0 1 ! 2. Bestimmen Sie die Determinante und den Rang dieser Matrizen. 3. Berechnen Sie die Spektralnorm kAk = q λmax {A′ A}, aller Matrizen, wobei λmax den größten Eigenwert der angegebenen Matrix bezeichnet. 4. Berechnen Sie die Eigenwerte und Eigenvektoren dieser Matrizen und transformieren Sie diese Matrizen in Diagonalform. 5. Erzeugen Sie einen Zeilenvektor mit den Werten 0 bis 1 im Abstand von 0,1. 2 4 Aufgaben für das MATLAB-Praktikum Aufgabe 4.2 3 Erzeugung und Darstellung eines stochastisch gestörten Signals In dieser Aufgabe sollen Sie mit MATLAB programmieren. Schreiben Sie ein Skript und eine Funktion zur Erzeugung einer Sinusfunktion f (t) = sin ωt über ein von Ihnen vorgegebenes Zeitintervall [0...T ]. Überlagern Sie dieses Signal mit einem Rauschsignal mit dem Mittelwert 0 und der Streuung σ und stellen Sie das Ergebnis grafisch dar. Vorbereitung der Praktikumsaufgabe zu Hause. Informieren Sie sich über die statistischen Eigenschaften von Rauschsignalen (vgl. Abschn. 5.5). Lösung der Praktikumsaufgabe mit MATLAB. 1. Schreiben Sie das Skript und die Funktion und wenden Sie beide an. 2. Berechnen Sie den Mittelwert und die Streuung des von Ihnen verwendeten Rauschsignals und überprüfen Sie, dass Ihr Ergebnis mit Ihren Vorgaben überein stimmt. 3. Benutzen Sie dieses Skript bzw. diese Funktion, um Signale mit unterschiedlicher Kreisfrequenz ω und unterschiedlicher Streuung σ in einem gemeinsamen bzw. in mehrere in gleicher Weise skalierte Bilder zu zeichnen. 2 4 4 Aufgaben für das MATLAB-Praktikum Aufgabe 4.3 Operationsverstärkerschaltung R2 R1 uE C uD - uA + Abb. 4.1: Operationsverstärkerschaltung Parameter R1 R2 C Wert 1kΩ 10kΩ 10µF Vorbereitung der Praktikumsaufgabe zu Hause. Da zunächst ein idealer Operationsverstärker angenommen wird, ist davon auszugehen, dass kein Strom in den Operationsverstärker fließt und uD null ist. (Diese Annahme ist gleichbedeutend mit einer sehr hohen Verstärkung v0 = UA /UD → ∞ des Operationsverstärkers.) 1. Stellen Sie das Zustandsraummodell der Operationsverstärkerschaltung auf. 2. Stellen Sie die Parameter der Schaltung zusammen, wählen Sie geeignete Maßeinheiten für alle Signale und bestimmen Sie das Zustandsraummodell als Zahlenwertgleichung. 3. Wie müssen Sie die Werte der Bauelemente ändern, so dass die Schaltung einen Tiefpass mit der Zeitkonstante T = 1 s darstellt. Lösung der Praktikumsaufgabe mit MATLAB. 1. Zeichnen Sie die Übergangsfunktion und die Gewichtsfunktion für beide Schaltungen. Welche statische Verstärkung besitzt das System? 2. Verwenden Sie Sinussignale unterschiedlicher Frequenz als Eingangsspannung für die Operationsverstärkerschaltung, die den Tiefpass darstellt. Berechnen Sie die dabei entstehenden Ausgangsspannungen. Bewerten Sie die Ergebnisse im Hinblick darauf, ob der Tiefpass die vorgegebene Zeitkonstante besitzt. 3. Stellen Sie das Bodediagramm der Operationsverstärkerschaltung dar, sowie dass der Reihenschaltung zweier solcher Schaltungen. Vergleichen und interpretieren Sie die Ergebnisse. (Befehl: bode(System)) 4. Erzeugen Sie ein Blockschaltbild in Simulink mit ihrem Zustandsraummodell eines beschalteten Operationsverstärkers. Die Schaltung soll wieder durch ein Sinussignal angeregt werden. Stellen Sie den Ausgang graphisch dar. 4 Aufgaben für das MATLAB-Praktikum 5 Rückkopplungsstruktur eines Operationsverstärkers. Im Folgenden wird die Annahme der unendlich hohen Verstärkung des Operationsverstärkers, die gleichbedeutend mit UD = 0 ist, fallengelassen. Die Spannung UD erhält man jetzt in Abhängigkeit von UA und UE , beschrieben durch das Zustandsraummodell 1 1 1 UE U̇C = −( , UC (0) = 0, (4.1) + )UC + [1 − 1] · UA R1 C R2 C R1 C UE UD = −UC + [0 − 1] · . UA Die endliche Verstärkung des Operationsverstärkers sei v0 = UA UD (typ. v0 = 10000). Vorbereitung der Praktikumsaufgabe zu Hause. Zeichnen Sie ein Blockschaltbild der Schaltung, worin das gegebene Zustandsraummodell, der durch die Verstärkung v0 beschriebene Operationsverstärker, sowie die Ein- und Ausgangssignale auftauchen. Lösung der Praktikumsaufgabe mit MATLAB. 1. Erweitern Sie ihr Simulink-Blockschaltbild aus Aufgabe 4.3, indem Sie den Operationsverstärker zusätzlich durch eine eine hohe Verstärkung v0 und die Rückkopplung 4.1 darstellen. Verwenden Sie das selbe Eingangssignal wie für den idealen Operationsverstärker und stellen Sie die Ausgänge in einem Diagramm dar. Vergleichen Sie die Ergebnisse bei unterschiedlichen Verstärkungen v0 . 2. Im Folgenden sei die Ausgangsspannung des Operationsverstärkers auf ±12V begrenzt. Berücksichtigen Sie dies durch einen Sättigungsblock in ihrem Modell. Erhöhen Sie die Eingangsspannung, bis die Begrenzung der Ausgangsspannung sichtbar wird. 6 4 Aufgaben für das MATLAB-Praktikum Aufgabe 4.4 Drehzahlgeregelter Gleichstrommotor Betrachten Sie den in Abb. 2.4 gezeigten drehzahlgeregelten Gleichstrommotor. Das Motormodell ist im Beispiel 2.2 abgeleitet worden. Es soll hier für folgende Parameter verwendet werden: Parameter Widerstand der Wicklung Symbol und Wert R=9 Maßeinheit Ω Induktivität der Wicklung L = 110 mH Motorkonstante kM = 5 Vs rad Motorkonstante kR = 0,1 Nms Motorkonstante kT = 1 Nm A Trägheitsmoment J = 0,1 Nms2 Das Messglied wird als System erster Ordnung (2.51), (2.52) mit der Zeitkonstanten T = 0,008 s beschrieben. Der Block Umrechnung“ formt das Messsignal (Maßeinheit rad ) in die Drehzahl n (Maßs ” einheit 1s ) um. Der Drehzahlregler wird durch die Gleichungen ẋr = n(t) − nSoll (t) u(t) = −kI xr − kP (n(t) − nSoll (t)) dargestellt, wobei mit folgenden Reglerparametern gerechnet werden soll: kI = 231 V, kP = 3 Vs. Vorbereitung der Praktikumsaufgabe zu Hause. 1. Fassen Sie die Modellgleichungen für die einzelnen Blöcke des in Abb. 2.4 gezeigten Blockschaltbildes zusammen und überprüfen Sie, dass sich die Gleichungen auf die richtigen Eingangs- und Ausgangssignale der Blöcke beziehen. 2. Wählen Sie geeignete Maßeinheiten für alle Signale und stellen Sie die Parameter in diesen Maßeinheiten zusammen. 3. Wie muss das Modell erweitert werden, wenn man eine zusätzliche Last durch ein Lastmoment ML (t) beschreibt? 4. Welchen Drehzahlverlauf erwarten Sie, wenn Sie einerseits den Sollwert nSoll um 10 bzw. andererseits das Lastmoment zur Zeit t = 0 um 100 Nm erhöhen (Skizzen)? 1 s erhöhen Lösung der Praktikumsaufgabe mit MATLAB. 1. Übertragen Sie das Blockschaltbild in Simulink. 2. Definieren Sie die Parameter im Workspace und tragen Sie die entsprechenden Variablennamen in die Simulink-Blöcke ein. 3. Verwenden Sie eine sprungförmige Eingangsgröße, die eine Änderung des Drehzahlsollwertes gegenüber dem Nominalwert vorgibt. Welche statische Verstärkung besitzt der Regelkreis? 4. Die Motordrehzahl soll einer Sollwertänderung innerhalb von 2 Sekunden folgen. Untersuchen Sie, ob der Regelkreis diese Güteforderung erfüllt. 4 Aufgaben für das MATLAB-Praktikum 7 5. In welcher Weise ändert der Regler die Eingangsspannung des Motors, wenn der Drehzahlsollwert um 10 1s verkleinert wird? Wie können Sie aus den Diagrammen für n(t) und u(t) die statische Verstärkung des Gleichstrommotors ablesen? Hinweis: Trennen Sie den Regelkreis an geeigneter Stelle auf. 6. Das Verhalten des Gleichstrommotors wird näherungsweise durch das Modell erster Ordnung dx̂ = −7,080x̂ − 1,55u(t) dt ω(t) = −0,775x̂ beschrieben. Vergleichen Sie das Verhalten dieses Modells mit dem des Modells zweiter Ordnung. Verändert sich das Verhalten des Regelkreises wesentlich, wenn Sie das Modell zweiter Ordnung durch das Näherungsmodell ersetzen? 7. Wie verändert sich das Verhalten des Regelkreises, wenn das Trägheitsmoment J aufgrund einer Laständerung Werte im Intervall 0,1Nms2 ... 0,5Nms2 annimmt? Ist die Güteforderung unter diesen Laständerungen erfüllt? 8. Der Motor wird durch ein zusätzliches Lastmoment ML (t) = 100σ(t) Nm gestört. Wie verhält sich der Regelkreis? 9. Welcher Drehzahlverlauf ergibt sich, wenn zur Zeit t = 0 eine Sollwerterhöhung um 10 nommen wird und zur Zeit t = 10 s das Lastmoment um 100 Nm erhöht wird? 2 1 s vorge- 10. Stellen Sie die freie Bewegung y frei des Regelkreises für (i0 , ω0 ) = (0, 60) dar. (Der Sollwert ist nsoll = 0. Denken Sie daran, Motor und Messglied konsistent zu initialisieren.) 11. Stellen Sie die erzwungene Bewegung y erzw des Regelkreises für sprungförmige Anregung nsoll = 60 . 2π 12. Überprüfen Sie, dass das Verhalten der Kombination freier Bewegung und erzwungener Bewegung tatsächlich zur Summation der freien und erzwungenen Bewegung führt. Warum gibt es bei Überlagerung dieser freien und erzwungenen Bewegungen überhaupt einen Einschwingvorgang? 13. Die Motorspannung kann sich aus physikalischen Gründen nur mit einer Rate von 1000 V/s ändern. Fügen Sie dazu einen Rate-Limiter ein. Prüfen Sie, ob das Superpositionsprinzip noch immer erfüllt ist. 8 4 Aufgaben für das MATLAB-Praktikum Schwebende Kugel“ ” Der in der Vorlesung vorgeführte Versuch Schwebende Kugel“ soll mit Hilfe von Simulink analysiert ” werden. In vereinfachter Form ist der Versuchsaufbau in Abb. 4.2 gezeigt. Aufgabe 4.5 i(t) u(t) s(t) Regler a y(t) b Abb. 4.2: Versuchsaufbau Schwebende Kugel“ ” Die Abstand s(t) der Kugel vom Elektromagnet wird mit einer Solarzelle gemessen, deren Ausgangsspannung y(t) proportional zur beleuchteten Fläche ist. Der Regler gibt in Abhängigkeit von der Messgröße y(t) den Strom i(t) am Elektromagnet vor. Arbeiten Sie mit folgenden Modellvereinfachungen: • Die Kraft FM , die der Elektromagnet auf die Kugel ausübt, ist näherungsweise gleich FM (t) = k1 • i2 (t) . s2 (t) Die Reibungskraft FR ist proportional zur Geschwindigkeit der Kugel: FR (t) = kR • ds . dt (4.5) gilt. Wenn sich die Kugel nicht zwischen Lampe und Solarzelle befindet, hat die Solarzelle die Ausgangsspannung ymax . Andernfalls wird näherungsweise angenommen, dass sich die Spannung y(t) in Abhängigkeit von der Kugelposition aus y(t) = • (4.4) Berücksichtigen Sie bei der Modellbildung die Trägheit (Trägheitskraft FT (t)) der Kugel, so dass FM (t) + FT (t) + FR (t) − FG (t) = 0 • (4.3) ymax (s(t) − a) b für a ≤ s(t) ≤ a + b berechnet. Der Regler bestimmt den Strom i(t) durch die Spule nach folgendem Reglergesetz: ( 0 wenn y < w, i(t) = kP (y(t) − w) wenn y > w, (4.6) (4.7) wobei durch Vorgabe von w die gewünschte Kugelposition bestimmt wird. Das Reglergesetz sichert, dass der Strom nicht negativ werden darf. Da man die Kugel in der Mitte der Solarzelle halten möchte und die Solarzelle in diesem Fall die Spannung ymax ausgibt, wird mit 2 4 Aufgaben für das MATLAB-Praktikum 9 w= ymax 2 gearbeitet. Beachten Sie bei der Modellierung insbesondere die Nichtlinearitäten, die sich durch physikalische Beschränkungen ergeben. Verwenden Sie folgende Parameterwerte: • Parameter Erdbeschleunigung Masse der Kugel Konstante des Elektromagneten Reibungskonstante Reglerparameter Abstand zwischen Elektromagnet und Solarzelle Höhe der Solarzelle Maximalspannung der Solarzelle Symbol und Wert g = 9,81 Maßeinheit m = 50 g k1 = 2 · 10−4 Nm2 A2 kR = 0, 1 kP = 10 a=2 b=5 ymax = 4 Ns m A V m s2 cm cm V Vorbereitung der Praktikumsaufgabe zu Hause. Bereiten Sie die Aufgabe so vor, dass Sie sie in der verfügbaren Zeit von 3 Stunden vollständig lösen können. Lösung der Praktikumsaufgabe mit MATLAB. 1. Übertragen Sie Ihr Blockschaltbild in Simulink. Stellen Sie den Löser mit variabler Schrittweite ode 113 (Adams) mit der maximalen Schrittweite 10−3 ein. Beachten Sie die Signalbegrenzungen für y und i mit Hilfe von Saturation-Blöcken! 2. Tragen Sie die Parameterwerte in die Blöcke ein. Denken Sie daran, die Anfangsbedingungen der Integratoren zu setzen. 3. Welches Simulationsergebnis erhalten Sie, wenn die Kugel zur Zeit t = 0 die Position s(0) = a bzw. s(0) = a + 23 b befindet? 4. Welcher konstante Strom I¯ fließt durch den Elektromagneten, wenn die Kugel ruhig in der Gleichgewichtslage schwebt? 5. Verändern Sie den Reglerparameter kP und untersuchen Sie, wie sich das Verhalten der Kugel qualitativ verändert, wenn kP sehr groß bzw. sehr klein gemacht wird (0 ≤ kP ≤ 1000). Formale Hinweise zur Abgabe der Lösung. 1. Fertigen Sie zu den Fragen 3 bis 5 aussagekräftige Plots an. Fertigen Sie für jeden wesentlichen Aspekt ihrer Antwort einen eigenen Plot an. 2. Versehen Sie jeden Plot in MATLAB vor dem Ausdrucken mit ihrem Namen und dem Datum der Übung. 3. Notieren Sie zu jeder Frage direkt auf dem ausgedruckten Plot eine kurze Antwort (maximal 3 Sätze). 4. Geben Sie ihre Vorbereitungsunterlagen zusammen mit den Plots und Antworten zusammen ab. Stellen Sie sicher, dass Name und Matrikelnummer auf jedem abgegebenen Blatt stehen. 10 4 Aufgaben für das MATLAB-Praktikum Die folgenden Aufgaben dienen der Prüfungsvorbereitung. Bei der Prüfung wird eine Aufgabe diesen Typs gestellt. Bewertet werden die abgegebenen Aufzeichnungen über die Vorbereitungsschritte (z. B. über die Modellbildung), Ausdrucke der MATLAB-Ergebnisse sowie die Antworten auf die gestellten Fragen. Halten Sie sich bei der Lösung der Aufgaben deshalb an die im Algorithmus 1.1 vorgegebenen Lösungsschritte! Aufgabe 4.6 Analyse der Bewegung eines Fahrzeugs Das vereinfachte Modell einer Automobilfederung (siehe Abb. 4.3) soll mit Simulink untersucht werden. Dabei ist insbesondere der Einfluss der Dämpfung d2 zu untersuchen. Karosserie m2 y(t) d2 c2 Rad m1 x(t) c1 Straße u(t) Abb. 4.3. Mechanisches Ersatzschaltbild einer Automobilfederung Die Federung wird durch m2 ÿ + d2 (ẏ − ẋ) + c2 (y − x) = 0 m1 ẍ + d2 (ẋ − ẏ) + c2 (x − y) = c1 (u − x) mit x(0) = ẋ(0) = 0 und y(0) = ẏ(0) = 0 beschrieben. Parameter Symbol und Wert Maßeinheit Federkonstante 1 c1 = 9 · 104 N m Federkonstante 2 c1 = 3 · 104 N m Masse des Rads m1 = 25 kg Masse der Karosserie m2 = 250 kg x1 = 18 cm Abstand Karosserie zu Achse Beantworten Sie unter Nutzung von MATLAB folgende Fragen: 1. Wie heißt das Zustandsraummodell des Fahrzeugs? Welche Eigenwerte hat das System? 2. Welches Simulink-Blockschaltbild verwenden Sie für Ihre Untersuchungen (Skizze)? 3. Das Fahrzeug fährt über eine Bordsteinkante von 20 cm Höhe. Untersuchen Sie für verschiedene Dämpfungen d2 , ob die Karosserie auf die Achse aufschlägt, und nach welcher Zeit sich die durch die Erregung ausgelöste Schwingung beruhigt hat. 4 Aufgaben für das MATLAB-Praktikum Aufgabe 4.7 11 Fahrt mit der Eisenbahn [9] Ein Personenzug besteht aus einer Lokomotive (Masse 150 t) und 10 Wagen (Masse je 10 t). Der Rollwiderstand erzeugt eine von der Geschwindigkeit v des Zuges abhängige Bremskraft Fr = cv, wobei für die Konstante der Wert c = 2 st angenommen wird. Nach Abfahrt des Zuges am Bahnhof 1 zur Zeit t = 0 beschleunigt die Lokomotive den Zug mit der Kraft Fa = 75 kN bis zum Zeitpunkt t1 = 200 s. Anschließend rollt der Zug ohne Beschleunigung durch die Lok, aber unter Wirkung des Rollwiderstandes, um vom Zeitpunkt t2 = 300 s an mit konstanter Bremskraft von Fb = 80 kN bis zum Stillstand abgebremst zu werden. 1. Stellen Sie den Geschwindigkeitsverlauf über der Zeit dar. 2. In welcher Zeit t3 kommt der Zug zum Stillstand? Wie weit befindet er sich dann vom Ausgangspunkt entfernt? 3. Wie groß muss die Bremskraft Fb gewählt werden, damit der Zug zur Zeit t3 = 400 s zum Stillstand kommt? 2 Prof. Dr.-Ing. Jan Lunze Rechnergestützte Systemanalyse Teil 3: Einführung in MATLAB Vorlesungsskript für den Studiengang Elektrotechnik und Informationstechnik Sommersemester 2009 Ruhr-Universität Bochum Lehrstuhl für Automatisierungstechnik und Prozessinformatik 44780 Bochum email: [email protected] 6. April 2009 5 Einführung in MATLAB Dieser Teil gibt eine kurze Einführung in das Programmpaket MATLAB. Ausführlichere Darstellungen findet man in der im Teil 5 angegebenen Literatur. 5.1 MATLAB-Interpreter Nach dem Aufruf von MATLAB öffnet sich das MATLAB-Fenster, dessen wichtigster Teil das Kommandofenster (Command Window) ist. In diesem erscheint der Prompt >> (bzw. EDU >> bei der Studentenversion), hinter den das nächste Kommando geschrieben werden kann. Weitere Teile des Kommando-Fensters sind • • • Command History Window: Liste der zuletzt eingegebenen Befehle (durch Doppelklicken kann ein dort aufgeführter Befehl erneut aktiviert werden) Workspace (Arbeitsfenster): Speicher, in dem alle bereits definierten Variable gespeichert werden Current Directory Window: Liste der MATLAB-Funktionen im aktuellen Verzeichnis Weitere Fenster wie z. B. das Hilfefenster, können bei Bedarf geöffnet werden. Das Kommandofenster dient zur Eingabe der Aufgaben, die der Rechner lösen soll und dessen Ergebnis er im Kommandofenster ausgibt (interaktive Arbeitsweise). Alle für die Problemformulierung und die Lösung verwendeten Variablen werden im Workspace gespeichert. In diesem Fenster werden die Namen der Variablen zusammen mit ihrem Typ und ihrer Größe angezeigt. Wertzuweisung an eine Variable erfolgt durch das Gleichheitszeichen =. Die Standardvariable ans enthält das letzte Ergebnis eines Befehls, wenn dieses Ergebnis nicht einer Variablen zugewiesen wird. Variablen müssen nicht vereinbart werden, sondern können sofort in einer Wertzuweisung verwendet werden: a=5; >> who >> clear gibt die Namen der im Workspace stehenden Variablen aus löscht alle Variablen im Workspace 5.2 Matrizenrechnung 3 speichert alle Variablen in der Datei var.mat lädt die Variablen aus der Datei var.mat >> save var >> load var √ pi ist eine vordefinierte Variable mit dem Wert π. i und j stellen die imaginäre Einheit −1 dar und dürfen nicht als Laufvariable verwendet werden. Mit der Funktion format kann das Ausgabeformat (allerdings nicht die Rechengenauigkeit) von Zahlen verändert werden >> format short e >> format long e Fließkommadarstellung mit 5 Stellen nach dem Komma Fließkommadarstellung mit 15 Stellen nach dem Komma. Für Variablennamen gelten die in vielen Programmiersprachen bekannten Konventionen (Namen beginnen mit einem Buchstaben), Zahlen können als ganze Zahlen (integer), Fest- oder Fließkommazahlen eingegeben werden. Als arithmetische Operationen und Funktionen stehen die üblichen zur Verfügung: +, -, *, /, sin, cos, tan, cot, log (natürlicher Logarithmus), exp, abs usw. Help-Funktion. Es werden hier nur die wichtigsten Operationen und diese nur in ihrer einfachsten Form vorgestellt. Informationen über weitere Funktionen und eine Erweiterung der Anwendungsgebiete der behandelten Funktionen erhält man über die MATLAB-Hilfe bzw. in den genannten Handbüchern. Die MATLAB-Hilfe wird mit >> help aufgerufen. Informationen über einzelne Funktionen (z. B. eig) erhält man durch den Aufruf >> help eig Der MATLAB-Help-Browser wird mit >> helpdesk geöffnet. Für ausführliche MATLAB-Dokumentationen siehe [7]. 5.2 Matrizenrechnung In MATLAB werden Matrizen, Vektoren und Skalare gleichartig verwendet. Insbesondere können Vektoren und Skalare als Matrizen mit geringer Dimension betrachtet werden. Ein Zeilenvektor kann einfach durch 4 5 Einführung in MATLAB >> a = [1, 2, 3] erstellt werden. Der Befehl wird nach der Betätigung von Enter ausgeführt und die Ausgabe a = 1 2 3 wird dargestellt. Durch Abschließen des Befehls mittels Semikolon (>> a = [1, 2, 3];) wird die Ausgabe unterdrückt, der Befehl aber trotzdem ausgeführt. Ein Spaltenvektor wird wie folgt erstellt: >> b = [1; 2; 3] b = 1 2 3 Ein Vektor mit fortlaufenden Elementen kann durch den Doppelpunkt-Operator erstellt werden, wobei die untere Grenze, die Schrittweite zwischen zwei Werten und die obere Grenze angegeben werden: >> a = (1: 3: 20) a = 1 4 7 10 13 16 19 Wird keine Schrittweite angegeben so wird +1 als Schrittweite verwendet. Eine Matrix kann durch Angabe der Elemente erstellt werden: >> A = [1, 2, 3; 4, 5, 6; 7, 8, 9] A = 1 2 3 4 5 6 7 8 9 Komplexe Zahlen werden durch ihren Realteil und Imaginärteil angegeben: >> a = [1+5i, -2i] a = 1.0000 + 5.0000i 0 - 2.0000i Der Zugriff auf einzelne Elemente einer Matrix erfolgt durch Angabe der Indizes: >> A(2,3) ans = 6 Dabei ist 1 der kleinste Index und mit end wird auf das letzte Element zugegriffen. Um auf mehrere Elemente einer Matrix zuzugreifen wird der Doppelpunkt-Operator verwendet: 5.2 Matrizenrechnung 5 >> A(3,2:3) ans = 8 9 Ein allein stehender Doppelpunkt bezeichnet eine ganze Zeile bzw. Spalte: >> b = A(3,:) b = 7 8 9 Zum Erstellen einiger spezieller Matrizen stellt MATLAB entsprechende Befehle zur Verfügung. Durch den Befehl eye(Zeilen) wird eine quadratische Einheitsmatrix erstellt, wobei mit Zei” len“ die Anzahl der Zeilen gemeint ist: >> eye(2) ans = 1 0 0 1 Eine Matrix mit zufälligen Elementen kann durch rand(Zeilen,Spalten) oder randn(Zeilen,Spalten) erstellt werden, wobei Spalten“ die Anzahl der Spalten beschreibt. Im ersten Fall sind die Ele” mente gleichverteilt, im zweiten Fall normalverteilt: >> rand(2,3) ans = 0.9501 0.2311 0.6068 0.4860 0.8913 0.7621 Mit zeros(Zeilen,Spalten) und ones(Zeilen,Spalten) können Matrizen erstellt werden, deren Elemente alle 0 bzw. 1 sind: >> zeros(3,3) ans = 0 0 0 0 0 0 0 0 0 Matrizen können auch aus Teilmatrizen zusammengesetzt werden: >> C = [A; b] C = 1 2 4 5 7 8 7 8 3 6 9 9 6 5 Einführung in MATLAB Zusammenfassung = [ : : ] eye(Zeilen) rand(Zeilen,Spalten), randn(Zeilen,Spalten) zeros(Zeilen,Spalten) ones(Zeilen,Spalten) Variablenzuweisung Doppelpunkt-Operator Einheitsmatrix Zufallsmatrix leere Matrix Matrix mit allen Einträgen 1 5.2.1 Vektor- und Matrizenrechnung Die Rechnung mit Vektoren und Matrizen erfolgt in MATLAB äquivalent zur Rechnung mit Skalaren: >> b = [7, 8, 9]; >> c = [2, 3, 4]; >> d = b + c d = 9 11 13 Achtung, die häufigste Fehlerursache sind nicht passende Dimensionen: >> b = [7, 8, 9]; >> c = [2; 3; 4]; >> d = b + c ??? Error using ==> plus Matrix dimensions must agree. Mit * wird das Produkt zweier Matrizen berechnet. Wird ein Zeilenvektor mit einem Spaltenvektor multipliziert ergibt sich das Skalarprodukt: >> b = [7, 8, 9]; >> c = [2; 3; 4]; >> d = b * c d = 74 Mittels des Befehls transpose (abgekürzte Schreibweise: ’) kann eine Matrix bzw. ein Vektor transponiert werden: >> d = b’ * c’ d = 14 21 16 24 18 27 28 32 36 Zur elementweisen Rechnung existieren die Operationen .*, ./ und .ˆ : 5.2 Matrizenrechnung >> d = b .* c’ d = 14 24 7 36 Vordefinierte Funktionen. Zum Rechnen mit Matrizen stellt MATLAB einige grundlegende Funktionen (Built-in functions) zur Verfügung. Mit size(Matrix), wobei Matrix“ eine belie” bige Matrix darstellt wird die Größe einer Matrix bestimmt: >> B = [1 2 4 0; 2 4 8 1; 1 2 4 3] B = 1 2 4 0 2 4 8 1 1 2 4 3 >> size(B) ans = 3 4 Der Rang einer Matrix wird mit rank(Matrix) bestimmt: >> rank(B) ans = 2 Die Determinante einer Matrix wird mit det(Matrix), die Inverse wird mit inv(Matrix) und die Eigenwerte werden mit eig(Matrix) berechnet: >> A = [-2 -1;1 0] A = -2 -1 1 0 >> det(A) ans = 1 >> inv(A) ans = 0 1 -1 -2 >> eig(A) ans = -1 -1 Ein lineares Gleichungssystem der Form b = A · x kann durch >> x = inv(A) * b; oder, numerisch stabiler, durch >> x = A\b; 8 5 Einführung in MATLAB gelöst werden. Mit exp(Matrix) wird eaij für jedes Element der Matrix berechnet. Für eine 2×2-Matrix ergibt sich: a e 11 ea12 exp(A) = (5.1) ea21 ea22 >> exp(A) ans = 0.1353 2.7183 0.3679 1.0000 Die Matrixexponentialfunktion entsprechend Gl. (2.56) wird mit expm(Matrix)= eA berechnet: >> expm(A) ans = -0.0000 0.3679 -0.3679 0.7358 Zusammenfassung +, Summe, Differenz von Matrizen / Division von Skalaren Matrixprodukt * .*, ./, .ˆ Elementweise Operationen size(Matrix) Dimensionen einer Matrix det(Matrix) Determinante einer Matrix inv(Matrix) Inverse einer Matrix \ Linksseitige Matrixdivision eig(Matrix) Eigenwerte einer Matrix exp(Matrix) ex aller Elemente einer Matrix expm(Matrix) Matrixexponentialfunktion 5.2.2 Darstellung von Signalen Signale werden in MATLAB in zeitdiskreter Form verwendet, d.h. der Signalwert ist zu diskreten (äquidistanten) Zeitpunkten gegeben. Ein Signal kann somit durch zwei Vektoren beschrieben werden, wobei ein Vektor die Signalwerte und ein Vektor die entsprechenden Zeitpunkte enthält: >> t = [0:0.01:2*pi]’; >> y = sin(t); Um ein Signal grafisch darzustellen, wird zunächst mit dem Befehle figure(Fensternummer) ein leeres Fenster geöffnet und anschließend mit plot(x,y) das Signal gezeichnet: 5.2 Matrizenrechnung 9 >> figure(1); >> plot(t,y); Das Fenster (siehe Abb. 5.1) kann über den Befehl close(Fensternummer) oder über den Menüpunkt close“ im Menü file“ des Fensters geschlossen werden. Um mehrere Signale in ” ” ein Koordinatensystem zu zeichnen wird der Befehl hold on verwendet. Ohne diesen Befehl führt jede Verwendung von plot zum Löschen der alten Signale. Mit hold off wird in den normalen Modus zurückgewechselt. Damit die verschiedenen Signale besser zu unterscheiden sind, kann für das zweite Signal eine andere Farbe und eine andere Linienart verwendet werden (siehe Abb. 5.1): >> hold on >> plot(t,cos(t),’-.’); Abb. 5.1. Grafische Darstellung zweier Signale Mit dem Befehl subplot(Zeilen, Spalten, aktiv) können mehrere Koordinatensysteme in einem Fenster dargestellt werden (siehe Abb. 5.2): >> >> >> >> >> >> >> >> >> figure(2) subplot(2,2,1); plot(t,y) subplot(2,2,2); plot(t,cos(t),’-.’); subplot(2,2,3); plot(t,exp(-t)); subplot(2,2,4); plot(t,log(t)); 10 5 Einführung in MATLAB Abb. 5.2. Grafische Darstellung in mehreren Koordinatensystemen Die Eigenschaften des aktiven Koordinatensystems können mit dem Befehl axis verändert werden. Im Normalfall ist das zuletzt verwendete Koordinatensystem aktiv. Über die Befehle figure und subplot können auch zuvor erstellte Grafen wieder aktiviert werden. Die Überschrift eines Koordinatensystems kann mit title(Überschrift-String) und die Achsenbeschriftung mit xlabel(Beschriftung-String) und ylabel(Beschriftung-String) gesetzt werden. Zusammenfassung figure(Fensternummer) Neues Fenster/ aktiviert Fenster plot(x,y) Graf von y über x close(Fensternummer) Schließt Fenster hold on, hold off Modus für mehrere Grafen in einem KO-System subplot(Zeilen, Spalten, aktiv) Mehrere KO-Systeme in einem Fenster axis Parameter eines KO-Systems Überschrift des aktiven KO-Systems title(Überschrift-String) xlabel(Beschriftung-String) Beschriftung x-Achse ylabel(Beschriftung-String) Beschriftung y-Achse 5.3 Programmieren mit MATLAB Nach dem Start befindet sich MATLAB im aktuellen Arbeitsverzeichnis. Der Name des Verzeichnisses kann mit cd und der Inhalt mit dir angezeigt werden. Mit cd kann das Verzeichnis gewechselt werden. Die MATLAB-Dateien im aktuellen Verzeichnis können mit what angezeigt werden. 5.3 Programmieren mit MATLAB 11 5.3.1 Skripte Die bisher beschriebene Arbeitsweise unter Verwendung des MATLAB-Prompts ist bei der Verwendung von mehrzeiligen Kontrollstrukturen ungeeignet. In MATLAB besteht die Möglichkeit, mehrere Befehle in einem Skript zusammenzufassen und als Datei mit der Endung .m“ ” zu speichern ( M-Datei“). Die Befehle können dann durch Aufruf der Datei im Command” Window ausgeführt werden. Dabei verhalten sich die Befehle genauso, wie Befehle die über den MATLAB-Prompt eingegeben werden. Sie greifen insbesondere auf die Variablen im Workspace zu und können diese auch verändern. Zum Bearbeiten von Skripten kann der MATLAB-Editor verwendet werden. Dieser kann über den Menüpunkt File → New → M-File oder über edit geöffnet werden. Das in Abbildung 5.3 dargestellte Skript wird durch beispiel1 aufgerufen. Abb. 5.3. Editor – Anzeige eines Skripts zur Bestimmung des Maximums einer zufällig generierten Zahlenfolge. Alle üblichen Kontrollstrukturen stehen auch in MATLAB zur Verfügung (for - end, if - elseif - else - end, while - end, switch - case - end). Da MATLAB für die Bearbeitung von Matrizen/Vektoren optimiert ist, können viele Aufgaben durch die Verwendung von Vektor-Operationen einfacher programmiert und schneller berechnet werden, als durch die Verwendung von (for)-Schleifen (siehe Beispiel-Skript in Abbildung 5.3). Kommentare wer- 12 5 Einführung in MATLAB den durch % gekennzeichnet. Um eine lange Zeile umzubrechen können drei Punkte (...) verwendet werden. Zusammenfassung cd Verzeichniswechsel dir Inhalt des Verzeichnisses what MATLAB-Dateien im Verzeichnis edit MATLAB-Editor for - end for-Schleife if- elseif- else- end if-Abfrage while- end while-Schleife switch- case- end switch-Abfrage % Kommentar ... Zeilenumbruch innerhalb eines Befehls 5.3.2 Funktionen Der entscheidende Unterschied zwischen Funktionen und Skripten ist der, dass Funktionen einen eigenen Workspace (Variablen-Bereich) besitzen. Funktionen können nur mit genau den Variablen arbeiten, die ausdrücklich übergeben werden und sie geben nur die Rückgabewerte an den aufrufenden Workspace zurück. Viele MATLAB-Befehle sind als Funktionen implementiert (siehe sinc), so dass der Befehlsumfang von MATLAB durch eigene Funktionen erweitert werden kann. Funktionen können direkt aus dem Command-Window oder von anderen Funktionen oder Skripten aufgerufen werden. Ebenso wie Skripte werden Funktionen in M-Dateien“ gespeichert. ” Funktionen beginnen mit dem Schlüsselwort function in der ersten Zeile der Datei: function[out1,out2,... ] = Funktionsname (in1, in2, ...) Der Name der Datei sollte gleich dem Funktionsnamen sein. Auch wenn mehrere Rückgabeparameter (siehe Funktion in Abbildung 5.4) definiert sind, kann eine Funktion mit nur einem Rückgabeparameter aufgerufen werden, wobei in diesem Fall der erste Parameter zurückgegeben wird: >> werte = [1.1 1.3 1.2 1.4 1.3]; >> [a, b] = mean_std(werte) a = 1.2600 b = 0.1140 >> mean_std(werte) ans = 1.2600 5.4 Funktionen der Control System Toolbox 13 Abb. 5.4. Funktion zur Berechnung von Mittelwert und Standardabweichung 5.4 Funktionen der Control System Toolbox Mittels der Control System Toolbox kann eine regelungstechnische Systemanalyse durchgeführt werden. Zum Funktionsumfang gehören auch zahlreiche Funktionen zum Entwurf und zur Optimierung von Reglern, auf die aber im Folgenden nicht näher eingegangen wird. Ein System lässt sich in Form eines Zustandsraummodells ẋ = Ax(t) + bu(t), x(0) = x0 ′ y(t) = c x(t) + du(t) durch den Befehl ss(A, B, C, D) angeben: >> >> >> >> >> >> A = [-0.8 2; -2 -0.8]; b = [1; 1]; c = [1 1]; d = 0.3; x0 = [1; 1]; System = ss(A, b, c, d); Für dieses System kann die Bewegungsgleichung (2.58) für verschiedene Fälle gelöst werden: • • • • step(System) Berechnung der Übergangsfunktion (Sprungantwort) (x0 = 0 und u(t) = σ(t), wobei σ(t) den Einheitssprung bezeichnet) impulse(System) Berechnung der Gewichtsfunktion (Impulsantwort) (x0 = 0 und u(t) = δ(t), wobei δ(t) den Diracimpuls bezeichnet) initial(System, Anfangszustand) Berechnung der Eigenbewegung yfrei (t) (x0 vorgegeben und u(t) = 0) lsim(System, Eingangsvektor, Zeitvektor, Anfangszustand) Simulation des Systems(x0 und u(t) vorgegeben) Der Aufruf 14 5 Einführung in MATLAB >> t = [0:0.01:4*pi]’; >> u = sin(t); >> >> >> >> >> >> >> >> >> figure(3) subplot(2,2,1); step(System); subplot(2,2,2); impulse(System); subplot(2,2,3); initial(System, x0); subplot(2,2,4); lsim(System, u, t, x0); führt zu dem in Abbildung 5.5 dargestellten Ergebnis. Abb. 5.5. Funktionen zur Systemanalyse Um für ein gegebenes System die Zustandsraumdarstellung zu erhalten, wird ssdata(System) verwendet: >> [A, b, c, d] = ssdata(System); 5.4 Funktionen der Control System Toolbox 15 Ein wichtiges Werkzeug für die Systemanalyse stellt das Bode-Diagramm dar, welches mit bode(System) erstellt werden kann. Zusammenfassung ss(A, B, C, D) System aus der Zustandsraumdarstellung step(System) Sprungantwort impulse(System) Impulsantwort initial(System, Anfangszustand) Eigenbewegung lsim(System, Eingang, Zeit, x0 ) Simulierter Systemausgang ssdata(System) Zustandsraumdarstellung bode(System) Bode-Diagramm Nachfolgend wird ein gut dokumentiertes Skript zur Eingabe des Modells des Gleichstrommotors aus Beispiel 2.2 gezeigt: % Script BSPGLEICHSTROMMOTOR.M zur Eingabe der Motordaten % % J. Lunze % Version vom 5.4.2005 % % Löschen der verwendeten Variablen echo off clear R L km J kM kR kT Gleichstrommotor % % Beispiel: Gleichstrommotor % % Parameter: % R Widerstand im Ankerkreis % L Induktivität der Ankerwicklung % kM Proportionalitätsfaktor zwischen Drehzahl % des Ankers und Gegeninduktionsspannung % kR Koeffizient der viskosen Reibung % kT Proportionalitätsfaktor zwischen Ankerstrom % und Drehmoment % J Trägheitsmoment % % Eingang: Spannung an Gleichstrommaschine [V] % Ausgang: Drehzahl (Kreisfrequenz omega) [rad/s] % % Zeit in s % Parameter R = 0.5; % Ohm 16 5 Einführung in MATLAB L = 0.050; % H kM = 0.030 ; % Vs/rad kR = 30e-6; % Nms kT = 30e-3; % Nm/A J = 13e-4; % Nmsˆ2 % % % Zustandsraummodell % % x1 = Strom in A % x2 = Winkelgeschwindigkeit dphi/dt in rad/s % u = uM Spannung am Erregerkreis in V % y = omega in rad/s % AMotor=[-R/L -kM/L; kT/J -kR/J]; bMotor=[1/L; 0 ]; cMotor=[0 1]; dMotor=0; Gleichstrommotor=ss(AMotor, bMotor, cMotor, dMotor); 5.5 Erzeugung weißer Rauschsignale [6] Häufig soll das Verhalten eines dynamischen Systems unter dem Einfluss von stochastischen Störungen untersucht werden. Dabei verwendet man als Störsignal i. Allg. weißes Rauschen. Bei Simulationsuntersuchungen muss man beachten, dass das kontinuierliche Rauschsignal als Wertefolge für diskrete Zeitpunkte dargestellt wird. Dies hat Konsequenzen für die Eigenschaften des verwendeten Signals. Das Rauschsignal wird wie die anderen bei einer Simulation betrachteten Signale durch seine Werte zu den Zeitpunkten k · ∆t dargestellt, wobei ∆t die bei der betrachteten Simulationsuntersuchung verwendete Schrittweite darstellt. Die Varianz σ 2 (mittlere Leistung) des Rauschsignals ist unabhängig von der Schrittweite ∆t. Da nach dem Abtasttheorem in dem mit der Schrittweite ∆t dargestellten Signal nur Frequenzen bis zur Hälfte der Abtastfrequenz“ ” 1 f∆t = ∆t vorkommen können, verteilt sich die mittlere Leistung auf den Frequenzbereich 0... f∆t 2 . Je kleiner man die Schrittweite wählt, umso größere Frequenzen können also in dem Rauschsignal auftreten. Die Leistungsdichte S verändert sich also bei gegebener Varianz in Abhängigkeit von der Schrittweite. Es gilt S = 2σ 2 · ∆t. Ein normalverteiltes Rauschsignal mit k Werten, das den Mittelwert 0 und die Varianz σ 2 = 1 hat, erhält man durch die Funktion 5.5 Erzeugung weißer Rauschsignale [6] 17 F=randn(1, k); Soll das Signal die Varianz σ 2 besitzen, so muss dieses Signal noch mit sigma multipliziert werden: F=sigma * randn(1, k); Prof. Dr.-Ing. Jan Lunze Rechnergestützte Systemanalyse Teil 4: Einführung in Simulink Vorlesungsskript für den Studiengang Elektrotechnik und Informationstechnik Sommersemester 2009 Ruhr-Universität Bochum Lehrstuhl für Automatisierungstechnik und Prozessinformatik 44780 Bochum email: [email protected] 6. April 2009 6 Einführung in Simulink Dieser Teil enthält eine kurze Einführung in die Bedienung von Simulink. 6.1 Simulink-Toolbox Simulink wird von MATLAB aus durch >> simulink; gestartet. Darauf öffnet sich der Simulink Library Browser (siehe Abb. 6.1), in dem alle verfügbaren Blöcke aufgelistet sind. Die Blöcke sind in Gruppen ähnlicher Funktionalität sortiert. Alle als Signal-Quellen verwendeten Blöcke sind zum Beispiel in Simulink → Sources abgelegt. Ein neues Simulink-Modell wird durch File → New → Model im Menü des Simulink Library Browser erstellt. Beim Speichern des Modells durch File → Save As im Menü des Modells wird dem Modell ein Name zugewiesen. Die Dateiendung für Simulink-Modelle ist .mdl“. ” Um Blöcke zu dem Modell hinzuzufügen, werden sie mit der linken Maustaste im Simulink Library Browser angeklickt (Taste gedrückt halten) und in das Modell gezogen. Innerhalb des Modells können sie auf gleiche Art und Weise positioniert werden. Durch Klicken mit der rechten Maustaste auf einen Block öffnet sich ein Menü zur Bearbeitung des Blocks. Im Unterpunkt Format kann die Ausrichtung des Blocks verändert werden. Die Parameter des Blocks können nach Doppelklicken auf den Block bearbeitet werden. Um Blöcke zu verbinden, wird mit der linken Maustaste auf den Ausgang eines Blocks geklickt (Taste gedrückt halten) und die Maus auf einen Eingang eines anderen Blocks bewegt. Dort wird die Maustaste losgelassen. Eine Signalverzweigung kann zu einer bestehenden Verbindung hinzugefügt werden, indem auf die bestehende Verbindung mir der rechten Maustaste geklickt wird, und eine Verbindungslinie zu einem anderen Blockeingang gezogen wird. Simulink-Blöcke können auf Daten des MATLAB-Workspace zugreifen, indem die Variablennamen als Parameter der Blöcke verwendet werden. Daten können mittels des To 6.1 Simulink-Toolbox 3 Abb. 6.1. Der Simulink Library Browser Workspace-Blocks (Simulink → Sinks) in den Workspace geschrieben werden. Die Verwendung von Daten aus Dateien in Simulink geschieht mit dem From File-Block aus dem Bereich Sources und die Speicherung von Daten mit dem To File-Block aus dem Bereich Sinks. Die allgemeinen Parameter der Simulation werden im Menü Simulation → Configuration Parameters... des Simulink-Modells angegeben. Im Wesentlichen ist dabei die Simulationszeit durch Start time“ und Stop time“ anzugeben. Zusätzlich kann hier das Integrationsverfahren ” ” ausgewählt werden. Die entsprechenden Parameter können in der Regel mit den eingestellten Standardwerten verwendet werden. Beispiel für ein Simulink-Modell. Als Beispiel wird das Zustandsraummodell aus Abb. 2.9 in Simulink realisiert. Dazu wird zunächst ein neues Simulink-Modell geöffnet und das leere Modell gespeichert, um dabei dem Modell einen Namen zuzuweisen. Im Folgenden werden zwei verschiedenen Realisierungen vorgestellt. • Zunächst wird das Zustandsraummodell aus einzelnen Komponenten zusammengesetzt: 1. Für den Steuervektor b wird ein Gain-Block benötigt. Dieser ist im Menü Math Operations im Simulink Library Browser abgelegt. Mit der linken Taste wird der Block angeklickt und bei gehaltener Taste in das Modell gezogen. Der Name des Blocks steht unter dem Block. Da in einem Modell jeder Name nur einmal vorkommen darf, wird 4 6 Einführung in Simulink 2. 3. 4. 5. 6. 7. der Name in Gain b“ verändert, indem der Name angeklickt und anschließend edi” tiert wird. Durch Doppelklicken auf den Block wird das Parameterfenster geöffnet. Für Gain“ wird b eingetragen und bei Multiplication“ wird Matrix(K*u)“ ausgewählt. ” ” ” Als zweites wird ein Sum-Block aus dem gleichen Menüpunkt wie zuvor zum Modell hinzugefügt. Der Ausgang des Gain-Blocks wird angeklickt und eine Verbindung zum oberen Eingang des Sum-Blocks gezogen (Maustaste gedrückt halten). Aus dem Menü Continuous wird ein Integrator-Block in das Modell gezogen. Der Ausgang des Sum-Blocks wird mit dem Eingang des Integrator-Blocks verbunden. Durch Doppelklicken wird das Parameterfenster geöffnet und bei Initial Condition“ wird x0 ” eingetragen und damit die Anfangsbedingung festgelegt. Daraufhin werden nacheinander drei Gain-Blöcke für A, c und d zum Modell hinzugefügt und mit Gain A“, Gain c“ und Gain d“ benannt. Der Block Gain A“ wird mit ” ” ” ” der rechten Maustaste angeklickt und über Format → Flip Block umgedreht. Für die Addition des Anfangswerts wird kein Block benötigt, da der Anfangswert bereits direkt im Integrator-Block angegeben wurde. Der Wert Gain“ bei den Gain-Blöcken wird mit ” A, c bzw. d parametriert und bei Multiplication“ wird Matrix(K*u)“ ausgewählt. ” ” Für die Addition des durch den Durchgangsvektor gegebenen Anteils wird ein weiterer Sum-Block hinzugefügt und die List of signs“ mit ++| parametriert. ” Als Ausgang wird ein Scope-Block aus dem Menü Sinks verwendet. Zuletzt wird als Quelle ein Step-Block aus dem Menü Sources hinzugefügt. Dieser muss entsprechend der konkreten Aufgabe parametriert werden. Die Blöcke werden gemäß Abb. 2.9 verbunden. Dabei bietet es sich an, zunächst die Verbindungen ohne Verzweigungen zu ziehen (siehe Abb. 6.2). Abb. 6.2. Realisierung des Blockschaltbildes aus Abb. 2.9 in Simulink bevor die letzten Verbindungen gezogen wurden 8. Abschließend wird der Eingang von Gain d“ mit der Verbindung zwischen Step“ und ” ” Gain b“ und der Eingang von Gain A“ mit der Verbindung zwischen Integrator“ und ” ” ” Gain c“ verbunden (siehe Abb. 6.3). ” 9. Im Menü Simulation → Configuration Parameters... kann die Simulationszeit mit Start ” time“ und Stop time“ angegeben werden. ” 6.1 Simulink-Toolbox 5 Abb. 6.3. Realisierung des Blockschaltbildes aus Abb. 2.9 in Simulink 10. Die Variablen A, b, c, d und x0 müssen im Workspace entsprechend der Aufgabenstellung gesetzt werden. • Bei der zweiten Methode wird ein spezieller State Space-Block verwendet: 1. Aus dem Menü Continuous wird ein State Space-Block in das Modell gezogen. Die Werte A“, B“, C“, D“ und Initial conditions“ werden mit A, b, c, d und x0 para” ” ” ” ” metriert. 2. Als Ausgang wird ein Scope-Block aus dem Menü Sinks verwendet. 3. Wie bei der ersten Methode wird als Quelle ein Step-Block aus dem Menü Sources hinzugefügt. Dieser muss entsprechend der konkreten Aufgabe parametriert werden. Die Blöcke werden der Reihe nach verbunden (siehe Abb. 6.4). Abb. 6.4. Realisierung des Blockschaltbildes aus Abb. 2.9 mittels State Space-Block 4. Im Menü Simulation → Configuration Parameters... kann die Simulationszeit mit Start ” time“ und Stop time“ angegeben werden. ” 5. Die Variablen A, b, c, d und x0 müssen im Workspace entsprechend der Aufgabenstellung gesetzt werden. 6 6 Einführung in Simulink Um das Zustandsraumodell (2.20) zu simulieren, wird zunächst >> >> >> >> >> A = [-10 -0.6; b = [20; 0]; c = [0 1]; d = 0; x0 = [0; 0]; 23.08 -0.023]; im MATLAB-Prompt eingegeben. Dann wird im Modell unter Simulation → Configuration Parameters... als Startzeit 0 und als Stoppzeit 5 eingetragen. Im Step-Block wird die Step ” time“ auf 0, der Initial value“ auf 0 und der Final value“ auf 1 gesetzt. ” ” Im Menü Simulation → Start wird die Simulation gestartet. Nach der Simulation wird das Ergebnis nach Doppelklicken auf den Scope-Block sichtbar. Nach Klicken auf das FernglasSymbol wird der Bildausschnitt entsprechend Abbildung 6.5 angepasst. Abb. 6.5. Simulationsergebnis vor und nach Skalierung mittels Fernglas-Knopf 6.2 Simulink – Kurzanleitung 1. Simulink wird im Kommandofenster von MATLAB gestartet: >> simulink 2. Mit der Menüleiste wird ein neues Arbeitsfenster eingerichtet: File → New... → Model (oder: Strg+n). 3. Mittels Doppelklick lassen sich einzelne Blockbibliotheken öffnen. 4. Durch einfaches Mausziehen werden die gewünschten Blöcke in das Arbeitsfenster kopiert (Anklicken und dann linke Maustaste gedrückt halten). 5. Die Blöcke werden mit der Maus bei gedrückter linker Maustaste in die gewünschte Position gebracht und verschaltet. 6. Die Blöcke werden parametriert: Durch Doppelklick auf den Block erscheint die Parameterliste. 7. Strg+s speichert das Modell (oder mit Menüleiste: File → Save). 6.3 Wichtige Simulink Blöcke 7 8. Strg+e öffnet das Simulation-Parameter-Fenster (oder mit Menüleiste: Simulation → Configuration ...): • Start-/Stop time: hier wird die Simulatioszeit tSIM definiert. • Solver options: Auswahl des Integrationsverfahrens. 9. Strg+t startet die Simulation (oder mit Menüleiste: Simulation → Start). 10. Um die Grafik des Simulationsergebnisses zu erhalten, wird ein Doppelklick auf den verwendeten Ausgabeblock (Scope) durchgeführt. 6.3 Wichtige Simulink Blöcke Symbol Gleichung / Funktion Sources Sinusgenerator y Sine Wave y = ȳ · sin(ωt + φ) mit ω > 0 ȳ: Amplitude, ω: Kreisfrequenz in rad/s, φ: Phase in rad Sprungfunktion y y = yu · h(ts − t) + yo · h(t − ts ) Generiert einen Sprung zur Zeit ts (Step time) vom Wert yu (Initial value) zum Wert yo (Final value). Step Zufallszahl Generiert ein normalverteiltes Zufallssignal. Random Number y Clock Uhr y=t Liefert als Ausgabe die Zeitkoordinate t. 8 6 Einführung in Simulink Symbol Gleichung / Funktion Sinks Anzeige u Bildschirmausgabe des Eingangs u über der Zeit t. Scope u simout To Workspace u untitled.mat To File Ausgabe zum Workspace Erzeugt aus dem im Eingang u zusammengefassten Größen eine Matrix im Workspace. Für jeden Zeitschritt wird eine Zeile geschrieben. Die Abtastrate kann im Parameterfenster des Blocks eingegeben werden. Ausgabe in eine Datei Schreibt die im Eingang u zusammengefassten Größen sowie die Zeitkoordinate t als Matrix in eine MAT-Datei. Für jeden Zeitschritt wird eine Spalte geschrieben. Die Zeitkoordinate steht in der ersten Zeile. Die Abtastrate kann im Parameterfenster des Blocks eingegeben werden. Continuous Integrator u 1 s y y = y0 + y0 : Parameter Integrator u y 1 s+1 Transfer Fcn u x' = Ax + Bu y y = Cx + Du State-Space Rt 0 u(τ )dτ Übertragungsfunktion Darstellung eines dynamischen Systems durch eine Differenzialgleichung n-ter Ordnung Pn Pq (i) = i=0 bi u(i) n ≥ q, y (i) (0) = 0 i=0 ai y Die Anfangsbedingungen sind standardmäßig zu Null gesetzt. Lineares Zustandsraummodell ẋ = Ax + Bu x(0) = x0 y = Cx + Du mit x ∈ Rn , u ∈ Rm , y ∈ Rr Math Operations Summationsglied u1 y un Anzahl und Vorzeichen der Eingänge werden in der Parameterliste des Blocks definiert. Bsp.: + + −“ ergibt y = u1 + u2 − u3 . ” 6.3 Wichtige Simulink Blöcke Symbol u 9 Gleichung / Funktion Verstärker y k y =k·u Gain Mathematische Funktionen y = f (x) u u e y Folgende Funktionen mit reellen oder komplexen Variablen√stehen u.a. zur Auswahl: eu , ln(u), 10u , lg(u), |u|2 , u2 , u und up . Math Function Trigonometrische und hyperbolische Funktionen u sin y z.B. y = sin(u) Folgende Funktionen stehen zur Auswahl: sin, cos, tan, arcsin, arccos, arctan, sinh, cosh, und tanh. Trigonometric Function User-Defined Functions Benutzerdefinierte Funktionen u f (u) Fcn y y = f (u) Die Funktion f (u) wird vom Anwender programmiert. Prof. Dr.-Ing. Jan Lunze Rechnergestützte Systemanalyse Teil 4: Literatur zu MATLAB/Simulink Vorlesungsskript für den Studiengang Elektrotechnik und Informationstechnik Sommersemester 2009 Ruhr-Universität Bochum Lehrstuhl für Automatisierungstechnik und Prozessinformatik 44780 Bochum email: [email protected] 6. April 2009 Kommentiertes Literaturverzeichnis [I.] Einführung in MATLAB und Simulink 1. Angermann, A.; Beuschel, M.; Rau, M.; Wohlfarth, U.: Matlab – Simulink – Stateflow, OldenbourgVerlag, München 2002. Einführung mit den Schwerpunkten Regelungstechnik (Control System Toolbox), Signalverarbeitung (Signal Processing Toolbox) und Optimierung (Optimization Toolbox). 2. Beucher, O.: MATLAB und Simulink, Addison-Wesley, München 2002. Kurz gefasste Einführung in den Funktionsumfang und die Bedienung von MATLAB und Simulink mit einfachen Beispielen und Praktikumsaufgaben 3. Böhme, J. F.: Stochastische Signale mit Übungen und einem MATLAB-Praktikum, B. G. Teubner, Stuttgart 1998. Praktikumsaufgaben zur Signalanalyse 4. Gramlich, G.; Werner, W.: Numerische Mathematik mit MATLAB, dpunkt-Verlag. Lösung einfacher Aufgaben der numerischen Mathematik mit MATLAB (lineare Gleichungssysteme, Ausgleichsrechnung, Eigenwertprobleme, nichtlineare Gleichungen 5. Grupp, F.; Grupp, F.: MATLAB 6.5 für Ingenieure, Oldenbourg-Verlag, München 2003. Kurze Erläuterung der wichtigsten Elemente und Befehle von MATLAB. 6. Hoffmann, J.: MATLAB und SIMULINK in Signalverarbeitung und Kommunikationstechnik, Addison-Wesley, München 1999. Einführung in die Signalverarbeitung; Behandlung von Beispielen mit Hilfe der Funktionen der Signal Processing Toolbox, Control Systems Toolbox, Communication Toolbox Kommentiertes Literaturverzeichnis 3 7. www.mathworks.com Auf der Homepage der Fa. Mathworks kann man die Dokumentation von MATLAB als pdf-Dateien finden. Nützliche Dokumente sind Getting Started Guide“, Using MATLAB Guide“, Reference ” ” ” Guide“ 8. https://academic.softwarehouse.de/cgi-bin/product/P11756 (Quelle: Informationsheft MATLAB select“ 1/03 von Mathworks). ” 9. Lunze, J.: Regelungstechnik, Band 1, Springer-Verlag, Berlin 2004. Einführung in die Nutzung von MATLAB für die Analyse dynamischer Systeme und den Entwurf von Regelungen unter Nutzung der Control Systems Toolbox 10. www-rocq.inria.fr/scilag (Download-Seite für Scilab). Programmsystem mit MATLAB-ähnlichem Funktionsumfang; da andere Funktions- und Befehlsnamen verwendet werden, nicht mit MATLAB kompatibel. 11. Scherf, H. E.: Modellbildung und Simulation dynamischer Systeme, Oldenbourg-Verlag, München 2003. Einführung in MATLAB und Simulink anhand von Beispielen aus unterschiedlichen Gebieten (Mechanik, Hydrodynamik, Thermodynamik, Elektronik); empfehlenswert für die Prüfungsvorbereitung aufgrund der Vielzahl von Beispielen. 12. Überhuber, C.; Katzenbeisser, S.; Praetorius, D.: MATLAB 7 – Eine Einführung, Springer-Verlag, Wien 2005. Schritt-für-Schritt-Einführung in die aktuelle Version von MATLAB mit vielen Beispielen 13. Werner, M.: Digitale Signalverarbeitung mit MATLAB, Vieweg, Braunschweig 2003. Nutzung von MATLAB für die digitale Signalverarbeitung in 16 Kapiteln ( Versuchen“); mit ” Aufgaben und deren Lösungen Systemtheoretische Grundlagen [II.] 14. Lunze, J.: Automatisierungstechnik, Oldenbourg-Verlag, München 2003. Ausführliche Einführung in Blockschaltbild, Zustandsraummodell, Analyse kontinuierlicher Systeme [III.] Mathematische Grundlagen: 4 Kommentiertes Literaturverzeichnis 15. Hoffmann, A.; Marx, B.; Vogt, W.: Mathematik für Ingenieure I, Pearson, München 2005 Kap. 18-22: Einführung in die numerischen Methoden, insbesondere für die Lösung linearer und nichtlinearer Gleichungssysteme Approximation von Eigenwerten Prof. Dr.-Ing. Jan Lunze Dipl.-Ing. Jan Richter Rechnergestützte Systemanalyse Zusatzaufgaben für die Prüfungsvorbereitung Vorlesungsskript für den Studiengang Elektrotechnik und Informationstechnik Sommersemester 2009 Ruhr-Universität Bochum Lehrstuhl für Automatisierungstechnik und Prozessinformatik 44780 Bochum 6. April 2009 Prüfungsvorbereitung Diese Aufgabensammlung dient zur selbstständigen Prüfungsvorbereitung für den MATLABTeil dieser Lehrveranstaltung. Die Aufgaben entsprechen nach Stil und Schwierigkeitsgrad etwa einer Prüfungsaufgabe. Es wurden bewusst Aufgaben zu Themen gewählt, die nur zum Teil in bisherigen Lehrveranstaltungen behandelt wurden. Versuchen Sie zunächst, den Gegenstand der Aufgabe in seiner systemtheoretischen Abstraktion durch ein Blockschaltbild darzustellen. Die Ergebnisse von Simulationen hängen maßgeblich davon ab, ob ein für das Problem angemessener numerischer Löser verwendet wird. • • • Prüfen Sie ihre Simulationsergebnisse kritisch! Verifizieren Sie, ob die errechneten Lösungen plausibel sind. Verletzen die Lösungen technische Randbedingungen? Treten Bedingungen auf, die physikalisch keinen Sinn machen? Ein numerisches Simulationsergebnis ohne eine anschließende kritische Beurteilung ist wertlos. Die numerische Mathematik ist nicht Gegenstand dieser Vorlesung, die Ihnen vielmehr den erstmaligen Zugang zu entsprechenden Software-Werkzeugen vermittelt. Um diese Werkzeuge für kompliziertere Probleme sinnvoll einsetzen zu können, brauchen Sie weiteres Handwerkszeug, das im Rahmen von Veranstaltungen zur numerischen Mathematik angeboten wird. Die Grundprinzipien numerischer Integration kennen Sie jedoch aus den Grundlagenvorlesungen zur Mathematik. Ein praktisches Verfahren zum Überprüfen der Ergebnisse auf numerische Korrektheit besteht darin, die Simulation mit einem Löser fester, kleiner Schrittweite zu wiederholen. Stimmt diese Lösung mit der ursprünglichen überein, ist dies ein gutes Zeichen. Andernfalls darf der Lösung nicht vertraut werden. Lesen Sie bei der Bearbeitung der entsprechenden Aufgaben in der MATLAB-Hilfe die Beschreibung der numerischen Löser nach. Auch wenn Sie nicht alles sofort verstehen, sollten Sie sich einen Überblick über die angebotenen Löser verschaffen, so dass Sie in der Lage sind, sich bei einem gegebeben Simulationsproblem einen angemessenen Löser auszuwählen. Diese Thematik wird jedoch nicht Gegenstand der Prüfung sein, bei der der zu verwendende Löser angegeben wird, falls die Voreinstellung nicht genügt. 6 Zusatzaufgaben Dieser Teil enthält eine Reihe von Übungsaufgaben, deren Bearbeitung zur Prüfungsvorbereitung empfohlen wird. Die Aufgaben beinhalten die Simulation eines dynamischen Systems und umfassen die Schritte von der einfachen Umformung gegebener Gleichungen über die Normierung bis zur Interpretation und Bewertung des Ergebnisses. Denken Sie bei der Lösung von Differentialgleichungen daran, die Anfangsbedingungen vor der Simulation anzubringen. Soweit nichts anderes angegeben ist, soll der numerische Löser ODE45“ verwendet werden. ” Aufgabe 1.1 Ein Hund jagt seinen Herrn Hunde haben eine ganz eigene Art, bewegliche Ziele zu verfolgen. Sie steuern ihr Ziel (Herrchen, Frauchen oder Beute) an, indem sie die Richtung ihrer Bewegung auf das Ziel abgleichen. Bei einem bewegten Ziel resultiert diese Strategie in einer Verlängerung des Weges gegenüber dem kürzesten Weg. Der vom Hund beschriebene Weg verläuft auf einer gekrümmten Bahn, der sogenannten Hundekurve. Eine solche Kurve wirdin dieser Aufgabe betrachtet (Abb. 1.1). Positionen werden zunächst in kartesischen x1 Koordinaten x = angegeben. x2 Aufgabenstellung. Gegeben sind die Anfangspositionen des Hundes xHu,0 und des Herrn xHe,0 sowie der Betrag der Geschwindigkeit des Hundes v̄Hu . Die Bewegungsstrategie des Hundes lautet in Vektorschreibweise xHe − xHu v̄Hu . (1.1) v Hu = kxHe − xHu k2 Bestimmen Sie die Trajektorien von Hund und Herr für die folgenden zwei Fälle. Geradlinige Bewegung des Herrn. Der Herr bewegt sich auf einer geraden Linie (Abb. 1.1(a)), die Systemparameter sind: 2 6 Zusatzaufgaben x2 xHe,0 D x2 x1 x1 xHu,0 (a) Geradlinige Bewegung (b) Kreisförmige Bewegung Abb. 1.1. Ein Hund jagt seinen Herrn Parameter Symbol und Wert Maßeinheit Anfangsposition des Herrn xHe,0 = (0, 100)T m T Anfangsposition des Hundes xHu,0 = (0, 0) m konstante Geschwindigkeit des Herrn v He = (5, 0)T ms−1 Betrag der Geschwindigkeit des Hundes v̄Hu = 10 ms−1 Der Herr bewegt sich nach dem Bewegungsgesetz xHe (t) = v He ·t. Die Bewegung wird im Zeitintervall t ∈ [0; 15] Sekunden betrachtet. 1. Bauen Sie ein Simulink-Blockschaltbild der Bewegung von Hund und Herrn auf. Ermitteln Sie die zwei Bewegungen. Hinweis: Verwenden Sie zur Visualisierung das Hilfsmittel XY Graph“ aus ” der Bibliothek Simulink → Sinks. Denken Sie an die Anfangsbedingungen der Integratoren. 2. Zu welcher Zeit erreicht der Hund seinen Herrn? Kreisförmige Bewegung des Herrn. Der Herr bewegt sich nun um ein kreisförmiges Schwimmbad (Abb. 1.1(b)). Der Hund startet in der Mitte des Beckens und versucht, seinen Herrn schwimmend zu erreichen. Die Systemparameter sind: Parameter Durchmesser des Beckens Symbol und Wert D = 30 Maßeinheit m Anfangsposition des Herrn xHe,0 = (0, 15)T m T Anfangsposition des Hundes xHu,0 = (0, 0) m Geschwindigkeit des Herrn v̄He = 2 ms−1 Geschwindigkeit des Hundes v̄Hu = 1 ms−1 Der Herr bewegt sich kreisförmig um den Pool. Hilfreich ist die Betrachtung seiner Bewegung in Polarkoordinaten (r, φ). Die Verknüpfung zwischen Polarkoordinaten und kartesischen Koordinaten ist gegeben durch 6 Zusatzaufgaben 3 D cos φ → − x He = 2 sin φ D v̄He = φ̇ 2 (1.2) (1.3) Die Bewegung wird im Zeitintervall t ∈ [0; 200] Sekunden betrachtet. 1. Bauen Sie ein Simulink-Blockschaltbild der Bewegungen auf. Ermitteln Sie die Bewegungen. Hinweis: Wenn Sie ein System zum ersten Mal simulieren, und noch nicht wissen, in welchem Zeitraum interessante Effekte auftreten, können Sie die Simulationszeit auf Unendlich ( inf“) stellen. ” 2. Zu welcher Zeit erreicht der Hund in diesem Fall seinen Herrn? Aufgabe 1.2 Anfahren eines Zweiniveau-Lasers Pumplichtquelle Rückwärtiger Spiegel Aktives Material Auskoppelspiegel Abb. 1.2. Typischer Aufbau eines Festkörperlasers Ziel dieser Aufgabe ist die Simulation des Anfahrvorgangs eines Zweiniveau-Lasers (Abbildung 1.2). Der innere Zustand eines Lasers ist durch die Inversionsdichte σ und die Photonendichte ñ beschrieben. Eine statistische Betrachtung der Energieübergänge zwischen dem oberen Niveau E1 und dem unteren Niveau E2 führt auf die folgenden Ratengleichungen, welche die Dynamik des Laserbetriebs widerspiegeln: dσ −1 = −2τsp σ − 2B ñσ + 2R dt dñ = −κñ + B ñσ. dt (1.4) (1.5) Die Inversionsdichte σ wird vermindert durch spontane Emission mit dem Zeitkonstanten τsp und durch induzierte Emission, die durch den modifizierten Einsteinkoeffizienten B beschrieben wird. Sie wird erhöht durch das Pumpen von Energie in das obere Niveau mit der Pumprate R, die technisch mit Hilfe von Lampen realisiert wird. Die Photonendichte ñ wird vermindert durch die mittels κ beschriebenen Resonatorverluste und durch die mittels B beschriebene induzierte Emission erhöht. Die Resonatorverluste umfassen Absorptionsverluste im rückwärtigen Spiegel, Streuverluste und den gewollten Austritt von Photonen aus dem Auskoppelspiegel. 4 6 Zusatzaufgaben Die Pumprate wird oft als sogenannter Pumpfaktor r angegeben, der die Pumprate im Verhältnis zur Pumpschwelle Rthr angibt: R r= . (1.6) Rthr Die Pumpschwelle ist gegeben durch κ Rthr = . (1.7) Bτsp Sie beschreibt die minimal erforderliche Pumprate, um das für Laser typische Verhalten der kohärenten Verstärkung durch induzierte Emission hervorzurufen. Bei Vernachlässigung der Pumprate R stellen die Gleichungen (1.4)–(1.5) ein Volterra-Modell dar, das häufig für die Beschreibung periodischer Schwankungen in biologischen, chemischen und fluiddynamischen Systemen verwendet wird. Aufgabenstellung. Gegeben sind die Anfangswerte der Zustandsvariablen σ0 und ñ0 und die in der Tabelle unten angegebenen Zahlenwerte für den modifizierten Einsteinkoeffizienten B, die spontane Emissionsrate τsp , der Pumpfaktor r und die Resonatorverluste κ. Parameter Symbol und Wert −16 Maßeinheit m3 s−1 Modifizierter Einsteinkoeffizient B = 9, 3284 · 10 Pumpfaktor r = 1300 Resonatorverlustrate κ = 6, 25 · 107 s−1 Zeitkonstante der spontanen Emission τsp = 2, 5 · 10−3 s Anfangsinversionsdichte |σ0 | = 0.1 · 1018 m−3 Anfangsphotonendichte |ñ0 | = 0.01 · 1018 m−3 Bestimmen Sie die Trajektorien der Inversionsdichte und der Photonendichte im Resonator während des Anfahrens des Lasers. 1. Bauen Sie ein Blockschaltbild in Simulink auf. Geben Sie die Parameter in ein m-File ein und berechnen Sie fehlende Parameter ggf. aus den gegebenen. Hinweis: Normieren Sie alle Größen auf die Längeneinheit Mikrometer und die Zeiteinheit Mikrosekunden, um numerische Probleme zu vermeiden. Rechnen Sie alle gegebenen Parameter in diesen Bereich um und denken Sie bei der Interpretation der Ergebnisse an diese Vereinbarung! Denken Sie auch daran, die Anfangswerte der Integratoren zu setzen. Verwenden Sie zur numerischen Integration den Fixed-Step Löser ODE2 (Heun-Verfahren) mit einer festen Schrittweite von 0,001. 2. Simulieren Sie den Anfahrvorgang des Lasers im Zeiraum t ∈ [0; 14µs]. Plotten Sie die Verläufe der Inversionsdichte und Photonendichte und stellen Sie beide in einem Phasendiagramm (Inversionsdichte σ über Photonendichte n mit der Zeit als Laufparameter) dar. 3. Bestimmen Sie die Photonendichte und die Inversionsdichte im stationären Gleichgewicht. Welchen maximalen Wert erreicht die Photonendichte während des Anfahrens? Ermitteln Sie den Wert sowohl aus den einzelnen Plots als auch aus dem Phasendiagramm n − σ. Zum besseren Verständnis. Laserquellen erzeugen unter Verwendung induzierter Emission von Photonen eine zeitlich und räumlich stark kohärente Strahlung. Diese Eigenschaften äußern sich in hoher spektraler Reinheit und guter Fokussierbarkeit des entstehenden Laserlichtstrahls. In dieser Aufgabe wurde der innere Zustand eines Zweiniveau-Lasers während des Anfahrens untersucht. Laser neigen beim Anfahren zu einem starken Schwingen (sog. Spiking) in den Zustandsvariablen. Dieses Verhalten 6 Zusatzaufgaben 5 wurde hier sichtbar. Dabei wird der Laser als konzentriertes Element betrachtet, von der räumlichen Abhängigkeit seiner Variablen wird abstrahiert. Daher kann sein Verhalten durch gewöhnliche anstatt durch partielle Differentialgleichungen beschrieben werden. Die Funktion beruht auf der Existenz zweier Energieniveaus in der Elektronenhülle des aktiven Materials. Normalerweise ergibt sich die Verteilung der Atome auf die Niveaus im thermodynamischen Gleichgewicht temperaturabhängig aus der Boltzmann-Verteilung. Danach befindet sich eine größere Anzahl N1 Atome im niedrigen Energiezustand E1 als N2 im oberen Energiezustand E2 . Durch Zuführen externer Energie kann dieses Verhältnis umgekehrt werden, so dass sich mehr Atome im oberen Niveau befinden. Diesen Vorgang nennt man pumpen. Dieses Verhältnis beschreibt man durch die Inversionsdichte σ = N2 − gg12 N1 , wobei gi die Entartungsgrade des jeweiligen Energieniveaus repräsentieren. Sie spielen hier keine weitere Rolle. Die Inversionsdichte beschreibt also das Verhältnis zwischen der Anzahl von Atomen im Grundzustand und im angeregten Zustand. Eine weitere Kenngröße ist die Anzahl der Photonen im betrachteten Volumen, angegeben als Photonendichte ñ. 4. Stellen Sie mit Hilfe eines Vergleichsblocks graphisch dar, wann die Variable σ (normiert!) den Wert 8 · 104 überschreitet. 5. Stellen Sie die Kreuzkorrelation zwischen der Photonendichte und der Inversionsdichte dar. Einen entsprechenden Block finden Sie unter Simulink Extras → Additional Sinks. Vergößern Sie die Abtastzeit für diese Simulation auf 0.01s und stellen Sie im Kreuzkorrelator eine Pufferlänge von 1000 Samples und eine Plotwiederholung von 10 Samples ein. Passen Sie auch die Abtastzeit an. Interpretieren Sie das Ergebnis. 6. Stellen Sie die mittlere Leistungsspektrumdichte dar. Einen entsprechenden Block finden Sie ebenfalls unter Simulink Extras → Additional Sinks. Stellen Sie die Pufferlänge auf den Wert von 256 Samples und die Anzahl der Datenpunkte für die FFT auf 1024. Aufgabe 1.3 Der Springbrunnen des Gaius Plinius Auch ohne den Einsatz elektronisch gesteuerter Pumpen kann ein Springbrunnen mit periodisch auftretender Fontäne realisiert werden. Die Idee basiert auf auf der Verwendung eines Syphons zusammen mit einem Vorratstank. Beschreibung des Brunnens. Qzu ho hu 0 Qab Abb. 1.3. Ein einfacher Springbrunnen 6 6 Zusatzaufgaben Der Vorratstank mit dem Radius R wird kontinuierlich mit dem Zustrom Qzu gefüllt. Etwas über dem Boden des Tanks auf der Höhe hu setzt der Syphon mit dem Innenradius r in Form eines Schwanenhalses an, der bis zur Höhe ho ansteigt, dann unter den Boden des Tanks absinkt und in die Düse des Springbrunnens mündet. Die Ebene der Düse definiert den hydraulischen Nullpunkt 0 des Systems. Steigt der Füllstand h über das Niveau ho , so ist der Syphon gefüllt, und es fließt Wasser mit einem vom Füllstand abhängigen Fluss ab, bis der Füllstand hu erreicht ist. Der Syphon füllt sich mit Luft, für den Abfluss gilt Qab = 0 und der Zyklus beginnt erneut: ( √ Cπr2 2gh falls Syphon voll (1.8) Qab = 0 falls Syphon leer. Dieser Vorgang kann durch ein schaltendes System beschrieben werden. Der Füllstand im Behälter mit der Querschnittsfläche A gehorcht der Gleichung Aḣ(t) = Qzu (t) − Qab (t). (1.9) Die Parameter sind in folgender Tabelle zusammengestellt. Parameter Radius Tankbecken Symbol und Wert R = 0, 05 Maßeinheit m Radius Syphon r = 0, 005 m Oberes Niveau Syphon ho = 0.1 m Unteres Niveau Syphon hu = 0, 025 m Austauschkoeffizient C = 0.6 Erdbeschleunigung g = 9,81 ms−2 Zuflussmenge Qzu = 50 · 10−6 m3 s−1 Anfangshöhe h(0) = 0 m Simulation des Brunnenverhaltens. Hinweis: Zur Simulation schaltender Systeme in MATLAB/Simulink verwendet man üblicherweise die Stateflow-Toolbox. Dieses einfache Beispiel kann aber ohne Stateflow leicht mit Hilfe eines RS-Flip Flops realisiert werden. Verwenden Sie zur Auswahl des Abflusses gemäß Gleichung (1.8) einen Switch“ aus der Bibliothek Simulink → Signal Routing. Den boolschen Ein” gang des Switch steuern Sie mit dem Ausgang Q eines RS-Flipflops aus der Bibliothek Simulink Extras → Flip Flops. Zum Setzen des Flip Flops (Eingang S) verwenden Sie das Ergebnis einer Abfrage auf Überschreiten des Füllstands bezüglich des Grenzwerts ho , zum Rücksetzen (Eingang R) verwenden Sie das Ergebnis einer Abfrage auf Unterschreiten des Füllstands bezüglich des Grenzwerts hu . Die Blöcke zur Abfrage der Über- oder Unterschreitung eines Grenzwertes finden Sie in der Bibliothek Simulink → Logic and Bit Operations. Sie können an diesen Blöcken den Datentyp des Ausgangs als boolean festlegen. 1. Schreiben Sie ein Skript zur Erzeugung der Systemparameter und erstellen Sie ein Blockschaltbild in Simulink zur Simulation des Tanks. Stellen Sie in den Konfigurationsparametern in den Solver Options den Typ Fixed Step Solver“, als Solver den ODE3 (Bogacki-Shampine)“ mit einer ” ” Schrittweite von 0,1 Sekunden ein. Simulieren Sie das System für 100 Sekunden. 2. Erfüllt der Brunnen mit den angegebenen Parameter seine Funktion? Beobachten Sie ein Schalten? 6 Zusatzaufgaben 7 3. Wie können Sie die Betriebsparameter anpassen, so dass ein Schalten stattfindet? Gehen Sie dabei gemäß nachfolgender Überlegung vor. Beim Bau eines fertig ausgelegten Brunnens muss immer mit Toleranzen der Fertigung gerechnet werden. Parameter wie Brunnendurchmesser, Syphondurchmesser oder die relativen Höhen sind nur unter größerem Aufwand nachträglich zu ändern. Finden Sie einen Betriebsparameter, unter dessen Benutzung Sie die wunschgemäße Funktion des Brunnens auch nach seinem Bau problemlos einstellen können. Aufgabe 1.4 Springender Ball Gegeben ist ein Ball mit dem Radius r, der Masse m, der Federkonstante c, und dem Dämpfungskoeffizienten d, der aus der Höhe h(0) = h0 auf eine harte, inkompressible Unterlage fällt (Abb. 1.4). Seine Geschwindigkeit und Beschleunigung werden mit v und a bezeichnet. Es ist bekannt, dass der Ball beim Aufprall einen Teil seiner Bewegungsenergie in Wärme umwandelt und mit einer verminderten Geschwindigkeit von der Oberfläche abprallt. Der Stoß verläuft gegenüber dem makroskopisch beobachteten Bewegungsvorgangs des Balls schnell (augenblicklich). h(t) Ball t Abb. 1.4. Springender Ball auf harter Unterlage Zur Simulation gibt es verschiedene Möglichkeiten. Der Ball kann elastisch modelliert werden, so dass auch der Stoßvorgang erfasst wird. Alternativ kann der Stoß als diskretes Ereignis ohne zeitliche Dauer angenähert werden. Hierbei verlässt der Ball mit einer um den Faktor cr verminderten Geschwindigkeit die Oberfläche in entgegengesetzter Richtung. Die bei der Simulation zu verwendenden Parameter sind in folgender Tabelle zusammengestellt. 8 6 Zusatzaufgaben Parameter Radius des Balls Symbol und Wert r = 0, 02 Maßeinheit m Masse des Balls m=1 kg 4 Nm−1 Federkonstante c = 10 Dämpfung d = 20 Nm−1 s−1 Starthöhe h0 = 5 m Erdbeschleunigung g = 9,81 ms−2 Bemerkung: Wird der Stoßvorgang dynamisch modelliert, so resultiert numerisch während eines kurzen Moments beim Übergang von der Freiflugphase zur Stoßphase ein steifes Problem. Steife Probleme sind dadurch gekennzeichnet, dass sich die Eigenwerte der Systemmatrix A um Größenordnungen voneinander unterscheiden. Ihre Lösung erfordert den Einsatz spezieller numerischer Integrationsverfahren. Simulation mit elastischem Stoß. Die Bewegungsgleichung des Balls lautet ( −mg falls h > r, mḧ = −mg − c(h − r) − dḣ falls h ≤ r. (1.10) 1. Schreiben Sie die Systemgleichungen für die Flugphase und die Stoßphase in Form eines (affinen) Zustandsraummodells der Form ẋ = Ax + f (g, c, m, r) auf. Verwenden Sie den Zustandsvektor x = (h, ḣ)T . Analysieren Sie die Eigenwerte beider Systemmatrizen. Schreiben Sie die Eigenwerte als analytische Funktion der Systemparameter auf. Welche der Parameter Dämpfung, Federkonstante und Masse beeinflussen Real- und Imaginärteil der Eigenwerte von A? 2. Erstellen Sie ein Simulink-Blockdiagramm des Balls und legen Sie die Parameter wie gewohnt in einem m-File fest. Stellen Sie im Menü Simulation/Configuration Parameters“ den Löser für steife ” Systeme ODE23s ein. Simulieren Sie die Bewegung des Balls für 5 Sekunden. Der Ball befindet sich anfänglich in Ruhe. 3. Verändern Sie die Parameter des Systems so, dass sich die Realteile der Eigenwerte der Systemmatrix des freien Flugs und des Stoßes um zwei Größenordnungen unterscheiden. Simulieren Sie das System auf mit dem nichtsteifen Löser ODE23. Vergleichen Sie die Ergebnisse. Betrachten Sie vor allem die Zeitausschnitte, in denen der Übergang vom freien Fall zum Stoß stattfindet und umgekehrt. Simulation mit Schaltereignis. Wenn die eigentliche Phase des elastischen Stoßes nicht im Zentrum der Fragestellung steht, sondern nur das Ergebnis des Stoßes zählt, ist eine ereignisbasierte Simulation eine sinnvolle Alternative. Um den erhöhten Rechenaufwand in der Phase des Stoßes zu vermeiden, wird beim Auftreffen zum Zeitpunkt te der Geschwindigkeitsvektor des Balls um einen Verlustfaktor cr = 0.7 verkürzt, umgekehrt und die Simulation mit diesem Anfangswert für die Ballgeschwindigkeit neu gestartet: t− e − v(t+ e ) = −cr · v(te ). den Zeitpunkt unmittelbar vor dem Auftreffen des Balls und Hierbei bezeichnen unmittelbar nach seinem Auftreffen. (1.11) t+ e den Zeitpunkt 6 Zusatzaufgaben 9 double Constant1 Gain Ereignisdetektion Conversion Add 2 -0.5 Compare Q S !Q R <= r Höhe 1 S-R Flip-Flop boolean Conversion2 -g Constant Product Gain1 Modusumschalten a 1 s xo Integrator v Memory cr Abb. 1.5. Elemente zum Aufbau der Ereignisdetektion und zum Umschalten des Geschwindigkeitsvektors 1. Erstellen Sie nun zur Simulation nach diesem Prinzip ein Simulink-Blockschaltbild. Benutzen Sie dabei die in Abb. 1.5 angegebenen Strukturen zur Detektion des Aufprallereignisses und zum Umschalten des Modus. Das Umschalten der Geschwindigkeit erfolgt unter Benutzung eines Integrators mit externer Vorgabe des Anfangszustands und externem Reset-Eingang. Als Anfangszustand wird jeweils der letzte Wert verwendet. Bei Detektion eines Aufprallereignisses wird der Integrator der Geschwindigkeit per Reset auf den letzten berechneten Wert mit −cr skaliert gesetzt und neu gestartet. Jedes Reset-Ereignis wird auch zum Rücksetzen des RS Flip-Flops verwendet, so dass die nächste Umkehrung des Geschwindigkeitsvektors erst beim nächsten Ereignis passiert. Simulieren Sie das System ebenfalls für 5 Sekunden. Hinweis: Stellen Sie den Reset-Eingang des Integrators für die Geschwindigkeit so ein, dass dieser auf die fallende Flanke (falling edge) des anliegenden Signals reagiert. 2. Überprüfen Sie mit Hilfe ihres Modells, ob das Verhalten ihren Erwartungen entspricht. Beobachten Sie das Ereignissignal. Welches Phänomen beobachten Sie zu späten Zeiten, wenn der Ball auf der Unterlage zur Ruhe kommen soll? Hinweis: Die vom Ball erreichte Höhe wird mit jedem Stoß kleiner, da bei jedem Stoß Energie dissipiert wird. Aus diesem Grund treten in dieser Phase in endlicher Zeit eine unendliche Anzahl von Stoßereignissen auf. Dieses eigenartige Verhalten ist in der Simulation hybrider Systeme, das heißt gekoppelter diskret-kontinuierlicher Systeme, unter dem Namen Zeno-Verhalten bekannt.