BACnet - What is a BACnet 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:

PropertyDatatype
Object_IdentifierBACnet Object Identifier
Object_NameCharacter String
Object_TypeBACnet Object Type
Present_ValueAny
DescriptionCharacter String
Effective_PeriodBACnet Data Range
Weekly_ScheduleBACnet Array(7) of BACnet Daily Schedule
Exception_ScheduleBACnet Array(N) of BACnet Special Event
Schedule_DefaultAny
List_of_Object_Property_ReferencesBACnet Device Object Property Reference
Priority_For_WritingUnsigned (1…16)
Status_FlagsBACnet Status Flags
ReliabilityBACnet Reliability
Out_of_ServiceBoolean
Profile_NameCharacter 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_TypeSCHEDULE
Present_ValueACTIVE
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_Writing15
Status_Flags{FALSE, FALSE, FALSE, FALSE}
ReliabilityNO_FAULT_DETECTED
Schedule_DefaultINACTIVE
Out_Of_ServiceFALSE



Contact Us

Contact us via phone (+1 866-383-1657) or leave a detailed message below for sales, support, or any other needs

I'd like to receive the newsletter. *Check email for confirmation.
*Required Field
Preferred Time To Be Contacted (PST)
8:00am - 12:00pm 12:00pm - 5:00pm