Skip to content
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

Feature/radiant controls zone occupancy #1571

Merged
merged 13 commits into from
Aug 29, 2023

Conversation

carlosduarteroa
Copy link
Collaborator

Adds support for using specific zone occupancy schedules for radiant control. #1539

Copy link
Collaborator

@mdahlhausen mdahlhausen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good; please adjust the test helper method and add tests for this in test_radiant_controls.rb

@@ -250,44 +263,105 @@ def model_add_radiant_proportional_controls(model, zone, radiant_loop,
zone_rad_heat_operation_trend.setName("#{zone_name}_rad_heat_operation_trend")
zone_rad_heat_operation_trend.setNumberOfTimestepsToBeLogged(zone_timestep * 48)

# use zone occupancy objects for radiant system control if selected
if use_zone_occupancy_for_control
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I recommend implementing this with EnergyManagementSystemSensor on the Schedule value, like you have for the temperature setpoint schedules.

Use the schedule value to determine the control, rather than IF ((CurrentTime >= #{zone_occ_hr_start_name}) && (CurrentTime <= #{zone_occ_hr_end_name})),

That would mean changing it so if occupancy control isn't defined, and instead you get starting/stopping hours, making a ruleset schedule that has those hours and then following that schedule value for control.

To summarize:

  1. create an on/off schedule from the zone occupancy schedule
  2. if not zone control, create the on/off schedule from the provided start/stop times
  3. track that zone schedule with a schedule_value EMS sensor
  4. update the logic to check against the sensor value, rather than using IF ((CurrentTime >= #{zone_occ_hr_start_name}) && (CurrentTime <= #{zone_occ_hr_end_name})),

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Use thermal_zone_get_occupancy_schedule(zone, sch_name, occupied_percentage_threshold) to make an on/off schedule
  • name it "#{zone.name} Radiant System Control Schedule"
  • add occupied_percentage_threshold argument to radiant controls method, and pass into thermal_zone_get_occupancy_schedule
  • use the schedule value to control the system

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Example to create new ScheduleRuleset

econ_max_100_pct_oa_sch = OpenStudio::Model::ScheduleRuleset.new(model)
econ_max_100_pct_oa_sch.setName('Economizer Max OA Fraction 100 pct')
econ_max_100_pct_oa_sch.defaultDaySchedule.setName('Economizer Max OA Fraction 100 pct Default')
econ_max_100_pct_oa_sch.defaultDaySchedule.addValue(OpenStudio::Time.new(0, 24, 0, 0), 1.0)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've made the changes you suggested with commit 54dd618 and b471c4a

also use ems_friend_name method
Copy link
Collaborator

@mdahlhausen mdahlhausen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made a few changes (so pull again) and proposed a different method that is more closely tied to the zone occupancy schedule - and allows much more schedule variation.

Copy link
Collaborator

@mdahlhausen mdahlhausen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work! I added a test for the whole building schedule option to the tests.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants