Skip to content

Commit

Permalink
Merge pull request #9979 from NREL/NFP-Chiller-Plant-Support-for-Carb…
Browse files Browse the repository at this point in the history
…on-Initiatives

New plant heat pump features and supervisory controller
  • Loading branch information
mjwitte authored Aug 23, 2023
2 parents 273aede + 5b89364 commit a87b71b
Show file tree
Hide file tree
Showing 42 changed files with 27,838 additions and 423 deletions.
Binary file added design/FY2023/DivertingValvePlant.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
610 changes: 610 additions & 0 deletions design/FY2023/NFP_Chiller Plant Support for Carbon Initiatives-.md

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions doc/engineering-reference/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,9 @@ set(INCLUDED_TEX
# to get the list of inluded images, go to the root of the document folder and:
# grep -r '\\includegraphics' * | cut -d ':' -f 2 | rev | cut -d '{' -f 1 | rev | cut -d '}' -f 1 | sed 's/^/ /g' | sort -n -t'.' -k 1.14
set(INCLUDED_IMAGES
${PROJECT_SOURCE_DIR}/engineering-reference/media/DHRU_diag.png
${PROJECT_SOURCE_DIR}/engineering-reference/media/HW_reset.png

${PROJECT_SOURCE_DIR}/engineering-reference/media/SZVAV_Fan_Control_FanCoil.jpg
${PROJECT_SOURCE_DIR}/engineering-reference/media/SetPointManager-ResetForReturnControl1.png
${PROJECT_SOURCE_DIR}/engineering-reference/media/SetPointManager-ResetForReturnControl2.png
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file added doc/engineering-reference/media/DHRU_diag.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/engineering-reference/media/HW_reset.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ \subsection{Summary of Load Distribution Schemes}\label{summary-of-load-distribu

\begin{figure}[hbtp] % fig 124
\centering
\includegraphics{media/image1974.png}\caption{Loop Capacitance Tank Models \protect \label{loop-capacitance-tank-models}}
\includegraphics{media/image1974.png}\caption{Load Distribution Schemes \protect \label{load-distribution-schemes}}
\end{figure}

\begin{itemize}
Expand Down Expand Up @@ -564,6 +564,71 @@ \subsubsection{Outdoor Drybulb Range Based Operation, Outdoor Wetbulb Range Base

The various ``PlantEquipmentOperation:Outdoor*'' statements define the different ranges of the various environmental parameters and which equipment list is valid for each range. After the keyword and the identifying name, a series of data trios is expected. In each trio, there is a lower limit for the load range, an upper limit for the load range, and a name that links to an equipment availability list (the ``PlantEquipmentList'').

\subsubsection{Component Setpoint Based Operation}\label{component-setpoint-based-operation}

PlantEquipmentOperation:ComponentSetpoint provides an alternative way to control plant equipment operation. Equipment is listed in order and loads are calculated for each individual peice of equipment using the difference between the temperature at a demand node, typically the inlet node, and the temperature of a setpoint node, typically the outlet node. These calculated loads are then distributed to the specific peice of equipment that they were calculated for.

\begin{equation}
\dot Q_{load} = {\dot m}{c_p}( {T_{demand} - T_{setpoint}} )
\end{equation}

\subsubsection{Supervisory Control of Heat Pumps that Changeover Between Heating and Cooling Operation}\label{supervisory-changeover-heating-cooling-operation}

PlantEquipmentOperation:ChillerHeaterChangeover provides capabilities to control multiple plant loops using just one operation scheme. This operation scheme is intended for commercial building applications with hydronic heating and cooling systems served by heatpumps. While most plant controls in EnergyPlus provide control over operation of a single plant loop, some applications require heating and cooling plants to be controlled together. Heat pump type plant equipment systems can provide heating or cooling or both. Individual air source plant heat pumps can only operate in cooling or heating at a given time. However in EnergyPlus, the plant modeling approach currently dictates that the heating loops and cooling loops are separate and equipment is connected to one or the other for the entire simulation. Therefore a plant heat pump is modeled with two companion machines that represent a single real machine. The heating side companion is connected to the heating loop and the cooling side companion is connected to the cooling loop.

PlantEquipmentOperation:ChillerHeaterChangeover provides supervisory control over both the heating and cooling systems so that switching the operation between heating and cooling can be coordinated adn take in consideration the loads on the building and plant systems. In addition to a main set of one or more heat pumps, this operation scheme controls auxiliary boilers and a special water to water heat pump that is dedicated to moving heat between the returns of cooling and heating distribution systems. The control decisions involve turning heat pump equipment on and off, calculating and applying setpoint temperatures, calculating and applying load distributions for back up boilers. Control decisions are based on inputs to the PlantEquipmentOperation:ChillerHeaterChangeover, outdoor air temperatures, current building loads, current loads on plant loops. The rest of this section provides more detail. The code is in EquipAndOperation.cc/hh.

The control routine detects the how the building is currently being loaded as part of deciding how the heat pump equipment should be run. These so-called ``Polled Building Loads'' mimic what a real building automation system might do to understand what is happening in the building. These detected loads are reported as ``Supervisory Plant Operation Polled Building Heating Load'' and ``Supervisory Plant Operation Polled Building Cooling Load.'' The loads are determined from predicted sensible loads to setpoint, air system ventilation loads, and any process loads (see routine named DetermineCurrentBuildingLoads). The input to the operation scheme includes the name of a zone list. The zones in that list are polled to aggregate the sum of sensible cooling and heating loads predicted by the zone heat balance model. These are loads-to-setpoint with the sign convention such that cooling loads are negative and summations neglect values that indicate times of no load. These are sensible heat load rates before applying multipliers so zone multiplier and zone list multiplier impacts are applied on a per zone basis.

\begin{equation}
\dot Q_{ZonePredictedCooling} = \sum_{n=1}^{zones} \min({0.0, \dot Q_{OutputRequiredToCoolingSP}}) {Mult_{zonelist}}
\end{equation}
\begin{equation}
\dot Q_{ZonePredictedHeating} = \sum_{n=1}^{zones} \max({0.0, \dot Q_{OutputRequiredToHeatingSP}}) {Mult_{zonelist}}
\end{equation}
Ventilation loads on the air system are modeled from the total heat transfer needed to bring the outdoor air to the conditions of the return air. The program detects which primary air systems are connected to zones included in the list of polled zones. Then ventilation loads, which need to be added to the sensible predicted zone loads, are modeled using the mass flow rate multiplied by the change in enthalpy.
\begin{equation}
\dot Q_{AirSysVentCooling} = \sum_{n=1}^{AirSystems} min(0.0, {\dot m_{OA}} ( {h_{ret}} - {h_{OA}}))
\end{equation}
\begin{equation}
\dot Q_{AirSysVentHeating} = \sum_{n=1}^{AirSystems} max(0.0, {\dot m_{OA}} ( {h_{ret}} - {h_{OA}}))
\end{equation}
Process loads on a plant system that are not associated with conditioning the building's zones are included from any LoadProfile:Plant objects connected to the plant loops controlled by this operation scheme.
\begin{equation}
\dot Q_{ProcessCooling} = \sum_{n=1}^{LoadProfiles} min({0.0, \dot Q_{n,ProcessLoad}})
\end{equation}
\begin{equation}
\dot Q_{ProcessHeating} = \sum_{n=1}^{LoadProfiles} max({0.0, \dot Q_{n,ProcessLoad}})
\end{equation}
Finally the overall polled building loads are combined from the three components.
\begin{equation}
\dot Q_{BuildingCooling} = \dot Q_{ZonePredictedCooling} + \dot Q_{AirSysVentCooling} + \dot Q_{ProcessCooling}
\end{equation}
\begin{equation}
\dot Q_{BuildingHeating} = \dot Q_{ZonePredictedHeating} + \dot Q_{AirSysVentHeating} + \dot Q_{ProcessHeating}
\end{equation}

PlantEquipmentOperation:ChillerHeaterChangeover also determines current loads on the plant loops to use in control decisions. Plant loading uses a SingleSetPoint scheme in much the same way as for \hyperref[component-setpoint-based-operation]{Component Setpoint Based Operation}. Therefore single temperature setpoint values (Node().TempSetPoint) are used and applied as described in \hyperref[loop-demand-calculation-scheme-singlesetpoint]{Loop Demand Calculation Scheme SingleSetPoint} (regardless of the setting in the PlantLoop object). These calculations $\dot Q_{LoopDemand} = {\dot m }{ C_p} { \Delta {T}} $ are used to determine plant loading and the values calculated are reported as ``Supervisory Plant Operation Primary Plant Heating Load'' and ``Supervisory Plant Operation Primary Plant Cooling Load.'' The routines detect if there is a buffer tank (ThermalStorage:ChilledWater:Mixed or ThermalStorage:ChilledWater:Stratified) on the supply side inlet branch of the primary chilled water loop and if there is, the outlet node of the buffer tank is used for the temperature of the fluid entering the supply side when determining primary hydronic cooling load. If a dedicated heatpump for recovery is being controlled, the loads on secondary plant loops are also determined using single setpoint method with the loop temperature determined at the inlet of the source sides of the water-to-water heatpump companion machines (HeatPump:PlantLoop:EIR:Cooling and HeatPump:PlantLoop:EIR:Heating). These secondary plant loads are reported to the output variables called ``Supervisory Plant Operation Secondary Plant Heating Load'' and ``Supervisory Plant Operation Secondary Plant Cooling Load.''

The supervisory control routine uses the results of building and plant loads at the current timestep to decide if the heat-pump-based hydronic plant should be operated in one of four modes: off, heating-only, cooling-only, or simultaneous-heating-and-cooling. If $\dot Q_{BuildingHeating}$ is less than zero and $\dot Q_{BuildingCooling}$ is also negative (cooling loads are negative) then based on builing loads, the plant is expected to be in cooling-only mode. if $\dot Q_{BuildingCooling}$ is positive and $\dot Q_{BuildingHeating}$ is postive, then the plant is expected to be in heating-only mode. However, if the outdoor air temperature is lower than the input used in the field called ``Outdoor Low Temperature'' then the heat pump cannot operate in heating and the mode is reset to off. If the building shows both heating and cooling loads, when $\dot Q_{BuildingHeating}$ is postive and $\dot Q_{BuildingCooling}$ is negative, then the plant is expected to be in simultaneous-heating-and-cooling mode. In the case of a very small plant with only a single heat pump that cannot operate in simultaneous mode, the plant is set to cooling-only or heating-only depending on which has the more dominant load. However, if the outdoor air temperature is lower than the input used in the field called ``Outdoor Low Temperature'' then the heat pump cannot operate in heating and the mode is reset to cooling-only. After the building loads have been used, additional changes in mode are considered using the current plant loads. If the building loads indicate that the plant is expected to be in heating-only mode but the current primary cooling hydronic plant load is negative, $\dot Q_{LoopDemand, ChW} < 0.0$, then the mode is changed to simultaneous-heating-and-cooling (if available). Similarly, if the building loads indicate that the plant is expected to be in cooling-only mode but the current primary heating hydronic plant load is positive, $\dot Q_{LoopDemand, HW} > 0.0$, and the outdoor air temperature is higher than the minimum limit, then the mode is changed to simultaneous-heating-and-cooling (if available). The selected mode is reported to the output variable called ``Supervisory Plant Heat Pump Operation Mode.''

Once the supervisory control has determined the mode, equipment is dispatched based on the user input entered that declare what equipment should be operated for each of the three operating modes. This input is entered in the PlantEquipmentOperation:CoolingLoad and PlantEquipmentOperation:HeatingLoad and the associated PlantEquipmentLists. The cooling companion machines are listed in the PlantEquipmentLists named by PlantEquipmentOperation:CoolingLoad and the heating companion machines are listed in the PlantEquipmentLists named by PlantEquipmentOperation:HeatingLoad. The load-range-based approach is used to select between different sets of equipment. The equipment is not directly loaded, but rather a temperature setpoint is placed on the outlet node (load side) and the component is set to ``ON'' and ``Available.''
This supervisory control includes important temperature inputs that are used for limits and controlling setpoints. ``Primary Cooling Plant Setpoint Temperature,'' or ${T_{set, ChW, Prim}}$, is the target temperature for the primary chilled water plant. When machines are called to operate as chillers the outlet node's temperature setpoint is set to this value. The temperature setpoint is also placed on the supply side outlet node.

\begin{figure}[hbtp]
\centering
\includegraphics[width=0.9\textwidth, height=0.9\textheight, keepaspectratio=true]{media/HW_reset.png}
\caption{Hot Water Temperature Setpoint Vs Outdoor Air Temperature} \protect \label{fig:HW-reset-aux-backup-setpoint-reset}
\end{figure}

This operation scheme includes special handling of a water-to-water heat pump situated between the return hot water and return chilled water in a building's hydronic plant system. Operating the mechanical heat pump between these two return streams offers an efficient way to move heat between them. The figure shows how this operation scheme expects the unit to be connected. The companion approach to heating and cooling versions of the same machine used in EnergyPlus offers a way to have one machine get plumbed into different loops. The diagram shows an ``X'' configuration for a heat pump machine that is modeled as having a heating companion and a cooling companion. Whenever either side is operating the heat transfer is in the same general direction with heat moving from the chilled water to the hot water. The companion side that is in effect at any given time is the one being controlled, so that the conditions leaving the the load side are controlled to meet a setpoint. A cooling-led heat pump will attempt to cool the chilled water supply inlet branch to the setpoint, while at the same time beneficial heat is transferred to the hot water loop in sort of an uncontrolled way. A heating-led heat pump will attempt to heat the hot water supply inlet branch to the setpoint, while providing beneficial cooling to the chilled water returns.

\begin{figure}[hbtp]
\centering
\includegraphics[width=0.9\textwidth, height=0.9\textheight, keepaspectratio=true]{media/DHRU_diag.png}
\caption{Dedicated Heat Recovery Heat Pump} \protect \label{fig:dhru-plant-config}
\end{figure}

\subsection{Condenser Operation Schemes}\label{condenser-operation-schemes}

This is very similar to the plant operation schemes, but there are several more options available with the CondenserLoop. The condenser operation schemes apply to the equipment on the `supply side' of the condenser loop---pumps, cooling towers, ground coupled heat exchangers, etc. The keywords select the algorithm that will be used to determine which equipment is available for each time step. The `\emph{Range Based Operation'} schemes select a user specified set of equipment for each user specified range of a particular simulation variable. `\emph{Load} \emph{Range} \emph{Based'} ~schemes compare the demand on the condenser supply side with specified load ranges and associated equipment lists. `\emph{Outdoor\ldots{}Range Based'} schemes compare the current value of an environmental parameter with user specified ranges of that parameter. See the Input Output Reference for input field details.
Expand Down
Loading

4 comments on commit a87b71b

@nrel-bot-2
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

develop (mjwitte) - x86_64-Linux-Ubuntu-22.04-gcc-11.4: OK (2713 of 2713 tests passed, 0 test warnings)

Build Badge Test Badge

@nrel-bot
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

develop (mjwitte) - Win64-Windows-10-VisualStudio-16: Build Failed

Failures:\n

API Test Summary

  • Failed: 10
  • notrun: 5

integration Test Summary

  • Passed: 2
  • Failed: 781

Build Badge Test Badge

@nrel-bot-2
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

develop (mjwitte) - x86_64-Linux-Ubuntu-22.04-gcc-11.4-UnitTestsCoverage-Debug: OK (1910 of 1910 tests passed, 0 test warnings)

Build Badge Test Badge Coverage Badge

@nrel-bot-2c
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

develop (mjwitte) - x86_64-Linux-Ubuntu-22.04-gcc-11.4-IntegrationCoverage-Debug: OK (784 of 784 tests passed, 0 test warnings)

Build Badge Test Badge Coverage Badge

Please sign in to comment.