Fix #11039: supp heat blocked by negative QToHeatSetPt#11546
Open
brianlball wants to merge 7 commits intodevelopfrom
Open
Fix #11039: supp heat blocked by negative QToHeatSetPt#11546brianlball wants to merge 7 commits intodevelopfrom
brianlball wants to merge 7 commits intodevelopfrom
Conversation
Unit test proves supplemental heating is blocked when QToHeatSetPt < 0 despite zone demand exceeding primary coil capacity. The check at controlUnitarySystemtoLoad (~line 8125) compares FullSensibleOutput against QToHeatSetPt — when the zone predictor underestimates heating need, QToHeatSetPt goes negative and backup never fires. Test will pass once the fix is applied.
…into issue-11039-supp-heat-blocked
Supp check used QToHeatSetPt as threshold — when negative (predictor overestimates zone temp), positive coil output always passes check, blocking supp. Two fixes: 1. Constant-fan ZoneLoad overwrite (lines 10808/10830/10856/10878): use max(QToHeatSetPt, QZnReq) to preserve original demand signal. Previously missed the DualHeatCool deadband case at line 10878. 2. Supp check zero-floor: when HeatingLoad is true but suppLoadTarget is negative, floor at 0 so supp fires when primary can't achieve neutral output. Handles SingleHeat where QZnReq==QToHeatSetPt. VSHeatPump integration test: 53.25 → 15.00 unmet heating hours (-72%).
New test: SuppHeatBlocked_ConstantFan_DualHeatCool — continuous fan, DualHeatCool deadband, QToHeatSetPt=-500, QToCoolSetPt=3000. Verifies supp fires via the zero-floor fix when primary targets negative load. Fails on unfixed code, passes with fix. Reverted line 10878 (DualHeatCool deadband) from max(QToHeatSetPt,QZnReq) back to QToHeatSetPt. The max() produced ZoneLoad=0 which triggered the small-load guard at line 10942, killing HeatingLoad. The supp check zero-floor handles this case instead.
…into issue-11039-supp-heat-blocked
|
|
Collaborator
|
Is there a defect file to test? I won't believe this change unless I see a defect file's result change for the better. |
|
|
Contributor
Author
max(QToHeatSetPt, QZnReq) produced ZoneLoad=0 in deadband, triggering the small-load guard that cleared HeatingLoad. Supp heat zero-floor at line 8207 is sufficient alone.
|
|
|
|
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
QToHeatSetPtnegative. The supp check (FullSensibleOutput < QToHeatSetPt) always passes when QToHeatSetPt is negative.initLoadBasedControloverwritesZoneLoad = QToHeatSetPt, making the primary coil target the wrong (negative) load. The supp check then sees the primary "met" the target and doesn't fire.ZoneLoadatmax(QToHeatSetPt, QZnReq)in 3 constant-fan heating paths to preserve original demand signal; (2) floorsuppLoadTargetat 0 whenHeatingLoadis true, so supp fires when primary can't achieve neutral output.Test plan
SuppHeatBlocked_NegativeQToHeatSetPt— cycling fan, SingleHeat, negative QToHeatSetPt. Fails on develop, passes with fix.SuppHeatBlocked_ConstantFan_DualHeatCool— constant fan, DualHeatCool deadband, negative QToHeatSetPt. Fails on develop, passes with fix.