Modellbildung und Simulation eines Dieselmotors unter Dymola und ...

Modellbildung und Simulation eines Dieselmotors unter Dymola und ... Modellbildung und Simulation eines Dieselmotors unter Dymola und ...

irt.rwth.aachen.de
von irt.rwth.aachen.de Mehr von diesem Publisher
07.03.2014 Aufrufe

diese genutzt. Rein algebraische Gleichungen, die ggf. durch empirische Ansätze entstanden oder ergänzt worden sind, werden hingegen in c-Code in s-functions gekapselt. in Bild 5-1 ist dies für P MIHP zu sehen. Bild 5-1: P MIHP in Simulink Andere Ansätze, wie z.B. alle Komponenten der Kühler, werden durchgängig mit Simulink- Blöcken umgesetzt. Auch hier könnte man auf Gleichungsebene s-functions eingesetzen; im vorliegenden Fall wurden diese zur Abgrenzung nur für Modelle mit datenbasiert optimierten Parametern verwendet. #define S_FUNCTION_LEVEL 2 #define S_FUNCTION_NAME P_MIHP_v14_dll //[...] andere s -function Unter-Funktionen static void mdlOutputs(SimStruct *S, int_T tid){ //Deklarationen etc.[...] qstern=MF_FUEL*hu/(MF_AE*T_BE*cp); eta=1-(1/(qstern*kappa)) *((pow((qstern-(1/(kappa*epsylon)) *(x1-(pow(epsylon,kappa))) +x1/epsylon),kappa)) *(pow(x1,(1-kappa)))-1) *(1+x2*MF_FUEL_stroke); P_MIHP=(eta*MF_FUEL*hu)/(I*N_ENGINE*VH); y[0]= P_MIHP; } Bild 5-2: Kühlermodul in Simulink Wie zu sehen ist, wird die Drossel in zwei verschiedenen Ausführungen benötigt; für die signalorientierte Darstellung in Simulink bedeutet dies automatisch zwei separate Umsetzungen. Die Drossel mit dem Massenstrom als Ausgangsgröße kann exakt gemäß Formel (4.4) umgesetzt werden. Diejenige mit dem Druck als Ausgangsgröße benötigt jedoch eine Umstellung dieser Gleichung, die rein analytisch nicht möglich ist. Für den vorliegenden Fall wurde dies relativ einfach gelöst, da ein konstantes Verhältnis der spezifischen Wärmekapazitäten κ angenommen wurde, so dass der Verlauf von c p zu Beginn der Simulation für dieses feste κ berechnet und zur Laufzeit tabellarisch invertiert wird. Dies führt zwar zu einer praktikablen Umsetzung, entfernt sich aber aufgrund der angenommenen Voraussetzungen von einer verallgemeinerten Einsetzbarkeit.

6 Umsetzung in Dymola Eigene Gleichungen werden in Dymola am einfachsten über den Modelica-Code-Layer implementiert. Eine grafische Darstellung mathematischer Zusammenhänge sowie die signalorientierte Umsetzung sind hier ebenfalls möglich, dabei werden die darüber hinausgehenden Möglichkeiten von Dymola aber nicht ausgeschöpft. In Bild 6-1 fällt auf, dass die Gleichungen nicht aufbauend auf einer sequentiellen Logik programmiert werden müssen, sondern in beliebiger Reihenfolge und fast beliebiger Umformung notiert werden können. Dymola analysiert ein Modell vor der eigentlichen Simulation analytisch; das dazugehörige Gleichungssystem wird soweit wie möglich umgeformt und Zwischengrößen werden eliminiert. Details hierzu sind an zahlreichen anderen Stellen nachzulesen [7], daher wird hierauf im Folgenden nicht näher eingegangen. model Engine import SI = Modelica.SIunits; extends Icons.Engine; //Deklarationen etc.[...] equation //andere Größen.[...] mech_pin.M=-M_EFFECT; M_EFFECT = M_IHP + M_GE - M_FRIC; qstern=MF_FUEL*hu/(MF_AE*T_BE*cp); eta=1-(1/(qstern*kappa))* ((pow((qstern-(1/(kappa*epsylon)) *(x1-(pow(epsylon,kappa))) +x1/epsylon),kappa)) *(pow(x1,(1-kappa)))-1) *(1+x2*MF_FUEL_stroke); P_MIHP=(eta*MF_FUEL*hu)/(I*N_ENGINE*VH); M_IHP = i*V_Engine*P_MIHP/(2*Constants.pi); end Engine; Bild 6-1: Ausschnitt aus dem Motormodul in Dymola Die schon im Grundgedanken verankerte Kombination von Grafik und Modell-Code erleichtert auf der einen Seite das Modellieren durch voll grafische Unterstützung; auf der anderen 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) s-functions für benutzerdefinierte Blöcke an, ein Zugriff auf den Code aller bestehenden Simulink-Blöcke ist jedoch nicht gegeben. Weiterhin bestehen aufgrund der unterschiedlichen Herangehensweise auch deutlich Unterschiede in der Handhabung. Durch die objekt-orientierte Modellbildung bei Dymola ähneln die Modelle den realen Komponenten deutlich stärker (Bild 6-2), was eine intuitive Modellbildung erleichtert.

diese genutzt. Rein algebraische Gleichungen, die ggf. durch empirische Ansätze entstanden<br />

oder ergänzt worden sind, werden hingegen in c-Code in s-functions gekapselt. in Bild<br />

5-1 ist dies für P MIHP zu sehen.<br />

Bild 5-1: P MIHP in Simulink<br />

Andere Ansätze, wie z.B. alle Komponenten der Kühler, werden durchgängig mit Simulink-<br />

Blöcken umgesetzt. Auch hier könnte man auf Gleichungsebene s-functions eingesetzen; im<br />

vorliegenden Fall wurden diese zur Abgrenzung nur für Modelle mit datenbasiert optimierten<br />

Parametern verwendet.<br />

#define S_FUNCTION_LEVEL 2<br />

#define S_FUNCTION_NAME P_MIHP_v14_dll<br />

//[...] andere s -function Unter-Funktionen<br />

static void mdlOutputs(SimStruct *S, int_T tid){<br />

//Deklarationen etc.[...]<br />

qstern=MF_FUEL*hu/(MF_AE*T_BE*cp);<br />

eta=1-(1/(qstern*kappa))<br />

*((pow((qstern-(1/(kappa*epsylon))<br />

*(x1-(pow(epsylon,kappa)))<br />

+x1/epsylon),kappa))<br />

*(pow(x1,(1-kappa)))-1)<br />

*(1+x2*MF_FUEL_stroke);<br />

P_MIHP=(eta*MF_FUEL*hu)/(I*N_ENGINE*VH);<br />

y[0]= P_MIHP;<br />

}<br />

Bild 5-2: Kühlermodul in Simulink<br />

Wie zu sehen ist, wird die Drossel in zwei verschiedenen Ausführungen benötigt; für die signalorientierte<br />

Darstellung in Simulink bedeutet dies automatisch zwei separate Umsetzungen.<br />

Die Drossel mit dem Massenstrom als Ausgangsgröße kann exakt gemäß Formel (4.4)<br />

umgesetzt werden. Diejenige mit dem Druck als Ausgangsgröße benötigt jedoch eine Umstellung<br />

dieser Gleichung, die rein analytisch nicht möglich ist. Für den vorliegenden Fall<br />

wurde dies relativ einfach gelöst, da ein konstantes Verhältnis der spezifischen Wärmekapazitäten<br />

κ angenommen wurde, so dass der Verlauf von c p zu Beginn der <strong>Simulation</strong> für dieses<br />

feste κ berechnet <strong>und</strong> zur Laufzeit tabellarisch invertiert wird. Dies führt zwar zu einer<br />

praktikablen Umsetzung, entfernt sich aber aufgr<strong>und</strong> der angenommenen Voraussetzungen<br />

von einer verallgemeinerten Einsetzbarkeit.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!