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:
2115
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...

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
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