Class: DcToAcConversion

Inherits:
Object
  • Object
show all
Defined in:
lib/PVLIB_Ruby/dc_to_ac_conversion.rb

Overview

This class uses Sandia’s Grid-Connected PV Inverter model, which is based on: SAND2007-5036, “Performance Model for Grid-Connected Photovoltaic Inverters by D. King, S. Gonzalez, G. Galbraith, W. Boyson Since this paper was not available any more, we referred to pvpmc.sandia.gov/modeling-steps/dc-to-ac-conversion/sandia-inverter-model/ Other inverter models are realized by subclasses.

Instance Method Summary collapse

Constructor Details

#initialize(inverter) ⇒ DcToAcConversion

Returns a new instance of DcToAcConversion.



9
10
11
# File 'lib/PVLIB_Ruby/dc_to_ac_conversion.rb', line 9

def initialize(inverter)  
  @inverter = inverter
end

Instance Method Details

#ac_power(dc_input_voltage, dc_input_power) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/PVLIB_Ruby/dc_to_ac_conversion.rb', line 13

def ac_power(dc_input_voltage, dc_input_power)
  # A = Pdc0 * ( 1 + C1 * (Vdc - Vdc0) )
  dc_power_adjustment_parameter = @inverter.dc_power_for_maximum_ac_power_rating * (1 + @inverter.coefficient_for_dc_power_for_maximum_ac_power_rating * (dc_input_voltage - @inverter.dc_power_level_for_maximum_ac_power_rating))

  # B = Ps0 * ( 1 + C2 * (Vdc - Vdc0) )
  starting_dc_power_adjustment_parameter = @inverter.starting_dc_power * (1 + @inverter.coefficient_for_starting_dc_power * (dc_input_voltage - @inverter.dc_power_level_for_maximum_ac_power_rating))

  # C = C0 * ( 1 + C3 * (Vdc - Vdc0) )
  coefficient_adjustment_parameter = @inverter.power_adjustment_coefficient * (1 + @inverter.coefficient_for_power_adjustment_coefficient * (dc_input_voltage - @inverter.dc_power_level_for_maximum_ac_power_rating))

  ac_power = (@inverter.maximum_ac_power_rating / (dc_power_adjustment_parameter - starting_dc_power_adjustment_parameter) - coefficient_adjustment_parameter * (dc_power_adjustment_parameter - starting_dc_power_adjustment_parameter)) * (dc_input_power - starting_dc_power_adjustment_parameter) + 
  coefficient_adjustment_parameter * (dc_input_power - starting_dc_power_adjustment_parameter).power(2)

  adjust_ac_power(ac_power)
end