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

How are utility bills calculated with on-site PV generation?

asked 2017-06-29 12:39:22 -0500

kmpiscopo's avatar

updated 2017-08-06 07:19:44 -0500

I am modeling a building with rooftop solar in OpenStudio, and am calculating the annual utility bill using the 'Tariff Selection Time and Date Dependent with Maximum Demand Charge' measure.

This building has a large rooftop area, and a low electricity use intensity (kWh/sqft), and as a result, produces more electricity from the PV array than the building uses annually. Compared to the same building without rooftop solar, I notice that the electricity utility for this building decreases by ~50% with the addition of solar, and the demand charge only decreases by 12%.

I assume that the utility bill is calculated for the net difference between building demand and PV production for each time interval, and that no power is assumed to be sold back to the grid. Can someone confirm or debunk this assumption? I'm having a hard time finding proof in the documentation.

edit retag flag offensive close merge delete


If you want to maximize your chances of getting pertinent answers, and make the life of the person answering easier, please always include relevant links to measures you're using. I personally am not a fan of having to infer and/or search on BCL. Thanks!

Julien Marrec's avatar Julien Marrec  ( 2017-06-30 03:12:24 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2017-06-30 03:11:13 -0500

updated 2017-06-30 03:20:54 -0500

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 =
elcd =
=> "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 = "
    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

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

In the case of the measure, since Buy Or Sell isn't set, it's later defaulted to BuyFromUtility, that happens in EnergyPlus

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer


Question Tools



Asked: 2017-06-29 12:39:22 -0500

Seen: 248 times

Last updated: Jun 30 '17