ich habe zwei Energiespeicher, welche durch entsprechende Produzenten geladen werden und durch einen entsprechenden Verbraucher entladen werden können. Die Speicher sind dabei durch einen maximalen bzw. minimalen Ladestand begrenzt.
Mein Modell sieht dazu bisher so aus:
for I = 2:numel(W_el)
obj.Akt_Bat(I)= obj.Akt_Bat(I-1)+Produzent1(I)-Verbraucher1(I);
obj.Akt_Bat(I) = min(obj.Akt_Bat(I), Bat_max);
obj.Akt_Bat(I) = max(obj.Akt_Bat(I), Bat_min);
end
Jetzt möchte ich hier folgende Erweiterung implementieren:
Wenn der Stromspeicher 100% geladen ist (in dem Fall 58000), soll der produzierte Strom, welcher bisher einfach im Nichts verschwindet, dem Warmwasserspeicher zugeführt werden.
Ich stehe da gerade komplett auf dem Schlauch, wie ich eine entsprechende If Bedingung hier einbauen könnte...
danke für die erste Rückmeldung. Deinen Vorschlag werde ich bei mir einbeziehen. Dadurch, dass es mit etwas mehr Implementierungsaufwand verbunden ist, hab ich im Folgenden nochmal nach alter Verfahrensweise den Code belassen:
Der folgende Code ist soweit lauffähig und du musst nur die Main_Speicherkopplung laufen lassen, um die Speicherstände zu berechnen.
Meine Idee wäre es, der Klasse eine Property Bat2Head hinzu zu fügen, die speichert wie viel Energie von der Batterie zum Warmwasserspeicher überführt wird.
In die Klassenfunktion des WWS ebenfalls eine if-Abfrage einfügen, die prüft, ob der WWS voll ist und in der in einer Variable gespeichert wird wie viel Energie aus der Batterie in den WWS überführt wurde.
ich bin gerade an einer ähnlichen Problemstellung, in der ich einen Energiespeicher am Regelenergiemarkt betrachte.
Was ich in meinem Programm machen möchte ist folgendes:
Aktuell läuft mein Programm mit einem Speicher so ähnlich wie es in dem Thread auch ist. Ich habe einige Benutzereingaben zur Batteriegröße, Wirkungsgrad der Batterie etc.
Diese Inputs werden an eine Klassendatei übergeben wo die eigentlichen Bedingungen und Berechnungen stattfinden. Das läuft bisher auch alles einwandfrei!
Ich möchte das Programm jetzt erweitern und anhand einer Benutzereingabe am Anfang des Programmes abfragen wie viele Energiespeicher vorhanden sein sollen und für jeden Speicher dann eine eigene Funktion erstellen. Die Speicher sollen in diesem Fall alle parallel Betrieben werden. D.h. also das was bisher mit einem Speicher simuliert wurde, soll jetzt auf mehrere kleine aufgeteilt werden um im nächsten Schritt verschiedene Anfangsbedingungen für jeden einzelnen Speicher festzulegen.
Ist sowas übernhaupt umsetzbar, und wenn ja, wie wäre der Ansatz dafür?
Oder wäre es besser z.B. in der Klassenfunktion des Batteriespeichers mehrere Speicher parallel zu berechnen? Wenn ja, wie könnte das umgesetzt werden?
Habs jetzt so gelöst, dass ich um die Klassenfunktion eine for Schleife gelegt habe. Die Schleifendurchläufe entsprechen der Anzahl der Energiespeicher. Die Berechnung wird anhand von Benutzereingaben so oft wiederholt, wie Speicher vorhanden sind und schreibt die neuen Werte in eine neue Spalte
Nach folgendem Schema:
Code:
function obj = cAkt_Bat(obj, Akt_Bat_0, Produzent1, Verbraucher2, Bat_max, Bat_min)
obj.Akt_Bat = [Akt_Bat_0, zeros(1,numel(Produzent1)-1)];
for J = 1:Speicheranzahl
for I = 2:numel(Produzent1)
obj.Akt_Bat(I,J)= obj.Akt_Bat(I-1,J)+Produzent1(I,J)-Verbraucher2(I,J);
obj.Akt_Bat(I,J) = min(obj.Akt_Bat(I,J), Bat_max);
obj.Akt_Bat(I,J) = max(obj.Akt_Bat(I,J), Bat_min);
end end end
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
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.