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.
Typical uses
Section titled “Typical uses”- 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
Key properties
Section titled “Key properties”| 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. |
How it behaves
Section titled “How it behaves”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.
With the CAS BACnet Stack
Section titled “With the CAS BACnet Stack”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.
Related object types
Section titled “Related object types”Properties
Section titled “Properties”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 | "" |
