Maximale Wechselrichter Leistung

This commit is contained in:
Bla Bla 2024-05-01 14:38:16 +02:00
parent 828b15f94e
commit b31001095f
3 changed files with 50 additions and 26 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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)
###############