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

# What control strategies exist for peak shaving and how can they be implemented in EnergyPlus?

I have been using a system to smooth power demand in the winter design week by sizing a boiler (variable kW) with an auxiliary storage tank (fixed volume) to just meet a defined number of unmet hours (by manually changing the boiler size until the unmet hours goal is just met). This achieves my goal of limiting peak demand and smoothing demand across the design week. The effect is that the boiler runs almost continuously to keep the tank just charged up enough to meet the load.

The purpose of this is that the profiles are being used in an electricity and gas network modelling exercise and the results of interest to the network costs optimisation tool are peak electricity and gas use (modelling ASHP, gas boilers, electric storage heaters, etc in combination with various storage tanks). I actually expect total energy use to go up, due to standing losses from the tank, but that's not the prime concern for this model.

Are there any ways of achieving this continuous running in periods other than the winter design week by modulating the output of the boiler? The problem is that when running for the full year the boiler runs at fairly high power until the tank is fully charged. This obviously takes much less time when the daily/weekly heating demand is lower. I'm thinking of things like how to implement weather compensation in EnergyPlus, though any other approaches would be welcome.

Edited in response to @Julien Marrec's comments

The tank I'm working with at the moment is a WaterHeater:Mixed with no internal heating element. The deadband is set to 5°C. The boiler (and potentially a secondary boiler) feeds the tank via a heat exchanger and doesn't supply anything else. The Source Side Flow Control Mode is whatever the default is - it's a little unclear in the docs (I'm using 8.1) but I think it's IndirectHeatPrimarySetpoint.

edit retag close merge delete

Question of the month!

( 2015-02-05 10:52:29 -0500 )edit

What type of tank are you using? Is it a WaterHeater:Mixed or Stratified, with 0 internal power? Can you post this object's definition (I'm interested in Deadband, heater control type, and Source Side Flow Control Mode) Also, does your boiler ONLY discharge in that tank?

( 2015-02-17 03:14:46 -0500 )edit

Sort by » oldest newest most voted

The following isn't an actual answer because I don't know how to do this in EnergyPlus. But I'll try to jump start the conversation by trying to see how I think it would be done in an actual boiler room, and what it comes down to in EnergyPlus.

### Real world

As far as actual HVAC controls goes, what I* would do in your case is:

(*I don't design boiler rooms... if someone does, correct me if I'm wrong )

• Implement an outdoor reset strategy for the building loop (from tank to building and back to tank) with variable temperature and/or flow. For example you could set the supply temperature leaving the tank based on outdoor air (outdoor air reset), and vary the flow by acting on the loop pump to maintain a fixed dT between return and supply.

• For the boiler loop (from boiler to tank), you have to control the temperature (burner) and/or the flow (boiler pump). You would control those based on the temperature in the tank.

For this, I would either:

A. Put a modulating aquastat in the storage tank.

A modulation aquastat is a device with a setpoint and a differential. Based on how far you are from setpoint, it usually outputs a 0-135 Ohms signal, which will adjust the boiler % in accordance (it's a potentiometer...)

(Tip of the day: Be careful, a lot of famous manufacturers, such as Honeywell, typically have modulating aquastats that have the setpoint at the center of the proportioning range instead of being at the top range... useless for boiler applications such as this one. For example the Honeywell T991A is like that).

If you have a setpoint of 80°C with a -20° differential, once the temperature drops below 60°C in the tank, the burner comes on on high fire (100%), and as the temperature increases towards the 80°C, the burner will modulate down. If its turndown ratio is big enough (= minimum ratio small enough) and the load of the tank allows (if it's too small, even with a 10:1 turndown ratio you'll be providing too much heat) it shall stay there modulating... Otherwise, the temperature goes above 80°C and the burner will cycle off.

B. If you wanted to get fancier, you would use PID logic with the above setup.

You would still have a temperature sensor in the tank, but you would add a controller to process it. Instead of having a flat curve that goes from 100% at 60°C to minimum ratio at 80°C, you would actually add an "I" and a "D" to your existing "P". Because that doesn't help much, here's what PID stands for:

P: Proportional, or preset error

I: integral, or accumulation of past errors (the area between the curve or your actual conditions and the flat curve that is your setpoint)

D: Derivative, or prediction of future errors based on the rate of current change ...

more

As I understand , you want to adjust the power of your boiler according to heating demand to keep it on all the time and reduce the number of on-off operations? What is the purpose to simulate this? The amount of heating energy will be the same, obviously. It will affect only on primary loop pump consumption (will increase it). As far as I am concerned, there is no native way to model inter-variables dependency in E+ (IES-VE can). You should look at your weather file and manually create a schedule to control the power of your boiler.

more

1

There a good number of other reasons why you would want to to maximize the runtime of your boiler. Looking at modcon boiler curves, you're more efficient at 20% rather 100%. Also, most fuel-burning boilers have a pre-purge and a post-purge cycle which leads to cycling losses (whether you can capture that in your modeling software is another thing). Also, depending on your boiler/tank arrangement and sequence of operation, you might be able to get lower return temp if you allow the boiler to take longer to heat up the tank, which would maximize your combustion efficiency (esp. for condensing)

( 2015-02-16 07:31:23 -0500 )edit

20% as the max for gas boiler efficiency? Interesting... Anyway, I would rather suggest to use heating loads profile as the basement for modulating schedule, it will be more real. Don't know another solution. Inter-variable dependence is a long-term need in E+.

( 2015-02-16 08:11:07 -0500 )edit

@Dinosaver When you say intervariable dependence, do you mean like you can implement using EMS?

( 2015-02-16 08:17:05 -0500 )edit

Not familiar with EMS in E+. I meant that in IES-VE we can use the output of another variable as a condition (or as a direct schedule) for adjustment of the one we are interested in. And you don't need to go deeper in the software, it is quite intuitive there (for me :)) Wish we had the same in E+. Or OS.

( 2015-02-16 08:40:45 -0500 )edit

@Dinosaver: that's precisely the type of stuff that EMS (Energy Management System) in E+ allows you to do. While it can seem a little bit intimidating at first, simple stuff isn't rocket science (IF statements for example, similar to the way you would write formulas in IES VE to do an outdoor reset for example). But you'll quickly see that there's a ton of untapped potential left...

( 2015-02-16 08:54:30 -0500 )edit