Incomplete Mitigation of Overvoltage Using Voltage Sensitivity-Based APC in IEEE European LV Test Feeder #2297
Unanswered
EIHABALMUKASHFI
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Dear pandapower Development Team,
I am currently working on implementing a voltage sensitivity-based active power curtailment (APC) method using pandapower with the IEEE European low voltage test feeder as my benchmark network. However, I have encountered an issue where the overvoltage problem is not completely mitigated. Specifically, the maximum voltage after applying APC is reduced to 1.1075 pu, which still exceeds the critical voltage limit of 1.1 pu. I suspect that this could be due to the accuracy of the voltage sensitivity matrix, which is derived from the inverse of the Jacobian matrix. Could you assit me please?
Here is the relevant portion of my code:
import matplotlib.pyplot as plt
import pandas as pd
import pandapower as pp
import pandapower.networks as nw
from pandapower.control.controller.const_control import ConstControl
from pandapower.timeseries.data_sources.frame_data import DFData
from pandapower.timeseries.output_writer import OutputWriter
from pandapower.timeseries.run_time_series import run_timeseries
import numpy as np
... (code for setting up data and network) ...
Sensitivity calculation function
def sensitivity(t):
run_timeseries(net, continue_on_divergence=False, time_steps=range(t, t+1))
J = net._ppc["internal"]["J"].todense()
size = J.shape[0]
sens1 = np.array(np.linalg.pinv(J))
sens = sens1[int(size/2):int(size)][:, 0:int(size/2)]
return sens.transpose()
Function to calculate power to be curtailed
def power_to_be_curtailed(T):
delta_p = []
sens = sensitivity(T)
for bus in index:
if voltage.iloc[T][bus] > v_cri[bus]:
bus_id = bus
ppc_index = net._pd2ppc_lookups["bus"][bus_id]
sens_bus = [sens[ppc_index-1][i-1] for i in index]
top_sens1 = np.sum(sens_bus)
delta_p.append(((416 * (voltage.iloc[T][bus] - v_cri[bus])) / (sens_bus[k])) / 1000)
else:
delta_p.append(0)
return delta_p
(additional code for running the time series and curtailment process)
Running the final simulation with curtailed PV profiles
run_timeseries(net, continue_on_divergence=False)
new_voltage_1 = net.output_writer.object[0].output["res_bus.vm_pu"]
... (code for plotting and saving results) ...
Beta Was this translation helpful? Give feedback.
All reactions