|
|
Massenträgheit in Simulation einbauen |
|
steffn |
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 05.02.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.04.2015, 09:34
Titel: Massenträgheit in Simulation einbauen
|
|
|
|
|
Hallo zusammen,
Mein Problem ist nicht direkt auf Matlab bezogen, sondern ein generelles "Simulationsproblem". Ich konnte im Internet bisher leider nichts finden, was mich weiter gebracht hätte.
ich simuliere ein Rohrleitungssystem, durch das Wasser fließt. An einer Stelle in der Rohrleitung befindet sich ein Ventil, das sich schließt wenn hinter dem Ventil der Druck größer ist als vor dem Ventil und umgekehrt.
Ich habe in der Simulation sehr kleine Zeitschritte (1 Zeitschritt, also Schleifendurchgang, entspricht 1ms) für jeden Zeitschritt werden die beiden Drücke neu berechnet und je nachdem das Ventil geschlossen oder geöffnet.
Nun hat das Ventil ja eine gewisse Schließzeit aufgrund der Massenträgheit und kann sich nicht mehrere hundertmal in einer Sekunde öffnen und schließen. Dies muss ich also in die Simulation mit einbauen. Allerdings fehlt mir momentan der Ansatz dazu.
Angenommen, die Schließzeit beträgt 1s (=1000 Zeitschritte). Ich könnte dann einfach den Wert zum Zeitpunkt x nehmen und ihn für die nächsten 1000 Punkte gleich lassen. Was mach ich aber dann?
Für mich macht es weder Sinn dann die Drücke des zweiten Zeitpunkts zu betrachen, noch die des 1001. Auch einen Mittelwert bilden klingt für mich unlogisch.
Hat jemand eine Idee, wie man das umsetzen kann?
Vielen Dank schon mal!
Grüße Stefan
P.S. Ich denke die Frage kommt erstmal ohne Code Auszüge aus, falls ihr doch welche benötigt, einfach Bescheid sagen
|
|
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.04.2015, 19:54
Titel:
|
|
Letztendlich wird ja das Ventil auch nicht auf einmal schließen und dann 1000 Zeitschritte zu sein, sondern seinen Widerstand in 1000 Schritten von 0 auf inf erhöhen, oder?
Da Du letztendlich eine Zweipunkt-Regelung realisiert hast (Ventil auf oder zu), wäre es sicherlich auch nicht verkehrt, wenn Du noch eine Hysterese vorsiehst, damit Dein Regler nicht beliebig schnell schalten kann. Einfach mal nach Zweipunktregler mit Hysterese suchen. Vielleicht ist das auch schon die Antwort auf Deine Frage. Hat zwar nichts direkt mit der Ein- und Ausschaltzeit des Ventils zu tun, ist aber das, was man bei solchen Regelungen normalerweise macht, damit dieses schnelle hin- und herschalten eben nicht auftritt.
|
|
|
steffn |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 05.02.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.05.2015, 12:29
Titel:
|
|
Erstmal vielen Dank für die Antwort und sorry, dass ich erst jetzt wieder schreibe.
Du hast prinzipiell schon recht, dass das Ventil in der Praxis nicht schlagartig schließt, für meine Simulation hatte ich eigentlich mit meinem Betreuer gesagt, dass es einfach nur die zwei Stellungen offen und geschlossen gibt.
Ich werd jetzt mal die Hysterese einbauen, das war ein guter Hinweis. Kannst du mir denn auch sagen, wie groß üblicherweise der Hysteresebereich gewählt wird? Ich hatte so an +/- 3...5% gedacht und bisher im Internet noch nichts genaues dazu gefunden.
Gruß Stefan
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.05.2015, 08:52
Titel:
|
|
Das kommt auf Deine Anforderungen an. Je größer Du die Hysterese machst, desto kleiner wird die Schaltfrequenz. Gleichzeitig wird aber die Abweichung vom Sollwert größer. Je kleiner Du die die Hysterese machst, desto größer wird die Schaltfrequenz und desto kleiner wird die Abweichung vom Sollwert.
Je nach Anwendung ist entweder das eine limitierend oder das andere.
|
|
|
steffn |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 05.02.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.05.2015, 09:27
Titel:
|
|
Ich habe jetzt mit meinem Betreuer beschlossen, dass sich das Ventil doch schrittweise öffnet und schließt. Das liefert schon mal bessere Ergebnisse als davor
Danke dir auf jeden Fall für deine Hilfe!
Ich glaube, damit ist das Thema hier erstmal erledigt.
Gruß Stefan
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.05.2015, 10:15
Titel:
|
|
Es könnte passieren, dass Du Dich so wieder ein bisschen von der Realität entfernst, weil Du jetzt im Prinzip die Möglichkeit geschaffen hast, dass das Ventil durch schnelles *) Schalten am Eingang immer in einem halb-offenen Zustand verweilt. Ich kann mir durchaus vorstellen, dass handelsübliche Ventile, die dafür gedacht sind, über längere Zeit offen oder geschlossen zu sein, diesen Betriebsmodus nicht lange überleben werden.
Oder anders gesagt: Zweipunktregler sollten ungeachtet dessen, ob das Schaltelement ideal oder real ist, besser immer mit Hysterese ausgeführt werden.
*) schnell heißt in dem Fall, dass die Zeit zwischen zwei Schaltvorgängen deutlich kleiner ist, als die Zeit, die das Ventil benötigt, um vollständig von offen nach zu oder zu nach offen zu schalten.
|
|
|
steffn |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 05.02.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.06.2015, 12:50
Titel:
|
|
Hi,
ich bin immer noch an der oben beschriebenen Simulation und das Ventil ist nach wie vor sehr flott unterwegs
Mittlerweile berechne ich die momentane Ventilöffnung aus folgender Bewegungsgleichung des Ventils:
m ist dabei die Masse des Schließkopfes, x die momentante Ventilöffnung, x'' folglich die momentane Ventilbeschleunigung, F_hyd ist die Kraft des Wasser aufgrund des Druckunterschieds vor und nach dem Ventil und F_mech die Rückstellkraft des Ventils.
F_hyd und F_mech sind abhängig von x.
Die DGL löse ich mit dem Euler-Cauchy Verfahren.
Soweit so gut, das Problem ist halt nach wie vor, dass sich das Ventil in meiner Simulation so ca. 20 mal pro Sekunde komplett öffnet und schließt.
Wie kann ich bei dieser Art des Reglers die Trägheit berücksichtigen?
Ich danke für eure Antworten.
Gruß Stefan
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.06.2015, 12:53
Titel:
|
|
Vielleicht solltest Du mal darüber nachdenken, ob das verwendete Ventil überhaupt das richtige ist. Die Dinger sind einfach nicht für hochdynamische Regelaufgaben gedacht und wenn Du eine entsprechende Dynamik brauchst, musst Du ein dafür geeignetes Stellglied vorsehen.
Ansonsten wie bereits gesagt: Zweipunktregler *immer* mit Hysterese versehen.
|
|
|
steffn |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 05.02.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.06.2015, 13:49
Titel:
|
|
Danke für deine schnelle Antwort.
Also eigentlich soll es gar nicht hochdynamisch sein, was den Punkt betrifft ist die Simulation einfach noch falsch und genau diese Dynamik will ich verringern.
Was die Hysteres betrifft, ich bin mir unsicher, an welcher Stelle und wie ich sie in meinen momentanen Code einbauen kann. Hier mal der entsprechende Code-Ausschnitt:
Bei der Hysterese muss ich ja unterscheiden, ob es sie um den Öffnungs- oder den Schließvorgang handelt oder?
Gruß Stefan
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.06.2015, 14:09
Titel:
|
|
Ja, da musst Du unterscheiden. Aber eigentlich ist es ganz einfach mit ein Paar if-Abfragen (nicht Schleifen ;)) getan.
In Deinem Code kann ich den Regler leider gar nicht entdecken. Bevor ich anfange, Stellglieder bis ins kleinste Detail zu modellieren, würde ich sowieso immer erst mal die grobe Struktur mit idealen Stellgliedern testen. Wo wird denn entschieden, ob das Ventil nun auf oder zu soll? Genau an der Stelle musst Du dann auch die Hysterese einbauen. Wie das geht, lässt sich im Wesentlichen aus dem Wikipedia-Artikel zu "Hysterese" ablesen: https://de.wikipedia.org/wiki/Hysterese#Zweipunktregler
|
|
|
steffn |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 05.02.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.06.2015, 14:31
Titel:
|
|
Zitat: |
In Deinem Code kann ich den Regler leider gar nicht entdecken. |
genau das ist wohl das Problem, weshalb ich nicht weiß wo ich die Hysterese einbauen soll.
Zitat: |
Wo wird denn entschieden, ob das Ventil nun auf oder zu soll? |
Momentan nirgends, es wird eben in Abhängigkeit der Kräfte (F_hyd und F_mech) zuerst die Beschleunigung und anschließend die Geschwindigkeit sowie die Öffnung (der Weg) für jeden einzelnen Zeitpunkt berechnet, aber sofern Beschleunigung und Geschwindigkeit (v_punkt und x_punkt) positiv sind, wird das Ventil im aktuellen Schritt weiter geöffnet im Vergleich zum Zeitpunkt davor.
Einen richtigen Regler hat es wohl gar nicht drin. Wobei ich auch gar nicht so genau weiß, was ich darunter zu verstehen habe, bzw. wie so ein Regler in Matlab umgesetzt wird. Auch was du mit einem idealen Stellglied meinst verstehe ich nicht so genau, kannst du mir diesbezüglich noch etwas helfen?
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.06.2015, 14:44
Titel:
|
|
Ok, nochmal zum Grundverständnis: ist Dein Ventil irgendwas, worauf Du einen Einfluss hast (wie zum Beispiel ein Wasserhahn, den der Benutzer bei Bedarf auf und zu machen kann) oder etwas, worauf Du keinen Einfluss hast (wie zum Beispiel ein Rückschlag-Ventil am Fahrrad, das Dicht macht, wenn der Druck innen größer ist, als außen)?
Wenn Du keinen Einfluss hast, gibt es auch keinen Regler und entsprechend auch keinen Regler mit Hysterese.
Wenn Du einen Einfluss auf das Ventil hast, dann brauchst Du ja irgendwas, was dem Ventil sagt, ob es jetzt auf oder zu soll. Das übernimmt der Regler.
|
|
|
steffn |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 05.02.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.06.2015, 14:55
Titel:
|
|
|
|
|
Guter Punkt sorry, dass das bisher nicht klar wurde.
Es handelt sich um ein Rückschlagventil. Deshalb werden die Drücke vor und nach dem Ventil betrachtet.
Auch wenn diese sich schnell verändern, reagiert das Rückschlagventil ja mit einer Verzögerung aufgrund der Massenträgheit und genau das versuche ich nachzubilden.
Außerdem habe ich aus Herstellerdaten die Vorgabe, dass das Ventil maximal 40 mm geöffnet sein kann. Deshalb begrenze ich Öffnung nach oben, sowie unten (mehr zu als zu geht nicht ).
Die Rückstellkraft des Ventils kommt von einer Feder, diese Daten habe ich auch von einem Hersteller. Momentan rechne ich da mit:
m=5; %Masse des Schließkopfes[kg]
c=2354; %Federkonstante [N/m]
Vorspannung=99.3; %[N]
Die Druckdifferenz schwankt eben auch ziemlich stark (aber vermutlich auch weil, sich das Ventil ständig öffnet und schließt). Ich habe dir mal einen Auszug aus meinem Plot angehängt.
Vielen Dank, dass du dir die Zeit nimmst um mir zu helfen!
EDIT: Sehe gerade, die Bezeichnung auf der x-Achse ist nicht korrekt. Die Einheit ist Sekunden, also ist der Druckverlauf über 2 Sekunden in dem plot abgebildet
Beschreibung: |
Verlauf der Druckdifferenz (vor und nach dem Ventil) |
|
Download |
Dateiname: |
druckdifferenz.jpg |
Dateigröße: |
150.37 KB |
Heruntergeladen: |
601 mal |
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.06.2015, 15:11
Titel:
|
|
|
|
|
Ok, vergiss alles, was Du über Hysterese usw. gelesen hast. Das ist eine Sache, die man im Regler einbauen würde, um ein von außen herbeigeführtes hin- und herspringen zu vermeiden.
In Deinem Fall würde ich sagen: wenn das Ventil sich in dem System so verhält, dann ist das halt so. Womöglich wäre es sinnvoll, auch die Massenträgheit Deines Fluids zu modellieren? Oder ist das schon drin? Dein Code ist leider nicht unbedingt gut lesbar (recht nichts-sagende Variablennamen).
Und wahrscheinlich wäre es auch zweckmäßig, den Druckabfall in Abhängigkeit von der Öffnungsposition zu berechnen, falls Du das nicht auch schon tust. Ganz zu: Druckabfall maximal, ganz offen: kleiner Druckabfall, dazwischen: vermutlich irgendein nicht lineares Verhalten.
Mal drüber nachgedacht, Simulink zu benutzen? Nach etwas Einarbeitung finde ich das deutlich intuitiver und übersichtlicher. Und es nimmt einem die Integration ab - das kann vor allem dann spannend sein, wenn man steife Systeme modelliert (das könnte bei Dir der Fall sein), da man dann einfach schnell auf einen Solver für steife Systeme umstellen kann.
|
|
|
steffn |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 05.02.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.06.2015, 08:54
Titel:
|
|
|
|
|
jo, evtl. macht es tatsächlich Sinn, die Massenträgheit des Wassers zu simulieren. Kläre ich mal mit meinem Betreuer ab. Wüsste auch momentan noch nicht wie ich das einbauen könnte.
Jo, hast schon recht. Einige Variablen sind bissel unglücklich gewählt bzw. schwierig ohne Vorkenntnisse einzuordnen. Soll ich dir mal beschreiben, was in dem Ausschnitt passiert, bzw. was die einzelnen Variablen bedeuten?
Hm, das was du zum Thema Druckabfall schreibst, hab ich noch nicht ganz verstanden. Also ich berechne den Druckverlustbeiwert zeta in Abhängigkeit von der Öffnung, zeta wird dann bei der Berechnung des Durchflusses mit eingerechnet: Q=sqrt((h_v-h_n)*A²*2g/zeta)
Wie würde ich den maximalen Druckabfall bestimmen bzw zwischen welchen Punkten betrachtet man den Druckabfall, schon zwischen dem Punkt unmittelbar vor und dem unmittelbar nach dem Ventil?! Wenn es ganz zu ist, sind die Rohrleitungen ja getrennt und der jeweilige Druck berechnet sich aus den Strömungsverhältnissen in dem entsprechend Leitungsstück.
kurz hab ich drüber nachgedacht, allerdings habe ich in Simulink keinerlei Erfahrungen in Matlab schon etwas. Du meinst das lösen der DGL? Hatte ich in Matlab auch schon zb mit dem ode45 Solver probiert, allerdings hatte ich da Probleme, das Ergebnis richtig zu interpretieren.
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|