BACnet - What is a BACnet Schedule object
Integration Solutions
Chipkin has integration solutions for almost every situation. We specialize in network protocol communications and have over 20+ years of experience. Click for more information:
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 |