Wir betrachten den Verlauf einer elektrischen Last, d. h., den Verlauf der Leistungsaufnahme \(p(t)\) in kW eines elektrischen Verbrauchers über die Zeit \(t\) in h:
\[
p(t) = 5(1 - e^{-2t})
\]
Als erstes plotten wir diesen Lastgang:
Code
import numpy as npimport matplotlib.pyplot as pltt = np.linspace(0, 3, num=1000) # (almost continuous) time in hp =5*(1- np.exp(-2*t)) # power in kWplt.figure(figsize=(5, 3))plt.plot(t, p, 'k-')plt.xlabel('time (h)')plt.ylabel('power (kW)')plt.grid(True)
Sampling mit Energieerhaltung
Gemessene Lastgänge werden z. B. alle \(\Delta t =\) 15 Minuten mit einem zugehörigen Wert aufgezeichnet. Dabei werden die kontinuierlichen Werte derart in konstante Werte für jedes Zeitintervall umgewandelt, dass die in den Intervallen enthaltene Energie gleich bleibt. Wir bestimmen daher für unseren Beispiellastgang die mittlere Leistung \(\bar{p}\) zwischen zwei Zeitpunkten \(t_1\) und \(t_2\), d. h. \(\Delta t = t_2 - t_1\):
Das Integral \(E = \int_{t_1}^{t_2} p(t) \,\text{d}t\) ist gleich der vom Verbraucher aufgenommenen Energie \(E\) im Zeitintervall \([t_1, t_2]\). Die so berechnete mittlere Leistung \(\bar{p}\) führt zum selben Energieverbrauch \(E\) wie der kontinuierliche Lastgang \(p(t)\), denn
\[\bar{p}(t_2 - t_1) = E.\]
Bei der Optimierung von Lasten in einem Energienetzwerk werden typischer Weise keine kontinuierlichen Lastgänge, sondern stückweise konstanten Lastgänge optimiert.
Im folgenden Beispiel verwenden wir eine Abtastzeit von \(\Delta t = 0.5\) Stunden:
Das selbe mit einem DataFrame: Zum Arbeiten mit Zeitreihen eignen sich in Python die pandas DataFrames sehr gut. Wir erstellen ein DataFrame mit den Zeitpunkten und den konstanten Leistungswerten als Spalten.
# We check, if the total energies over the complete time interval [0, 3] are equal:E_continuous =5*(3+1/2*(np.exp(-2*3) - np.exp(-2*0)))E_discrete = np.sum(p_discrete)*dtprint(f"{E_continuous =} kWh")print(f"{E_discrete =} kWh")
Das Ändern des Sampling-Intervalls wird als Resampling bezeichnet und wird am einfachsten mit dem DateFrame-Methode resample durchgeführt. Dazu muss das DataFrame einen Index haben, der die Zeitpunkte als datetime-Objekte enthält.
# check if energy is conserved:dt =0.25# hdf_15Min.sum()*dt
power 12.506197
dtype: float64
Übung
Der Lastgang des Verbrauchers A ist in 15-Minuten-Schritten durch die folgenden kW-Werte gegeben: 30, 12, 10, 45, 50, 20, 40, 10. Der Lastgang des Verbrauchers B ist in 30-Minuten-Schritten durch die folgenden kW-Werte gegeben: 0, 70, 0, 90.
Erstellen Sie ein DataFrame, das den Gesamtlastgang der beiden Verbraucher in 15-Minuten-Schritten enthält.
Wie groß ist die maximale, absolute Leistungsänderung des Gesamtlastgangs?
Hinweis: Verwenden Sie die pandas-Funktion pd.date_range um einen DataFrame-Index mit gewünschten Zeitpunkten zu erstellen.