What the Channel Object Is
The Channel object, defined in Clause 12.53 of ANSI/ASHRAE 135-2024, is how a BACnet device forwards a single received value to a whole collection of object properties at once. Writing one value to the Channel’s Present_Value distributes it to every property listed in List_Of_Object_Property_References, coercing the datatype as needed for each target. It is the standard way to drive many outputs from one write, most often in lighting control.
The Channel does not maintain a state and does not contain a priority array. Each Channel is tied to a logical channel number (0 to 65535) and can belong to one or more control groups, which is what lets the WriteGroup service address many Channels together. Channel objects that support intrinsic reporting apply the NONE event algorithm, so their intrinsic reporting is limited to fault conditions.
Where You’ll See It
- Lighting scenes. A lighting controller carrying the B-LS Lighting Supervisor profile uses Channels to push one level to a group of Lighting Output objects simultaneously.
- Group writes. A supervisor issues a WriteGroup to a control group, and every Channel in that group forwards the value to its referenced properties.
- Mixed-type distribution. One Channel can drive an analog level, a binary state, and a multi-state value together, coercing the written value to each target’s datatype.
How Commanding Works
The Channel is a value-distribution object, not a stateful commandable output, so it has no priority array of its own. When Present_Value is written by WriteProperty, WritePropertyMultiple, or WriteGroup, the Channel immediately writes that value to each property in List_Of_Object_Property_References. If the write carried a priority, the Channel uses that same priority when commanding the referenced properties, so it fans the priority through to the real commandable objects behind it. Write_Status reports whether the fan-out is idle, in progress, or failed, Last_Priority reports the priority of the most recent write, and the optional Execution_Delay array can stagger the writes across the targets.
Required Properties
Clause 12.53 requires every Channel object to provide these properties. Datatypes are the spec’s names: Unsigned is an integer, BOOLEAN a true/false flag, and the BACnet-prefixed types are structured values defined by the standard.
| Property | Datatype | What it holds |
|---|---|---|
Object_Identifier | BACnetObjectIdentifier | The object’s type and instance number, unique within the device |
Object_Name | CharacterString | The human-readable point name, unique within the device |
Object_Type | BACnetObjectType | Always channel for this object |
Present_Value | BACnetChannelValue | The value written in, then forwarded to every referenced property. Writable |
Last_Priority | Unsigned | The priority of the most recent write to Present_Value |
Write_Status | BACnetWriteStatus | Whether the fan-out write is idle, in progress, failed, or successful |
Status_Flags | BACnetStatusFlags | Four health flags: in-alarm, fault, overridden, out-of-service |
Out_Of_Service | BOOLEAN | When true, the Channel stops forwarding writes to its targets |
List_Of_Object_Property_References | BACnetARRAY[N] of BACnetDeviceObjectPropertyReference | The target properties the written value is forwarded to. Writable |
Channel_Number | Unsigned | The logical channel number (0 to 65535) this object serves. Writable |
Control_Groups | BACnetARRAY[N] of Unsigned | The control groups this Channel belongs to for WriteGroup. Writable |
Property_List | BACnetARRAY[N] of BACnetPropertyIdentifier | The list of properties this instance actually implements |
Optional Properties
The properties integrators meet most are Execution_Delay and Allow_Group_Delay_Inhibit, which stage and gate the fan-out writes. The intrinsic-reporting group generally appears or is absent as a set and reports faults only. The Audit_Level, Auditable_Operations, and Audit_Priority_Filter properties are the audit-logging controls added in 135-2024.
| Property | Datatype | Group |
|---|---|---|
Description | CharacterString | General |
Reliability | BACnetReliability | Fault detection |
Execution_Delay | BACnetARRAY[N] of Unsigned | Channel |
Allow_Group_Delay_Inhibit | BOOLEAN | Channel |
Event_Detection_Enable | BOOLEAN | Intrinsic reporting |
Notification_Class | Unsigned | Intrinsic reporting |
Event_Enable | BACnetEventTransitionBits | Intrinsic reporting |
Event_State | BACnetEventState | Intrinsic reporting |
Acked_Transitions | BACnetEventTransitionBits | Intrinsic reporting |
Notify_Type | BACnetNotifyType | Intrinsic reporting |
Event_Time_Stamps | BACnetARRAY[3] of BACnetTimeStamp | Intrinsic reporting |
Event_Message_Texts | BACnetARRAY[3] of CharacterString | Intrinsic reporting |
Event_Message_Texts_Config | BACnetARRAY[3] of CharacterString | Intrinsic reporting |
Reliability_Evaluation_Inhibit | BOOLEAN | Fault detection |
Value_Source | BACnetValueSource | Commanding |
Audit_Level | BACnetAuditLevel | Auditing |
Auditable_Operations | BACnetAuditOperationFlags | Auditing |
Audit_Priority_Filter | BACnetOptionalPriorityFilter | Auditing |
Tags | BACnetARRAY[N] of BACnetNameValue | Tagging and profile |
Profile_Location | CharacterString | Tagging and profile |
Profile_Name | CharacterString | Tagging and profile |
Related Objects
- Lighting Output: a common fan-out target when a Channel drives a lighting group.
- Binary Lighting Output: the on/off lighting target a Channel can switch as a group.
- Analog Output: any commandable output can be a Channel target; the Channel forwards the priority to it.
What Chipkin Provides
The Channel object, including its property fan-out and WriteGroup control-group membership, is a first-class object type in the CAS BACnet Stack. Talk to us about modeling your device’s points.