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

Simulation eines 3Tanks mit ode45

 

ente

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2012, 11:46     Titel: Simulation eines 3Tanks mit ode45
  Antworten mit Zitat      
Hallo ihr,
ich versuche die Füllstände eines 3Tanks zu mit der Funktion ode45 zu simulieren und zu plotten. Ich bekomme dabei keine einleuchtenden Ergebnisse und suche den Fehler in der Eingabe der DGL oder im Gebrauch der ode45 Funktion.

Dafür habe ich für jeden Tank eine gegebene Gleichung in der Form:
[h‘]=[f(h,Q)] wobei Q =Pumpenleistung

Als Bild eingefügt die drei Gleichungen die ich wie folgt in Matlab umgesetzt habe.

Grundflächen der Tanks und Ventile sind identisch (A1,..=Az, A13,..=Sn).

Code:
%
function dh = te45(t,h)

%--------------------------------------------------------------------------
%Parameter:     Einheit
Az= 0.0149;     %m²   Grundfläche Zylinder nach Abzug des Innenrohres// laut Datenblatt: Az=0.0154
Sn=5*10^-5;     %m²   Querschnittsfläche Ventilrohr (1-3, 3-2, 2-Ausgang)

Q1max=0.1*0.001;%l/s  maximaler Durchfluss
     
g=9.81;         %m/s²

z=0.2;           %      [% von Maximum]      Zuflussfaktor 0<x<1
Qz1r=z*Q1max;
Qz1=z*Q1max;     %      Zufluss in Abhängigkeit des Faktors

az13=1;          %      Durchflussparameter Ventil von Tank 1 zu Tank 3
az32=1;          %      0<= azij <=1
azA2=0.5;
%--------------------------------------------------------------------------

dh=     [Qz1/Az-az13*Sn/Az*sqrt(2*g*abs(h(1)-h(3)));
        az32*Sn/Az*sqrt(2*g*abs((h(3)-h(2))))-azA2*Sn/Az*sqrt(2*g*h(2));
        az13*Sn/Az*sqrt(2*g*abs((h(1)-h(3))))-az32*Sn/Az*sqrt(2*g*abs((h(3)-h(2))))];

 


Code:
%
clear
% Intervallgrenzen
xa = 0;
xe = 1000;
%Anfangsbedingung
h1_0=0.06;
h2_0=0.04;
h3_0=0.05;

%ODE
[t, h] = ode45(@te45,[xa,xe],[h1_0;h2_0;h3_0] );

plot(t,h)
xlabel('t'), ylabel('h')
legend('h1','h2','h3')
 


Meine Frage:
Löst ode45 direkt die Frage nach der Höhe? Wenn nein, wie kann ich die „aktuelle“ Höhe in die Berechnung einfließen lassen?
Vielen Dank im Voraus!

DGL.JPG
 Beschreibung:
DGL

Download
 Dateiname:  DGL.JPG
 Dateigröße:  20.8 KB
 Heruntergeladen:  282 mal


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.07.2012, 12:47     Titel:
  Antworten mit Zitat      
Hallo,

auf den ersten Blick: wo sind die sign-Terme aus den Formeln in deiner Implementierung zu sehen?

Was ist an den Ergebnissen nicht einleuchtend?

Aufpassen mit den Einheiten: mal hast du Meter, mal Liter (d.h. Dezimeter) als Längen-/Flächen-/Volumeneinheit.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
ente

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2012, 13:24     Titel:
  Antworten mit Zitat      
Danke!-stimmt.
Die sign- Terme habe ich nun ergänzt. Die spielen jedoch nur eine Rolle, wenn folgende Bedingung nicht erfüllt ist:
h1>h3>h2 (entspricht dem aufbau: tank1 wird gefüllt- ventil zu tank3- ventil zu tank2- ventil abfluss)

orientiere mich an folgender praktikumsanleitung:
http://www.uni-kassel.de/ucgi-pub/c.....raktikum/RT-P-C-3Tank.pdf

mir steht der genannte dreitank zur verfügung.
nicht einleuchtend ist das ergebnis der simulation nach den modelgleichungen

anfangsbedingung: alle tanks sind leer, befüllung mit wenig pumpenleistung

das ergebnis der simulation ist ein ruhelage bei der die differenz zwischen h1/h3 identisch mit h3/h2 ist.

in der realität ist das verhältnis von h1/h3 viel kleiner als das von h3/h2.
anders gesagt: t1 ist stark gefüllt, dicht gefolgt von t3 und t2 ist kaum gefüllt

____
wenn ich davon ausgehe, dass die gegebenen modelgleichungen korrekt sind- dann frage ich mich, was ich beim "füttern" der ode45 funktion nicht richtig mache

mfg
 
ente

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2012, 13:26     Titel:
  Antworten mit Zitat      
sign Terme ergänzt
Einheit der Pumpenleistung (der Faktor korrigiert ltr/s in m³/s)

Code:
%

function dh = te45(t,h)

%--------------------------------------------------------------------------
%Parameter:     Einheit
Az= 0.0149;     %m²   Grundfläche Zylinder nach Abzug des Innenrohres// laut Datenblatt: Az=0.0154
Sn=5*10^-5;     %m²   Querschnittsfläche Ventilrohr (1-3, 3-2, 2-Ausgang)
Q1max=0.1*0.001;%m³/s  maximaler Durchfluss
     
g=9.81;         %m/s²

z=0.5;           %      [% von Maximum]      Zuflussfaktor 0<x<1
Qz1=z*Q1max;     %      Zufluss in Abhängigkeit des Faktors

az13=1;          %      Durchflussparameter Ventil von Tank 1 zu Tank 3
az32=1;          %      0<= azij <=1
azA2=1;
%--------------------------------------------------------------------------

dh=     [Qz1/Az-az13*Sn/Az*sign(h(1)-h(3))*sqrt(2*g*abs(h(1)-h(3)));
        az32*Sn/Az*sign(h(3)-h(2))*sqrt(2*g*abs((h(3)-h(2))))-azA2*Sn/Az*sqrt(2*g*h(2));
        az13*Sn/Az*sign(h(1)-h(3))*sqrt(2*g*abs((h(1)-h(3))))-az32*Sn/Az*sign(h(3)-h(2))*sqrt(2*g*abs((h(3)-h(2))))]
 
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.07.2012, 14:10     Titel:
  Antworten mit Zitat      
Hallo,

sofern die Gleichungen stimmen und es keine Fehlermeldungen gibt, passt da von Seiten ode45 an sich alles.

Die Anfangsbedingung ist doch nicht, dass die Tanks leer sind? Da steht 0.04 bis 0.06.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
ente

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2012, 14:23     Titel:
  Antworten mit Zitat      
danke harald,

die startbedingung habe ich für die erklärung geändert.
damit habe ich bei der realen messung "eindeutige" ventilstellungen und höhen.
ich arbeite gerade an den modelparameter.
bis hierhin vielen dank für die rückmeldung!

grüße,
paul
 
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 - 2025 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.