07.03.2014 Aufrufe

Rapid Control Prototyping mit Dymola und Matlab für eine ...

Rapid Control Prototyping mit Dymola und Matlab für eine ...

Rapid Control Prototyping mit Dymola und Matlab für eine ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Rapid</strong> <strong>Control</strong> <strong>Prototyping</strong> <strong>mit</strong> <strong>Dymola</strong> <strong>und</strong> <strong>Matlab</strong> für <strong>eine</strong><br />

Modellgestützte Regelung in der Motorsteuerung<br />

F. Richert, BMW AG<br />

K. Hoffmann, A. Bollig, D. Abel, RWTH Aachen<br />

1 Kurzfassung:<br />

In vorliegenden Beitrag wird <strong>eine</strong> für unterschiedliche Mehrgrößen-Aufgaben der Motorregelung<br />

einsetzbare, Modellgestützte Prädiktive Regelung basierend auf physikalischen Prozessmodellen<br />

vorgestellt. Die Vorteile der physikalischen Prozessmodelle sowie direkt daraus<br />

ableitbare, systematische Erweiterungen werden erläutert.<br />

Eng verknüpft <strong>mit</strong> <strong>eine</strong>m als Entwicklungsumgebung vorliegenden Simulationsmodell werden<br />

red<strong>und</strong>ante Arbeitsschritte bei der Reglerentwicklung für den verwendeten Ansatz deutlich<br />

reduziert. Es wird die eingesetzte Entwicklungskette vorgestellt, welche <strong>eine</strong>rseits die Prozessmodelle<br />

bestmöglich wieder verwendet, andererseits durch den Einsatz modernder<br />

Software-Werkzeuge die Handhabung auch komplexer Darstellungsformen ermöglicht.<br />

2 Einleitung<br />

Fortschritte in der Motorenentwicklung haben den modernen, aufgeladenen Dieselmotor zu<br />

<strong>eine</strong>m komplexen, vielfach gekoppelten System werden lassen. Getrieben durch das Spannungsfeld<br />

aus dem Wunsch nach mehr Leistung bzw. weniger Verbrauch <strong>eine</strong>rseits <strong>und</strong> immer<br />

strengeren, einzuhaltenden Emissionsvorschriften andererseits besteht ein moderner<br />

Verbrennungsantrieb neben dem Motorblock <strong>mit</strong> Kurbel- <strong>und</strong> Ventiltriebe aus zahlreichen<br />

zusätzlichen Komponenten zur Leistungssteigerung <strong>und</strong> Emissionsreduktion, die sich gegenseitig<br />

beeinflussen <strong>und</strong> optimal aufeinander abgestimmt werden müssen. Beim Dieselmotor<br />

betrifft dies insbesondere das „erweiterte Luftsystem“ aus Aufladung, Abgasrückführung<br />

<strong>und</strong> auch beim Dieselmotor verstärkt eingesetzte Abgasnachbehandlung in Form von<br />

beispielsweise Dieselpartikelfilter <strong>und</strong> NO x -reduzierenden Maßnahmen. Eine Übersicht über<br />

<strong>eine</strong> beispielhafte Konfiguration <strong>eine</strong>s modernen Abgasstrangs <strong>eine</strong>s solchen Motors <strong>und</strong><br />

da<strong>mit</strong> verb<strong>und</strong>enen Regelungsaufgaben gibt Bild 1.<br />

Es ist einleuchtend, dass für die Regelung <strong>eine</strong>s solchen Systems <strong>eine</strong> Mehrgrößenregelung<br />

ideal ist, all<strong>eine</strong> schon für die gekoppelte Betrachtung zweier Komponenten, beispielsweise<br />

der simultanen Ladedruck- <strong>und</strong> Abgasrückführratenregelung, wurden die Vorteile solch <strong>eine</strong>s<br />

Ansatzes bereits gezeigt [1]-[4]. Modellgestützte Verfahren bieten dabei die Möglichkeit,<br />

vorhandenes Systemwissen als Teil der Regelung zu integrieren.


Bild 1: Beispiele für Regelungsaufgaben am Dieselmotor<br />

Den Entwurf <strong>eine</strong>r solchen Regelung in <strong>eine</strong>r simulationsgestützten Entwicklungsumgebung<br />

vorzunehmen ist ein seit geraumer Zeit anerkanntes Vorgehen. Häufig kommt es hierbei zu<br />

jedoch zu <strong>eine</strong>m „Bruch“ in der Entwicklungskette: Zur Erstellung des Simulationsmodells<br />

wird <strong>eine</strong> relativ komplexe, meist physikalisch basierte Modellbildung vorgenommen. Die im<br />

Regler genutzten Modelle sind hingegen bislang meist relativ einfache Ansätze, die beispielsweise<br />

<strong>mit</strong>tels parametrischer Identifikation gewonnen werden. Dies bedeutet folglich<br />

<strong>eine</strong> erneute vollständige Modellbildung gegenüber der Erstellung des Simulationsmodells,<br />

ohne dass bereits umgesetztes Systemwissen weiter genutzt wird. Darüber hinaus wächst<br />

<strong>mit</strong> steigender Komplexität des Gesamtsystems der Aufwand immens, der notwendig ist,<br />

solche rein <strong>mit</strong>tels Ein-/Ausgangs-Messung er<strong>mit</strong>telten Modelle zu erstellen. Wird hingegen<br />

<strong>eine</strong> physikalisch basierte Modellbildung auch innerhalb solch <strong>eine</strong>r Regelung verwendet,<br />

sind die entsprechenden Größen vollständig vorhanden, lediglich die „Auswahl“ der Systemgrößen,<br />

die als Ausgangsgrößen verwendet werden, wird angepasst.<br />

Im Folgenden wird <strong>eine</strong> Entwicklungsumgebung vorgestellt, <strong>mit</strong> deren Hilfe <strong>eine</strong> Modellgestützte<br />

Prädiktive Regelung (MPR) basierend auf physikalisch basierten Modellen entworfen<br />

werden kann. Insbesondere soll hier die Umsetzung der Modellbildung möglichst einfach zu<br />

handhaben sein, ausgehend von der Beschreibung einfacher Teilsysteme sollen aufwändige<br />

Formelmanipulationen vermieden werden. Darüber hinaus wird beim hier beschriebenen<br />

Vorgehen das vorhandene Systemwissen ideal genutzt, indem die gleichen Ansätze sowohl<br />

in dem als Regelstrecke verwendeten Simulationsmodell als auch in der Regelung Verwendung<br />

finden.<br />

3 Entwicklungsumgebung<br />

Als Kern der Entwicklungsumgebung dient <strong>Matlab</strong>/Simulink (Bild 2). Hier existiert <strong>eine</strong> detaillierte<br />

Benutzerführung <strong>mit</strong> integrierter Versuchsverwaltung sowie <strong>eine</strong>r komfortablen Umge-


ung zur Versuchsauswertung. Die Umsetzung der Regelstrecke als Mittelwertmodell wurde<br />

hingegen in <strong>Dymola</strong> vorgenommen (Abschnitt 3.1) <strong>und</strong> anschließend in die Simulink-<br />

Umgebung eingeb<strong>und</strong>en, da dies immens Vorteile bei der Modellbildung bietet.<br />

Die Regelung wurde als C-Code-s-function eingeb<strong>und</strong>en. Als Demonstration für <strong>eine</strong> mögliche<br />

Hardware-in-the-Loop-Verwendung wurde die Regelung zusätzlich auf automotivetypischer,<br />

moderner Entwicklungshardware appliziert (Abschnitt 3.2).<br />

<br />

Engine_out<br />

<br />

Demux<br />

<br />

<br />

<br />

T_COOL_BEC<br />

Compressor_out<br />

Turbine_out<br />

P_AMB<br />

P_AT<br />

AirSystem_out<br />

T_COOL_BIC<br />

T_AMB<br />

Ambient_input<br />

<strong>Dymola</strong>-Engine<br />

Emission_out<br />

Output<br />

S_VGT S_VGT_EDC<br />

S_EGR S_EGR_EDC<br />

MF_FUEL MF_FUEL_EDC<br />

BOI<br />

BOI_EDC<br />

M_LOAD M_LOAD_EDC<br />

Actuators<br />

S_VGT_EDC N_Engine<br />

S_EGR_EDC M_E<br />

MF_FUEL_EDC P_AIC<br />

BOI_EDC controlled_value_1<br />

M_LOAD controlled_value_2<br />

EDC<br />

N_ENGINE Engine_out<br />

M_E<br />

P_AIC AirSystem_out<br />

controled_value_1<br />

controlled_value_2 Emission_out<br />

Sensors<br />

Bild 2: Oberste Ebene der Entwicklungsumgebung: Simulink als gemeinsame Basis<br />

3.1 Umsetzung der Regelstrecke in <strong>Dymola</strong><br />

Zur Umsetzung der Regelstrecke wurde das Programm <strong>Dymola</strong> auswählt, das auf der freien,<br />

objekt-orientierten Modellierungssprache Modelica basiert. Da hier k<strong>eine</strong> gerichtete Umsetzung<br />

der Gleichungen erfolgen muss, ist es zur Modellierung komplexer Systeme besonders<br />

gut geeignet [7]. Der Anwender kann so<strong>mit</strong> weite Teile der notwendigen Gleichungsmanipulation<br />

dem Programm überlassen. Die Motor-Umsetzung in <strong>Dymola</strong> ist in Bild 3 zu sehen,<br />

<strong>eine</strong>n Code-Auszug der zu Gr<strong>und</strong>e liegenden Modellierungssprache Modelica zeigt Bild 4.<br />

Der Größenaustausch zwischen den einzelnen Elemente geschieht durch die so genannten<br />

Connectoren simultan für beliebig viele Größen gleichzeitig, wobei zwischen Potential- <strong>und</strong><br />

Flussvariablen unterschieden wird [7].


Bild 3: Dieselmotor <strong>mit</strong> Turbolader <strong>und</strong> AGR in <strong>Dymola</strong><br />

In Verbindung <strong>mit</strong> den Vererbungsmöglichkeiten der Module sind so<strong>mit</strong> die Voraussetzungen<br />

für <strong>eine</strong> einfache Erweiterung der Modelle gegeben. Wurde die Modellbildung <strong>mit</strong> lediglich<br />

den drei Größen Druck, Temperatur <strong>und</strong> Massenstrom begonnen, sind nur durch Modifikation<br />

des Connectors <strong>und</strong> der allen Elementen zugr<strong>und</strong>e liegenden Basis-Klasse<br />

(two_gas_pin in Bild 4), die zwei Gas-Schnittstellen zu Verfügung stellt, die strukturellen<br />

Voraussetzungen für die Berücksichtigung der Gaszusammensetzung in allen Elementen<br />

geschaffen. Auch ein „Umbau“ des Systems auf <strong>eine</strong>n Bi-Turbolader ist durch Ergänzen <strong>eine</strong>s<br />

entsprechend parametrierten zweiten Turboladers denkbar, ohne dass der Rest des<br />

Modells umgeschrieben werden muss oder sich die Schnittstellen ändern.<br />

model Volumen;<br />

//Vererbung der Anschlüsse<br />

extends two_gas_pin;<br />

//Parameter <strong>und</strong> lokale Variablen definieren<br />

parameter Real V;<br />

[…]<br />

equation<br />

//Druckänderung aus 1. Hauptsatz<br />

p=pin1.p;<br />

der(p)=(kappa*R/V)*(pin1.MF*pin1.T+pin2.MF*pin2.T);<br />

//Massenbilanz<br />

der(m) = (pin1.MF + pin2.MF);<br />

//ideale Gasgleichung<br />

p*V = m*R*T;<br />

end Volumen;<br />

Bild 4: Modelica-Code-Auszug <strong>eine</strong>s Volumens<br />

Die schon im Gr<strong>und</strong>gedanken verankerte Kombination von Grafik <strong>und</strong> Modell-Code erleichtert<br />

auf der <strong>eine</strong>n Seite das Modellieren durch voll grafische Unterstützung; auf der anderen<br />

Seite bleiben auch nicht selbst erstellte Modelle vollständig transparent, da alle Gleichungen


auf Code-Ebene einsehbar sind. Simulink bietet im Gegensatz hierzu zwar die (rein signalorientierten)<br />

s-functions für benutzerdefinierte Blöcke an, ein Zugriff auf den Code aller bestehenden<br />

Simulink-Blöcke ist jedoch nicht gegeben.<br />

Weiterhin bestehen aufgr<strong>und</strong> der unterschiedlichen Herangehensweise auch deutlich Unterschiede<br />

in der Handhabung. Durch die objekt-orientierte Modellbildung bei <strong>Dymola</strong> ähneln<br />

die Modelle den realen Komponenten deutlich stärker, was <strong>eine</strong> intuitive Modellbildung erleichtert.<br />

Auch die Möglichkeit, Gleichungen in beliebiger Form zu implementieren, hilft bei der Verallgem<strong>eine</strong>rung.<br />

Es wird unabhängig von eventuell bekannten Wirkungsrichtungen modelliert.<br />

Durch die symbolische Analyse <strong>und</strong> analytische Umformung <strong>eine</strong>s Modells vor der Simulation<br />

werden deutliche Vorteile beim Rechenzeitbedarf <strong>und</strong> der numerischen Stabilität erzielt.<br />

Das fertige <strong>Dymola</strong>-Modell wird <strong>mit</strong>tels des als Teil von <strong>Dymola</strong> verfügbaren <strong>Dymola</strong>-<br />

Simulink-Interface eingeb<strong>und</strong>en. Zur Laufzeit der Simulation wird so<strong>mit</strong> ein vor-verarbeitetes<br />

Modell simuliert, zur Bearbeitung wird jedoch der direkte Zugriff auf die <strong>Dymola</strong>-Umgebung<br />

geboten.<br />

Vergangenheit<br />

Zukunft<br />

Sollwert w<br />

Minimierter Regelfehler<br />

Regelgröße y^<br />

freie Regelgröße<br />

S_VTG_EDC<br />

2<br />

3<br />

S_EGR_EDC<br />

4<br />

MF_FUEL<br />

k<br />

k+ N 1 k+<br />

N 2<br />

Prädiktionshorizont 1<br />

1<br />

ZSR_nonlin_Maple_dll<br />

z<br />

2<br />

X_nonlin<br />

Nonlinear ZSR Y_nonlin<br />

t / Ts<br />

1<br />

N_ENGINE<br />

States<br />

Matrix A<br />

3<br />

Stellgröße ZSR_lin_A u<br />

Matrix B<br />

4<br />

ZSR_lin_B<br />

Matrix C<br />

Inputs<br />

Matrix D<br />

k Linear ZSR k+ Nu<br />

Stellhorizont<br />

5<br />

ZSR_lin_C<br />

6<br />

ZSR_lin_D<br />

t / Ts<br />

Bild 5: Hardware-Anbindung<br />

3.2 Hardware-Anbindung<br />

Gerade im Motorbereich ist es interessant, Teile <strong>eine</strong>s Simulationsmodells <strong>mit</strong> realen Komponenten<br />

zu <strong>eine</strong>r Hardware-in-the-Loop- oder Software-in-the-Loop-Simulation zusammenzuschließen.<br />

Für den vorliegenden Fall ist die nächstliegende Variante, die entwickelten


Regler per Steuergeräte-Emulation am realen Motor zu verifizieren. Hierfür wurde ein dSpace-System<br />

verwendet, für das <strong>mit</strong>tels des Realtime-Workshops <strong>eine</strong> sehr enge Anbindung an<br />

<strong>Matlab</strong> existiert, so dass <strong>mit</strong> automatischer, hardwarespezifischer Code-Generierung <strong>eine</strong><br />

durchgängige Werkzeugkette von der grafischen Entwicklungsumgebung <strong>Matlab</strong>/Simulink<br />

bis hin zur Hardware vorliegt (Bild 5).<br />

4 Regelung<br />

4.1 Modellgestützte Prädiktive Regelung<br />

Die Modellgestützte Prädiktive Regelung nutzt ein Modell der zu regelnden Strecke, um unter<br />

Berücksichtigung des zukünftigen Verhaltens ideale Stellgrößen zu berechnen.<br />

Dazu wird <strong>eine</strong> Kostenfunktion J minimiert, die die Abweichung zwischen vorhergesagtem<br />

Streckenverhalten <strong>und</strong> der Sollwerttrajektorie in <strong>eine</strong>m bestimmten Zeitfenster bewertet, das<br />

durch den sog. unteren <strong>und</strong> oberen Prädiktionshorizont N 1 <strong>und</strong> N 2 begrenzt wird (Bild 6).<br />

Weiterhin können Änderungen oder Absolutausschläge der Stellgröße durch Aufnahme in<br />

die Kostenfunktion berücksichtigt werden, ebenso wie weitere beliebige Kriterien, die sich<br />

mathematisch formulieren lassen. Stellgrößenänderungen werden üblicherweise nur in <strong>eine</strong>m<br />

begrenzten Zeitraum zugelassen, dem Stellhorizont N u , um die Dimension des Optimierungsproblems<br />

<strong>und</strong> da<strong>mit</strong> den Rechenaufwand zu beschränken.<br />

In der Gr<strong>und</strong>form stellt sich diese Kostenfunktion im Eingrößenfall wie in Formel 3-1 dar.<br />

J<br />

N 2<br />

<br />

Nu<br />

<br />

2<br />

2<br />

= λ ⋅ ( w − yˆ)<br />

+ µ ⋅ ∆u<br />

(1)<br />

N1<br />

1<br />

Über die Wichtungsfaktoren λ <strong>und</strong> µ kann dabei <strong>eine</strong> stärkere Gewichtung entweder der Regelabweichung<br />

oder der Stellgrößenänderungen berücksichtigt werden. Die Sollwerttrajektorie<br />

w wird dabei als bekannt vorausgesetzt. Die prädizierte Regelgröße y^ (, das „Dach“ in<br />

Gleichung 1 dient dabei als Kennzeichnung, dass es sich um <strong>eine</strong> geschätzte Größe handelt,)<br />

muss <strong>mit</strong> Hilfe des Modells der Regelstrecke abhängig von der Eingangsgrößenänderung<br />

∆u ausgedrückt werden. Die Horizonte N 1 , N 2 , N u sowie die Wichtungsfaktoren λ <strong>und</strong> µ<br />

dienen dabei als fest zu wählende Einstellparameter. Es bleibt <strong>eine</strong> lediglich von ∆u abhängige<br />

Kostenfunktion J, die <strong>mit</strong> geeigneten Mitteln minimiert werden kann.<br />

Im Mehrgrößenfall wird üblicherweise auf Matrix-Schreibweise übergegangen, wobei die<br />

Wichtungsfaktoren λ <strong>und</strong> µ in die Wichtungsmatrizen Γ <strong>und</strong> Λ übergehen. Sie können hier<br />

zusätzlich auch zur Wichtung der einzelnen Regelgrößen untereinander dienen. Details hierzu<br />

finden sich in der Literatur, z.B. in [4].


Vorgehen bei der Prädiktiven Regelung<br />

1. Aktuellen Systemzustand x k feststellen<br />

(Beobachter <strong>mit</strong> Modell)<br />

2. Freie Regelgröße berechnen<br />

(Modell für Prädiktion)<br />

3. Aktuelle Trajektorie bestimmen<br />

4. Kostenfunktion für nächste Prädiktion aufstellen<br />

(Modell für Prädiktion, Horizonte)<br />

5. Kostenfunktion abhängig von Stellhorizont<br />

minimieren (Optimierung)<br />

6. Erstes Element des Stellvektors ausgeben<br />

7. Neuer Zeitschritt: Zurückweichen des Horizontes<br />

8. Ab Schritt 1 <strong>mit</strong> aktualisiertem x k wiederholen<br />

Bild 6: Prinzip der Prädiktiven Regelung<br />

4.2 Umsetzung <strong>und</strong> Applikation der Regelung<br />

Zur Optimierung der Kostenfunktion stehen prinzipiell mehrere Möglichkeiten zur Verfügung.<br />

Bei Verwendung des linearen Prozessmodells wird die Kostenfunktion J (Gleichung 1) zu<br />

<strong>eine</strong>r konvexen Funktion, deren globales Minimum garantiert werden kann. Im unbeschränkten<br />

Fall ist daher <strong>eine</strong> analytische Lösung möglich. Sollen Nebenbedingungen berücksichtigt<br />

werden, muss auf ein geeignetes Optimierungsverfahren zurückgegriffen werden. Sind die<br />

Nebenbedingungen wie im vorliegenden Fall als lineare Ungleichungen darstellbar, kann das<br />

Problem <strong>mit</strong> Hilfe der Quadratischen Programmierung, <strong>eine</strong>m Standard-Algorithmus, gelöst<br />

werden. Im vorliegenden Fall wurden Minimal- <strong>und</strong> Maximalwerte für Stellgrößen, deren Änderung<br />

sowie der Zustände berücksichtigt.<br />

Werden nichtlineare Streckenmodelle verwendet, wird die Kostenfunktion J beliebig komplex.<br />

Hierfür existieren bislang k<strong>eine</strong> nutzbaren Verfahren, die ein globales Minimum sicher finden<br />

oder globale Konvergenz der Lösung garantieren. Für zahlreiche Spezialfälle existieren Lösungen,<br />

wie z.B. bei Nutzung der Nichtlinearen Zustandsraumdarstellung für das Prozessmodell.<br />

Der Rechenaufwand steigt in jedem Fall erheblich; <strong>mit</strong> Blick auf die verfügbare Rechenleistung<br />

wurden k<strong>eine</strong> Ansätze <strong>mit</strong> nichtlinearen Streckenmodellen verfolgt.<br />

Mit sukzessiver Linearisierung des Reglermodells in jedem Teilschritt <strong>und</strong> Einsatz <strong>eine</strong>s Extended<br />

Kalman-Filters als Beobachter ergibt sich die Struktur der Regelung gemäß Bild 7 .


Bild 7: Struktur der eingesetzten Reglung<br />

Als umzusetzende Teilsysteme ergeben sich folgende Bereiche:<br />

• Nichtlineare Zustandsraumdarstellung des Reglermodells (f <strong>und</strong> g in Bild 7)<br />

• Linearisierte Zustandsraumdarstellung des Reglermodells (A k bis D k in Bild 7)<br />

• Beobachter-Auslegung, Prädiktion <strong>und</strong> Optimierung (L k <strong>und</strong> MPR in Bild 7)<br />

Die beiden erstgenannten Punkte sind in jedem Fall modellspezifisch <strong>und</strong> müssen systemabhängig<br />

erzeugt werden. Für die sukzessiv linearisierte Struktur sind alle drei Komponenten<br />

des letztgenannten Punktes hingegen generisch umsetzbar. Details zu den Algorithmen der<br />

Komponenten der Regelung sind in [8] zu finden<br />

Um auch hier für die modellspezifischen Komponenten die notwendigen Entwicklungsschritte<br />

weitestgehend zu automatisieren, wird das Formelmanipulationsprogramm Maple verwendet.<br />

Die Umsetzung erfolgt <strong>mit</strong>tels automatischer Formelmanipulation <strong>und</strong> Code-Generierung:<br />

Die Formeln der Modellansätze werden zunächst in Maple in ihrer jeweiligen Basisform implementiert.<br />

Die Manipulation der Gleichungen bis zur gewünschten Zustandsraumdarstellung<br />

erfordert vom Anwender lediglich die Definition der Zustandsgrößen, die notwendigen Umformungen<br />

werden automatisch vorgenommen. Die allgem<strong>eine</strong> Linearisierung sowie die C-<br />

Code-Erzeugung erfolgen ebenfalls automatisch, der generierte Code muss lediglich in <strong>eine</strong><br />

kapselnde s-function eingeb<strong>und</strong>en werden, um in Simulink verwendet werden zu können<br />

(Bild 8).


Maple – Modellgleichungen<br />

Belegung der Vektoren<br />

> x :=:<br />

u :=:<br />

Matrix A: Linearisieren von f(x,u)<br />

> A := Matrix(L_x,L_x):<br />

for m from 1 by 1 to L_x do<br />

for n from 1 by 1 to L_x do<br />

A[m,n] := diff(f(x,u)[m],x[n]):<br />

end do:<br />

end do:<br />

> A := convert(A,array):<br />

C - CODE FÜR MATRIX A<br />

> code_A :=<br />

C(A,optimize=true,deducetypes=false,<br />

defaulttype=numeric,resultname="A",<br />

output=string):;<br />

Bild 8: Maple-Sheet <strong>und</strong> kapselnde s-function<br />

C-Code – s-function<br />

static void mdlOutputs([…]){<br />

[…]<br />

// Variablen-Deklaration,<br />

// von Maple erstellt<br />

#include "Variablen.h"<br />

//Matrizen, von Maple erstellt:<br />

#include "ZSR_A.txt"<br />

#include "ZSR_B.txt"<br />

#include "ZSR_C.txt"<br />

#include "ZSR_D.txt"<br />

// Ausgabe Matrix A<br />

for (ii=0; ii


Vergangenheit<br />

k<br />

Zukunft<br />

Sollwert w<br />

k<br />

Stellhorizont<br />

k + N<br />

1 k +<br />

N<br />

2<br />

Prädiktionshorizont<br />

k + N<br />

u<br />

Stellgröße u<br />

Minimierter Regelfehler<br />

Regelgröße y^<br />

freie Regelgröße<br />

t / T<br />

s<br />

t / T<br />

s<br />

Modellbeschreibung<br />

p<br />

q Bp<br />

Hardware-in-the-Loop – <strong>Dymola</strong>/dSpace<br />

3 3´<br />

Regelstrecke – <strong>Dymola</strong><br />

EDC<br />

Pin_AT<br />

q Bv 4<br />

2<br />

1<br />

q A<br />

Pin_BC<br />

Reglerentwicklung –Simulink<br />

<br />

Engine_out<br />

Modellbildung<br />

V<br />

ZR-Darstellung <strong>und</strong><br />

Linearisierung – Maple<br />

Belegung der Vektoren<br />

> x :=:<br />

u :=:<br />

Matrix A: Linearisieren von f(x,u)<br />

> A := Matrix(L_x,L_x):<br />

for m from 1 by 1 to L_x do<br />

for n from 1 by 1 to L_x do<br />

A[m,n] := diff(f(x,u)[m],x[n]):<br />

end do:<br />

end do:<br />

C-Code – s-function<br />

static void mdlOutputs([…]){<br />

[…]<br />

// Variablen-Deklaration,<br />

// von Maple erstellt<br />

#include "Variablen.h"<br />

//Matrizen, von Maple erstellt:<br />

#include "ZSR_A.txt"<br />

// Ausgabe Matrix A<br />

for (ii=0; ii

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!