def __init__(self, v_ref=(1, 0, 0), pdroop=None, qdroop=None, **kwargs): self.v_ref = v_ref super().__init__(out_calc=dict(i_ref=3, v_ref=3), **kwargs) pdroop = {**(pdroop or {}), **dict(gain=40000.0, tau=.005)} qdroop = {**(qdroop or {}), **dict(gain=1000.0, tau=.002)} self.pdroop_ctl = DroopController(DroopParams(nom_value=self.net.freq_nom, **pdroop), self.net.ts) self.qdroop_ctl = DroopController(DroopParams(nom_value=self.net.v_nom, **qdroop), self.net.ts) self.dds = DDS(self.net.ts)
""" # Defines a load step after 0.2 s return 1 * gain if t < .2 else 2 * gain if __name__ == '__main__': ctrl = [] # Empty dict which shall include all controllers ##################################### # Define the voltage forming inverter as master # Voltage control PI gain parameters for the voltage sourcing inverter voltage_dqp_iparams = PI_params(kP=0.025, kI=60, limits=(-i_lim, i_lim)) # Current control PI gain parameters for the voltage sourcing inverter current_dqp_iparams = PI_params(kP=0.012, kI=90, limits=(-1, 1)) # Droop characteristic for the active power Watt/Hz, delta_t droop_param = DroopParams(DroopGain, 0.005, freq_nom) # Droop characteristic for the reactive power VAR/Volt Var.s/Volt qdroop_param = DroopParams(QDroopGain, 0.002, v_nom) # Add to dict ctrl.append( MultiPhaseDQ0PIPIController(voltage_dqp_iparams, current_dqp_iparams, droop_param, qdroop_param, ts_sim=delta_t, name='master')) ##################################### # Define the current sourcing inverter as slave # Current control PI gain parameters for the current sourcing inverter current_dqp_iparams = PI_params(kP=0.005, kI=200, limits=(-1, 1))
abort_reward = -10 * j_min # Definition of the kernel kernel = GPy.kern.Matern32(input_dim=len(bounds), variance=prior_var, lengthscale=lengthscale, ARD=True) ##################################### # Definition of the controllers # Choose all droop parameter as mutable parameters mutable_params = dict(pDroop_master=MutableFloat(30000.0), pDroop_slave=MutableFloat(30000.0), qDroop_master=MutableFloat(QDroopGain), qDroop_slave=MutableFloat(10)) # Define the droop parameters for the inverter of the active power Watt/Hz (DroopGain), delta_t (0.005) used for # the filter and the nominal frequency # Droop controller used to calculate the virtual frequency drop due to load changes droop_param_master = DroopParams(mutable_params['pDroop_master'], 0.005, freq_nom) # droop parameter used to react on frequency drop droop_param_slave = InverseDroopParams(mutable_params['pDroop_slave'], delta_t, freq_nom, tau_filt=0.04) # Droop characteristic for the reactive power VAR/Volt Var.s/Volt # qDroop parameter used for virtual voltage drop qdroop_param_master = DroopParams(mutable_params['qDroop_master'], 0.002, v_nom) # Droop characteristic for the reactive power VAR/Volt Var.s/Volt qdroop_param_slave = InverseDroopParams(mutable_params['qDroop_slave'], delta_t, v_nom, tau_filt=0.01) ############### # define Master voltage_dqp_iparams = PI_params(kP=0.025, kI=60, limits=(-i_lim, i_lim)) # Current control PI gain parameters for the voltage sourcing inverter current_dqp_iparams = PI_params(kP=0.012, kI=90, limits=(-1, 1)) # Define a current sourcing inverter as master inverter using the pi and droop parameters from above
iLimit = 30 # current limit / A iNominal = 20 # nominal current / A DroopGain = 40000.0 # virtual droop gain for active power / W/Hz QDroopGain = 1000.0 # virtual droop gain for reactive power / VAR/V if __name__ == '__main__': ctrl = [] # Empty dict which shall include all controllers ##################################### # Define the voltage forming inverter as master # Voltage control PI gain parameters for the voltage sourcing inverter voltage_dqp_iparams = PI_params(kP=0.025, kI=60, limits=(-iLimit, iLimit)) # Current control PI gain parameters for the voltage sourcing inverter current_dqp_iparams = PI_params(kP=0.012, kI=90, limits=(-1, 1)) # Droop characteristic for the active power Watt/Hz, delta_t droop_param = DroopParams(DroopGain, 0.005, nomFreq) # Droop characteristic for the reactive power VAR/Volt Var.s/Volt qdroop_param = DroopParams(QDroopGain, 0.002, nomVoltPeak) # Add to dict ctrl.append( MultiPhaseDQ0PIPIController(voltage_dqp_iparams, current_dqp_iparams, delta_t, droop_param, qdroop_param, name='master')) ##################################### # Define the current sourcing inverter as slave # Current control PI gain parameters for the current sourcing inverter current_dqp_iparams = PI_params(kP=0.005, kI=200, limits=(-1, 1))
kernel = GPy.kern.Matern32(input_dim=len(bounds), variance=prior_var, lengthscale=lengthscale, ARD=True) ##################################### # Definition of the controllers # Choose Kp and Ki for the current and voltage controller as mutable parameters mutable_params = dict(currentP=MutableFloat(10e-3), currentI=MutableFloat(10), voltageP=MutableFloat(25e-3), voltageI=MutableFloat(60)) voltage_dqp_iparams = PI_params(kP=mutable_params['voltageP'], kI=mutable_params['voltageI'], limits=(-i_lim, i_lim)) current_dqp_iparams = PI_params(kP=mutable_params['currentP'], kI=mutable_params['currentI'], limits=(-1, 1)) # Define the droop parameters for the inverter of the active power Watt/Hz (DroopGain), delta_t (0.005) used for the # filter and the nominal frequency # Droop controller used to calculate the virtual frequency drop due to load changes droop_param = DroopParams(DroopGain, 0.005, net.freq_nom) # Define the Q-droop parameters for the inverter of the reactive power VAR/Volt, delta_t (0.002) used for the # filter and the nominal voltage qdroop_param = DroopParams(QDroopGain, 0.002, net.v_nom) # Define a voltage forming inverter using the PIPI and droop parameters from above ctrl = MultiPhaseDQ0PIPIController(voltage_dqp_iparams, current_dqp_iparams, droop_param, qdroop_param, ts_sim=net.ts, ts_ctrl=2 * net.ts, name='master') ##################################### # Definition of the optimization agent # The agent is using the SafeOpt algorithm by F. Berkenkamp (https://arxiv.org/abs/1509.01066) in this example # Arguments described above # History is used to store results
lengthscale=lengthscale, ARD=True) ##################################### # Definition of the controllers # Choose all droop parameter as mutable parameters mutable_params = dict(pDroop_master=MutableFloat(30000.0), pDroop_slave=MutableFloat(30000.0), qDroop_master=MutableFloat(QDroopGain), qDroop_slave=MutableFloat(10)) # Define the droop parameters for the inverter of the active power Watt/Hz (DroopGain), delta_t (0.005) used for # the filter and the nominal frequency # Droop controller used to calculate the virtual frequency drop due to load changes droop_param_master = DroopParams(mutable_params['pDroop_master'], 0.005, nomFreq) # droop parameter used to react on frequency drop droop_param_slave = InverseDroopParams(mutable_params['pDroop_slave'], delta_t, nomFreq, tau_filt=0.04) # Droop characteristic for the reactive power VAR/Volt Var.s/Volt # qDroop parameter used for virtual voltage drop qdroop_param_master = DroopParams(mutable_params['qDroop_master'], 0.002, nomVoltPeak) # Droop characteristic for the reactive power VAR/Volt Var.s/Volt qdroop_param_slave = InverseDroopParams(mutable_params['qDroop_slave'], delta_t, nomVoltPeak, tau_filt=0.01)