Skip to content
Version 6.1.0
Contact Us

Schedule

A Schedule object runs a time plan. It holds a week of daily time and value pairs, optional exception days, and a default, and it works out which value is in force right now. It can write that value into properties of other objects on its own, so a device can switch lighting, setpoints or modes by the clock.

Weekly_Schedule, Exception_Schedule (which overrides the weekly plan) and Schedule_Default produce the value in force now, which becomes Present_Value and is written at Priority_For_Writing to other objects, such as an Analog Value setpoint and a Binary Output for lights.

  • Occupied and unoccupied times for an office
  • Holiday exceptions that override the weekly plan
  • Setpoint changes at fixed times of day
  • Lighting on and off by the clock
  • Run a plan only between two dates
Property What it holds
Weekly_Schedule Seven daily plans, Monday to Sunday. Each is a list of times and the value that starts at that time.
Exception_Schedule Special days, such as holidays, with their own time and value pairs and a priority. They override the weekly plan.
Schedule_Default The value used when no weekly or exception entry is in force.
Effective_Period The range of dates in which the schedule is active.
List_Of_Object_Property_References The properties the schedule writes its value to.
Present_Value The value now in force. Clients read it but do not write it.

The object is not commandable and the standard applies no event algorithm to it. It writes Present_Value to each referenced property when the value changes, at the priority set in Priority_For_Writing.

Enable it with the STACK_OPTION_OBJECT_TYPE_SCHEDULE build option. Add the object with BACnetStack_AddObject first, then call BACnetStack_AddScheduleObject. That call makes Weekly_Schedule and Schedule_Default writable by any client. Build the plan with BACnetStack_AddScheduleWeeklyTimeValue, BACnetStack_SetScheduleDefault, BACnetStack_AddScheduleExceptionEventWithCalendarEntry, BACnetStack_AddScheduleExceptionEventWithCalendarReference, BACnetStack_AddScheduleExceptionTimeValue, BACnetStack_SetScheduleEffectivePeriod, BACnetStack_AddScheduleObjectPropertyReference and BACnetStack_SetSchedulePriorityForWriting. The stack evaluates the plan against the Device object’s Local_Date and Local_Time, so enable both and serve them with the callback you register with BACnetStack_RegisterCallbackGetPropertyDate and the BACnetStack_RegisterCallbackGetPropertyTime callback; until they read, no value is computed. Object_Name, Reliability and Out_Of_Service come from callbacks. A scheduled value can be Null, Boolean, Unsigned, Signed, Real or Enumerated; the customer interface cannot schedule a Double, a string, a date, a time or an object identifier. Use Enumerated for a Binary Output or Binary Value target.

Calendar, Timer, Device

The properties ASHRAE 135-2024 clause 12.24 defines for this object type.

How to read the table:

  • Conformance is what the standard asks of every object of this type: R is required, W is required and writable by a client, O is optional. A digit after the letter marks a condition in the standard that decides when the property is present or writable, such as support for intrinsic reporting.
  • Present by default: yes means the stack presents the property as soon as you add the object; no means it is optional and you turn it on with BACnetStack_SetPropertyEnabled. This is the stack’s starting setup, so it can differ from the conformance code.
  • Writable is whether a client can write the property by default. Change it with BACnetStack_SetPropertyWritable.
  • not in profile means the stack does not offer this property for this object type.
  • Value when your callback does not answer: “Held by the stack” means the stack stores and serves the value itself and does not ask your callbacks. Otherwise it is the value the stack answers when your callback declines or is not registered.
Property Datatype Conformance Present by default Writable Value when your callback does not answer
Object_Identifier BACnetObjectIdentifier R yes no Held by the stack.
Object_Name CharacterString R yes no "Object <type>,<instance>", such as "Object 0,1" for Analog Input 1.
Object_Type BACnetObjectType R yes no Held by the stack.
Present_Value Any R yes no (yes while Out_Of_Service is true) Computed by the stack from the plan, once the Device object’s Local_Date and Local_Time can be read.
Description CharacterString O no no ""
Effective_Period BACnetDateRange R yes no Held by the stack.
Weekly_Schedule BACnetARRAY[7] of BACnetDailySchedule O1 no yes, after BACnetStack_AddScheduleObject Held by the stack.
Exception_Schedule BACnetARRAY[N] of BACnetSpecialEvent O1 no no Held by the stack.
Schedule_Default Any R yes yes, after BACnetStack_AddScheduleObject Held by the stack.
List_Of_Object_Property_References BACnetLIST of BACnetDeviceObjectPropertyReference R yes no Held by the stack.
Priority_For_Writing Unsigned(1..16) R yes no Held by the stack.
Status_Flags BACnetStatusFlags R yes no Held by the stack.
Reliability BACnetReliability R yes no (yes while Out_Of_Service is true) 0
Out_Of_Service Boolean R yes no false
Event_Detection_Enable Boolean O2,3 no no false
Notification_Class Unsigned O2,3 no no 0
Event_Enable BACnetEventTransitionBits O2,3 no no An empty bit string.
Event_State BACnetEventState O2,3 no no 0
Acked_Transitions BACnetEventTransitionBits O2,3 no no An empty bit string.
Notify_Type BACnetNotifyType O2,3 no no 0
Event_Time_Stamps BACnetARRAY[3] of BACnetTimeStamp O2,3 no no No default: the read fails.
Event_Message_Texts BACnetARRAY[3] of CharacterString O3 no no ""
Event_Message_Texts_Config BACnetARRAY[3] of CharacterString O3 no no ""
Reliability_Evaluation_Inhibit Boolean O no no false
Write_Every_Scheduled_Action Boolean O no no false
Property_List BACnetARRAY[N] of BACnetPropertyIdentifier R yes no Held by the stack.
Audit_Level BACnetAuditLevel O4 not in profile not in profile No default: the read fails.
Auditable_Operations BACnetAuditOperationFlags O4 not in profile not in profile No default: the read fails.
Tags BACnetARRAY[N] of BACnetNameValue O no no No default: the read fails.
Profile_Location CharacterString O no no ""
Profile_Name CharacterString O no no ""