Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question
2

Im trying to add a heating schedule (schedule type is temp.) to a schedule set but it won't add when i drag it from my model.

asked 2020-02-04 13:57:21 -0600

FatemahDashti gravatar image

updated 2020-02-07 06:22:22 -0600

Im trying to add a heating schedule (schedule type is temp.) to a schedule set but it won't add when i drag it from my model.

edit retag flag offensive close merge delete

Comments

Can you be specific please? It's likely a ScheduleTypeLimits mismatch. Please include enough information to reproduce. For eg, tell us which schedule (include the OSM snippet of the OS:Schedulexxx from the library and its OS:ScheduleTypeLimits if it's not from the default libraries, the name of the schedule otherwise) and where you're trying to drag it to (which position in the ScheduleSet)

Julien Marrec gravatar imageJulien Marrec ( 2020-02-04 16:07:53 -0600 )edit

Hello Sorry for the lack of information, what im trying to ask is, im trying to add heating/cooling thermostat schedules. I have added them in my thermal zones and in my schedules but im not sure where i have to add them in the schedule sets, when i drag a component from my ruleset schedules (Eg. Medium Office HtgSetp) it won't drag into the schedule sets place, is this because i have missed something out or is it because it is in an incorrect place? Thanks for your help

FatemahDashti gravatar imageFatemahDashti ( 2020-02-05 05:44:17 -0600 )edit

I have already answered below. Thermostat schedules don't belong in the DefaultScheduleSet, they are directly assigned to the zones. Also note that DefaultScheduleSet is just something helpful to try to assign schedules automatically without you having to hard-assign them to every component. make sure you read this page and understand the concept of inheritance: https://nrel.github.io/OpenStudio-use...

Julien Marrec gravatar imageJulien Marrec ( 2020-02-06 08:17:28 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted
2

answered 2020-02-05 04:07:58 -0600

updated 2020-02-05 04:21:30 -0600

TL;DR: DefaultScheduleSet will never accept any schedule with a "Temperature" unit type (which is what the default Temperature ScheduleTypeLimits has).


Explanation: Enforcing of ScheduleTypeLimits in OpenStudio

OpenStudio enforces correspondence of the ScheduleTypeLimits when you try to set schedules.

  • If you try to assign a Schedule that does not have a ScheduleTypeLimits, it'll create and assign one for you (it'll always work)
  • If you try to assign a Schedule that has a ScheduleTypeLimits, it will check whether it's compatible, that is check the lower/upper limits and the Unit Type (it doesn't care whether it's continuous or discrete).

You can see the expected schedule type limits for the DefaultScheduleSet here in ScheduleTypeRegistry.cpp:

// className, scheduleDisplayName, scheduleRelationshipName, isContinuous, unitType, lowerLimitValue, upperLimitValue;
{"DefaultScheduleSet","Hours of Operation","hoursofOperationSchedule",false,"Availability",0.0,1.0},
{"DefaultScheduleSet","Number of People","numberofPeopleSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","People Activity Level","peopleActivityLevelSchedule",true,"ActivityLevel",0.0,OptionalDouble()},
{"DefaultScheduleSet","Lighting","lightingSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Electric Equipment","electricEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Gas Equipment","gasEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Hot Water Equipment","hotWaterEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Infiltration","infiltrationSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Steam Equipment","steamEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Other Equipment","otherEquipmentSchedule",true,"",OptionalDouble(),OptionalDouble()},

So indeeed, none have a unitType == "Temperature"


Optional reading

Source code

If you're curious:


Demo using Ruby bindings

And if you need more proof, here's a demo using the ruby bindings:

I get a model, and retrieve a Temperature schedule.

[13] model(main)> sch = m.getScheduleRulesetByName("Medium Office Heating Setpoint Schedule").get
=> #<OpenStudio::Model::ScheduleRuleset:0x000055a9f1cf8398 @__swigtype__="_p_openstudio__model__ScheduleRuleset">
[9] model(main)> puts sch
OS:Schedule:Ruleset,
  {fb99be89-78c9-4473-a724-c19078c7a311}, !- Handle
  Medium Office Heating Setpoint Schedule, !- Name
  {4d58c6f5-7a17-476e-8c71-4472d4190115}, !- Schedule Type Limits Name
  {4201662b-b6bd-4cbb-98ec-b7e57b8406e0}, !- Default Day Schedule Name
  ,                                       !- Summer Design Day Schedule Name
  {8e5f2044-0cc5-4ff0-aeb6-0cbef560f87b}; !- Winter Design Day Schedule Name

=> nil
[14] model(main)> puts sch.scheduleTypeLimits.get
OS:ScheduleTypeLimits,
  {4d58c6f5-7a17-476e-8c71-4472d4190115}, !- Handle
  Temperature,                            !- Name
  -60,                                    !- Lower Limit Value
  200,                                    !- Upper Limit Value
  CONTINUOUS,                             !- Numeric Type
  Temperature;                            !- Unit Type

Now I create a DefaultScheduleSet and tries to assign this schedule to every slot in it:

[15] model(main)> d = DefaultScheduleSet.new(m)

Note: to get the list of methods d.methods.grep(/^set.*Schedule/i).each {|m| puts "d.#{m.to_s}(sch)"}

[16] model(main)> d.setHoursofOperationSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Hours of Operation=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[17] model(main)> d.setNumberofPeopleSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Number of People=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[18] model(main)> d.setPeopleActivityLevelSchedule(sch)
[openstudio.model.ModelObject ...
(more)
edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

 

Question Tools

Stats

Asked: 2020-02-04 13:57:21 -0600

Seen: 44 times

Last updated: Feb 05