MPC Toolbox in Matlab
Transcription
MPC Toolbox in Matlab
MPC Toolbox in Matlab Seminararbeit von Florian Häberlein FAKULTÄT FÜR MATHEMATIK UND PHYSIK MATHEMATISCHES INSTITUT Datum: 4. Juli 2006 Betreuung: Prof. Dr. L. Grüne Dipl.-Wirtschaftsmath. J. Pannek Inhaltsverzeichnis Tabellenverzeichnis III Abbildungsverzeichnis V 1 MPC Toolbox in Matlab 1.1 Einführung in die MPC Toolbox . . . . . . . . . . . . . . . . . . . 1.1.1 Die Rolle der MPC Toolbox in der Matlab-Familie . . . . 1.1.2 Grundlegende Fähigkeiten der MPC Toolbox . . . . . . . . 1.2 Beispiel: Leerlauffüllungsregelung . . . . . . . . . . . . . . . . . . 1.2.1 Problemstellung . . . . . . . . . . . . . . . . . . . . . . . . 1.2.2 Problemmodellierung . . . . . . . . . . . . . . . . . . . . . 1.2.3 Implementierung des Systems . . . . . . . . . . . . . . . . 1.2.4 Implementierung des Reglers . . . . . . . . . . . . . . . . . 1.2.5 Simulation des closed-loop-Verhaltens . . . . . . . . . . . . 1.2.6 Vergleich verschiedener Regler . . . . . . . . . . . . . . . . 1.2.7 Import des Reglers in Simulink . . . . . . . . . . . . . . . 1.3 Der Blick hinter die Kulissen der MPC Toolbox . . . . . . . . . . 1.3.1 Algorithmen für unbeschränkte Probleme oder Probleme mit saturierten Beschränkungen . . . . . . . . . . . . . . . 1.3.2 Algorithmen für beschränkte Probleme . . . . . . . . . . . 1 1 1 2 4 4 4 5 6 9 11 12 14 A Plots und Quelltext A.1 Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2 Quelltext zu Kapitel 1.2 . . . . . . . . . . . . . . . . . . . . . . . 19 19 26 Literaturverzeichnis 29 I 14 15 II INHALTSVERZEICHNIS Tabellenverzeichnis 1.1 Übersicht über verschiedene Störungsarten . . . . . . . . . . . . . III 3 IV TABELLENVERZEICHNIS Abbildungsverzeichnis 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 Signalflussplan des cmpc-Reglers . . . . . . . . . . . . . . . . . . Simulation für die Fahrstufe D“ mit Modellfehler . . . . . . . . . ” Simulation für die Fahrstufe N“ mit Modellfehler . . . . . . . . . ” Vergleich von Simulationen für die Fahrstufe D“ mit beschränktem ” Prädiktionshorizont . . . . . . . . . . . . . . . . . . . . . . . . . . Signalflussplan des linearen Kontrollsystems in Simulink . . . . . Signalflussplan der nichtlinearen Regelstrecke mit zusätzlicher Störung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Prinzip der saturierten Beschränkungen . . . . . . . . . . . . . . . Dantzig-Wolfe-Methode der aktiven Mengen . . . . . . . . . . . . Beispiel zur Dantzig-Wolfe-Methode der aktiven Mengen . . . . . A.1 A.2 A.3 A.4 A.5 Simulation für die Fahrstufe D“ ohne Modellfehler . . . . . . . . ” Simulation für die Fahrstufe N“ ohne Modellfehler . . . . . . . . ” Simulation für die Fahrstufe D“ mit Modellfehler . . . . . . . . . ” Simulation für die Fahrstufe N“ mit Modellfehler . . . . . . . . . ” Simulation für die Fahrstufe D“ ohne Modellfehler mit erhöhten ” Gewichtsfaktoren . . . . . . . . . . . . . . . . . . . . . . . . . . . A.6 Simulation für die Fahrstufe N“ mit Modellfehler mit erhöhten ” Gewichtsfaktoren . . . . . . . . . . . . . . . . . . . . . . . . . . . A.7 Vergleich von Simulationen für die Fahrstufe D“ mit unbeschränk” tem Prädiktionshorizont . . . . . . . . . . . . . . . . . . . . . . . A.8 Vergleich von Simulationen für die Fahrstufe D“ mit beschränktem ” Prädiktionshorizont . . . . . . . . . . . . . . . . . . . . . . . . . . A.9 Simulation des linearen cmpc-Reglers an der nichtlinearen Regelstrecke, Ausgangsvariablen . . . . . . . . . . . . . . . . . . . . . . A.10 Simulation des linearen cmpc-Reglers an der nichtlinearen Regelstrecke, Kontrollvariablen . . . . . . . . . . . . . . . . . . . . . . V 7 10 11 12 13 14 15 17 18 19 20 20 21 21 22 23 24 25 25 VI ABBILDUNGSVERZEICHNIS Kapitel 1 MPC Toolbox in Matlab In diesem Kapitel wird die MPC (Model Predictive Control) Toolbox in Matlab vorgestellt. Im ersten Abschnitt wird eine allgemeine Einführung gegeben. Im zweiten Abschnitt erfolgt eine ausführliche Behandlung eines Beispiels. Im dritten Abschnitt wird auf die verwendeten Algorithmen der in der MPC Toolbox vorhandenen Funktionen eingegangen. 1.1 Einführung in die MPC Toolbox In diesem Abschnitt wird die MPC Toolbox allgemein vorgestellt. Zuerst wird die Einordnung der Toolbox in die Matlab-Produktfamilie erläutert, im Anschluss werden die speziellen Fähigkeiten der MPC Toolbox aufgelistet. 1.1.1 Die Rolle der MPC Toolbox in der Matlab-Familie Das Programmpaket Matlab bietet neben den im Kernprogramm vorhandenen numerischen Standardalgorithmen eine Reihe von Erweiterungspaketen — sog. Toolboxen — mit numerischen Algorithmen zu speziellen Themenbereichen der Mathematik, Physik und den Ingenieurwissenschaften. Der in allen drei Wissenschaften behandelte weitläufige Bereich der Kontrolltheorie wird dabei unter anderem durch Simulink, die Control System Toolbox und die MPC Toolbox abgedeckt. Diese Toolboxen beschäftigen sich mit der Modellbildung, dem Reglerentwurf und den theoretischen Tests der entwickelten Regelstrecken. Weitere Toolboxen ermöglichen dann den Entwurf von Prototypen des Reglers (z. B. mit Real-Time Workshop) und bieten Schnittstellen zwischen den realen Kontrollsystemen und den entwickelten Reglern (z. B. die OPC Toolbox, Openess Productivity Collaboration). Für die Arbeit mit der MPC Toolbox in Matlab spielt die Control System Toolbox eine fundamentale Rolle. Mit ihr ist die Erstellung von Kontrollsystemen in den verschiedenen Modellarten möglich. Desweiteren bietet sie Algorithmen zur 1 2 KAPITEL 1. MPC TOOLBOX IN MATLAB Transformation zwischen den verschiedenen Modellen, zu Stabilitätstests der jeweiligen Modelle sowie zu grundlegenden Problemen der Kontrolltheorie. Da die Control System Toolbox die existentielle Grundlage der MPC Toolbox bildet, ist Letztere nur in Zusammenhang mit Ersterer zu betreiben. Im bereits erwähnten Programm Simulink finden sich eine Reihe von Möglichkeiten zur Modellierung von linearen und nichtlinearen Kontrollsystemen. Die in diesem Programm erstellten Modelle lassen sich in linearisierter Form ebenfalls in der MPC Toolbox zum Reglerentwurf heranziehen. Umgekehrt könnten die in der MPC Toolbox für lineare Systeme entwickelten modellprädiktiven Regler für die nichtlinearen Systeme in Simulink verwendet werden. Desweiteren bietet die System Identification Toolbox die Möglichkeit, durch Tests an realen Systemen approximierte Modelle am PC zu bestimmen, die wiederum sowohl in Simulink als auch in der MPC Toolbox verwendet werden können. Zusammenfassend kann man sagen, dass die MPC Toolbox einen mächtigen Baustein in der Matlab-Familie bildet. Die optimale Zusammenarbeit zwischen den verschiedenen Toolboxen und dem Kernprogramm sowie die Objektorientierung der entwickelten modellprädiktiven Regler begründen diese Schlussfolgerung. 1.1.2 Grundlegende Fähigkeiten der MPC Toolbox Die MPC Toolbox bietet Algorithmen zum Entwurf, zur Analyse und zur Simulation von modellprädiktiven Reglern. Als Benutzeroberflächen bietet sie zum Einen den sogenannten Control and Estimation Tools Manager, mit dem man graphisch Regelstrecken und Regler erstellen, analysieren und testen kann. Die Benutzung ist intuitiv und übersichtlich, jedoch ist diese Benutzerschnittstelle im Leistungsumfang gegenüber der herkömmlichen kommandozeilenorientierten Benutzung eingeschränkt. Eine bessere Modularisierung und Wartbarkeit der Regler und Kontrollsysteme und die Wiederverwendbarkeit von Teilsystemen und Reglern, sowie die Benutzung von Scriptfiles bietet nur die klassische kommandozeilenorientierte Benutzeroberfläche. Es stehen alle im Control and Estimation Tools Manager vorhandenen Funktionen auch durch kommandozeilenorientierte Funktionen zur Verfügung, weswegen diese Arbeit sich nicht näher mit der graphischen Oberfläche beschäftigt. Eine detaillierte Anleitung zur graphischen Oberfläche findet sich in der Bedienungsanleitung zur Version 2 der MPC Toolbox [1, Kapitel 3]. Das Anlegen der Modelle von Kontrollsystemen lässt sich neben der oben beschriebenen Möglichkeit des Imports aus anderen Matlab-Toolboxen natürlich auch direkt durch Eingabe der Modelle mittels Kommandozeilenfunktionen bewerkstelligen. Dabei kann die MPC Toolbox MIMO-Systeme (Multi Input, Multi Output, Kontroll- und Ausgangsvariablen können mehrdimensional sein) mit Beschränkungen in Kontroll- und Ausgangsvariablen verarbeiten. Grundsätzlich können jedoch nur lineare, zeitinvariante Kontrollsysteme (sog. LTI-Systeme, li- 3 1.1. EINFÜHRUNG IN DIE MPC TOOLBOX 2 6 1 5 1.5 0.8 4 1 z(t) z(t) z(t) 0.6 3 0.4 0.5 2 0.2 0 1 0 −0.5 0 0.5 1 1.5 2 2.5 t 3 3.5 4 4.5 −0.2 5 0 0.5 1 1.5 2 2.5 t ( 0 z(t) = 1 z(t) = a 0.8 2 0.6 1.5 3 3.5 4 4.5 0 5 0 0.5 1 1.5 t < t0 t ≥ t0 2 2.5 t 3 3.5 4 4.5 5 z(t) = at + b 1.5 1 0.4 1 0.5 0.2 z(t) z(t) z(t) 0 0 0.5 −0.5 −0.2 −1 −0.4 0 −1.5 −0.6 −0.8 −2 0 0.5 1 1.5 2 2.5 t 3 3.5 4 4.5 5 −2.5 0 z(t) = a sin(bt + t0 ) 0.5 1 1.5 2 2.5 t 3 3.5 4 4.5 z(t) = an , t ∈ [nts , (n + 1)ts [, (an ) ∼ N (0, 1) 5 −0.5 0 z(t) = 0.5 ( 1 a b 1.5 2 2.5 t 3 3.5 4 4.5 5 t ∈ [nts , (n + 1)ts t ∈ [(n + 1)ts , (n + 2)ts [ n := 2i Tabelle 1.1: Übersicht über verschiedene Störungsarten. Obere Zeile v. l. n. r.: konstant, Sprung, linear; Untere Zeile v. l. n. r.: sinusförmig, gaußverteilt, gepulst. + a, b ∈ R, ts , t0 ∈ R+ 0 , n, i ∈ N0 near, time invariant) der Form x(k + 1) = Ax(k) + Bu(k) + Md(k) + Nw(k) y(k) = y(k) + z(k) verarbeitet werden. Dabei bezeichnet x(k) den k-ten Ausgang, u(k) die k-te Kontrollanweisung, d(k) bzw. w(k) die gemessene bzw. ungemessene Störung; y(k) bezeichnet den Ausgang des Systems, z(k) das Messrauschen und y(k) den gemessenen Ausgang. Die Matrizen A, B, M und N sind hierbei konstant, also zeitinvariant. Desweiteren müssen die Systeme in diskretisierter Form vorliegen, die Abtastzeit kann jedoch selbst festgelegt werden. Neben dem Einfluss von bekannten Störungen kann man auch unbekannte Störungen auf das System einwirken lassen. Dabei kann die Störung konstant, als Sprung, gepulst, als lineare Funktion, sinusförmig oder gaußverteilt gewählt werden. Eine Übersicht über die verschiedenen Störungsarten gibt Tabelle 1.1. Bei der Reglererstellung wird das Kontrollziel als Setpoint-Regelung implementiert, eine Referenztrajektorie wird als Folge von Setpoints zu den Abtastzeitpunkten realisiert. Als Reglerparameter lassen sich innerhalb der Problemstellung Prädiktions- und Kontrollhorizont 4 KAPITEL 1. MPC TOOLBOX IN MATLAB sowie Gewichtsfaktoren für das Regelziel bei Ein- und Ausgangsgrößen festlegen. Die erstellten Regler lassen sich im Anschluss exportieren, so dass sie z. B. in Simulink für die zugehörige nichtlineare Regelstrecke getestet werden können. 1.2 Beispiel: Leerlauffüllungsregelung In diesem Abschnitt wird die sog. Leerlauffüllungsregelung (LFR) bei Motoren in Autos mit Automatikgetrieben mittels MPC behandelt. Der algorithmische Teil dieses Abschnitts orientiert sich dabei an der Bedienungsanleitung zur Version 1 der MPC Toolbox [8, Kapitel 2, Seite 2-22 bis 2-30], eine ausführliche theoretische Behandlung des Themas findet sich in der Arbeit von Hrovat und Bodenheimer [6, Seite 1778 - 1783]. Weiterführende Literatur zum Einsatz von modellgestützten Reglern in Verbrennungsmotorsystemen findet sich im Buch von Guzzella und Onder [4]. 1.2.1 Problemstellung Das Ziel der Leerlauffüllungsregelung ist es, einen Motor, der im Leerlauf betrieben wird, durch Einfluss des Zündzeitpunkts und der Menge an zugeführter Luft während des Zündzeitpunkts zu einer konstanten Mindestdrehzahl zu regeln. Das Kontrollsystem unterliegt dabei unbekannten Störungen: Ein Lenkeinschlag im Stand führt beispielsweise dazu, dass der Öldruck der Servolenkung erhöht werden muss, was wiederum zu einer plötzlichen Last auf den Motor führt, ebenso können plötzliche Laständerungen am Motor durch die Klimaanlage oder die Lichtmaschine hervorgerufen werden. Aufgrund unterschiedlicher Systemkomponenten und -eigenschaften (verschiedene Motorvarianten, verschiedene zusätzliche an den Motor gebundene Geräte) soll ein Regler für die Massenproduktion erstellt werden, der robust und stabil die auftretenden Störungen ausregelt. Der modellprädiktive Ansatz bietet sich deswegen hier besonders an. Unabhängig von den veränderlichen Systemparametern müssen jedoch gewisse Schranken in den Einund Ausgangsvariablen eingehalten werden: Um einen sicheren Motorbetrieb zu gewährleisten, darf der Zündzeitpunkt vom voreingestellten Zündzeitpunkt um nicht mehr als 20 ◦ abweichen, desweiteren sollte er nach einer Veränderung zum voreingestellten Zündzeitpunkt zurückgeregelt werden um einen optimalen Kraftstoffverbrauch zu gewährleisten. 1.2.2 Problemmodellierung Aufgrund der betrachteten Problemstellung liegt es nahe, den Zündzeitpunkt sowohl als veränderbare Eingangsvariable als auch als zu regelnde Ausgangsvariable mit einer Gleichgewichtsregelung zu behandeln. Das allgemeine lineare Kontroll- 1.2. BEISPIEL: LEERLAUFFÜLLUNGSREGELUNG system wird dabei wie folgt im Frequenzbereich modelliert: Gd u1 G1 G2 y1 w + = 0 u2 0 1 y2 5 (1.1) Dabei beschreibt y1 die Drehzahl des Motors, y2 und u2 beschreiben beide den Zündzeitpunkt, u1 beschreibt die Menge der zugeführten Luft und w stellt die unbekannte Störung in Form eines Lastdrehmoments dar. Für das Modell betrachten wir zwei Betriebszustände, zum Einen den Betrieb in der Fahrstufe D“ (dies entspricht bei Schaltgetrieben dem Betrieb mit einge” legtem ersten Gang und einem Schleifenlassen“ der Kupplung, so dass auf den ” Motor ein konstantes Drehmoment von 30 Nm wirkt, welches das Auto langsam vorantreibt), zum Anderen den Betrieb in der Fahrstufe N“ (dies entspricht bei ” Schaltgetrieben dem Leerlauf ohne eingelegten Gang, das Lastdrehmoment ist in diesem Fall 0 Nm). In beiden Fällen soll die Motordrehzahl auf konstant 800 rpm gehalten werden. Modelliert man für das System die Übertragungsfunktionen so, dass die Gleichgewichtszustände im Nullpunkt liegen, ergibt sich als Beschränkung für den Zündzeitpunkt |u2 | ≤ 0,7. Für den Betrieb in der Fahrstufe D“ ergeben sich die ” Übertragungsfunktionen wie folgt: 9,62e−0,16s G1 = 2 s + 2,4s + 5,05 15,9(s + 3)e−0,04s G2 = 2 s + 2,4s + 5,05 −19,1(s + 3) Gd = 2 s + 2,4s + 5,05 (1.2) Für den Betrieb in der Fahrstufe N“ ergeben sich folgende Übertragungsfunktio” nen: 20,5e−0,16s s2 + 2,2s + 12,8 47,6(s + 3,5)e−0,04s G2 = 2 s + 2,2s + 12,8 −19,1(s + 3,5) Gd = 2 s + 2,2s + 12,8 G1 = 1.2.3 Implementierung des Systems Nun werden die Übertragungsfunktionen für (1.2) und (1.3) angelegt: G1D = [0 0 9.62;1 2.4 5.05;0 0.16 0]; G2D = [0 15.9 15.9*3;1 2.4 5.05;0 0.04 0]; (1.3) 6 KAPITEL 1. MPC TOOLBOX IN MATLAB G1N = [0 0 20.5; 1 2.2 12.8; 0 0.16 0]; G2N = [0 47.6 47.6*3.5; 1 2.2 12.8; 0 0.04 0]; G0 = [0 0;0 0;0 0]; GI = [0 1;0 1;0 0]; Diese Übertragungsfunktionen sind für kontinuierliche Frequenzen formuliert (man beachte, dass das System im Frequenz- und nicht im Zeitbereich formuliert ist), die MPC Toolbox kann jedoch nur diskrete Systeme verarbeiten. Deswegen werden nun die beiden Kontrollsysteme gemäß (1.1) mit einer diskreten Approximation der Sprungantworten weiterverwendet. Dabei benutzen wir eine Endzeit der Approximation von tf = 4 und eine Abtastrate von ts = 0,1, dies bedeutet, dass wir tf /ts = 40 Koeffizienten der Sprungfunktion approximieren. Zur Festlegung der Anzahl an stabilen Ausgabevariablen geben wir als drittes Argument der Funktion tfd2step 2 an. Für Systeme mit integrierenden Ausgabevariablen ist die dritte Übergabevariable ein Vektor, mit der Dimension des Ausgabevektors, eine 1 in der i-ten Komponente signalisiert dabei einen stabilen i-ten Ausgang, eine 0 einen integrierenden i-ten Ausgang. Die restlichen vier Übergabevariablen stellen die Transferfunktionen des ungestörten Systems dar, wobei die Elemente der Matrix spaltenweise von oben nach unten angegeben werden. tf = 4; ts = 0.1; systemD = tfd2step(tf,ts,2,G1D,G0,G2D,GI); systemN = tfd2step(tf,ts,2,G1N,G0,G2N,GI); Um die Kontrollsysteme zu vervollständigen, implementiert man nun noch die Störungen für beide Szenarien, dabei geht man genauso vor wie oben: GdD = [0 -19.1 -19.1*3; 1 2.4 5.05; 0 0 0]; dD = tfd2step(tf,ts,2,GdD,G0); GdN = [0 -19.1 -19.1*3.5; 1 2.2 12.8; 0 0 0]; dN = tfd2step(tf,ts,2,GdN,G0); Die Vorarbeit ist nun geleistet und man kann zum Reglerentwurf und zu closedloop-Simulationen übergehen. 1.2.4 Implementierung des Reglers Wir benutzen hierfür den cmpc-Regler (constraint MPC), der sich besonders für Simulationen an closed-loop Systemen mit relativ starken Beschränkungen an Ein- und/oder Ausgangsvariablen eignet. Auf die implementierten Algorithmen dieses und anderer MPC-Regler wird in Kapitel 1.3 eingegangen. Die Zusammenhänge dieses Reglers verdeutlicht Abbildung 1.1. Zunächst legen wir die Reglerparameter fest: 1.2. BEISPIEL: LEERLAUFFÜLLUNGSREGELUNG 7 Abbildung 1.1: Signalflussplan des cmpc-Reglers • Gewichtsfaktoren für Ausgänge: In der Grundeinstellung sind alle zu regelnden Ausgänge gleich bewertet, dies bedeutet, Abweichungen von den Setpoints werden für alle Ausgänge gleich bestraft“. Im vorliegenden Mo” dell ist die Drehzahlregelung viel wichtiger, als die Zündzeitpunktregelung, letztere spielt eine untergeordnete Rolle. Wir gewichten also y1 5-fach und y2 1-fach. ywt = [5 1]; • Gewichtsfaktoren für Regelung: In der Grundeinstellung sind alle Regeleingriffe unbestraft in der Optimierungsformel. In unserem Fall bestrafen wir zunächst beide 0,5-fach. uwt = [.5 .5]; • Kontrollhorizont: Die Standardeinstellung für den Kontrollhorizont ist M = 1, dies bedeutet, es wird jeweils nur der erste Zeitschritt des aktuellen Horizonts mit der gerade berechneten Kontrollfolge geregelt. Wir definieren unseren Kontrollhorizont mit N = 10, das heißt, es wird bei einer Abtastrate von ts = 0,1 immer genau eine Sekunde mit der aktuell berechneten Steuerfolge geregelt. Es besteht die Möglichkeit, sogenannte Blockierfak” toren“ zu definieren, diese geben die Anzahl der Zeitschritte an, über die die Kontrollfolge unverändert bleibt, also ∆u = 0. Dafür definiert man M als Zeilenvektor, wobei die Summe über alle Blockierfaktoren“ maximal so ” groß sein darf, wie der Prädiktionshorizont. 8 KAPITEL 1. MPC TOOLBOX IN MATLAB m = 10; • Prädiktionshorizont: Wir definieren den Prädiktionshorizont mit p = ∞. p = inf; • Simulationszeit: Die Endzeit der Simulation definieren wir mit tf sim = 20. tfsim = 20; • Referenztrajektorie: Die Standardeinstellung für die Referenztrajektorie ist eine Nullregelung für alle Komponenten. Für eine Regelung mit Setpoints verschieden von 0 definiert man die Referenztrajektorie als Spaltenvektor, wobei in der i-ten Komponente der Setpoint für die i-te Ausgangsvariable steht. Möchte man beispielsweise einer Referenztrajektorie folgen, so definiert man die Referenztrajektorie als Matrix. Dabei bezeichnet das Element in der i-ten Zeile und der j-ten Spalte, den Setpoint für die i-te Komponente zur Zeit t = jts . Hat die Matrix j Spalten mit jts < tf sim , so gilt ab der Zeit t = jts die letzte Spalte als konstante Setpointdefinition für den Zeitbereich [jts , tf sim ]. In unserem Fall wünschen wir eine konstante Nullregelung (beachte, das System wurde dementsprechend normiert). r = [0 0]; • Beschränkungen der Kontrolle: Um den Kontrolleingriff zu beschränken definiert man einen Spaltenvektor, bestehend aus drei Matrizen nach dem selben Prinzip wie bei der Referenztrajektorie. Die erste Matrix beschreibt die unteren Schranken für u, die zweite Matrix beschreibt die oberen Schranken an u und die dritte Matrix beschreibt die Beschränkungen an ∆u. Die Standardeinstellungen sind umin = −∞, umax = ∞ sowie (∆u)max = 106 für alle Zeitpunkte und alle Komponenten. Für unser System ist u1 (Luftmenge) unbeschränkt sowohl in der oberen und unteren Grenze, als auch in der maximalen Änderung. Der Zündzeitpunkt ist beschränkt durch −0,7 ≤ u2 ≤ 0,7. Um die Motorfunktionalität nicht zu beeinträchtigen, beschränken wir die maximale Änderung des Zündzeitpunkts auf (∆u2 )max ≤ 1,4. ulim = [[-inf -0.7] [inf 0.7] [1e6 1.4]]; • Beschränkungen des Ausgangs: Die Definition der Beschränkungen des Ausgangs entspricht der der Kontrolle, lediglich der Beschränkung an die Änderung der Ausgangsvariablen (∆y)max fällt weg. In unserem Fall liegen keine Beschränkungen des Ausgangs vor, die Änderung des Zündzeitpunkts wurde bereits durch u2 beschränkt. 1.2. BEISPIEL: LEERLAUFFÜLLUNGSREGELUNG 9 ylim = []; • Filterung und Verzögerung für Störungen: Für die Definition eines Entstörfilters und für die Definition von Verzögerungen für die Störungen definiert man je eine Matrix mit Zeitkonstanten. Die Standardeinstellungen sind keine Filterung und keine Verzögerung (also ein unverzögerter Einheitssprung in der Störung). Wir definieren keine Filterung und keine Verzögerung für unser Modell. tfilter = []; • Störungen: Für die Störungen ergibt sich das selbe Format wie für die Referenztrajektorie. Für reine Störungen an den Ausgabevariablen (kein Störungssystem und kein Störungsmodell vorhanden), stehen in der Matrix die additiven Störungen. Ist ein Störungssystem oder sowohl ein Störungsmodell als auch ein Störungssystem vorhanden, so werden in der Matrix die Sprungfunktionen definiert. In unserem Fall haben wir eine ungemessene Störung, die durch eine Übertragungsfunktion in das System eingeht (also nur ein Störungssystem ohne Störungsmodell). Das zugehörige Störungssystem haben wir bereits angelegt. Desweiteren benötigen wir nun noch einen Einheitssprung auf das Störungssystem. dstep = 1; Nun sind alle System-, Modell- und Reglerparameter definiert und man kann zu den ersten Simulationen übergehen. 1.2.5 Simulation des closed-loop-Verhaltens Als erstes testen wir die Regler unter der Voraussetzung, dass wir keinen Modellfehler gemacht haben, das modellierte System entspricht also dem realen System. Für den Betrieb in der Fahrstufe D“ ergibt sich damit: ” [y1,u1] = cmpc(systemD,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,... tfilter,dD,[],dstep); figure; plotall(y1,u1,ts); Nun die gleiche Simulation für den Betrieb in der Fahrstufe N“: ” [y2,u2] = cmpc(systemN,systemN,ywt,uwt,m,p,tfsim,r,ulim,ylim,... tfilter,dN,[],dstep); figure; plotall(y2,u2,ts); 10 KAPITEL 1. MPC TOOLBOX IN MATLAB Man beachte, dass wir nun zwei verschiedene Regler erstellt haben, die, jeder für sich, das jeweilige System stabilisieren (vergleiche die Plots in Abbildung A.1 und A.2 im Anhang A.1). Was man wirklich will, ist ein Regler, der das System in beiden Fahrstufen regelt. Wir testen deswegen nun die Regler indem wir für das System D“ das Modell N“ und umgekehrt verwenden. ” ” [y3,u3] = cmpc(systemD,systemN,ywt,uwt,m,p,tfsim,r,ulim,ylim,... tfilter,dD,[],dstep); figure; plotall(y3,u3,ts); [y4,u4] = cmpc(systemN,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,... tfilter,dN,[],dstep); figure; plotall(y4,u4,ts); Man sieht, dass nun keiner der Regler das System stabilisieren kann, wenn ein Modellfehler vorliegt (vergleiche die Plots in Abbildung A.3 und A.4 im Anhang A.1 sowie in Abbildung 1.2 rechts). Man muss also die Reglerparameter verändern um eine bessere Robustheit zu erhalten. Ein Versuch kann sein, den Regeleingriff in der Optimierungsfunktion stärker zu bestrafen um ein zu starkes Schwingen zu verhindern. Wir erhöhen deswegen den Gewichtsfaktor für die Bestrafung der Veränderung Abbildung 1.2: Simulation der Luftzufuhr von 0,5 auf 10 und den Gewichtsfak- für die Fahrstufe ”D“ mit tor für die Bestrafung der Veränderung des Zünd- Modellfehler zeitpunkts von 0,5 auf 20. Outputs 15 y1 10 5 0 y2 −5 −10 −15 0 1 2 3 4 Time 5 6 7 uwt = [10 20]; [y5,u5] = cmpc(systemD,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,... tfilter,dD,[],dstep); figure; plotall(y5,u5,ts); [y6,u6] = cmpc(systemN,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,... tfilter,dN,[],dstep); figure; plotall(y6,u6,ts); 8 1.2. BEISPIEL: LEERLAUFFÜLLUNGSREGELUNG 11 Man sieht, dass für das System ohne Modellfehler der Regler weiterhin stabilisierend wirkt (vergleiche den Plot in Abbildung A.5 im Anhang A.1), natürlich dauert es nun länger, bis das System stabilisiert ist, da ja ein starker Regeleingriff, der zu einer schnelleren Nullregelung führt, bestraft wird. Zum gleichen Ergebnis kommt man für das System in der Fahrstufe N“ wenn kein Modell” fehler vorliegt. Für das System mit Modellfehler zeigt sich nun auch ein stabilisierenAbbildung 1.3: Simulation für die des Regelverhalten (vergleiche den Plot in Fahrstufe N“ mit Modellfehler Abbildung A.6 im Anhang A.1 sowie in Ab” bildung 1.3 links), das gleiche Ergebnis erhält man für das System D“ mit feh” lerbehaftetem Modell N“. ” Die Ergebnisse sollten jedoch nicht dazu verleiten, den erstellten Regler als global asymptotisch stabil für das System mit Modellfehler zu betrachten. Eine globale asymptotische Stabilität kann nämlich nur für die Regler ohne Modellfehler garantiert werden, jedoch sollen uns in diesem Beispiel die erhaltenen Ergebnisse genügen. Outputs 1 y2 0.5 0 −0.5 −1 y1 −1.5 −2 −2.5 −3 −3.5 0 1 1.2.6 2 3 4 Time 5 6 7 8 Vergleich verschiedener Regler Wir vergleichen nun den cmpc-Regler, der das quadratische Kostenfunktional in jedem Schritt on-line minimiert, mit einem MPC-Regelansatz, der zuerst die Gain-Matrix berechnet und dann das System simuliert. Kmpc = mpccon(systemD,ywt,uwt,m,p); [y7,u7] = mpcsim(systemD,systemD,Kmpc,tfsim,r,ulim,tfilter,... dD,[],dstep); figure; plot([0:ts:tfsim],y5(:,1),’-b’,[0:ts:tfsim],y5(:,2),’-k’,... [0:ts:tfsim],y7(:,1),’-.b’,[0:ts:tfsim],y7(:,2),’-.k’); legend(’y_1 mit cmpc’,’y_2 mit cmpc’,... ’y1 mit mpcsim’,’y_2 mit mpcsim’,0); xlabel(’Time’); title(’Outputs’); Man sieht, dass sich die Ergebnisse nicht stark unterscheiden (vergleiche den Plot in Abbildung A.7 im Anhang A.1), obwohl wir zwei unterschiedliche Wege in der Optimierung des Kostenfunktionals gegangen sind. Der Vorteil der on-lineOptimierung lässt sich jedoch verdeutlichen, wenn wir den Prädiktionshorizont auf einen beschränkten Wert setzen, z. B. p = 80 und beide Simulationen nocheinmal durchführen. 12 KAPITEL 1. MPC TOOLBOX IN MATLAB p = 80; [y8,u8] = cmpc(systemD,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,... tfilter,dD,[],dstep); Kmpc = mpccon(systemD,ywt,uwt,m,p); [y9,u9] = mpcsim(systemD,systemD,Kmpc,tfsim,r,ulim,tfilter,... dD,[],dstep); figure; plot([0:ts:tfsim],y8(:,1),’-b’,[0:ts:tfsim],y8(:,2),’-k’,... [0:ts:tfsim],y9(:,1),’-.b’,[0:ts:tfsim],y9(:,2),’-.k’); legend(’y_1 mit cmpc’,’y_2 mit cmpc’,... ’y1 mit mpcsim’,’y_2 mit mpcsim’,0); xlabel(’Time’); title(’Outputs’); Die Ergebnisse zeigen, dass in diesem Fall die on-line-Optimierung des Kostenfunktionals zu einer schnelleren Nullregelung führt (vergleiche den Plot in Abbildung A.8 im Anhang A.1 sowie in Abbildung 1.4). Outputs 1 0 −1 −2 −3 −4 y1 mit cmpc y2 mit cmpc y1 mit mpcsim y2 mit mpcsim −5 −6 −7 0 1 2 3 4 Time 5 6 7 8 Abbildung 1.4: Vergleich von Simulationen für die Fahrstufe D“ mit beschränk” tem Prädiktionshorizont 1.2.7 Import des Reglers in Simulink Die gute Zusammenarbeit zwischen der MPC Toolbox und anderen Toolboxen in Matlab sowie Simulink erlaubt es, einen modellprädiktiven Regler für lineare Systeme in Simulink an einer nichtlinearen Regelstrecke zu testen. Wir benutzen 1.2. BEISPIEL: LEERLAUFFÜLLUNGSREGELUNG 13 hier den zuletzt betrachteten Regler für beschränkte Systeme (cmpc, Prädiktionshorizont p = 80, erhöhte Gewichtsfaktoren). Simulink bietet zum Import eine S-Block-Funktion, die diesen Regler anspricht, die nötigen Modelldaten und Reglereinstellungen müssen bereits im Arbeitsbereich geladen sein. Abbildung 1.5 zeigt die lineare Regelstrecke und den modellprädiktiven Regler in Simulink. Abbildung 1.5: Signalflussplan des linearen Kontrollsystems in Simulink. Nun wird der Strecke eine leichte Nichtlinearität sowie als eine weitere Störung ein Messrauschen hinzugefügt. Die roten Blöcke in Abbildung 1.6 zeigen die Nichtlinearitäten und die zusätzliche Störung in der Regelstrecke. Die Abbildungen A.9 und A.10 im Anhang A.1 zeigen, dass der Regler auch für die nun nichtlineare Strecke gute Ergebnisse liefert. 14 KAPITEL 1. MPC TOOLBOX IN MATLAB Abbildung 1.6: Signalflussplan der nichtlinearen Regelstrecke mit zusätzlicher Störung. 1.3 Der Blick hinter die Kulissen der MPC Toolbox In diesem Abschnitt wird kurz auf die in der MPC Toolbox implementierten Algorithmen eingegangen. 1.3.1 Algorithmen für unbeschränkte Probleme oder Probleme mit saturierten Beschränkungen Für Modelle (modelliert im Frequenzbereich oder im Zeitbereich) ohne Beschränkungen oder mit saturierten Beschränkungen bietet die MPC Toolbox einen GPCAnsatz (Generalized Predictive Control). Dabei wird zuerst iterativ über die algebraische Riccati-Gleichung die sog. Gain-Matrix berechnet, im Anschluss wird eine closed-loop-Simulation durchgeführt. Ist das Modell unbeschränkt, so liefert dieses Vorgehen gute Ergebnisse. Liegen nur schwache Beschränkungen vor, so kann man das System mit saturierten Beschränkungen“ betreiben. Dies be” deutet, dass die Gain-Matrix, die ja für unbeschränkte Probleme gilt, für das beschränkte System eingesetzt wird. Sollte nun eine Kontrollanweisung oder eine Ausgangsvariable eine Beschränkung verletzen, so wird die Kontrollanweisung so verändert, dass Beschränkungen nicht verletzt werden. Der zu große“ Anteil der ” 1.3. DER BLICK HINTER DIE KULISSEN DER MPC TOOLBOX 15 Steuerung wird sozusagen abgeschnitten“, so dass Beschränkungen erfüllt blei” ben, Abbildung 1.7 verdeutlicht dieses Vorgehen. Verständlicherweise funktioniert Abbildung 1.7: Prinzip der saturierten Beschränkungen dieses Vorgehen nur für schwach beschränkte Systeme und stellt in der Realität somit nicht das Verfahren der Wahl. Für die Regelung über den GPC wird auf Kapitel 2 verwiesen. 1.3.2 Algorithmen für beschränkte Probleme Für Modelle (modelliert im Frequenzbereich oder im Zeitbereich) mit Beschränkungen wird das Kostenfunktional ! p m X X min |Q (y(k + l|k) − r(k + l))|2 + |R∆u(k + l − 1)|2 ∆u(k)...∆u(k+m−l) l=1 l=1 in jedem Schritt online unter Beachtung der Beschränkungen gelöst. Dabei bezeichnen Q und R die Gewichtsmatrizen, y(k + l|k) den l-ten vorausgesagten Ausgangswert zum k-ten Abtastschritt und u(k + m − l) die k + m − l-te Kontrollanweisung. Zur Lösung dieses Problems verwendet die MPC Toolbox die Dantzig1 -Wolfe2 Methode der aktiven Mengen (ausführlich erläutert im Buch von Fletcher [3, Kapitel 10.3 und 10.6]). Dabei wird das quadratische Programm 1 T T min x Hx + f x =: min (q(x)) x x 2 Ax ≤ b, x ≥ xmin iterativ gelöst. Voraussetzung ist hierfür, dass die Hessematrix H positiv definit ist, dies garantiert, dass das Problem eindeutig lösbar ist. 1 2 George Bernard Dantzig, 1914 - 2005, US-amerikanischer Mathematiker Philip Wolfe, US-amerikanischer Mathematiker 16 KAPITEL 1. MPC TOOLBOX IN MATLAB Die Dantzig-Wolfe-Methode der aktiven Mengen ist eine Erweiterung des bekannten Simplex-Algorithmus, bei dem entlang des Beschränkungsrandes gesucht wird. Da hier eine quadratische Funktion vorliegt, muss das Minimum aber nicht auf dem Rand des zu untersuchenden Gebiets liegen. Man unterscheidet deswegen zwei Fälle: Zuerst sucht man das globale Minimum. Verletzt dies keine Beschränkungen, so ist dies auch das Minimum unter Beschränkungen. Verletzt dieses globale Minimum aber Beschränkungen, so liegt das Minimum unter Beschränkungen auf dem Rand der zulässigen Menge. Man beachtet nun eine gewisse Auswahlmenge (die aktive Menge) an Beschränkungen, die über Gleichheit anstatt Ungleichheit erfüllt werden müssen. Im ersten Schritt sind dies die Beschränkungen, welche vom globalen Minimum verletzt werden. Man sucht nun ein Minimum auf dieser aktiven Menge an Restriktionen und überprüft, ob nicht aktive Beschränkungen verletzt werden. Ist dies der Fall, werden diese mit in die aktive Menge der Beschränkungen aufgenommen (wieder mittels Gleichheit anstatt Ungleichheit) und es wird erneut gesucht. Werden aber keine inaktiven Beschränkungen verletzt, so ist ein potentieller Kandidat für das Minimum unter Beschränkungen gefunden. Verletzt der Kandidat die Karush3 -Kuhn4 -Tucker5 Bedingung (s. u.) für eine aktive Beschränkung, so wird diese inaktiv und es kann weitergesucht werden. Erfüllt aber der potentielle Kandidat die KarushKuhn-Tucker-Bedingung, so ist er auch Lösung des Problems. Die Karush-Kuhn-Tucker-Bedingung lässt sich folgendermaßen formulieren: Ist x∗ ein lokales Minimum einer skalaren Funktion q(x) := 21 xT Hx + f T x unter den Nebenbedingungen g(x) := b − Ax ≤ 0 und gilt für die Gradienten der aktiven Gleichungen gi (x∗ ) = 0 für i ∈ I (aktive Menge), dass sie linear unabhängig sind, so existieren eindeutige Lagrange-Multiplikatoren λi ≥ 0, so dass X ∇q(x∗ ) = λi ∇gi (x∗ ). i∈I Abbildung 1.8 zeigt die Vorgehensweise des Algorithmus. Zur genaueren Beschreibung des Algorithmus wird noch folgendes vermerkt: Im ersten Schritt muss nicht notwendigerweise das globale Minimum für das unbeschränkte System gesucht werden, ein Warmstart“ innerhalb der zulässigen ” Menge ist möglich. Sollte in einem Suchschritt keine Beschränkung aktiv sein, so bestimmt sich die Suchrichtung als negativer Gradient der Zielfunktion, also als −Hx. Die Implementierung geschieht dabei analog zum Simplex-Algorithmus über ein Tableau, in dem ein transformiertes und erweitertes System gespeichert wird. In jedem Iterationsschritt verändern Zeilenoperationen das Tableau so, dass am En3 William Karush, 1917 - 1997, US-amerikanischer Mathematiker Harold W. Kuhn, geb. 1925, US-amerikanischer Mathematiker 5 Albert William Tucker, 1905 - 1995, US-amerikanischer Mathematiker 4 1.3. DER BLICK HINTER DIE KULISSEN DER MPC TOOLBOX 17 Abbildung 1.8: Dantzig-Wolfe-Methode der aktiven Mengen, aus [7]. de eine spezielle Form erhalten wird und die Lösung abgelesen werden kann. Eine genauere Besprechung der Implementierung findet sich im Buch von Fletcher [3, Kapitel 10.6]. Es lässt sich zeigen, dass der Algorithmus in einer endlichen Schrittzahl ein Ergebnis liefert. Der Aufwand für die Lösung beträgt O(n + p), wobei n = dim(x) und p = dim(b), nur selten werden dabei mehr als 3(n + p) Iterationen benötigt (eine ausführliche Begründung dieses Resultats findet sich im Buch von Dantzig [2, Kapitel 7.3]). Zur Verdeutlichung des Algorithmus folgt ein einfaches Beispiel im R2 : Abbildung 1.9 zeigt die Höhenlinien der quadratischen Zielfunktion, der Punkt x stellt dabei das globale Minimum ohne Beschränkungen dar, die weiße Fläche beschreibt die zulässige Menge (beschränkt durch g1 ≥ 0, g2 ≥ 0 und g3 ≤ 0). Man startet mit einem Punkt in der zulässigen Menge, hier ist es der Punkt x(0) . Dieser erfüllt die Beschränkung g1 , weswegen diese in der aktiven Menge der Beschränkungen ist. Man sucht nun das Minimum unter der Voraussetzung, dass x2 = 0, dies ist x(1) . Nun wird die zweite Beschränkung g2 aktiv: Überprüft man nun die KarushKuhn-Tucker-Bedingung, so stellt man fest, dass ∇f ∇g1 =− k∇f k k∇g1 k 18 KAPITEL 1. MPC TOOLBOX IN MATLAB gilt, da der Gradient von f in negative x2 -Richtung, der Gradient der Nebenbedingung aber in positive x2 -Richtung zeigt. Die Beschränkung g1 wird also inaktiv. Man muss nun das Minimum unter der Bedingung g2 = 0 suchen. Dies findet sich in x(2) . Betrachtet man wieder den Gradienten der Zielfunktion (dieser zeigt in negative x1 -Richtung), so ergibt sich wieder ein negativer Lagrange-Multiplikator (der Gradient der Bedingung g2 zeigt in positive x1 -Richtung). Die Beschränkung g2 wird also auch inaktiv. Beachte, nun sind keine Bedingungen aktiv und es wird in Richtung des aktuellen negativen Gradienten der Zielfunktion gesucht. Man gelangt schließlich zu x(3) , was nun die Beschränkung g3 aktiv werden lässt. Eine Suche unter der Beschränkung g3 = 0 liefert dann das Minimum x(4) . Hier zeigt der Gradient der Zielfunktion in die selbe Richtung wie der Gradient der einzigen aktiven Nebenbedingung g3 . Wir haben also die Karush-Kuhn-Tucker-Bedingung erfüllt und somit das Minimum unter den Beschränkungen gefunden. Abbildung 1.9: Beispiel zur Dantzig-Wolfe-Methode der aktiven Mengen. Anhang A Plots und Quelltext A.1 Plots Outputs 1 0 −1 y2 −2 −3 y1 −4 −5 0 2 4 6 8 10 Time 12 14 16 18 20 14 16 18 20 Manipulated Variables 8 6 4 u1 2 u2 0 −2 0 2 4 6 8 10 Time 12 Abbildung A.1: Simulation für die Fahrstufe D“ ohne Modellfehler. Man sieht, ” dass der Regler das System asymptotisch stabil zur 0 regelt. 19 20 ANHANG A. PLOTS UND QUELLTEXT Outputs 1 0.5 0 −0.5 y2 −1 y1 −1.5 −2 −2.5 0 2 4 6 8 10 Time 12 14 16 18 20 14 16 18 20 Manipulated Variables 5 4 3 2 u1 1 u2 0 −1 0 2 4 6 8 10 Time 12 Abbildung A.2: Simulation für die Fahrstufe N“ ohne Modellfehler. Ebenso beim ” zweiten Modell liefert der Regler ein asymptotisch stabiles Verhalten. Outputs 20 y1 10 0 −10 −20 y2 0 2 4 6 8 10 Time 12 14 16 18 20 14 16 18 20 Manipulated Variables 20 15 u1 10 5 0 −5 −10 u2 0 2 4 6 8 10 Time 12 Abbildung A.3: Simulation für die Fahrstufe D“, wobei als Systemmodell die ” Fahrstufe N“ gewählt wurde. Man sieht, dass der Regler das System nicht sta” bilisieren kann. 21 A.1. PLOTS Outputs 2 1 0 −1 −2 −3 0 2 4 6 8 10 Time 12 14 16 18 20 14 16 18 20 Manipulated Variables 4 3 u1 2 u2 1 0 −1 0 2 4 6 8 10 Time 12 Abbildung A.4: Simulation für die Fahrstufe N“, wobei als Systemmodell die ” Fahrstufe D“ gewählt wurde. Auch hier kann der Regler das System nicht stabi” lisieren. Outputs 1 0 −1 −2 y2 −3 y1 −4 −5 −6 0 2 4 6 8 10 Time 12 14 16 18 20 14 16 18 20 Manipulated Variables 8 6 4 u1 2 u2 0 −2 0 2 4 6 8 10 Time 12 Abbildung A.5: Simulation für die Fahrstufe D“ ohne Modellfehler mit erhöhten ” Gewichtsfaktoren für die Bestrafung des Regeleingriffs in der Kostenfunktion. 22 ANHANG A. PLOTS UND QUELLTEXT Outputs 1 0 −1 u2 −2 u1 −3 −4 0 2 4 6 8 10 Time 12 14 16 18 20 14 16 18 20 Manipulated Variables 3.5 3 2.5 2 u1 1.5 u2 1 0.5 0 0 2 4 6 8 10 Time 12 Abbildung A.6: Simulation für die Fahrstufe N“, wobei als Systemmodell die ” Fahrstufe D“ gewählt wurde mit erhöhten Gewichtsfaktoren für die Bestrafung ” des Regeleingriffs in der Kostenfunktion. Nun zeigt sich, dass der Regler auch für das System mit Modellfehler ein stabilisierendes Ergebnis liefert. 23 A.1. PLOTS Outputs 1 0 −1 −2 −3 y1 mit cmpc y2 mit cmpc −4 y1 mit mpcsim y2 mit mpcsim −5 −6 0 2 4 6 8 10 Time 12 14 16 18 20 Abbildung A.7: Vergleich von Simulationen für die Fahrstufe D“ ohne Modell” fehler und Prädiktionshorizont p = ∞. Durchgezogene Linien: cmpc mit on-lineOptimierung des Kostenfunktionals. Strich-Punkt-Linien: mpcsim mit im Voraus berechneter Gain-Matrix. Es zeigt sich kein wesentlicher Unterschied zwischen den verschiedenen Verfahren. 24 ANHANG A. PLOTS UND QUELLTEXT Outputs 1 0 −1 −2 −3 −4 y1 mit cmpc y2 mit cmpc y1 mit mpcsim y2 mit mpcsim −5 −6 −7 0 2 4 6 8 10 Time 12 14 16 18 20 Abbildung A.8: Vergleich von Simulationen für die Fahrstufe D“ ohne Modell” fehler und Prädiktionshorizont p = 80. Durchgezogene Linien: cmpc mit on-lineOptimierung des Kostenfunktionals. Strich-Punkt-Linien: mpcsim mit im Voraus berechneter Gain-Matrix. Die on-line-Optimierung ist hier klar im Vorteil. 25 A.1. PLOTS 2 0 y1 −2 −4 −6 −8 0 2 4 6 8 10 Time 12 14 16 18 20 4 6 8 10 Time 12 14 16 18 20 0.8 0.6 y2 0.4 0.2 0 −0.2 0 2 Abbildung A.9: Simulation des linearen cmpc-Reglers an der nichtlinearen Regelstrecke, Ausgangsvariablen. 6 5 u1 4 3 2 1 0 −1 0 2 4 6 8 10 Time 12 14 16 18 20 4 6 8 10 Time 12 14 16 18 20 0.8 0.6 u2 0.4 0.2 0 −0.2 0 2 Abbildung A.10: Simulation des linearen cmpc-Reglers an der nichtlinearen Regelstrecke, Kontrollvariablen. 26 A.2 ANHANG A. PLOTS UND QUELLTEXT Quelltext zu Kapitel 1.2 function bsp(); % Definition der Systemuebertragungsfunktionen G1D = [0 0 9.62;1 2.4 5.05;0 0.16 0]; G2D = [0 15.9 15.9*3;1 2.4 5.05;0 0.04 0]; G1N = [0 0 20.5; 1 2.2 12.8; 0 0.16 0]; G2N = [0 47.6 47.6*3.5; 1 2.2 12.8; 0 0.04 0]; G0 = [0 0;0 0;0 0]; GI = [0 1;0 1;0 0]; % Approximation der Systemsprungfunktionen tf = 4; % Endzeit der Approximation ts = 0.1; % Abtastzeit systemD = tfd2step(tf,ts,2,G1D,G0,G2D,GI); systemN = tfd2step(tf,ts,2,G1N,G0,G2N,GI); % Definition der Stoerungsuebertragungsfunktionen % und Approximation der Stoerungssprungfunktionen GdD = [0 -19.1 -19.1*3; 1 2.4 5.05; 0 0 0]; dD = tfd2step(tf,ts,2,GdD,G0); GdN = [0 -19.1 -19.1*3.5; 1 2.2 12.8; 0 0 0]; dN = tfd2step(tf,ts,2,GdN,G0); % Definition der Reglerparameter ywt = [5 1]; % Gewichte fuer die Ausgaenge uwt = [.5 .5]; % Gewichte fuer die Kontrolleingriffe m = 10; % Kontrollhorizont p = inf; % Praediktionshorizont tfsim = 20; % Dauer der Simulation r = [0 0]; % Setpunkte ulim = [[-inf -0.7] [inf 0.7] [1e6 1.4]]; % Beschraenkungen an die Kontrolle ylim = []; % Beschraenkungen an die Ausgaenge tfilter = []; % Stoerungsfilter, -verzoegerung dstep = 1; % Sprungfunktion fuer Stoerung %================================================================ % 1. Simulation ohne Modellfehler %=============================================================== % Fahrstufe D A.2. QUELLTEXT ZU KAPITEL 1.2 [y1,u1] = cmpc(systemD,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,... tfilter,dD,[],dstep); figure; % neues Plotfenster plotall(y1,u1,ts); % plottet Ausgaenge und Kontrollen % Fahrstufe N [y2,u2] = cmpc(systemN,systemN,ywt,uwt,m,p,tfsim,r,ulim,ylim,... tfilter,dN,[],dstep); figure; plotall(y2,u2,ts); %=============================================================== % 2. Simulation mit Modellfehler %=============================================================== % Fahrstufe D [y3,u3] = cmpc(systemD,systemN,ywt,uwt,m,p,tfsim,r,ulim,ylim,... tfilter,dD,[],dstep); figure; plotall(y3,u3,ts); %Fahrstufe N [y4,u4] = cmpc(systemN,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,... tfilter,dN,[],dstep); figure; plotall(y4,u4,ts); %=============================================================== % 3. Simulation mit erhoehtem Gewichtsfaktor fuer die Kontrolle %=============================================================== uwt = [10 20]; % Gewichtsfaktor fuer die Kontrolle % Fahrstufe D ohne Modellfehler [y5,u5] = cmpc(systemD,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,... tfilter,dD,[],dstep); figure; plotall(y5,u5,ts); % Fahrstufe N mit Modellfehler [y6,u6] = cmpc(systemN,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,... tfilter,dN,[],dstep); figure; 27 28 ANHANG A. PLOTS UND QUELLTEXT plotall(y6,u6,ts); %=============================================================== % 4. Simulation - Vergleich zwischen cmpc und mpcsim %=============================================================== Kmpc = mpccon(systemD,ywt,uwt,m,p); % Erstellung der Gain-Matrix [y7,u7] = mpcsim(systemD,systemD,Kmpc,tfsim,r,ulim,tfilter,... dD,[],dstep); figure; plot([0:ts:tfsim],y5(:,1),’-b’,[0:ts:tfsim],y5(:,2),’-k’,... [0:ts:tfsim],y7(:,1),’-.b’,[0:ts:tfsim],y7(:,2),’-.k’); legend(’y_1 mit cmpc’,’y_2 mit cmpc’,... ’y1 mit mpcsim’,’y_2 mit mpcsim’,0); xlabel(’Time’); title(’Outputs’); %=============================================================== % 5. Simulation - Vergleich zwischen cmpc und mpcsim % mit beschraenktem Praediktionshorizont %=============================================================== p = 80; % neuer Praediktionshorizont [y8,u8] = cmpc(systemD,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,... tfilter,dD,[],dstep); Kmpc = mpccon(systemD,ywt,uwt,m,p); [y9,u9] = mpcsim(systemD,systemD,Kmpc,tfsim,r,ulim,tfilter,... dD,[],dstep); figure; plot([0:ts:tfsim],y8(:,1),’-b’,[0:ts:tfsim],y8(:,2),’-k’,... [0:ts:tfsim],y9(:,1),’-.b’,[0:ts:tfsim],y9(:,2),’-.k’); legend(’y_1 mit cmpc’,’y_2 mit cmpc’,... ’y1 mit mpcsim’,’y_2 mit mpcsim’,0); xlabel(’Time’); title(’Outputs’); Literaturverzeichnis [1] A. Bemporad, M. Morari, N. L. Ricker, Getting Started with the Model Predictive Control Toolbox ; Version 2, The MathWorks, 2004 - 2006. [2] G. B. Dantzig, Linear Programming and Extensions; Princeton University Press, Princeton, 1963. [3] R. Fletcher, Practical Methods of Optimization; John Wiley & Sons, Chichester, UK, 1986. [4] L. Guzzella, C. H. Onder, Introduction to Modeling and Control of Internal Combustion Engine Systems; Springer, 2004. [5] D. Hömberg, Nichtlineare Optimierung, Script zur Vorlesung; Technische Universität Berlin, 2005/2006, http://www.math.tu-berlin.de/ Vorlesungen/WS05/NonLinOpt/skript/nonlin-opt.pdf. [6] D. Hrovat and B. Bodenheimer, Robust Automotive Idle Speed Control Design Based on µ-Synthesis; Proceedings of American Control Conference, 1993. [7] J. Matthes, L. Gröll, R. Mikut, J. Jäkel, Optimale Führung von Endoskopen mit redundanter Kinematik ; Automatisierungstechnik 48, R. Oldenbourg Verlag, 2000, http://www.sfb588.uni-karlsruhe.de/ publikationen/2001_06.pdf. [8] M. Morari, N. L. Ricker, Model Predictive Control Toolbox User’s Guide; Version 1, The MathWorks, 1995 - 1998. [9] MPC Toolbox Website: http://www.mathworks.com/products/mpc/. 29