-
Notifications
You must be signed in to change notification settings - Fork 389
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enhancement to crankcase heater #9949
Merged
Merged
Changes from 66 commits
Commits
Show all changes
76 commits
Select commit
Hold shift + click to select a range
106674e
initial commit
yujiex 6e81025
correct typo
yujiex 64441fa
Merge remote-tracking branch 'origin/develop' into crankcaseHeater
yujiex e276e35
Initial commmit of test file idf
yujiex b3be8f3
idd change, input reading and test for Coil:Cooling/Heating:DX
yujiex bbfdc1e
Fix unit test
yujiex 636e83c
idd change, input reading and testing of Coil:WaterHeating:AWHP
yujiex b0dab74
clang-format
yujiex b9ce8b3
add testfile to CMakeLists.txt
yujiex 9db1960
Apply crankcase heater capacity curve to DXCoils
yujiex 544b35d
Apply crankcase heater curve to variable speed coils
yujiex ad30083
Initial commit of tesetfile variableSpeedCoil crankcaseheater curve
yujiex 136a3d7
Modify testfiles
yujiex 244c788
add explicit return to unit test
yujiex b9e2903
Change curve field name to match existing pattern
yujiex a334a7d
add curve validation
yujiex b113828
Merge remote-tracking branch 'origin/develop' into crankcaseHeater
yujiex 2864dcd
Use the same temperature var for the curve and threshold
yujiex 37da88c
Add end of file new line
yujiex 752e761
Add unit tests for applying the heater capacity curve
yujiex ffb6e67
Merge remote-tracking branch 'origin/develop' into crankcaseHeater
yujiex 0b16e03
update doc
yujiex 5240550
fix idf and tests from idd change in merged develop
yujiex c577a8d
clang-format
yujiex 717a341
add comments to unit test
yujiex f624b7b
Add heater curve code in Coil:Cooling:DX:CurveFit:Performance
yujiex 0dbfbf1
Merge remote-tracking branch 'origin/develop' into crankcaseHeater
yujiex 031db77
Change to normalized curve
yujiex ae2b746
move curve to front, Coil:Cooling:DX:SingleSpeed
yujiex b69db40
move curve to front, Coil:Cooling:DX:MultiSpeed
yujiex e85c813
move coil to front, Coil:Heating:DX:SingleSpeed
yujiex fa4332e
adjust > NumAlphas threshold for Cooling:DX:SingleSpeed
yujiex e75f68c
adjust NumAlphas threshold in Coil:Cooling:DX:MultiSpeed
yujiex 1cbb8c3
move curve to front, Coil:Heating:DX:MultiSpeed
yujiex 481df18
move curve to front, Coil:Cooling:DX:TwoStageWithHumidityControlMode
yujiex a79d2d0
move curve to front, Coil:WaterHeating:AirToWaterHeatPump:Pumped
yujiex 46f7f24
move curve to front Coil:WaterHeating:AirToWaterHeatPump:Wrapped
yujiex 17a8fca
move curve to front, Coil:Cooling:DX:VariableSpeed
yujiex 8a500fc
move curve to front, Coil:Heating:DX:VariableSpeed
yujiex 59175e5
move curve to front, Coil:WaterHeating:AirToWaterHeatPump:VariableSpeed
yujiex 90fffbd
move curve to front, Coil:Cooling:DX:CurveFit:Performance
yujiex f8a0cb8
fix testfile .idf with inserted field
yujiex 7adea4b
fix unit test with added field
yujiex 610312b
Merge remote-tracking branch 'origin/develop' into crankcaseHeater
yujiex 0a0e9f0
fix WaterThermalTanks unit test
yujiex e7b7b0f
Merge remote-tracking branch 'origin/develop' into crankcaseHeater
yujiex 0cce1b6
add new field to the expand object epfilter.f90
yujiex de06e01
try fixing long string
yujiex 4c0d6d4
clang-format
yujiex d81a5d0
fix idf raw string issue
yujiex e3fc4f9
clang-format
yujiex b0bf50a
add transition code
yujiex e34a6fe
Merge remote-tracking branch 'origin/develop' into crankcaseHeater
yujiex 3060af4
unify input field name
yujiex 20de981
Merge remote-tracking branch 'remotes/origin/develop' into crankcaseH…
mjwitte cb18d93
field name change to Crankcase Heater Capacity Function of ...
yujiex 17cfbdf
idd increment min-field by 1 for new field within min-field
yujiex baed7f9
fix Cooling:DX:VariableSpeed version transition
yujiex 38270b6
Revert "fix Cooling:DX:VariableSpeed version transition"
yujiex 0780657
fix variable speed coil transition increment CurArgs
yujiex 5f02a7d
Merge remote-tracking branch 'origin/develop' into crankcaseHeater
yujiex 6358b58
reduce min-fields Cooling:DX:MultiSpeed (limit to 2 spd)
yujiex ec1f908
Merge remote-tracking branch 'origin/develop' into crankcaseHeater
yujiex d6607cd
Fix unit test after merging
yujiex 95e85af
Merge remote-tracking branch 'remotes/origin/develop' into crankcaseH…
mjwitte cfeba11
Minor rules edit
mjwitte 2ca09b0
fix global replace err, change 11 back to 10
yujiex 6b62dc4
fix non-matching cAlphaFields and AlphArray
yujiex cf72d6e
Merge remote-tracking branch 'origin/develop' into crankcaseHeater
yujiex 123b82e
min-field correction
yujiex 75966f3
fix unit test after merging
yujiex c0ee5fd
fix transition after merge conflict
yujiex dd5ccff
Fix test idf after merge
yujiex 19a0a8e
crankcaseHeaterCapacityCurveIndex use int, not Real
yujiex d168ed6
Merge remote-tracking branch 'origin/develop' into crankcaseHeater
Myoldmopar aac8da8
Blending transition rules together, cleaning up fortran, fixing bad v…
Myoldmopar File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,162 @@ | ||
Enhancement of Crankcase Heater in EnergyPlus | ||
================ | ||
|
||
**Yujie Xu, Tianzhen Hong** | ||
|
||
**Lawrence Berkeley National Laboratory*** | ||
|
||
- Original Date: Apr 11, 2023 | ||
- Modified Date: Apr 11, 2023 | ||
|
||
## Justification for Feature Update | ||
|
||
Crankcase heaters use a simple electrical circuit to create heat within the | ||
crankcase when the compressor of chiller or heat pump is not in use. The heat | ||
keeps the refrigerant from condensing and prevents refrigerant from migrating | ||
through the seals into the oil. Poor control of crankcase heater could result in | ||
excessive energy consumption as high as about 2-6% of the total cooling energy | ||
[1]. Some of the existing products start to provide variable heater power based | ||
on different outdoor temperature condition [2], [3]. Currently, EnergyPlus can | ||
only model a constant power crankcase heater with a temperature cutoff. This | ||
feature proposes to enhance the crankcase heater in EnergyPlus to allow for | ||
variable heater power, which enables to model realistic performance of heat | ||
pumps. | ||
|
||
## Overview ## | ||
|
||
According to [1], existing crankcase heater control mode is usually one or a combination of the following: | ||
1. Always on | ||
2. Positive temperature coefficient (PTC) heater: decreased power as a result of increased heater temperature, which causes increased resistance | ||
3. Off when compressor is on | ||
4. Turning off when ambient temperature is greater than some threshold or the difference between the compressor and the ambient temperature is larger than the threshold | ||
|
||
EnergyPlus uses a combination of the above option 3 and 4 and models a | ||
constant-power crankcase heater with a temperature threshold to switch on in | ||
cold weather when the compressor is off. | ||
|
||
For a series of heating/cooling coil objects (*Coil:Cooling:DX:\* *, | ||
*Coil:Heating:DX:\* *, and *Coil:WaterHeating:AirToWaterHeatPump:\* *, the following | ||
two fields are used in crankcase heater calculations. According to the | ||
documentation, the crankcase heater is switched on if the outdoor air dry-bulb | ||
temperature is below the "Maximum Outdoor Dry-bulb Temperature for Crankcase | ||
Heater Operation" and the compressor is not running. | ||
|
||
Ni, \field Crankcase Heater Capacity | ||
\type real | ||
\minimum 0.0 | ||
\default 0.0 | ||
\units W | ||
\ip-units W | ||
Nj, \field Maximum Outdoor Dry-Bulb Temperature for Crankcase Heater Operation | ||
\type real | ||
\minimum 0.0 | ||
\default 10.0 | ||
\units C | ||
|
||
For VRF objects and the WaterToAirHeatPump (HVACTemplate:System:VRF, | ||
AirConditioner:VariableRefrigerantFlow), the following four fields are used in | ||
crankcase heater-related calculations. Each compressor has a constant power | ||
crankcase heater. The condensing unit part-load ratio determines how many | ||
crankcase heaters are on when the outdoor temperature is lower than the | ||
threshold specified in "Maximum Outdoor Dry-Bulb Temperature for Crankcase | ||
Heater". If there are n compressors, then k crankcase heater is on when | ||
part-load-ratio is less than 1 – k/n, during the period when the outdoor | ||
temperature is low enough. | ||
|
||
Ni, \field Crankcase Heater Power per Compressor | ||
\type real | ||
\units W | ||
\default 33.0 | ||
\note Enter the value of the resistive heater located in the compressor(s). This heater | ||
\note is used to warm the refrigerant and oil when the compressor is off. | ||
Nj, \field Number of Compressors | ||
\type integer | ||
\units dimensionless | ||
\default 2 | ||
\note Enter the total number of compressor. This input is used only for crankcase | ||
\note heater calculations. | ||
Nk, \field Ratio of Compressor Size to Total Compressor Capacity | ||
\type real | ||
\units W/W | ||
\default 0.5 | ||
\note Enter the ratio of the first stage compressor to total compressor capacity. | ||
\note All other compressors are assumed to be equally sized. This inputs is used | ||
\note only for crankcase heater calculations. | ||
Nl, \field Maximum Outdoor Dry-Bulb Temperature for Crankcase Heater | ||
\type real | ||
\units C | ||
\default 5.0 | ||
\note Enter the maximum outdoor temperature above which the crankcase heaters are disabled. | ||
|
||
Some crankcase heater products have variable power at different outdoor | ||
temperature (Figure 1). However, the heater power in EnergyPlus is constant. | ||
This feature proposes to enable modeling of temperature-dependent crankcase | ||
heater power. | ||
|
||
![variableCapacityCrankcaseHeater](variableCapacityCrankcaseHeater.png) | ||
<p style="text-align: center;"> Figure 1. Example of a crankcase heater with different power output at different temperature [2].</p> | ||
|
||
## Approach | ||
|
||
To allow for a non-constant crankcase heater power, the feature proposes to add | ||
an optional field enabling users to specify a curve or lookup table after the | ||
field "Crankcase Heater Capacity". The curve or lookup table can describe the | ||
temperature dependent heater power. If this field is missing or empty, the | ||
default assumption is constant crankcase heater power which is consistent with | ||
the current EnergyPlus behavior. See section “IDD Object changes” for more | ||
details. | ||
|
||
## Testing/Validation/Data Source(s) | ||
|
||
The feature will be tested and demonstrated with a test file derived from | ||
MultiSpeedHP_StagedThermostat.idf | ||
|
||
## IDD Object changes | ||
|
||
For the following idd objects which contain the input field *Crankcase Heater | ||
Capacity*, an optional input field, *Outdoor Temperature Dependent Crankcase | ||
Heater Capacity Curve Name*, will be add to reference a curve or table object | ||
that defines the relationship between outdoor air temperature and crankcase | ||
heater capacity. | ||
|
||
* Coil:Cooling:DX:CurveFit:Performance | ||
* Coil:Cooling:DX:SingleSpeed | ||
* Coil:Cooling:DX:MultiSpeed | ||
* Coil:Cooling:DX:VariableSpeed | ||
* Coil:Cooling:DX:TwoStageWithHumidityControlMode | ||
* Coil:Heating:DX:SingleSpeed | ||
* Coil:Heating:DX:MultiSpeed | ||
* Coil:Heating:DX:VariableSpeed | ||
* Coil:WaterHeating:AirToWaterHeatPump:Pumped | ||
* Coil:WaterHeating:AirToWaterHeatPump:Wrapped | ||
* Coil:WaterHeating:AirToWaterHeatPump:VariableSpeed | ||
|
||
The added optional field is: | ||
|
||
Ai, \field Crankcase Heater Capacity Function of Outdoor Temperature Curve Name | ||
\note A Curve:* or Table:Lookup object encoding the relationship between | ||
\note the crankcase heater capacity and the outdoor air temperature. When this field is | ||
\note missing or empty, constant crankcase heater capacity will be assumed. | ||
|
||
For the following idd objects with the "Crankcase Heater Power per Compressor" | ||
field, the addition of an optional capacity curve field will be combined in a | ||
VRF-focused feature in the future. | ||
|
||
* HVACTemplate:System:VRF | ||
* AirConditioner:VariableRefrigerantFlow | ||
* AirConditioner:VariableRefrigerantFlow:FluidTemperatureControl | ||
* AirConditioner:VariableRefrigerantFlow:FluidTemperatureControl:HR | ||
|
||
## Proposed additions to Meters: | ||
|
||
N/A | ||
|
||
## Proposed Report Variables: | ||
|
||
N/A | ||
|
||
## References | ||
|
||
[1] J. McHugh, M. Energy, A. German, and F. Energy, "Heat Pump Controls: Decarbonizing Buildings While Avoiding Electric Resistance Heating and Higher Net Peak Demand," presented at the 2022 Summer Study on Energy Efficiency in Buildings, California, California, 2022. | ||
[2] EasyHeat, "Crankcase Heater Specification Sheet," 2013. [Online]. Available: https://www.appleton.emerson.com/documents/specification-sheet-crankcase-heaters-40001-004-easyheat-en-7440916.pdf | ||
[3] Pentair, "Self-regulating crankcase heater," 2014. |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, datasets updated manually with new field which will require transition.