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

Ist die Schrittweite anpassbar in den S-Functions?

 

Der_Simulant
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 05.05.22
Wohnort: ---
Version: R2022a
     Beitrag Verfasst am: 01.10.2022, 10:32     Titel: Ist die Schrittweite anpassbar in den S-Functions?
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


Der_Simulant
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 05.05.22
Wohnort: ---
Version: R2022a
     Beitrag Verfasst am: 01.10.2022, 12:59     Titel:
  Antworten mit Zitat      
*gerne sende ich auch das Modell per PN
Private Nachricht senden Benutzer-Profile anzeigen
 
askep
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 04.06.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2022, 14:31     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Der_Simulant
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 05.05.22
Wohnort: ---
Version: R2022a
     Beitrag Verfasst am: 05.10.2022, 08:17     Titel:
  Antworten mit Zitat      
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!
Private Nachricht senden Benutzer-Profile anzeigen
 
Der_Simulant
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 05.05.22
Wohnort: ---
Version: R2022a
     Beitrag Verfasst am: 05.10.2022, 10:13     Titel:
  Antworten mit Zitat      
Zu deiner Frage welcher Solver verwendet wurde. Die Einstellung steht auf auto und gewählt wird ode3.

VG
Private Nachricht senden Benutzer-Profile anzeigen
 
jgoettsche
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 19.05.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.10.2022, 12:59     Titel:
  Antworten mit Zitat      
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.
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.