What WriteGroup Is
WriteGroup is an object-access service in BACnet, defined in Clause 15.11 of ANSI/ASHRAE 135-2024. A sender uses it to push a set of values to a numbered control group so that many devices and objects update at once. It is an unconfirmed service: the sender transmits the request and expects no acknowledgment. WriteGroup is the group-write mechanism behind lighting control, where one command drives a whole zone of fixtures.
The values land in Channel objects. A device is a member of a control group when one of its Channel objects lists that group number in its Control_Groups property, and each value in the request is keyed to a channel number that maps to a Channel object’s Channel_Number.
How It Works
The request carries a group number, a write priority, and a change list of (channel number, value) entries, with an optional per-entry overriding priority. Every device that belongs to the named control group writes each value to any Channel object whose Channel_Number matches, at the given priority; values with no matching channel are ignored. A Null value relinquishes control at that priority, exactly as with a commandable object. Because it is unconfirmed, WriteGroup can be unicast, multicast, or broadcast; the spec prefers multiple directed broadcasts over a global broadcast. The failure of any one write does not stop the others.
Where You’ll See It
- Lighting group control. A lighting supervisor sends one WriteGroup to set a level or scene across every fixture in a control group, instead of writing each output individually.
- Fast multi-device updates. Distributing one value to a large number of devices in a single broadcast keeps a scene change synchronized and off the per-point write path.
- Scheduled scenes. A schedule or supervisor drives WriteGroup on a time or event so a zone steps through its programmed levels.
WriteGroup Error Codes
WriteGroup is an unconfirmed service, so it has no acknowledgment and returns no application-layer error. A WriteGroup that produces no visible change is not a service error; it is an addressing, membership, or mapping problem. The usual causes:
- No Channel object on the target device carries the requested channel number, so that value is silently ignored.
- The target device is not a member of the group, meaning no Channel object lists the group number in
Control_Groups. - A group number of zero was sent, which the standard reserves and requires receivers to ignore.
- The broadcast never reached the target because of a subnet or BACnet BBMD path problem.
Profiles That Require It
Executing WriteGroup (DS-WG-E-B) is required of the lighting profiles that receive group commands into their Channel objects: B-LS (Lighting Supervisor) and the lighting devices built on the same capability. The initiate side is an operator or supervisor behavior, where a control station sends the group command.
| Direction | Required by BIBB | Profiles |
|---|---|---|
| Execute (accept a group write) | DS-WG-E-B | B-LS and lighting devices that host Channel objects |
| Initiate (send a group write) | DS-WG-I-B | Lighting supervisors and control stations that drive groups |
What Chipkin Provides
The CAS BACnet Stack supports WriteGroup, including Channel object handling and the group-membership mapping the service relies on. Talk to us about adding BACnet client or server support to your device.