What the Schedule Object Is
The Schedule object, defined in Clause 12.24 of ANSI/ASHRAE 135-2024, is how a BACnet device automates time-of-day control. It holds a weekly schedule plus an optional list of exceptions, computes a current value from them, and writes that value into the properties of other objects at the scheduled times. A Schedule that turns lights and air handlers on at 6 AM on weekdays and holds them off on holidays is the everyday example.
Present_Value is the value in effect right now, calculated from the Weekly_Schedule and Exception_Schedule properties, falling back to Schedule_Default when no scheduled event applies. List_Of_Object_Property_References names every object property the Schedule writes to, and Priority_For_Writing sets the priority slot it uses on commandable targets. A Schedule usually references a Calendar object for its holiday dates. Schedule objects may optionally support intrinsic reporting, but only to report fault conditions; they apply no event algorithm.
Where You’ll See It
- Occupancy control. A Schedule drives occupied and unoccupied modes across a building, writing setpoints and enable flags into air handlers, VAV (variable-air-volume) boxes, and lighting objects at the start of each period.
- Holiday and exception handling. Exception days from a linked Calendar override the normal weekly pattern, so a plant stays off on statutory holidays without editing the weekly schedule.
- Gateways. A gateway can expose a scheduling engine from another system as a Schedule object so a BMS head end (the central BMS server) reads and edits it like any native schedule.
Required Properties
Clause 12.24 requires every Schedule object to provide these properties. Datatypes are the spec’s names: Any is a value whose type matches the properties being scheduled, Unsigned an integer, BOOLEAN a true/false flag, and the BACnet-prefixed types are structured values defined by the standard.
| Property | Datatype | What it holds |
|---|---|---|
Object_Identifier | BACnetObjectIdentifier | The object’s type and instance number, unique within the device |
Object_Name | CharacterString | The human-readable point name, unique within the device |
Object_Type | BACnetObjectType | Always schedule for this object |
Present_Value | Any | The scheduled value in effect now, computed from the weekly and exception schedules |
Effective_Period | BACnetDateRange | The date range over which this Schedule is active |
Schedule_Default | Any | The value used when no weekly or exception event is in effect |
List_Of_Object_Property_References | BACnetLIST of BACnetDeviceObjectPropertyReference | The object properties this Schedule writes its value into |
Priority_For_Writing | Unsigned | The priority slot used when writing to commandable targets |
Status_Flags | BACnetStatusFlags | Four health flags: in-alarm, fault, overridden, out-of-service |
Reliability | BACnetReliability | Names the reason whenever the fault flag is set |
Out_Of_Service | BOOLEAN | When true, the schedule calculation is decoupled for testing |
Property_List | BACnetARRAY[N] of BACnetPropertyIdentifier | The list of properties this instance actually implements |
Optional Properties
The optional properties integrators meet most are Weekly_Schedule and Exception_Schedule (the time/value pairs that define the schedule itself) and Description. The intrinsic-reporting group appears or is absent as a set, and on this object it only supports fault reporting.
| Property | Datatype | Group |
|---|---|---|
Description | CharacterString | General |
Weekly_Schedule | BACnetARRAY[7] of BACnetDailySchedule | Scheduling |
Exception_Schedule | BACnetARRAY[N] of BACnetSpecialEvent | Scheduling |
Event_Detection_Enable | BOOLEAN | Intrinsic reporting |
Notification_Class | Unsigned | Intrinsic reporting |
Event_Enable | BACnetEventTransitionBits | Intrinsic reporting |
Event_State | BACnetEventState | Intrinsic reporting |
Acked_Transitions | BACnetEventTransitionBits | Intrinsic reporting |
Notify_Type | BACnetNotifyType | Intrinsic reporting |
Event_Time_Stamps | BACnetARRAY[3] of BACnetTimeStamp | Intrinsic reporting |
Event_Message_Texts | BACnetARRAY[3] of CharacterString | Intrinsic reporting |
Event_Message_Texts_Config | BACnetARRAY[3] of CharacterString | Intrinsic reporting |
Reliability_Evaluation_Inhibit | BOOLEAN | Fault detection |
Audit_Level | BACnetAuditLevel | Auditing |
Auditable_Operations | BACnetAuditOperationFlags | Auditing |
Tags | BACnetARRAY[N] of BACnetNameValue | Tagging and profile |
Profile_Location | CharacterString | Tagging and profile |
Profile_Name | CharacterString | Tagging and profile |
Related Objects
- Calendar: the list of dates a Schedule references for its holidays and exception days.
- Notification Class: the object a Schedule’s intrinsic fault reports route through.
- Analog Value and Binary Value: common targets a Schedule writes its computed value into.
What Chipkin Provides
The Schedule object, including its weekly and exception calculation and write-out to local objects (SCHED-I-B), is supported in the CAS BACnet Stack and hosted by B-BC building controllers. Write-out to remote objects (SCHED-E-B) works end to end at the code and test level; it has not yet been run against a BTL profile. Talk to us about modeling your device’s points.