|
|
Ist die Schrittweite anpassbar in den S-Functions? |
|
Der_Simulant |
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 05.05.22
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2022a
|
|
|
|
|
|
Verfasst am: 01.10.2022, 09:32
Titel: Ist die Schrittweite anpassbar in den S-Functions?
|
|
|
|
|
Hallo zusammen,
ich habe mit dem CARNOT-Blockset ein BHKW modelliert. Ziel ist es, dass ein ganzes Jahr durchsimuliert wird. Um die Zeit einer Simulation in annehmbaren Grenzen zu halten (10-15 Minuten, gerne weniger) möchte ich mit relativ großes StepSizes (z.B. 0.5 - 1) arbeiten. Leider lassen die Wärmetauscher das nicht zu. Die Fehlermeldung latuet:
Zitat: |
Caused by: Derivative of state '2' in block 'XXXXXXXX/HeatExchanger/S-Function' at time 0.75 is not finite. The simulation will be stopped. There may be a singularity in the solution. If not, try reducing the step size (either by reducing the fixed step size or by tightening the error tolerances)
|
Sie läuft, wenn ich die Stepsize auf 0.1 setze. Allerdings würde die Simulation dadurch mehrere Tage in Anspruch nehmen.
In den S-Functions habe ich auch schon geschaut, ob sich dort etwas anpassen lässt und habe an dem einen oder anderen Wert schon gedraht, ohne besserung.
Habt ihr eine Idee, wie ich das hinbekommen kann?
Danke im Voraus
|
|
|
|
|
Der_Simulant |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 05.05.22
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2022a
|
|
|
|
|
|
Verfasst am: 01.10.2022, 11:59
Titel:
|
|
*gerne sende ich auch das Modell per PN
|
|
|
askep |
Forum-Anfänger
|
|
Beiträge: 25
|
|
|
|
Anmeldedatum: 04.06.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.10.2022, 13:31
Titel:
|
|
|
|
|
Welcher Solver wurde verwendet ?
In den s-functions ist generell keine Zeitschrittweite definiert (continuous sample time).
Die Schrittweite wird durch die Schrittweite des Solvers vorgegeben.
Der Grund warum das nicht funktioniert ist, dass das Modell für größere Schritttweiten nicht konvergiert.
Deshalb ist es effizienter Variable-Step-Solver zu verwenden. Die Schrittweite wird dann nur klein wenn das auch nötig ist.
Man kann einige der vorhandenen Solver testen, um festzustellen welcher schneller ist.
Ganz allgmein können Probleme mit der Modellkonvergenz auftreten, wenn Inputs und Grenzen schlecht gewählt werden. So ist es zB sinnvoll nicht mit Volumenstromen nahe 0 zu rechnen. Das ist numerisch problematisch und hat keinen Nutzen für die Ergebnisse. Man kann hier zB. einen Massenstrom kleiner 1% des Nennwerts einfach 0 setzen (Matlab function oder Switch-Block).
Wenn das nicht reicht hilft eigentlich nur mehr ein anderes mathematisches Modell, dass einfacher und schneller ist.
|
|
|
Der_Simulant |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 05.05.22
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2022a
|
|
|
|
|
|
Verfasst am: 05.10.2022, 07:17
Titel:
|
|
|
|
|
Guten Morgen @askep,
danke für deine Antwort.
Ich denke das Problem liegt im Aufbau meines Modells. Ich nutze für den Motor ein quasistatisches Modell mit Kennfeldern. Als Eingang habe ich ledigllich Lastprofile, die in stundenwerten vorgegeben sind, mit der jeweiligen Zeitangabe. Die Daten kommen aus einer Excel. Spalte 1: Zeitwerte 0-3600, 3600-7200, usw. Spalte 2: zb. 500kW, 400kW, usw. Daher habe ich hierfür auf 'FixedStep' gestellt. Das Motormodell berechnet dann die Nutzwärme und gibt diese weiter an ein Wärmenetz. Bestehend aus Wärmetauschern und einem Pufferspeicher.
Jedenfalls konnte ich das Problem jetzt etwas lösen/verbessern, indem ich in einem M-File die Simulation getrennt habe. Heißt: erst wird der Motor simuliert und der Rest ist aus-kommentiert. Die Nutzwärme wird im Workspace gespeichert. Danach wird der Motor auskommentiert und das Wärmenetz wird berechnet. Als Eingang dient hier dann die gespeicherte Nutzwärme.
Das ist etwas getrickst aber ich habe jetzt keine andere Möglichkeit gesehen, ohne dass ich mich noch Tage mit Solvern und ähnlichem beschäftige, die ich leider nicht habe. Das Modell soll erstmal laufen und für die Simulation eines Jahres eine angemessenen Zeit dauert. Aktuell liege ich damit bei ca. 10 min.
Was meinst du dazu? Hast du kritische Anmerkungen zu diesem Vorgehen?
Danke!
|
|
|
Der_Simulant |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 05.05.22
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2022a
|
|
|
|
|
|
Verfasst am: 05.10.2022, 09:13
Titel:
|
|
Zu deiner Frage welcher Solver verwendet wurde. Die Einstellung steht auf auto und gewählt wird ode3.
VG
|
|
|
jgoettsche |
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 19.05.22
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.10.2022, 11:59
Titel:
|
|
auch bei Input-Daten mit festem Zeitschritt kann ein Solver mit variablem Zeitschritt gewählt werden, die Input-Daten werden dann (je nach Einstellung) interpoliert.
|
|
|
|
|
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.
|
|