BACnet SubscribeCOVPropertyMultiple Service

SubscribeCOVPropertyMultiple subscribes to many properties across many objects in one request (Clause 13.16): how it works and its error codes.

What SubscribeCOVPropertyMultiple Is

SubscribeCOVPropertyMultiple is an alarm-and-event service in BACnet, defined in Clause 13.16 of ANSI/ASHRAE 135-2024. A COV (Change of Value) client uses it to subscribe, in a single request, for change notifications on multiple properties across multiple objects on a server device. It is a confirmed service: the device acknowledges the subscription, or returns an error naming why it could not be established.

It is the multi-target counterpart to SubscribeCOVProperty. One SubscribeCOVPropertyMultiple has the effect of a series of independent property subscriptions, but the resulting notifications arrive through the ConfirmedCOVNotificationMultiple or UnconfirmedCOVNotificationMultiple service, carrying only the properties whose values changed.

How It Works

The client sends a subscriber process identifier, a flag choosing confirmed or unconfirmed notifications, a lifetime in seconds, a maximum notification delay, and a list of subscription specifications. Each specification names one object and a list of property references, with an optional COV increment and a timestamped flag. The device establishes or refreshes a COV-multiple context and starts reporting changes; a request with no lifetime is a cancellation. Devices that execute this service must accept lifetimes up to at least 28800 seconds (8 hours). If one subscription in the list fails, the device returns the first failed subscription and stops processing the rest, while the subscriptions it already accepted stay in effect.

Where You’ll See It

  • Efficient supervisory monitoring. A head end (the central BMS server) subscribes to dozens of points on a controller in one exchange instead of one subscription per point.
  • Elevator and lift status. Elevator controllers expose many status properties that a monitoring system tracks together through a single multi-property subscription.
  • Timestamped change capture. Setting the timestamped flag makes the server queue each change with the time it occurred, so the client sees the sequence rather than just the latest value.

SubscribeCOVPropertyMultiple Error Codes

Clause 13.16 defines two error returns. A general Error Type is returned when the whole request fails before any subscription is processed; a First Failed Subscription is returned when one specific object or property in the list fails. The general error model lives in Clause 18 of the standard.

SituationError classError code
No COV-multiple context can be created due to resource limitationsRESOURCESNO_SPACE_TO_ADD_LIST_ELEMENT
The Lifetime parameter is outside the range supported by the deviceSERVICESVALUE_OUT_OF_RANGE
The Max Notification Delay parameter is outside the range supported by the deviceSERVICESVALUE_OUT_OF_RANGE
The Max Notification Delay parameter is greater than the Lifetime parameterSERVICESVALUE_OUT_OF_RANGE
Specified object does not existOBJECTUNKNOWN_OBJECT
Specified property does not existPROPERTYUNKNOWN_PROPERTY
Specified object does not support COV-multiple notificationsOBJECTOPTIONAL_FUNCTIONALITY_NOT_SUPPORTED
Specified property does not support COV-multiple notificationsPROPERTYNOT_COV_PROPERTY
An array index is provided but the property is not an arrayPROPERTYPROPERTY_IS_NOT_AN_ARRAY
An array index is provided that is greater than the current length of the arrayPROPERTYINVALID_ARRAY_INDEX
No COV subscription specification can be created in the context due to resource limitationsRESOURCESNO_SPACE_TO_ADD_LIST_ELEMENT

Reading these in the field:

  • NOT_COV_PROPERTY and OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED mean the object or property simply does not offer COV-multiple reporting on that device; the subscription cannot be made regardless of how it is framed.
  • VALUE_OUT_OF_RANGE on the lifetime usually means the requested lifetime exceeds what the device supports; lower it, staying at or below 28800 seconds for portability.
  • A first-failed-subscription return does not undo the subscriptions the device already accepted before the failing one; resend only the entries after the failure.
  • No response at all is not a service error. A timeout is a transport or addressing problem, not a subscription problem.

Profiles That Require It

Executing SubscribeCOVPropertyMultiple (DS-COVM-B) is required of the elevator controller profiles that expose many status properties for group monitoring: B-EC, B-AEC, and B-EM. Elsewhere COV-multiple is optional. The initiate side is a client or operator behavior.

DirectionRequired by BIBBProfiles
Execute (accept the subscription)DS-COVM-BB-EC, B-AEC, B-EM
Initiate (send the subscription)DS-COVM-AOperator and client profiles that monitor multi-property devices

What Chipkin Provides

The CAS BACnet Stack supports SubscribeCOVPropertyMultiple, establishing and tracking COV-multiple contexts and issuing the matching notifications. Talk to us about adding BACnet client or server support to your device.