What DeleteObject Is
DeleteObject is an object-access service in BACnet, defined in Clause 15.4 of ANSI/ASHRAE 135-2024. A client uses it to delete an existing object from a device. It is a confirmed service: the device replies with a simple acknowledgment once the object is gone, or an error naming why it could not be removed.
It is the counterpart to CreateObject. Most objects in a control system are protected and cannot be deleted; the service applies to objects a device allows to be created and removed at runtime, such as Group and Event Enrollment objects, and vendor-specific deletable objects.
How It Works
The client names the object to delete. If the object exists and the device permits its deletion, the device removes it and returns success. If the object does not exist or is protected, the device returns an error and the object is left in place. There are no partial outcomes: the object is either deleted or untouched.
Where You’ll See It
- Dynamic configuration. A tool removing a Group or Event Enrollment object that was created at commissioning and is no longer needed.
- Cleanup. Deleting vendor-specific objects a device exposes for runtime configuration when a feature is retired.
- Provisioning churn. Tearing down and rebuilding part of a device’s object model during a reconfiguration, paired with CreateObject.
DeleteObject Error Codes
Clause 15.4 defines the error class and code a device returns for each failure. The general error model lives in Clause 18 of the standard.
| Situation | Error class | Error code |
|---|---|---|
| The object to be deleted does not exist | OBJECT | UNKNOWN_OBJECT |
| The object exists but cannot be deleted | OBJECT | OBJECT_DELETION_NOT_PERMITTED |
Reading these in the field:
OBJECT_DELETION_NOT_PERMITTEDis the common one: the object is a protected, built-in object, not a dynamically creatable one. Most of a device’s objects are protected this way by design.UNKNOWN_OBJECTusually means the object was already deleted or the request named the wrong instance.- No response at all is not a DeleteObject error. A timeout is a transport or addressing problem, not an object problem.
Profiles That Require It
DeleteObject is an object-management service, not a baseline capability. No standard device profile in Annex L requires it; a device supports it only when it is built to allow runtime object deletion, and it declares that support in its PICS (Protocol Implementation Conformance Statement). Treat it as an optional feature paired with CreateObject, not one to assume.
What Chipkin Provides
The CAS BACnet Stack supports DeleteObject in both directions, as a client initiating requests and as a server executing them. Talk to us about adding BACnet client or server support to your device.