mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2025-04-19 00:45:22 +00:00
Maximale Wechselrichter Leistung
This commit is contained in:
parent
828b15f94e
commit
b31001095f
@ -72,6 +72,10 @@ class PVAkku:
|
||||
# Berechnung der maximal abgebenden Energiemenge unter Berücksichtigung der Entladeeffizienz
|
||||
max_abgebbar_wh = self.soc_wh * self.entlade_effizienz
|
||||
|
||||
# Berücksichtigen der maximalen Entladeleistung des Akkus
|
||||
max_abgebbar_wh = min(max_abgebbar_wh, self.max_ladeleistung_w)
|
||||
|
||||
|
||||
# Tatsächlich abgegebene Energie darf nicht mehr sein als angefragt und nicht mehr als maximal abgebbar
|
||||
tatsaechlich_abgegeben_wh = min(wh, max_abgebbar_wh)
|
||||
|
||||
|
@ -3,8 +3,8 @@ from pprint import pprint
|
||||
|
||||
|
||||
class EnergieManagementSystem:
|
||||
def __init__(self, akku=None, pv_prognose_wh=None, strompreis_euro_pro_wh=None, einspeiseverguetung_euro_pro_wh=None, eauto=None, gesamtlast=None, haushaltsgeraet=None):
|
||||
self.akku = akku
|
||||
def __init__(self, pv_prognose_wh=None, strompreis_euro_pro_wh=None, einspeiseverguetung_euro_pro_wh=None, eauto=None, gesamtlast=None, haushaltsgeraet=None, wechselrichter=None):
|
||||
self.akku = wechselrichter.akku
|
||||
#self.lastkurve_wh = lastkurve_wh
|
||||
self.gesamtlast = gesamtlast
|
||||
self.pv_prognose_wh = pv_prognose_wh
|
||||
@ -12,6 +12,8 @@ class EnergieManagementSystem:
|
||||
self.einspeiseverguetung_euro_pro_wh = einspeiseverguetung_euro_pro_wh # Einspeisevergütung in Cent pro Wh
|
||||
self.eauto = eauto
|
||||
self.haushaltsgeraet = haushaltsgeraet
|
||||
self.wechselrichter = wechselrichter
|
||||
|
||||
|
||||
|
||||
def set_akku_discharge_hours(self, ds):
|
||||
@ -83,30 +85,45 @@ class EnergieManagementSystem:
|
||||
stündlicher_netzbezug_wh = 0
|
||||
stündliche_kosten_euro = 0
|
||||
stündliche_einnahmen_euro = 0
|
||||
|
||||
|
||||
if erzeugung > verbrauch:
|
||||
überschuss = erzeugung - verbrauch
|
||||
#geladene_energie = min(überschuss, self.akku.kapazitaet_wh - self.akku.soc_wh)
|
||||
geladene_energie, verluste_laden_akku = self.akku.energie_laden(überschuss, stunde)
|
||||
verluste_wh_pro_stunde[-1] += verluste_laden_akku
|
||||
#print("verluste_laden_akku:",verluste_laden_akku)
|
||||
netzeinspeisung_wh_pro_stunde.append(überschuss - geladene_energie-verluste_laden_akku)
|
||||
eigenverbrauch_wh_pro_stunde.append(verbrauch)
|
||||
stündliche_einnahmen_euro = (überschuss - geladene_energie-verluste_laden_akku) * self.einspeiseverguetung_euro_pro_wh[stunde]
|
||||
#print(überschuss," ", geladene_energie," ",verluste_laden_akku)
|
||||
netzbezug_wh_pro_stunde.append(0.0)
|
||||
else:
|
||||
netzeinspeisung_wh_pro_stunde.append(0.0)
|
||||
benötigte_energie = verbrauch - erzeugung
|
||||
aus_akku, akku_entladeverluste = self.akku.energie_abgeben(benötigte_energie, stunde)
|
||||
verluste_wh_pro_stunde[-1] += akku_entladeverluste
|
||||
#print("akku_entladeverluste:",akku_entladeverluste)
|
||||
#Wieviel kann der WR
|
||||
netzeinspeisung, netzbezug, verluste, eigenverbrauch = self.wechselrichter.energie_verarbeiten(erzeugung, verbrauch, stunde)
|
||||
|
||||
# Speichern
|
||||
netzeinspeisung_wh_pro_stunde.append(netzeinspeisung)
|
||||
stündliche_einnahmen_euro = netzeinspeisung* self.einspeiseverguetung_euro_pro_wh[stunde]
|
||||
|
||||
stündliche_kosten_euro = netzbezug * strompreis
|
||||
netzbezug_wh_pro_stunde.append(netzbezug)
|
||||
verluste_wh_pro_stunde[-1] += verluste
|
||||
eigenverbrauch_wh_pro_stunde.append(eigenverbrauch)
|
||||
|
||||
|
||||
|
||||
# Mehr erzeugt als verbraucht
|
||||
# if erzeugung > verbrauch:
|
||||
# überschuss = erzeugung - verbrauch
|
||||
# #geladene_energie = min(überschuss, self.akku.kapazitaet_wh - self.akku.soc_wh)
|
||||
# geladene_energie, verluste_laden_akku = self.akku.energie_laden(überschuss, stunde)
|
||||
# verluste_wh_pro_stunde[-1] += verluste_laden_akku
|
||||
# #print("verluste_laden_akku:",verluste_laden_akku)
|
||||
# netzeinspeisung_wh_pro_stunde.append(überschuss - geladene_energie-verluste_laden_akku)
|
||||
# eigenverbrauch_wh_pro_stunde.append(verbrauch)
|
||||
# stündliche_einnahmen_euro = (überschuss - geladene_energie-verluste_laden_akku) * self.einspeiseverguetung_euro_pro_wh[stunde]
|
||||
# #print(überschuss," ", geladene_energie," ",verluste_laden_akku)
|
||||
# netzbezug_wh_pro_stunde.append(0.0)
|
||||
# # Noch Netzbezug nötig
|
||||
# else:
|
||||
# netzeinspeisung_wh_pro_stunde.append(0.0)
|
||||
# benötigte_energie = verbrauch - erzeugung
|
||||
# aus_akku, akku_entladeverluste = self.akku.energie_abgeben(benötigte_energie, stunde)
|
||||
# verluste_wh_pro_stunde[-1] += akku_entladeverluste
|
||||
# #print("akku_entladeverluste:",akku_entladeverluste)
|
||||
|
||||
stündlicher_netzbezug_wh = benötigte_energie - aus_akku
|
||||
netzbezug_wh_pro_stunde.append(stündlicher_netzbezug_wh)
|
||||
eigenverbrauch_wh_pro_stunde.append(erzeugung+aus_akku)
|
||||
stündliche_kosten_euro = stündlicher_netzbezug_wh * strompreis
|
||||
# stündlicher_netzbezug_wh = benötigte_energie - aus_akku
|
||||
# netzbezug_wh_pro_stunde.append(stündlicher_netzbezug_wh)
|
||||
# eigenverbrauch_wh_pro_stunde.append(erzeugung+aus_akku)
|
||||
# stündliche_kosten_euro = stündlicher_netzbezug_wh * strompreis
|
||||
|
||||
if self.eauto:
|
||||
eauto_soc_pro_stunde.append(eauto_soc)
|
||||
|
@ -7,6 +7,7 @@ from modules.class_akku import *
|
||||
from modules.class_strompreis import *
|
||||
from modules.class_heatpump import *
|
||||
from modules.class_load_container import *
|
||||
from modules.class_inverter import *
|
||||
from modules.class_sommerzeit import *
|
||||
from modules.visualize import *
|
||||
from modules.class_haushaltsgeraet import *
|
||||
@ -176,7 +177,7 @@ class optimization_problem:
|
||||
|
||||
pv_forecast_url = parameter['pv_forecast_url'] #"https://api.akkudoktor.net/forecast?lat=52.52&lon=13.405&power=5000&azimuth=-10&tilt=7&powerInvertor=10000&horizont=20,27,22,20&power=4800&azimuth=-90&tilt=7&powerInvertor=10000&horizont=30,30,30,50&power=1400&azimuth=-40&tilt=60&powerInvertor=2000&horizont=60,30,0,30&power=1600&azimuth=5&tilt=45&powerInvertor=1400&horizont=45,25,30,60&past_days=5&cellCoEff=-0.36&inverterEfficiency=0.8&albedo=0.25&timezone=Europe%2FBerlin&hourly=relativehumidity_2m%2Cwindspeed_10m"
|
||||
|
||||
akku = PVAkku(kapazitaet_wh=akku_size,hours=self.prediction_hours,start_soc_prozent=parameter["pv_soc"])
|
||||
akku = PVAkku(kapazitaet_wh=akku_size,hours=self.prediction_hours,start_soc_prozent=parameter["pv_soc"], max_ladeleistung_w=5000)
|
||||
discharge_array = np.full(self.prediction_hours,1) #np.array([1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0]) #
|
||||
laden_moeglich = np.full(self.prediction_hours,1) # np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0])
|
||||
|
||||
@ -235,7 +236,9 @@ class optimization_problem:
|
||||
leistung_wp = wp.simulate_24h(temperature_forecast)
|
||||
gesamtlast.hinzufuegen("Heatpump", leistung_wp)
|
||||
|
||||
ems = EnergieManagementSystem(akku=akku, gesamtlast = gesamtlast, pv_prognose_wh=pv_forecast, strompreis_euro_pro_wh=specific_date_prices, einspeiseverguetung_euro_pro_wh=einspeiseverguetung_euro_pro_wh, eauto=eauto, haushaltsgeraet=spuelmaschine)
|
||||
wr = Wechselrichter(5000, akku)
|
||||
|
||||
ems = EnergieManagementSystem(gesamtlast = gesamtlast, pv_prognose_wh=pv_forecast, strompreis_euro_pro_wh=specific_date_prices, einspeiseverguetung_euro_pro_wh=einspeiseverguetung_euro_pro_wh, eauto=eauto, haushaltsgeraet=spuelmaschine,wechselrichter=wr)
|
||||
o = ems.simuliere(start_hour)
|
||||
|
||||
###############
|
||||
|
Loading…
x
Reference in New Issue
Block a user