Thema Datum  Von Nutzer Rating
Antwort
Rot Batterie Lade Funktion rechnet Falsch
06.10.2011 19:10:08 Joe
NotSolved
06.10.2011 20:05:33 Till
NotSolved
06.10.2011 20:20:09 Gast13664
NotSolved
06.10.2011 23:48:21 Till
NotSolved
07.10.2011 13:36:08 Joe
NotSolved

Ansicht des Beitrags:
Von:
Joe
Datum:
06.10.2011 19:10:08
Views:
1976
Rating: Antwort:
  Ja
Thema:
Batterie Lade Funktion rechnet Falsch

Hallo Zusammen,

 

ich versuche Anhand von einer vorgegebenen Energieerzeugung (PV) und einem vorgegebenen Lastgang (Last) das Laden einer Batterie mit der begrenzter Kapaziztät (Max) zu simulieren.

Hierbei werde die werte für den Strombezug von der Energiequelle (EV), die Einspeisung in das Netz (Einspeise), der Bezug aus dem Netz (Bezug) und dem Speicherstand (Speicher) errechnet. Der Speicherstand wird zu beginn auf 0 gesetz und durch eine Eingabe über eine TextBox begrenzt.

Ohne die Verwendung eines Speichers Funktioniert das Programm, aber sofern ich einen Wert für Speicher eintrage, sind erhebliche Fehler in der Berechnung vorhanden...

 



Dim dblPV As Double
Dim dblLast As Double
Dim dblEV As Double
Dim dblUeberschuss As Double
Dim dblEinspeise As Double
Dim dblBezug As Double
Dim dblSpeicher As Double

For i = 1 To 35041

dblPV = CDbl(PV(i, 1))
dblLast = CDbl(Last(i, 1))
dblEV = CDbl(EV(i, 1))
dblUeberschuss = CDbl(Ueberschuss(i, 1))
dblEinspeise = CDbl(Einspeise(i, 1))
dblBezug = CDbl(Bezug(i, 1))
dblSpeicher = CDbl(Speicher(i, 1))
    
    
    dblUeberschuss = dblPV - dblLast

If i = 1 Then

    'Wenn mehr Last als Erzeugung
    If dblUeberschuss < 0# Then
        dblUeberschuss = dblUeberschuss * (-1)
        dblEV = dblPV
        If dblUeberschuss >= 0# Then
            dblUeberschuss = dblUeberschuss - dblSpeicher
            dblBezug = dblUeberschuss - dblSpeicher
            dblSpeicher = 0#
        Else
            dblSpeicher = 0# - dblUeberschuss
            ÜdblUeberschuss = 0#
       
        End If
    
    
        dblEinspeise = 0#
        
    'Wenn mehr Erzeugung als Last
    Else
        dblBezug = 0#
        If dblUeberschuss <= Max Then
            dblSpeicher = dblSpeicher + dblUeberschuss
            dblEV = dblast + dblUeberschuss
            dblEinspeise = 0#
        Else
            Platz = Max - 0#
            dblSpeicher = Max
            dblEV = dblLast
            dblEinspeise = dblUeberschuss - Platz
        
        End If
        
    End If

Else

Dim dblSpeicherVor As Double
dblSpeicherVor = CDbl(Speicher(i - 1, 1))

    'Wenn mehr Last als Erzeugung
    If dblUeberschuss < 0# Then
        dblUeberschuss = dblUeberschuss * (-1)
        dblEV = dblPV
        If dblUeberschuss >= dblSpeicherVor Then
            dblUeberschuss = dblUeberschuss - dblSpeicherVor
            dblBezug = dblUeberschuss - dblSpeicherVor
' Versuch           dblSpeicher = dblSpeicherVor - dblSpeicherVor
            dblSpeicher = 0#
        Else
            dblSpeicher = dblSpeicherVor - dblUeberschuss
            dblUeberschuss = 0#
       
        End If
    
    
        dblEinspeise = 0#
        
    'Wenn mehr Erzeugung als Last
    Else
        dblBezug = 0#
        Platz = Max - dblSpeicherVor
        If dblUeberschuss <= Platz Then
            dblSpeicher = dblSpeicherVor + dblUeberschuss
            dblEV = dblLast + dblUeberschuss
            dblEinspeise = 0#
        Else
            dblSpeicher = Max
            dblEV = dblLast
            dblEinspeise = dblUeberschuss - Platz
        
        End If
        
    End If

End If


PV(i, 1) = dblPV
Last(i, 1) = dblLast
EV(i, 1) = dblEV
Ueberschuss(i, 1) = dblUeberschuss
Einspeise(i, 1) = dblEinspeise
Bezug(i, 1) = dblBezug
Speicher(i, 1) = dblSpeicher

Next i


'Berechnen der Summen
For i = 1 To 35040
EV(i + 1, 1) = CDbl(EV(i, 1) + EV(i + 1, 1))
PV(i + 1, 1) = CDbl(PV(i, 1) + PV(i + 1, 1))
Bezug(i + 1, 1) = CDbl(Bezug(i, 1) + Bezug(i + 1, 1))
Einspeise(i + 1, 1) = CDbl(Einspeise(i, 1) + Einspeise(i + 1, 1))
Next i

Worksheets("Tabelle1").Cells(5, 2) = EV(35041, 1)
Worksheets("Ausgabe").Cells(6, 2) = PV(35041, 1)
Worksheets("Ausgabe").Cells(7, 2) = EV(35041, 1)
tbEVSumme.Value = Round((EV(35041, 1)) / 1000000, 2)
tbEV.Value = Round(100 * EV(35041, 1) / PV(35041, 1), 2)
tbEinspeise.Value = Round((Einspeise(35041, 1)) / 1000000, 2)
tbBezug.Value = Round((Bezug(35041, 1)) / 1000000, 2)

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Batterie Lade Funktion rechnet Falsch
06.10.2011 19:10:08 Joe
NotSolved
06.10.2011 20:05:33 Till
NotSolved
06.10.2011 20:20:09 Gast13664
NotSolved
06.10.2011 23:48:21 Till
NotSolved
07.10.2011 13:36:08 Joe
NotSolved