WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Volumenänderungsarbeit in Matlab/Simulink berechnen

 

rambotnik
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 15.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.07.2011, 14:26     Titel: Volumenänderungsarbeit in Matlab/Simulink berechnen
  Antworten mit Zitat      
Hallo,

ich habe ein Problem mit Matlab. Bin noch sehr frisch mit dem Programm und kenne noch nicht die ganzen Kniffe.
Ich möchte die Arbeit eines Vieraktmotors über das Integrad pdV berechnen. p und V sind über den Kurbelwinkel aufgelöst gegeben.
Leider kann ich dem Integrator nicht sagen, dass er nach V und nicht nach t integrieren soll.
Habe das bereits über einen Umweg umgangen, dass ich erst V nach t ableite, das mit p multipliziere und dann integriere. Das klappt auch, aber sobal die step-size geändert wird, ändert sich logischerweise das Ergebniss.

Es muss doch einen Weg geben, dies zu realiesieren?

Vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen


Georg J
Forum-Century

Forum-Century



Beiträge: 113
Anmeldedatum: 22.06.11
Wohnort: ---
Version: R2008a
     Beitrag Verfasst am: 15.07.2011, 23:40     Titel:
  Antworten mit Zitat      
Hi rambotnik,

Ich habe bisher noch nicht mit diesem Thema in Simulink zu tun gehabt, aber ich würde wahrscheinlich die Integration selbst programmieren.

Deine Idee ist kreativ, aber ich habe Bedenken, die Ableitung zu bilden, wenn man sie nicht braucht. Je nach Signal kann das zu grossen Peaks führen.

Du könntest selbst ein M-File schreiben, mit dem du die Fläche unter p(V) näherungsweise berechnest. Dazu eignet sich die Trapezsumme.

Code:
function f = int_x(int_n_1,xn,xn_1,yn,yn_1)
f=1/2*(xn-xn_1)*(yn+yn_1)+int_n_1;
 


Der Index n steht für den Wert zum aktuellen Zeitpunkt t_n, n_1 steht für n-1 (den Wert zum vorherigen Zeitpunt). Mit einem Memory Block oder einem unit delay kannst du die Werte zum Zeitpunkt n_1 rückführen.

Der Druck wäre x und das Volumen y.

Ich habe das Ganze mal in ein Simulink-File gepackt und als x-Wert die Zeit eingegeben. Der Ausgang der Matlab-Funktion müsste dan dasselbe Ergebnis liefern wie der Integrator-Block 1/s.

Je kleiner die Schrittgrösse, desto besser das Ergebnis. Wenn man variable Schrittgrösse verwendet, gibt es bei 1e-3 Schrittgrösse noch einen Unterschied. Bei der selben, aber dafür festen Schrittgrösse ist kein Unterschied mehr erkennbar.

Gruss, Georg

Integrator_X.mdl
 Beschreibung:
Simulink Modell als Beispiel

Download
 Dateiname:  Integrator_X.mdl
 Dateigröße:  24.89 KB
 Heruntergeladen:  600 mal
int_x.m
 Beschreibung:
Integrator M-File

Download
 Dateiname:  int_x.m
 Dateigröße:  79 Bytes
 Heruntergeladen:  575 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Georg J
Forum-Century

Forum-Century



Beiträge: 113
Anmeldedatum: 22.06.11
Wohnort: ---
Version: R2008a
     Beitrag Verfasst am: 16.07.2011, 00:05     Titel:
  Antworten mit Zitat      
Nachtrag:

Hier gibt es noch Vorschläge für genauere Integrations-Algorithmen:
http://en.wikipedia.org/wiki/Adaptive_quadrature

Gruss, Georg
Private Nachricht senden Benutzer-Profile anzeigen
 
rambotnik
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 15.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2011, 11:16     Titel:
  Antworten mit Zitat      
Hmm,

weiß nicht so recht, wie ich damit umgehen soll.

habe mal mein Modell angehängt. p und V variieren ständig (m und T kommen von außen).

Gruß

p_V.mdl
 Beschreibung:

Download
 Dateiname:  p_V.mdl
 Dateigröße:  40.6 KB
 Heruntergeladen:  671 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Phate
Forum-Guru

Forum-Guru



Beiträge: 283
Anmeldedatum: 09.11.09
Wohnort: Stuttgart
Version: R2008b
     Beitrag Verfasst am: 20.07.2011, 12:07     Titel:
  Antworten mit Zitat      
Hi,

Das ist ja ein Simulinkmodell könntest du u ns vl. noch sagen welchen Solver du ausgewählt hast, welche maximale Schrittweite du zuläst und welchen Fehlertoleranzen eingestellt sind.

Dann kannst du mal deine Abweichungen die du bei der Simulation bekommst besser einordnen ob es ein Problem am Solver oder am Modell ist.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
rambotnik
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 15.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2011, 12:20     Titel:
  Antworten mit Zitat      
Schrittweite ist 1e-5
Solver ist Euler

In dem Modell ist die Integration noch nicht drin, da ich nicht weiß ich ich p über V integrieren kann in Simulink. Da muss es doch einen Block geben, wo ich einen Eingang p und einen V habe und darüber integrieren kann, oder?
Wer sich damit nicht auskennt, zur Veranschaulichung ist hier ein p(V) Diagramm. Ich möchte die eingeschlossene Fläche ermitteln:

http://upload.wikimedia.org/wikiped...../6/6a/PvDiagramm-Otto.png

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Georg J
Forum-Century

Forum-Century



Beiträge: 113
Anmeldedatum: 22.06.11
Wohnort: ---
Version: R2008a
     Beitrag Verfasst am: 20.07.2011, 12:37     Titel:
  Antworten mit Zitat      
Hi rambotnik,

Ich hab den Integrator mal in dein Modell eingebaut und mir scheint das Ergebnis sinnvoll zu sein. Für m und T habe ich willkürlich konstante Werte gewählt.

Bei minimalem Volumen ist der Anfangsdruck maximal. Der Druck sinkt dann linear mit zunehmendem Volumen. Wenn das maximale Volumen erreicht ist, steigt der Druck exponential an.

Daraus folgt, dass das Integral bei zunehmendem Volumen der Fläche unter dem Trapez entspricht (bei maximalem Volumen näherungsweise ein Dreieck: im Beispiel ca. 0*5*6e-3*50 = 0.15). Danach ist bei abnehmendem Volumen das Integral die Fläche unter der Exponential-Kurve.

Mir ist noch aufgefallen, dass du beim Solver keine Vorgaben gemacht hast. Die variable Schrittgrösse mit automatischen Einstellungen führt oft zu Problemen im Solver, wie auch hier. Man muss den Bereich für die variable Schrittgrösse genau definieren. Deshalb verwende ich lieber eine feste Schrittgrösse.

Bedenke, dass der Output des Integrator-Blocks p(V) die Fläche zwischen der Kurve und der X-Achse liefert! Das ist die Definition des Integrals. Wenn du die Fläche zwischen der Geraden und der exponentiellen Kurve haben willst, musst du noch das Integral unter der exponentiellen Kurve abziehen. Dafür brauchst du dann entweder zwei Integrator-Blöcke, oder du änderst die M-Funktion.

Ich werde heute nicht mehr dazu kommen, das für dich auszuarbeiten. Aber ich denke, du weisst jetzt wohin die Reise gehen soll.

Gruss, Georg

p_V.mdl
 Beschreibung:
p_V mit Integrator

Download
 Dateiname:  p_V.mdl
 Dateigröße:  50 KB
 Heruntergeladen:  655 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Phate
Forum-Guru

Forum-Guru



Beiträge: 283
Anmeldedatum: 09.11.09
Wohnort: Stuttgart
Version: R2008b
     Beitrag Verfasst am: 20.07.2011, 15:21     Titel:
  Antworten mit Zitat      
Hi,

Noch etwas vl allgemein zu Verbrennungsmotorensimulation. Das Problem der variablen Schrittweite hat mein Vorredner ja schon erwähnt.

Zusätzlich kommt noch das Problem, dass bei der Verdichtung in einem Verbrennungsvorgang ein sehr Steifes System entsteht was zusätzlich bei hohen Drehzahlen ein sehr kurzes Ereignis ist. Somit musst du noch mehr aufpassen. Nicht nur bei der Wahl deiner Schrittweite sondern auch im Hinblick auf deinen Solver.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
rambotnik
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 15.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2011, 16:18     Titel:
  Antworten mit Zitat      
Wir haben jetzt ne Info vom Betreuer bekommen, dass wir einfach das
"p*dV/dphi" mitteln sollen. Er hat wohl anhand des Andrangs in seiner Sprechstunde gemerkt, dass es da zu viele Probleme gab.
Trotzdem vielen Dank für eure Mühen.

Eine Frage noch. Warum gibt es den Integrator nur über der Zeit?

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.