In [1]:
import dependencies
import pandas as pd
import numpy as np
from nummath import graphing

BEREKENING VAN HET BENODIGD REACTIEF VERMOGEN I.F.V. DE GEMETEN MOMENTANE BELASTING

1. Databestand inlezen

In [2]:
fp = '../data/power.csv'
mydateparser = lambda x: pd.datetime.strptime(x, "%d/%m/%Y %H:%M:%S 0msec")
df_raw = pd.read_csv(fp, parse_dates=[['Date', 'Time']], date_parser = mydateparser)
df_raw
Out[2]:
Date_Time Voltage L1N Min Voltage L1N Avg Voltage L1N Max Voltage L2N Min Voltage L2N Avg Voltage L2N Max Voltage L3N Min Voltage L3N Avg Voltage L3N Max ... THD A L1 Max THD A L2 Min THD A L2 Avg THD A L2 Max THD A L3 Min THD A L3 Avg THD A L3 Max THD A N Min THD A N Avg THD A N Max
0 2014-03-15 10:03:23 229.556 230.928 233.476 229.399 231.019 233.502 229.739 231.006 233.372 ... 9.6 4.3 7.3 10.3 5.4 7.2 9.9 26.5 47.9 79.7
1 2014-03-15 10:05:58 232.692 233.581 234.391 232.797 233.607 234.469 232.718 233.568 234.495 ... 19.3 6.3 11.5 21.5 5.8 10.5 17.4 23.1 56.1 99.9
2 2014-03-15 10:08:33 229.869 233.097 234.443 229.712 232.862 234.313 228.353 232.784 234.260 ... 23.2 4.2 10.6 22.8 3.5 9.5 25.6 55.6 96.8 99.9
3 2014-03-15 10:11:08 232.378 233.437 234.391 231.986 233.110 234.103 231.908 233.045 234.182 ... 26.7 4.2 12.9 26.8 4.3 11.4 24.2 75.9 99.7 99.9
4 2014-03-15 10:13:43 228.615 233.359 234.678 228.380 233.084 234.469 227.203 233.123 234.443 ... 26.2 4.5 16.2 28.6 5.3 14.6 26.0 44.8 96.4 99.9
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
3897 2014-03-22 09:50:38 233.163 233.738 234.077 232.797 233.437 233.790 233.163 233.724 234.182 ... 28.0 4.6 6.8 22.0 8.1 32.7 68.0 63.6 99.6 99.9
3898 2014-03-22 09:53:13 228.798 233.515 234.156 228.615 233.149 233.920 227.805 233.385 234.103 ... 31.7 2.6 7.5 22.7 4.1 18.5 45.4 58.9 99.5 99.9
3899 2014-03-22 09:55:48 232.587 233.045 233.372 232.195 232.784 233.267 232.378 233.006 233.476 ... 7.8 4.5 5.3 7.9 5.0 6.9 8.9 31.4 74.2 99.9
3900 2014-03-22 09:58:23 232.980 233.920 234.652 232.614 233.751 234.522 232.953 233.960 234.757 ... 39.3 4.7 21.7 57.3 5.8 33.7 58.1 33.3 62.0 94.2
3901 2014-03-22 10:00:58 233.006 233.973 234.391 233.110 233.842 234.234 233.189 234.195 234.626 ... 37.0 23.3 42.6 56.1 15.5 46.0 69.6 12.8 62.3 98.8

3902 rows × 142 columns

2. Gewenste arbeidsfactor t.h.v. de netaansluiting

In [3]:
PF_grid = 0.96
tan_PF_grid = np.tan(np.arccos(PF_grid))
tan_PF_grid
Out[3]:
0.2916666666666668

3. Vereist reactief vermogen van de condensatorbatterij

In [4]:
df_power = df_raw[['Active Power Total Max', 'PF Classic Total Min']]
df_power = df_power.rename(columns={"Active Power Total Max": "P 3f", "PF Classic Total Min": "PF"})
df_power
Out[4]:
P 3f PF
0 72167.727 0.750
1 72042.273 0.750
2 124670.453 0.700
3 74896.367 0.725
4 118491.813 0.594
... ... ...
3897 32210.455 0.552
3898 113912.734 0.329
3899 52910.453 0.781
3900 46951.363 0.513
3901 25341.818 0.651

3902 rows × 2 columns

Vereist 3-fasig reactief vermogen van de condensatorbatterij

In [5]:
df_power['tan(PF)'] = np.tan(np.arccos(df_power['PF']))
df_power['Q 3f'] = df_power['P 3f'] * (df_power['tan(PF)'] - tan_PF_grid)
df_power.index = df_raw['Date_Time']
df_power
Out[5]:
P 3f PF tan(PF) Q 3f
Date_Time
2014-03-15 10:03:23 72167.727 0.750 0.881917 42597.032401
2014-03-15 10:05:58 72042.273 0.750 0.881917 42522.983122
2014-03-15 10:08:33 124670.453 0.700 1.020204 90827.087006
2014-03-15 10:11:08 74896.367 0.725 0.949998 49306.657762
2014-03-15 10:13:43 118491.813 0.594 1.354318 125915.512525
... ... ... ... ...
2014-03-22 09:50:38 32210.455 0.552 1.510587 39261.983571
2014-03-22 09:53:13 113912.734 0.329 2.870304 293739.595797
2014-03-22 09:55:48 52910.453 0.781 0.799656 26877.924612
2014-03-22 09:58:23 46951.363 0.513 1.673272 64868.259993
2014-03-22 10:00:58 25341.818 0.651 1.166018 22157.652820

3902 rows × 4 columns

In [6]:
Q_comb = [11844.714, 23689.428, 35534.142, 47378.856, 59223.571, 71068.285]
In [7]:
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

graph = graphing.Graph(fig_size=[12, 8], dpi=96)
graph.add_data_set(name='Q 3f', x=df_power.index, y=df_power['Q 3f'], marker='o', linestyle='none')
for i, Q in enumerate(Q_comb):
    graph.add_data_set(name=f'comb {i + 1}', x=[df_power.index[0], df_power.index[-1]], y=[Q, Q])
graph.add_legend()
graph.turn_grid_on()
graph.set_axis_titles(x_title='time', y_title='3ph reactive power [VAR]')
graph.draw_graph()
graph.show_graph()
In [8]:
bin_brackets = pd.IntervalIndex.from_breaks(Q_comb, closed='left')
bins = pd.cut(df_power['Q 3f'], bin_brackets)
bins = pd.value_counts(bins)
bins
Out[8]:
[23689.428, 35534.142)    282
[11844.714, 23689.428)    253
[35534.142, 47378.856)    147
[47378.856, 59223.571)     83
[59223.571, 71068.285)     51
Name: Q 3f, dtype: int64
In [11]:
np.sum(bins.iloc[0:])
Out[11]:
816
In [ ]: