Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question

Revision history [back]

Short story: the PV is producing all the time, but no power is sold back to the grid.


TL:DR; because proof is always a good thing:

I'm assuming you used the Sketchup Plugin User-Script called "Add Photovoltaics", and that you haven't tuned the different objects used, especially the ElectricLoadCenter:Distribution object (let's call this "elcd" going forward). This measure creates a default elcd, see here

This sets the Generator Operation Scheme Type to "Baseload":

The Baseload scheme operates the generators at their rated (requested) electric power output when the generator is scheduled ON (ref. ElectricLoadCenter:Generators). The Baseload scheme requests all generators scheduled ON (available) to operate, even if the amount of electric power generated exceeds the total facility electric power demand

If you want to make sure, use the ruby bindings:

model = OpenStudio::Model::Model.new
elcd = OpenStudio::Model::ElectricLoadCenterDistribution.new
elcd.generatorOperationSchemeType
=> "Baseload"

So, we know the PV will produce no matter what. Next question to ask ourselves, is whether the surplus is sold to the grid or not?

This is defined in the UtilityCost:Tariff BuyOrSell field. This one is set during the use of the BCL measure Tariff Selection Time and Date Dependent with Maximum Demand Charge.

See line 415 and follow of measure.rb:

  new_object_string = "
  UtilityCost:Tariff,
    ElectricityTariff,                      !- Name
    ElectricityPurchased:Facility,          !- Output Meter Name
    kWh,                                    !- Conversion Factor Choice
    ,                                       !- Energy Conversion Factor
    ,                                       !- Demand Conversion Factor
    #{time_of_day_schedule.getString(0)},   !- Time of Use Period Schedule Name
    #{two_season_schedule.getString(0)},    !- Season Schedule Name
    ,                                       !- Month Schedule Name
    #{args['demand_window_length']},        !- Demand Window Length
    0.0;                                    !- Monthly Charge or Variable Name
    "
  electric_tariff = workspace.addObject(OpenStudio::IdfObject::load(new_object_string).get).get

Bottomline, no power is sold to the grid, because the output meter is set to ElectricityPurchased:Facility and not Electricity:Facility with a Buy Or Sell field set to NetMetering.

Short story: the PV is producing all the time, but no power is sold back to the grid.


TL:DR; because proof is always a good thing:

I'm assuming you used the Sketchup Plugin User-Script called "Add Photovoltaics", and that you haven't tuned the different objects used, especially the ElectricLoadCenter:Distribution object (let's call this "elcd" going forward). This measure creates a default elcd, see here

This sets the Generator Operation Scheme Type to "Baseload":

The Baseload scheme operates the generators at their rated (requested) electric power output when the generator is scheduled ON (ref. ElectricLoadCenter:Generators). The Baseload scheme requests all generators scheduled ON (available) to operate, even if the amount of electric power generated exceeds the total facility electric power demand

If you want to make sure, use the ruby bindings:

model = OpenStudio::Model::Model.new
elcd = OpenStudio::Model::ElectricLoadCenterDistribution.new
elcd.generatorOperationSchemeType
=> "Baseload"

So, we know the PV will produce no matter what. Next question to ask ourselves, is whether the surplus is sold to the grid or not?

This is defined in the UtilityCost:Tariff BuyOrSell field. This one is set during the use of the BCL measure Tariff Selection Time and Date Dependent with Maximum Demand Charge.

See line 415 and follow of measure.rb:

  new_object_string = "
  UtilityCost:Tariff,
    ElectricityTariff,                      !- Name
    ElectricityPurchased:Facility,          !- Output Meter Name
    kWh,                                    !- Conversion Factor Choice
    ,                                       !- Energy Conversion Factor
    ,                                       !- Demand Conversion Factor
    #{time_of_day_schedule.getString(0)},   !- Time of Use Period Schedule Name
    #{two_season_schedule.getString(0)},    !- Season Schedule Name
    ,                                       !- Month Schedule Name
    #{args['demand_window_length']},        !- Demand Window Length
    0.0;                                    !- Monthly Charge or Variable Name
    "
  electric_tariff = workspace.addObject(OpenStudio::IdfObject::load(new_object_string).get).get

Bottomline, no power is sold to the grid, because the output meter is set to ElectricityPurchased:Facility and not Electricity:Facility with a Buy Or Sell field set to NetMetering.

To look at your outputs, you can always:

  • Look at the Tariff section of the eplusout.html file, there's lot of good info in there.
  • Request Output:Variable for eg at the hourly timestep. The ElectricLoadCenter has plenty of interesting variables, see doc, such as Facility Total Surplus Electric Power

Short story: in your case the PV is producing all the time, but no power is sold back to the grid.

See TL;DR below for proof.

To look at your outputs, you can always:

  • Look at the Tariff section of the eplusout.html file, there's lot of good info in there, including the detail of how the utility cost is calculated.
  • Request Output:Variable for eg at the hourly timestep. The ElectricLoadCenter has plenty of interesting variables, see doc, such as Facility Total Surplus Electric Power

TL:DR; because proof is always a good thing:

I'm assuming you used the Sketchup Plugin User-Script called "Add Photovoltaics", and that you haven't tuned the different objects used, especially the ElectricLoadCenter:Distribution object (let's call this "elcd" going forward). This measure creates a default elcd, see here

This sets the Generator Operation Scheme Type to "Baseload":

The Baseload scheme operates the generators at their rated (requested) electric power output when the generator is scheduled ON (ref. ElectricLoadCenter:Generators). The Baseload scheme requests all generators scheduled ON (available) to operate, even if the amount of electric power generated exceeds the total facility electric power demand

If you want to make sure, use the ruby bindings:

model = OpenStudio::Model::Model.new
elcd = OpenStudio::Model::ElectricLoadCenterDistribution.new
elcd.generatorOperationSchemeType
=> "Baseload"

So, we know the PV will produce no matter what. Next question to ask ourselves, is whether the surplus is sold to the grid or not?

This is defined in the UtilityCost:Tariff BuyOrSell field. This one is set during the use of the BCL measure Tariff Selection Time and Date Dependent with Maximum Demand Charge.

See line 415 and follow of measure.rb:

  new_object_string = "
  UtilityCost:Tariff,
    ElectricityTariff,                      !- Name
    ElectricityPurchased:Facility,          !- Output Meter Name
    kWh,                                    !- Conversion Factor Choice
    ,                                       !- Energy Conversion Factor
    ,                                       !- Demand Conversion Factor
    #{time_of_day_schedule.getString(0)},   !- Time of Use Period Schedule Name
    #{two_season_schedule.getString(0)},    !- Season Schedule Name
    ,                                       !- Month Schedule Name
    #{args['demand_window_length']},        !- Demand Window Length
    0.0;                                    !- Monthly Charge or Variable Name
    "
  electric_tariff = workspace.addObject(OpenStudio::IdfObject::load(new_object_string).get).get

Bottomline, Bottom line, no power is sold to the grid, grid, because the output meter is set to ElectricityPurchased:Facility and not Electricity:Facility (or maybe more likely ElectricityNet:Facility according to EconomicTariff.cc#L619) with a Buy Or Sell field set to NetMetering.

To look at your outputs, you can always:

  • Look at the Tariff section In the case of the eplusout.html file, there's lot of good info measure, since Buy Or Sell isn't set, it's later defaulted to BuyFromUtility, that happens in there.
  • Request Output:Variable for eg at the hourly timestep. The ElectricLoadCenter has plenty of interesting variables, see docEnergyPlus EconomicTariff.cc#L608, such as Facility Total Surplus Electric Power