What the Staging Object Is
The Staging object, defined in Clause 12.62 of ANSI/ASHRAE 135-2024, maps a single analog value onto a set of discrete stages and drives a collection of binary objects accordingly. It gives a BACnet device a standardized way to sequence staged equipment, turning outputs on and off in steps as a demand value rises and falls. It is the object type behind staging compressors, electric heat, or pumps.
Present_Value is the analog demand written into the object, Stages defines the limit and deadband for each stage plus the pattern of ACTIVE/INACTIVE values to apply, and Present_Stage reports which stage is currently active. Target_References names the binary objects the object writes to, and Priority_For_Writing sets the command priority it uses on those writes. A deadband around each stage limit provides hysteresis so the sequence does not chatter near a boundary. The Staging object may support intrinsic reporting for fault conditions only and applies no event algorithm.
Where You’ll See It
- Staged heating and cooling. A demand signal drives Staging so electric-heat or compressor stages energize one at a time as load increases, with hysteresis preventing rapid cycling.
- Lead-lag sequencing. Pumps or fans brought on in sequence as a pressure or flow demand climbs, then dropped in reverse as it falls.
- Binary output orchestration. One Staging object coordinates several Binary Output points so the control logic writes a single demand instead of managing each stage.
Required Properties
Clause 12.62 requires every Staging object to provide these properties. Datatypes are the spec’s names: REAL is a floating-point number, Unsigned an integer, BOOLEAN a true/false flag, and the BACnet-prefixed types are structured values defined by the standard. Present_Value is writable; the object translates it into stage transitions.
| 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 staging for this object |
Present_Value | REAL | Writable; the analog demand value the object maps onto a stage |
Present_Stage | Unsigned | The stage currently active for the present value |
Stages | BACnetARRAY[N] of BACnetStageLimitValue | The limit, deadband, and output pattern for each stage |
Status_Flags | BACnetStatusFlags | Four health flags: in-alarm, fault, overridden, out-of-service |
Event_State | BACnetEventState | The object’s current event state (normal or fault for this object type) |
Reliability | BACnetReliability | Whether the object detects a fault, and if so which |
Out_Of_Service | BOOLEAN | When true, Present_Value is decoupled for testing and override |
Units | BACnetEngineeringUnits | The engineering units of the demand value |
Target_References | BACnetARRAY[N] of BACnetDeviceObjectReference | The binary objects the stages write to |
Priority_For_Writing | Unsigned | The command priority (1 to 16) used when writing to the targets |
Min_Pres_Value | REAL | The lowest value Present_Value may take |
Max_Pres_Value | REAL | The highest value Present_Value may take |
Property_List | BACnetARRAY[N] of BACnetPropertyIdentifier | The list of properties this instance actually implements |
Optional Properties
The properties integrators meet most are Stage_Names (labels for each stage), Default_Present_Value (the value used on restart), and COV_Increment. The intrinsic-reporting group generally appears or is absent as a set.
| Property | Datatype | Group |
|---|---|---|
Description | CharacterString | General |
Stage_Names | BACnetARRAY[N] of CharacterString | General |
Default_Present_Value | REAL | General |
COV_Increment | REAL | COV reporting |
Notification_Class | Unsigned | Intrinsic reporting |
Event_Enable | BACnetEventTransitionBits | 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 |
Event_Detection_Enable | BOOLEAN | Intrinsic reporting |
Reliability_Evaluation_Inhibit | BOOLEAN | Fault detection |
Value_Source | BACnetValueSource | Commanding |
Audit_Level | BACnetAuditLevel | Auditing |
Auditable_Operations | BACnetAuditOperationFlags | Auditing |
Tags | BACnetARRAY[N] of BACnetNameValue | Tagging and profile |
Profile_Location | CharacterString | Tagging and profile |
Profile_Name | CharacterString | Tagging and profile |
Related Objects
- Binary Output: the stage targets a Staging object drives on and off.
- Multi-state Output: another way to command a small set of discrete states, driven directly rather than mapped from an analog demand.
- Analog Value: a software analog point that can supply the demand a Staging object maps.
What Chipkin Provides
The Staging object is a first-class object type in the CAS BACnet Stack, served with its stage definitions and target references; the stage-transition behavior is object behavior the device supplies. Talk to us about modeling your device’s points.