BACnet: The Command Object

The Command object is a very important part of the operation of a BACnet device. The Command object writes to a group of object properties through action code(s) within the Present_Value property. When this writing occurs, the Command object will start a sequence of actions in the BACnet device(s).

The Command object like the object in the previous article by the same author uses the four properties required by the BACnet standard. In addition, five more important properties are included in the operation of this object.

The following table will list the properties and datatypes of the Command object from the BACnet standard:

Property Datatype
Object_Identifier BACnet Object Identifier
Object_Name Character String
Object_Type BACnet Object Type
Present_Value Unsigned
In_Process Boolean
All_Writes_Successful Boolean
Action BACnet Array of Action List
Action Text BACnet Array of Character String
Profile_ Name Character String

The Command object can be a powerful aspect with beneficial applications, but at the same time this object can cause confusion and problems for the developer. Certain issues must be observed concerning the Command object:

  • Proper configuration of the Command object.
  • Proper device configuration concerning the Command object.
  • Closely monitor the In_Process property of the Command object, due to the possibility of the object commanding itself.

The following example from the BACnet standard will reveal the Command object structure from an actual building automation application. Specifically, an elevator subsystem where a floor of the building is shut off when in the unoccupied mode:

Object_Identifier = (Command, Instance 1)
Object_Name = "ZONE43CONTROL"
Object_Type = COMMAND
Description = "Fourth Floor, West Wing Office Suite"
Present_Value = 2
In_Process = FALSE
All_Writes_Successful = TRUE
Action = {((,(Analog Value, Instance 5), Present_Value,,65.0, 8,,TRUE,TRUE),
(,(Binary Output, Instance 3), Present_Value,,INACTIVE,8,1,TRUE,TRUE),
((Device, Instance 1), (Binary Value, Instance 1),Present_Value, ,INACTIVE, 8,1,TRUE,TRUE)), ((,(Analog Value, Instance 5), Present_Value,,72.0,
8,2,TRUE,TRUE), (,(Binary Output, Instance 3), Present_Value,
,ACTIVE,8,,TRUE,TRUE), ((Device, Instance 1), (Binary Value, Instance 1),Present_Value,,ACTIVE, 8,,TRUE,TRUE))}
Action_Text = {"Unoccupied", "Occupied"}

Written by: Scott Cosby

© Chipkin Automation Systems 2007