BACnet Analog Output Object

The BACnet Analog Output object (Clause 12.3) is a commandable analog point: how the priority array works

What the Analog Output Object Is

The Analog Output object, defined in Clause 12.3 of ANSI/ASHRAE 135-2024, is the standardized way a BACnet device represents an analog output: a value the device drives out to the physical world, such as a valve position, damper command, or fan-speed signal. Where an Analog Input reports a reading you cannot change, an Analog Output is commandable: clients write to it to move the physical output.

Because many controllers, sequences, and operators may all want to command the same output, the Analog Output does not hold a single writable value. It holds a priority array, and the value that actually reaches the hardware is arbitrated by priority. That mechanism is the defining feature of this object type. Analog Output objects that support intrinsic reporting apply the OUT_OF_RANGE event algorithm.

Where You’ll See It

  • Modulating equipment. Valve and damper actuators, variable-frequency drives, and any 0-10V or 4-20mA output a controller drives is typically an Analog Output object.
  • Setpoint downloads. A supervisory controller writing a reset setpoint to a field controller writes an Analog Output (or Analog Value) with a chosen priority.
  • Overrides. An operator forcing a valve open from the head end writes the Analog Output at a high priority; releasing the override writes Null at that priority to hand control back.

How Commanding Works

A WriteProperty to Present_Value does not set the output directly. It places the value in one of 16 slots of the Priority_Array, chosen by the write’s priority (1 = highest, 16 = lowest). The object then presents the highest-priority non-Null slot as Present_Value and drives that to the hardware. Writing Null at a priority clears that slot (relinquishes the command). When every slot is Null, the object falls back to Relinquish_Default. Current_Command_Priority reports which slot is currently in control. This is why two operators can both “write the valve” without conflict: the priority decides who wins, and releasing a command restores whoever was next in line.

Required Properties

Clause 12.3 requires every Analog Output object to provide these properties. Datatypes are the spec’s names: REAL is a floating-point number, BOOLEAN a true/false flag, and the BACnet-prefixed types are structured values defined by the standard.

PropertyDatatypeWhat it holds
Object_IdentifierBACnetObjectIdentifierThe object’s type and instance number, unique within the device
Object_NameCharacterStringThe human-readable point name, unique within the device
Object_TypeBACnetObjectTypeAlways analog-output for this object
Present_ValueREALThe commanded output value. Writable, but through the priority array, not as a direct store
Status_FlagsBACnetStatusFlagsFour health flags: in-alarm, fault, overridden, out-of-service
Event_StateBACnetEventStateThe object’s current event state (normal, high-limit, low-limit, or fault for this object type)
Out_Of_ServiceBOOLEANWhen true, Present_Value is decoupled from the physical output for testing
UnitsBACnetEngineeringUnitsThe engineering units of the value (percent, degrees, pascals)
Priority_ArrayBACnetPriorityArrayThe 16 command slots; the highest-priority non-Null slot wins
Relinquish_DefaultREALThe value the output takes when every priority slot is Null
Current_Command_PriorityBACnetOptionalUnsignedWhich priority slot (1-16) is currently in control, or none
Property_ListBACnetARRAY[N] of BACnetPropertyIdentifierThe list of properties this instance actually implements

Optional Properties

The optional set adds alarming, fault detection, and command-tracking. The properties integrators meet most are the alarm-limit group (High_Limit, Low_Limit, Deadband, Limit_Enable), COV_Increment, and the command-tracking group (Value_Source, Last_Command_Time), which records who last commanded the output and when. The intrinsic-reporting group generally appears or is absent as a set.

PropertyDatatypeGroup
DescriptionCharacterStringGeneral
Device_TypeCharacterStringGeneral
ResolutionREALGeneral
Min_Pres_ValueREALValue range
Max_Pres_ValueREALValue range
COV_IncrementREALCOV reporting
Time_DelayUnsignedIntrinsic reporting
Notification_ClassUnsignedIntrinsic reporting
High_LimitREALIntrinsic reporting
Low_LimitREALIntrinsic reporting
DeadbandREALIntrinsic reporting
Limit_EnableBACnetLimitEnableIntrinsic reporting
Event_EnableBACnetEventTransitionBitsIntrinsic reporting
Acked_TransitionsBACnetEventTransitionBitsIntrinsic reporting
Notify_TypeBACnetNotifyTypeIntrinsic reporting
Event_Time_StampsBACnetARRAY[3] of BACnetTimeStampIntrinsic reporting
Event_Message_TextsBACnetARRAY[3] of CharacterStringIntrinsic reporting
Event_Message_Texts_ConfigBACnetARRAY[3] of CharacterStringIntrinsic reporting
Event_Detection_EnableBOOLEANIntrinsic reporting
Event_Algorithm_Inhibit_RefBACnetObjectPropertyReferenceIntrinsic reporting
Event_Algorithm_InhibitBOOLEANIntrinsic reporting
Time_Delay_NormalUnsignedIntrinsic reporting
ReliabilityBACnetReliabilityFault detection
Reliability_Evaluation_InhibitBOOLEANFault detection
Value_SourceBACnetValueSourceCommanding
Value_Source_ArrayBACnetARRAY[16] of BACnetValueSourceCommanding
Last_Command_TimeBACnetTimeStampCommanding
Command_Time_ArrayBACnetARRAY[16] of BACnetTimeStampCommanding
Audit_LevelBACnetAuditLevelAuditing
Auditable_OperationsBACnetAuditOperationFlagsAuditing
Interface_ValueBACnetOptionalREALIntegration
TagsBACnetARRAY[N] of BACnetNameValueTagging and profile
Profile_LocationCharacterStringTagging and profile
Profile_NameCharacterStringTagging and profile
  • Analog Input: the read-only counterpart for a measured value.
  • Analog Value: a commandable analog point with no physical output behind it (a shared setpoint or software value).
  • Binary Output: the two-state commandable equivalent, with the same priority-array model.

What Chipkin Provides

The Analog Output object, including the 16-level priority array and Relinquish_Default arbitration, is a first-class object type in the CAS BACnet Stack. Talk to us about modeling your device’s points.