blockTankCycle
Information
The tank operating conditions should match the operating limits and selection conditions of the chillers and HRCs. The highest temperature (at the top of the tank) should be limited by the maximum evaporator entering temperature per manufacturer’s recommendations. The lowest temperature (at the bottom of the tank) should be limited by the design CHW supply temperature. This gives the tank maximum ΔT and the actual storage capacity. However, this value is likely above the maximum ΔT that chillers and HRCs can achieve across the condenser or evaporator barrel (typically 11 K). Therefore, in order to fully leverage the TES capacity, two temperature cycles are needed.
The first tank cycle (higher temperature setpoint) is activated whenever all of the following conditions are true.
- All tank temperature sensors measure a value higher than the mean setpoint value of the second tank cycle for 5 min.
- The flow rate out of the lower port of the tank is positive (tank is charging) for 5 min.
The second tank cycle (lower temperature setpoint) is activated whenever both of the following conditions are true.
- All tank temperature sensors measure a value lower than the mean setpoint value of the first tank cycle for 5 min.
- The flow rate out of the lower port of the tank is negative (tank is discharging) for 5 min.
At initial time the tank cycle flag is set based on the tank temperature condition only from the above two clauses without a time delay. If neither condition is true, the tank cycle flag is set based on the flow condition only in the above two clauses without a time delay.
The minimum runtime of each tank cycle is fixed at 30 min.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Real | mConWatHexCoo_flow_nominal | Design total CW mass flow rate through condenser barrels (all units) | |
| Integer | nTTan | 0 | Number of tank temperature points |
| CW loop, TES tank and heat pumps | |||
| Real[2,2] | TTanSet | Tank temperature setpoints: 2 cycles with 2 setpoints | |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Buildings.Controls.OBC.CDL.Interfaces.RealInput | mConWatOutTan_flow | Mass flow rate out of lower port of TES tank (>0 when charging) | |
| Buildings.Controls.OBC.CDL.Interfaces.RealInput[nTTan] | TTan | TES tank temperature | |
| Buildings.Controls.OBC.CDL.Interfaces.IntegerOutput | idxCycTan | Index of active tank cycle | |
| Buildings.Controls.OBC.CDL.Reals.GreaterThreshold[nTTan] | criTem1 | Temperature criterion for first tank cycle | |
| Buildings.Controls.OBC.CDL.Logical.MultiAnd | allCriTem1 | All temperature criteria met | |
| Buildings.Controls.OBC.CDL.Reals.GreaterThreshold | criFlo1 | Flow criterion for first tank cycle | |
| Buildings.Controls.OBC.CDL.Reals.LessThreshold[nTTan] | criTem2 | Temperature criterion for first tank cycle | |
| Buildings.Controls.OBC.CDL.Logical.MultiAnd | allCriTem2 | All temperature criteria met | |
| Buildings.Controls.OBC.CDL.Conversions.BooleanToInteger | booToInt | Convert | |
| Buildings.Controls.OBC.CDL.Logical.Or | or2 | Neither of temperature criterion is true | |
| Buildings.Controls.OBC.CDL.Conversions.BooleanToInteger | booToInt3 | Convert | |
| Buildings.Controls.OBC.CDL.Conversions.BooleanToInteger | booToInt4 | Convert | |
| Buildings.Controls.OBC.CDL.Integers.Max | maxInt1 | Set cycle index as maximum | |
| Buildings.Controls.OBC.CDL.Logical.And | allCri2 | All criteria met | |
| Buildings.Controls.OBC.CDL.Logical.And | allCri1 | All criteria met | |
| Buildings.Controls.OBC.CDL.Integers.Switch | idxIni | Index at initial time | |
| Buildings.Controls.OBC.CDL.Logical.Timer | timAllCri1 | All criteria met for given time | |
| Buildings.Controls.OBC.CDL.Logical.Timer | timAllCri2 | All criteria met for given time | |
| Buildings.Controls.OBC.CDL.Integers.Switch | intSwi | Switch index | |
| Buildings.Controls.OBC.CDL.Integers.Sources.Constant | idx1 | Index | |
| Buildings.Controls.OBC.CDL.Integers.Switch | intSwi1 | Switch index | |
| Buildings.Controls.OBC.CDL.Integers.Sources.Constant | idx2 | Index | |
| Buildings.Controls.OBC.CDL.Logical.Not | criFlo2 | Flow criterion for second tank cycle | |
| Buildings.DHC.Plants.Combined.Controls.BaseClasses.IntegerArrayHold | hol | Hold for minimum runtime | |
| Buildings.Controls.OBC.CDL.Integers.GreaterThreshold | intGreThr | Convert the cycling index to boolean | |
| Buildings.Controls.OBC.CDL.Logical.Pre | pre1 | Value from previou state | |
| Buildings.Controls.OBC.CDL.Conversions.BooleanToInteger | booToInt1 | Reverted back to cycling index |
Revisions
-
February 24, 2023, by Antoine Gautier:
First implementation.