BACnet: The Group Object

The Group object is described by the BACnet standard as a collection of other objects, and one or more of their properties.

The Group object is essentially used to simplify the information exchange between BACnet devices through a shorthand method to specify all group members at once.

The developer should be aware that a group can be formed through any combination of object types.

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

Property Datatype
Object_Identifier BACnet Object Identifier
Object_Name Character String
Object_Type BACnet Object Type
Description Character String
List_of_Group_Members List of Read Access Specification(s)
Present_Value List of Read Access Result(s)
Profile_Name Character String

The developer should pay close attention to two properties in the preceding table. The properties include:

  • List_of_Group_Members property
  • Present_Value property

The List_of_Group_Members represents a list of read access specification(s) that defines the group members that will be referenced when the object is specified in a standard transaction.

The Present_Value property represents the result from the read access specification(s). This property is a list that contains the values of all the properties specified in the List_Of_Group_Members. This is a “read only” property; and it cannot be used to write a set of values to the members of the group. The Present_Value list is reconstructed each time the property is read by retrieving the member properties. This requirement is required to reduce problems that could result if the Present_Value were stored.

Each of these read access specification(s) contains two essential parts:

  • Object_Identifier
  • Property Reference List

In addition, all group members should be objects that are in the same device that maintains the Group object.

The following example from the BACnet standard will present the Group object structure from an actual automation application. This example will specifically reference the air temperatures in a particular area or “zone” of a building:

Property: Object_Identifier = (Group, Instance 1)
Property: Object_Name = “ZONE1_TEMPS”
Property: Object_Type = GROUP
Property: Description = “Zone 1 Temperature Group”
Property: List_Of_Group_Members = (((Analog Input, Instance 8),(Present_Value, Reliability, Description)), ((Analog Input, Instance 9),(Present_Value, Reliability, Description)), ((Analog Input, Instance 10), (Present_Value, Reliability, Description)),
((Analog Input, Instance 11),(Present_Value, Reliability, Description)),((Analog Input, Instance 12),(Present_Value, Reliability, Description)))
Property: Present_Value = (((Analog Input, Instance 8), Present_Value, 69.7, Reliability, NO_FAULT_DETECTED, Description, “Room 1″), ((Analog Input, Instance 9), Present_Value, 71.2, Reliability, NO_FAULT_DETECTED, Description, “Room 2″),
((Analog Input, Instance 10), Present_Value, -50.0, Reliability, UNRELIABLE_OTHER, Description, “Room 3″), ((Analog Input, Instance 11), Present_Value, 69.7, Reliability,
NO_FAULT_DETECTED, Description, “Room 4″), ((Analog Input, Instance 12), Present_Value, 73.3, Reliability, NO_FAULT_DETECTED, Description, “Room 5″))

Written by: Scott Cosby

© Chipkin Automation Systems 2007