-
Notifications
You must be signed in to change notification settings - Fork 17
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
Electric panel #1853
base: master
Are you sure you want to change the base?
Electric panel #1853
Conversation
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.
Thanks for the making all these cases! It's a lot to think through.
I should follow up with you about getting the capacity value for each of the HVAC configs so I can also check the load values.
_model, _hpxml, hpxml_bldg = _test_measure(args_hash) | ||
|
||
_test_service_feeder_power_and_breaker_spaces(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 0, 0) | ||
_test_service_feeder_power_and_breaker_spaces(hpxml_bldg, HPXML::ElectricPanelLoadTypeCooling, 2011, 1) |
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.
For 120V room AC, we assume they can plug into existing receptacles, so 0 breaker spaces.
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.
Why not assume dedicated circuit here like all other 120V system types?
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.
I am thinking more about their usage in terms of an upgrade. People installing new 120V room ACs will unlikely be installing a new dedicated branch circuit for it. Instead, they will plug into an existing receptacle circuit that do not have other loads plugged in, which also counts as a dedicated circuit. This is also the case for most level 2 EV chargers.
When we add the appropriate number of general lighting/receptacle branch circuits later (via NREL/resstock#1341), it may become a bit clearer that we are accounting for plug loads like room ACs as part of receptacles.
_model, _hpxml, hpxml_bldg = _test_measure(args_hash) | ||
|
||
_test_service_feeder_power_and_breaker_spaces(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 295, 1) | ||
_test_service_feeder_power_and_breaker_spaces(hpxml_bldg, HPXML::ElectricPanelLoadTypeCooling, 300 + 4022, 2) |
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.
For this combo, the central AC would share the 120V AHU. So it's 295 + 4022, if 295 is for the 120V AHU.
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.
It's a bit awkward that each of these returns the total required for load but partial count for spaces because we take the max of heating/cooling, but sum the breaker spaces. E.g., for cooling, 2 is for the ODU only but works here because we sum the breaker spaces.
I don't have a good suggestion here, but just wanted to point it out.
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.
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) | ||
_model, _hpxml, hpxml_bldg = _test_measure(args_hash) | ||
|
||
_test_service_feeder_power_and_breaker_spaces(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 295 + 10551, 2) |
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.
For furnace with CAC, we should always let heating dictate the AHU load. It's a 240V AHU here. Cooling would be 295 + 4022, if 295 is the load for the 240 AHU.
_model, _hpxml, hpxml_bldg = _test_measure(args_hash) | ||
|
||
_test_service_feeder_power_and_breaker_spaces(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 393 + 14067, 4) | ||
_test_service_feeder_power_and_breaker_spaces(hpxml_bldg, HPXML::ElectricPanelLoadTypeCooling, 300 + 4022, 2) |
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.
Cooling would be 393 + 4022 per logic above
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) | ||
_model, _hpxml, hpxml_bldg = _test_measure(args_hash) | ||
|
||
_test_service_feeder_power_and_breaker_spaces(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 295, 1) |
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.
Is this using the 120V AHU regression? Because for the electric furnace only in the next example, the AHU load is the same.
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) | ||
_model, _hpxml, hpxml_bldg = _test_measure(args_hash) | ||
|
||
_test_service_feeder_power_and_breaker_spaces(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 210 + 3114 + 96, 3) |
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.
See above
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) | ||
_model, _hpxml, hpxml_bldg = _test_measure(args_hash) | ||
|
||
_test_service_feeder_power_and_breaker_spaces(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 202 + 5839, 2) |
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.
AHU load should be the same between heating and cooling.
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) | ||
_model, _hpxml, hpxml_bldg = _test_measure(args_hash) | ||
|
||
_test_service_feeder_power_and_breaker_spaces(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 202 + 5839 + 10551, 6) |
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.
Heating breaker space: 202+10551 = 10753 -> 2 for indoor + 2 for outdoor = 4
0 for cooling
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.
Where'd the 5839 go?
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) | ||
_model, _hpxml, hpxml_bldg = _test_measure(args_hash) | ||
|
||
_test_service_feeder_power_and_breaker_spaces(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 42 + 3114 + 17584, 6) |
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.
No AHU load, where does the 42 come from? 4 spaces for backup + 2 for HP, 6 is right.
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) | ||
_model, _hpxml, hpxml_bldg = _test_measure(args_hash) | ||
|
||
_test_service_feeder_power_and_breaker_spaces(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 42 + 3114 + 655, 3) |
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.
Same question about 42, 3 spaces is right
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.
Some more comments
_model, _hpxml, hpxml_bldg = _test_measure(args_hash) | ||
|
||
_test_service_feeder_power(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 0) | ||
_test_service_feeder_power(hpxml_bldg, HPXML::ElectricPanelLoadTypeCooling, 400 + 4022) |
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.
Why is AHU 400 here when it was 300 in the last example and both ODUs are 4022?
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.
0.5 W/cfm for CAC only and 0.375W/cfm for attachedToFurnace
_model, _hpxml, hpxml_bldg = _test_measure(args_hash) | ||
|
||
_test_service_feeder_power(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 393 + 14067) | ||
_test_service_feeder_power(hpxml_bldg, HPXML::ElectricPanelLoadTypeCooling, 300 + 4022) |
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.
This tells me heating and cooling have different flow rates, which is fine. Ideally, AHU load should be the same between heating and cooling since it is shared. Maybe it is a wishlist item.
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.
Alternatively, we could:
- take the max of heating and cooling air handler loads (the proposed fix)
- always take the heating air handler load
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) | ||
_model, _hpxml, hpxml_bldg = _test_measure(args_hash) | ||
|
||
_test_service_feeder_power(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 82 + 10766) |
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.
Do gas and electric boiler not use the same pump? Wondering why it is 96 for gas and 82 for electric here (assuming heating capacity is the same).
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.
Is there an inconsistency in the docs around EAE for in-unit boilers? Elec gives 170 and gas gives 200...
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) | ||
_model, _hpxml, hpxml_bldg = _test_measure(args_hash) | ||
|
||
_test_service_feeder_power(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 96 + 11468) |
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.
Numbers are different than "Electric boiler only" example
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) | ||
_model, _hpxml, hpxml_bldg = _test_measure(args_hash) | ||
|
||
_test_service_feeder_power(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 96 + 15291) |
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.
Does heating capacity increase flow rate?
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.
No. See previous EAE comment.
|
||
_test_service_feeder_power(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 202 + 5839 + 10551) | ||
_test_service_feeder_power(hpxml_bldg, HPXML::ElectricPanelLoadTypeCooling, 216 + 5839) | ||
_test_occupied_spaces(hpxml_bldg, [HPXML::ElectricPanelLoadTypeHeating, HPXML::ElectricPanelLoadTypeCooling], 6) |
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.
4 here. (202+10551) = 10753 < 12000, 2 slots for IDU + 2 slots for ODU = 4
|
||
_test_service_feeder_power(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 202 + 5839) | ||
_test_service_feeder_power(hpxml_bldg, HPXML::ElectricPanelLoadTypeCooling, 216 + 5839) | ||
_test_occupied_spaces(hpxml_bldg, [HPXML::ElectricPanelLoadTypeHeating, HPXML::ElectricPanelLoadTypeCooling], 4) |
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.
3
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.
This is like ASHP w/integrated gas backup switchover
.
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) | ||
_model, _hpxml, hpxml_bldg = _test_measure(args_hash) | ||
|
||
_test_service_feeder_power(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 84 + 5839) |
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.
No AHU load right?
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) | ||
_model, _hpxml, hpxml_bldg = _test_measure(args_hash) | ||
|
||
_test_service_feeder_power(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 42 + 3114 + 17584) |
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.
No AHU load, MSHP + baseboard here
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) | ||
_model, _hpxml, hpxml_bldg = _test_measure(args_hash) | ||
|
||
_test_service_feeder_power(hpxml_bldg, HPXML::ElectricPanelLoadTypeHeating, 42 + 3114 + 655) |
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.
What is the 655 here? The gas furnace?
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.
Yes.
Pull Request Description
Support electric panel.
Related to: hpxmlwg/hpxml#420 and hpxmlwg/hpxml#435.
Checklist:
Watts
underServiceFeeder
to something else;Power
?Capacity
? Decided onPowerRating
.electric_panel_xxx
arguments section maps more directly toElectricPanels
HPXML sectionbackup_heating_capacity
input for HPWH; assume no simultaneous operation and so takemax(heating_capacity, backup_heating_capacity)
? Can the 120V HPWH have backup?Pool and permanent spaDefault watts based on input capacity and not output capacityadditional_properties.heat_rated_cops
,additional_properties.cool_rated_cops
)?HeatingSystem
,CoolingSystem
,HeatPump
: addheating_input_capacity
,cooling_input_capacity
, andbackup_heating_input_capacity
methods to hpxml.rbWaterHeatingSystem
: addheating_input_capacity
andbackup_heating_input_capacity
methods to hpxml.rb (additional_properties.cop
set byWaterheater.set_heat_pump_cop
)fan_watts_per_cfm
*xxx_airflow_cfm
? Yes.electric_auxiliary_energy / 2.08
? Yes.count
andfan_power
? Yes.Checklist
Not all may apply:
EPvalidator.xml
) has been updatedopenstudio tasks.rb update_hpxmls
)HPXMLtoOpenStudio/tests/test*.rb
and/orworkflow/tests/test*.rb
)openstudio tasks.rb update_measures
has been run