BACnet: The Schedule Object

The Schedule object is defined by the standard as a periodic schedule of events that may repeat within a range of dates. The schedule object is categorized into two types of days:

  • Normal Days in a Week
  • Exception Days

The two types can entail scheduled events for an entire day or portions of a day. The developer may choose exceptions at other times and dates with this object type as well.

The Schedule object essentially acts as a bridge between scheduled times and dates, and the writing of certain values to specific properties and objects concerning the schedule.

The following table will present the actual properties and datatypes of the Schedule object from the BACnet standard:

Property Datatype
Object_Identifier BACnet Object Identifier
Object_Name Character String
Object_Type BACnet Object Type
Present_Value Any
Description Character String
Effective_Period BACnet Data Range
Weekly_Schedule BACnet Array(7) of BACnet Daily Schedule
Exception_Schedule BACnet Array(N) of BACnet Special Event
Schedule_Default Any
List_of_Object_Property_References BACnet Device Object Property Reference
Priority_For_Writing Unsigned (1…16)
Status_Flags BACnet Status Flags
Reliability BACnet Reliability
Out_of_Service Boolean
Profile_Name Character String

The state of the Schedule object is described by the Present_Value property from the above table. The Present_Value property is figured through calculations that are considered a local matter, but the calculations use time and value variables from the Weekly_Schedule and Exception_Schedule properties with a default value for no effective schedules.

A special note concerning the Schedule object must be mentioned in this article. The versions of this object prior to revision four of the standard will only support schedules that define a whole day from midnight to midnight. For the previous versions, compatibility can be achieved by a specific format in the standard. Weekly and Exception schedule value(s) that start with “00:00″ and no use of any “NULL” values will solve this issue.

The following example from the standard will examine the Schedule object structure from an actual building automation application. This example will specifically focus on a roof HVAC unit that controls a specific room in a school during the calendar year:

Object_Identifier (Schedule, Instance 2)
Object_Name “Rm208Sched”
Object_Type SCHEDULE
Present_Value ACTIVE
Description “Room 208 Schedule”
Effective_Period ((5-SEP-1995)-(10-JUN-1996))
Weekly_Schedule {((8:00,ACTIVE),(17:00,INACTIVE)), ((8:00,ACTIVE)),
((8:00,ACTIVE),(17:00,INACTIVE)), ((8:00,ACTIVE),(17:00,INACTIVE),
(19:00,ACTIVE),(23:30,INACTIVE)), ((8:00,ACTIVE),(17:00,INACTIVE)),
((00:00,INACTIVE)), ((10:00,ACTIVE),(17:00,INACTIVE))}
Exception_Schedule {((23-NOV-1995),(0:00,INACTIVE),10), ((HOLIDAYS,(0:00,INACTIVE),11), ((5-MAR-1996)-(7-MAR-1996),((0:00,INACTIVE), (9:00,ACTIVE),(14:00,INACTIVE)),6),
((8-MAR-1996),((10:00,INACTIVE),(11:00,NULL)),7)}
List_Of_Object_Property_References ((Device, Instance 12),(Binary Output, Instance 9), Present_Value)
Priority_For_Writing 15
Status_Flags {FALSE, FALSE, FALSE, FALSE}
Reliability NO_FAULT_DETECTED
Schedule_Default INACTIVE
Out_Of_Service FALSE

Written by: Scott Cosby

© Chipkin Automation Systems 2007