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

Switch-Block arbeitet nicht wie gedacht

 

Der_Simulant
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 05.05.22
Wohnort: ---
Version: R2022a
     Beitrag Verfasst am: 17.09.2022, 12:21     Titel: Switch-Block arbeitet nicht wie gedacht
  Antworten mit Zitat      
Hallo zusammen,

ich hoffe, dass ihr mir hier weiterhelfen könnt. Die Suche war leider nicht erfolgreich.

Zur Aufgabenstellung:
Ich modelliere mit Simulink und dem CARNOT-Blockset ein BHKW. Nun ist es so, dass ich über eine Excel eine geforderte elektrische und thermische Leistung einlese. Das BHKW ist Wärmegeführt, heißt die thermische Leistung ist die Regelgröße und demnach wird der Motor moduliert. Im Subsystem Motor geht eine mechanische Leistung ein, womit die ganzen Werte wie Drehmoment, Kraftstoffverbrauch, mechanischer Wirkungsgrad, etc und eben die Nutzwärme des Motors berechnet werden. Diese vorhandene Nutzwärme wird mit der geforderten verglichen und mit einem PI-Regler soll die mechanische Leistung so geregelt werden, dass Soll=Ist ist.

Zum Start würde ich dem Motor erstmal irgendeine mechanische Leistung vorgeben, damit die Nutzwärme bei dem Punkt berechnet werden kann. Dann soll der Regler übernehmen und die mechanische Leistung so anpassen, dass Soll=Nutz/Ist.

Hierfür habe ich vor dem input in den Motor einen Switch geschaltet, der die erste Sekunde einen Wert eingibt, um eben eine Nutzwärme zu haben. Nach einer Sekunde soll der Switch auf den Regler schalten und dann die mechanische Leistung regeln.

Problem: Sobald ich den Switch anschließe und starte, kommt die Fehlermeldung: "Algebraic state in algebraic loop containing 'xxxxxxxxxxx' computed at time 0.0 is Inf or NaN. There may be a singularity in the solutions....". Heißt für mich, er hat am Anfang keinen Wert zur Berechnung im Motor, also im weiteren Verlauf keine Nutzwärme und damit auch keine Soll-Wert für den Regler.

Lege ich jedoch einen konstanten Wert für die mechanische Leistung an, läuft die Simulation ohne Probleme durch. Heißt für mich, dass der Switch in diesem Fall nicht richtig arbeitet.

Habt ihr eine Idee woran das liegen kann? Freue mich über Ratschläge.

VG
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.09.2022, 13:25     Titel:
  Antworten mit Zitat      
Hallo,

es ist bei solchen Fragestellungen immer besser, das Modell zu betrachten.
Generell würde ich für ein "Umschalten nach einer Sekunde" eher ein enabled Subsystem verwenden und für die Anfangswerte die Initial Condition eines Integrators oder Unit Delays.
Die Meldung bzgl. einer algebraischen Schleife rührt daher, dass es einen geschlossenen Kreis ohne verzögerndes Element wie Integrator oder Unit Delay gibt. Mit dem Switch-Block an sich hat das, soweit man das ohne das Modell sagen kann, nichts zu tun. Ich kann mir höchstens vorstellen, dass Simulink ohne den Switch-Block die algebraische Schleife noch lösen konnte und mit dem Switch-Block nicht mehr. Das ist aber Spekulation.
Eine ausführliche Diskussion des Themas findet sich z.B. hier:
https://www.mathworks.com/matlabcen.....k-and-how-do-i-solve-them

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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: 22.09.2022, 10:16     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für deine Antwort. Ich konnte das Problem mit einem Delay-Block lösen.
Noch arbeitet es nicht ganz so wie es soll, daher komme ich demnächst nochmal mit dem Modell, sollte ich das nicht hinbekommen.

VG
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

wie im Link beschrieben ist zu bedenken, dass ein Delay-Block die Systemdynamik verändert. Das kann sinnvoll sein (sogar sinnvoller als das vorherige Modell) oder auch nicht.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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: 22.09.2022, 11:14     Titel:
  Antworten mit Zitat      
Ersteres ist der Fall.
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.