-
Notifications
You must be signed in to change notification settings - Fork 390
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
Implementation of On-Off Control Capabilities for the Variable Flow and Electric Low Temperature Radiant Systems #8113
Changes from all commits
b233cce
a23f07f
a6129ad
1780fc5
1175dd7
e14abb6
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -368,7 +368,6 @@ namespace LowTempRadiantSystem { | |
using namespace DataSurfaceLists; | ||
|
||
// SUBROUTINE PARAMETER DEFINITIONS: | ||
Real64 const MinThrottlingRange(0.5); // Smallest throttling range allowed in degrees Celsius | ||
static std::string const RoutineName("GetLowTempRadiantSystem: "); // include trailing blank space | ||
static std::string const Off("Off"); | ||
static std::string const SimpleOff("SimpleOff"); | ||
|
@@ -664,11 +663,6 @@ namespace LowTempRadiantSystem { | |
} | ||
|
||
thisRadSys.HotThrottlRange = Numbers(7); | ||
if (thisRadSys.HotThrottlRange < MinThrottlingRange) { | ||
ShowWarningError("ZoneHVAC:LowTemperatureRadiant:VariableFlow: Heating throttling range too small, reset to 0.5"); | ||
ShowContinueError("Occurs in Radiant System=" + thisRadSys.Name); | ||
thisRadSys.HotThrottlRange = MinThrottlingRange; | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yay gone! |
||
|
||
thisRadSys.HotSetptSched = Alphas(9); | ||
thisRadSys.HotSetptSchedPtr = GetScheduleIndex(Alphas(9)); | ||
|
@@ -760,11 +754,6 @@ namespace LowTempRadiantSystem { | |
} | ||
|
||
thisRadSys.ColdThrottlRange = Numbers(12); | ||
if (thisRadSys.ColdThrottlRange < MinThrottlingRange) { | ||
ShowWarningError("ZoneHVAC:LowTemperatureRadiant:VariableFlow: Cooling throttling range too small, reset to 0.5"); | ||
ShowContinueError("Occurs in Radiant System=" + thisRadSys.Name); | ||
thisRadSys.ColdThrottlRange = MinThrottlingRange; | ||
} | ||
|
||
thisRadSys.ColdSetptSched = Alphas(13); | ||
thisRadSys.ColdSetptSchedPtr = GetScheduleIndex(Alphas(13)); | ||
|
@@ -1225,11 +1214,6 @@ namespace LowTempRadiantSystem { | |
thisElecSys.ControlType = thisElecSys.processRadiantSystemControlInput(Alphas(6),cAlphaFields(6)); | ||
|
||
thisElecSys.ThrottlRange = Numbers(4); | ||
if (thisElecSys.ThrottlRange < MinThrottlingRange) { | ||
ShowWarningError(cNumericFields(4) + " out of range, reset to 0.5"); | ||
ShowContinueError("Occurs in " + CurrentModuleObject + " = " + Alphas(1)); | ||
thisElecSys.ThrottlRange = MinThrottlingRange; | ||
} | ||
|
||
thisElecSys.SetptSched = Alphas(7); | ||
thisElecSys.SetptSchedPtr = GetScheduleIndex(Alphas(7)); | ||
|
@@ -3107,12 +3091,12 @@ namespace LowTempRadiantSystem { | |
OperatingMode = HeatingMode; | ||
ControlNode = this->HotWaterInNode; | ||
MaxWaterFlow = this->WaterFlowMaxHeat; | ||
MassFlowFrac = (OffTempHeat - ControlTemp) / this->HotThrottlRange; | ||
MassFlowFrac = this->calculateOperationalFraction(OffTempHeat, ControlTemp, this->HotThrottlRange); | ||
} else if (ControlTemp > OffTempCool && this->CoolingSystem) { // Cooling mode | ||
OperatingMode = CoolingMode; | ||
ControlNode = this->ColdWaterInNode; | ||
MaxWaterFlow = this->WaterFlowMaxCool; | ||
MassFlowFrac = (ControlTemp - OffTempCool) / this->ColdThrottlRange; | ||
MassFlowFrac = this->calculateOperationalFraction(OffTempCool, ControlTemp, this->ColdThrottlRange); | ||
} else { // ControlTemp is between OffTempHeat and OffTempCool--unit should not run | ||
MassFlowFrac = 0.0; | ||
} | ||
|
@@ -4771,8 +4755,7 @@ namespace LowTempRadiantSystem { | |
|
||
OperatingMode = HeatingMode; | ||
|
||
HeatFrac = (OffTemp - ControlTemp) / this->ThrottlRange; | ||
if (HeatFrac < 0.0) HeatFrac = 0.0; | ||
HeatFrac = this->calculateOperationalFraction(OffTemp, ControlTemp, this->ThrottlRange); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Code reuse! w00t! |
||
if (HeatFrac > 1.0) HeatFrac = 1.0; | ||
|
||
// Set the heat source for the low temperature electric radiant system | ||
|
@@ -5087,6 +5070,19 @@ namespace LowTempRadiantSystem { | |
} | ||
} | ||
|
||
Real64 RadiantSystemBaseData::calculateOperationalFraction(Real64 const offTemperature, Real64 const controlTemperature, Real64 const throttlingRange) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hooray for a base class method! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Let's just say I had a great teacher! I was definitely following examples from the previous radiant work. Glad to be doing things in a way that heads E+ in the right direction. |
||
{ | ||
Real64 temperatureDifference = std::abs(offTemperature - controlTemperature); | ||
if (temperatureDifference <= 0.0) { | ||
return 0.0; // No temperature difference--turn things off (set to zero); technically shouldn't happen | ||
} else if (throttlingRange < 0.001) { | ||
return 1.0; // Throttling range is essentially zero and there is a temperature difference--turn it full on | ||
} else { | ||
return temperatureDifference/throttlingRange; // Temperature difference is non-zero and less than the throttling range--calculate the operation fraction | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There should be a space before and after the division operator. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Will fix this when we resolve the minimum throttling range issue. |
||
} | ||
} | ||
|
||
|
||
Real64 HydronicSystemBaseData::calculateHXEffectivenessTerm(Real64 const Temperature, // Temperature of water entering the radiant system, in C | ||
Real64 const WaterMassFlow, // Mass flow rate of water in the radiant system, in kg/s | ||
Real64 const FlowFraction, // Mass flow rate fraction for this surface in the radiant system | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -159,9 +159,11 @@ namespace LowTempRadiantSystem { | |
); | ||
|
||
Real64 setRadiantSystemControlTemperature(); | ||
|
||
|
||
Real64 calculateOperationalFraction(Real64 const offTemperature, Real64 const controlTemperature, Real64 const throttlingRange); | ||
|
||
virtual void calculateLowTemperatureRadiantSystem(ZoneTempPredictorCorrectorData &dataZoneTempPredictorCorrector, Real64 &LoadMet) = 0; | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Your editor left some trailing white space on this line, no worries for now, but I'd check to see if you can tell it to remove them upon saving the file. |
||
void updateLowTemperatureRadiantSystemSurfaces(); | ||
|
||
virtual void updateLowTemperatureRadiantSystem() = 0; | ||
|
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.
Makes sense, users can now have zero range to give on/off control.