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

Revision history [back]

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 between your actual condition and the setpoint (the slope) (there's a pretty good series of free e-learning courses on controls on the Schneider Energy University if you don't know those)

This would allow you to modulate a little bit smarter and avoid overshooting, or in some cases avoid taking too long to reach the setpoint too... Whether it'll be worth it to implement PID or not depends on your application and the avoided cost you anticipate.

In EnergyPlus

The outdoor reset on the building loop is fairly easy to do in E+. I believe you can just use the SetpointManager:OutdoorAirReset to implement the reset.

For the boiler loop, I have trouble seeing how you can implement either P, PI or PID logic using only E+ objects... Because, to me, it feels like your question boils down to this: how do you implement P, PI or PID logic in EnergyPlus?

I think you might be forced to do it in EMS, but I haven't tried before... Maybe someone else can chime in.

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 between your actual condition and the setpoint (the slope) (there's a pretty good series of free e-learning courses on controls on the Schneider Energy University if you don't know those)

This would allow you to modulate a little bit smarter and avoid overshooting, or in some cases avoid taking too long to reach the setpoint too... Whether it'll be worth it to implement PID or not depends on your application and the avoided cost you anticipate.

In EnergyPlus

The outdoor reset on the building loop is fairly easy to do in E+. I believe you You can just use the SetpointManager:OutdoorAirReset to implement the reset.

While the help file still says it's for supply air temperature reset, which was its original intended use, it can be used for plant supply temperature reset (water).

For the boiler loop, I have trouble seeing how you can implement either P, PI or PID logic using only E+ objects... Because, to me, it feels like your question boils down to this: how do you implement P, PI or PID logic in EnergyPlus?

I think you might be forced to do it in EMS, but I haven't tried before... Maybe someone else can chime in.