C - Eine Variable aufsummieren bis zu einem Wert, Variable einfrieren und Werte auf..

Malte-Micha

Grünschnabel
Hallo,

ich versuch mich grade an einem Programm, wo ich einen schwankend einspeisenden Windpark mit verschiedenen anderen Kraftwerken ausgleichen soll.
Das Problem, dass ich nun habe ist das Pumpspeicherkraftwerk (PSW), was den Unterschied zwischen Windprognose und tatsächlicher Windeinspeisung auffangen soll.
Ist die Windeinspeisung höher als die Windprognose, soll das PSW den Unterschied zwischen diesem Werten speichern und wenn es keine Speichermöglichkeit mehr gibt, soll die überschüssige Windenergie auf einem Markt mit einem festgesetzten Preis verkauft werden.

Mein Problem ist nun folgendes:

Ich habe eine Variable (psb-pumpspeicherbetrieb), diese wird aufsummiert bis zu einem bestimmten Wert (z.B. 250), nach diesem Wert ist der Speicher voll.
Nun soll die variable psb auf eine andere Variable umgeschrieben werden (z.B. fM für freier Markt), da die überschüssige Energie ja auf dem freien Markt verkauft werden soll.

Ich bräuchte irgendwie einen Ansatz, wie ich mit diesem Problem umgehen soll.
 
Moin,

aha ... :rolleyes:

Und wo ist jetzt das bei das konkrete Problem :confused:

Suchst Du etwa sowas :
Code:
int psb-pumpspeicherbetrieb = 0;
int ifM = 0;
...
if( psb-pumpspeicherbetrieb > 250 )
{
    ifM = psb-pumpspeicherbetrieb - 250;
}

Gruß
Klaus
 
Hallo,

da ist eine Liste von Werten diese werden miteinander verglichen und dann je nachdem wie groß der Unterschied der Werte und ob die Werte negativ oder positiv, wird dann unterschiedlich reagiert in der "Schaltzentrale".

Wenn jetzt die die Werte negativ sind kommt das Pumpspeicherkraftwerk zum Einsatz.
Die negativen Werten aus der Liste werden dann aufsummiert und beim Wert von 250 soll dann die Variable ifM genutzt werden.

Wenn wiederum große Abweichungen zwischen Prognose und Einspeisung entstehen und das PSW muss ins Netz einspeisen verringert sich ja die aufsummierte Summe und kann im nächsten vergleich wo das PSW wiederum speichern soll die Energie aufnehmen bis der Wert von 250 wieder erreicht wird.

Gruss MalteMicha
 
Moin,

da ist eine Liste von Werten diese werden miteinander verglichen und dann je nachdem wie groß der Unterschied der Werte und ob die Werte negativ oder positiv, wird dann unterschiedlich reagiert in der "Schaltzentrale".

Wenn jetzt die die Werte negativ sind kommt das Pumpspeicherkraftwerk zum Einsatz.
Die negativen Werten aus der Liste werden dann aufsummiert und beim Wert von 250 soll dann die Variable ifM genutzt werden.

Wenn wiederum große Abweichungen zwischen Prognose und Einspeisung entstehen und das PSW muss ins Netz einspeisen verringert sich ja die aufsummierte Summe und kann im nächsten vergleich wo das PSW wiederum speichern soll die Energie aufnehmen bis der Wert von 250 wieder erreicht wird.

ja ja, das habe ich so in etwa verstanden .... glaube ich zumindest :suspekt:

Aber was ist nun genau Deine Frage :confused:
Poste doch einfach den Code, den Du dazu hast und stell' dann eine konkrete Frage !
Vlt. wird es dann klarer :rolleyes:

Gruß
Klaus
 
Hallo,

ich hab's jetzt so versucht:

int psb = 0;
int fM = 0;
int ptb;

if (sum (t, psb(t)) - ptb > 250,
fM=sum(t,psb(t))-ptb-250));

ptb wurde vorher errechnet und ist die Summe des Turbinenbetriebs vom PSW.
er gibt mir jetzt für die die Summe 0, bis die 250 erreicht ist. Das ist ja auch noch alles richtig, aber dann gibt er mir gleich über minus 31000 als Ergebnis was überhaupt nicht stimmen kann, die sum(t, psb(t)) zu diesem Zeitpunkt 258 beträgt abzüglich der 250 dürften höchstens 8 als Ergebnis für fM dargestellt werden

ptb ist eine Summe vom Turbinenbetrieb des PSW
 
Moin,

ich hab's jetzt so versucht:

int psb = 0;
int fM = 0;
int ptb;

if (sum (t, psb(t)) - ptb > 250,
fM=sum(t,psb(t))-ptb-250));

ptb wurde vorher errechnet und ist die Summe des Turbinenbetriebs vom PSW.
er gibt mir jetzt für die die Summe 0, bis die 250 erreicht ist. Das ist ja auch noch alles richtig, aber dann gibt er mir gleich über minus 31000 als Ergebnis was überhaupt nicht stimmen kann, die sum(t, psb(t)) zu diesem Zeitpunkt 258 beträgt abzüglich der 250 dürften höchstens 8 als Ergebnis für fM dargestellt werden

hmm, so richtig versteh ich noch immer, was genau Du da versuchst ....

Du könntest es mal ganz banal so versuchen
C++:
int psb = 0;
int fM = 0;
int ptb;   // ptb hat welchen Wert? 250 ?
...
int iSumPSB = sum( t, psb(t) );  // was auch immer t sein mag .....
int iDiff = iSumPSB - ptb;  // Sollte doch jetzt nach Deiner Theorie die Diff. aus 258-250 sein, oder wie ****

if( iDiff > 250 )
{
    fM = iDiff - 250;
}
und dann im Debugger schauen, was zu Beginn der IF-Anweisung auf iDiff, iSumPSB und ptb steht ..... :rolleyes:

Gruß
Klaus

[EDIT]
sorry, das war wohl auch Blödsinn ... demnach wäre ja iDiff == 8 und das wiederum dann NICHT größer 250 ....
Also, ich raffe so nicht, was da wie zusammenhängt. Post einfach den kompletten Code oder zumindest mal ein lauffähiges Beispiel, an dem man das nachvollziehen kann!
[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:
Zurück