BACnet Binary Output Object

The BACnet Binary Output object (Clause 12.7) is a commandable two-state output: its priority array, minimum on/off times

What the Binary Output Object Is

The Binary Output object, defined in Clause 12.7 of ANSI/ASHRAE 135-2024, is how a BACnet device represents a two-state output it drives: a relay, a stage, or an on/off command. Where a Binary Input reports a contact you cannot change, a Binary Output is commandable, and clients write active or inactive to switch it.

Like the Analog Output, a Binary Output is commanded through a 16-slot priority array rather than a single writable value, so multiple controllers and operators can command the same output without conflict. It also adds Polarity (the input-style physical mapping) and two properties unique to switched loads: Minimum_On_Time and Minimum_Off_Time, which protect equipment from short-cycling. Binary Output objects that support intrinsic reporting apply the CHANGE_OF_STATE event algorithm.

Where You’ll See It

  • Relay and stage control. Starting a fan, energizing a stage of heating, or switching a pump.
  • Enable and command points. An operator or sequence turning equipment on and off from the head end (the central BMS server).
  • Short-cycle protection. With Minimum_On_Time and Minimum_Off_Time, a Binary Output enforces a runtime floor so a compressor or motor is not switched too rapidly.

How Commanding Works

A WriteProperty to Present_Value does not set the output directly. It places active or inactive in one of 16 slots of the Priority_Array, chosen by the write’s priority (1 = highest, 16 = lowest). The object drives the highest-priority non-Null slot; writing Null at a priority relinquishes that command, and when every slot is Null the object falls back to Relinquish_Default. Current_Command_Priority reports the active slot. This is the same model the Analog Output uses, applied to a two-state value.

Required Properties

Clause 12.7 requires every Binary Output object to provide these properties. Datatypes are the spec’s names: BACnetBinaryPV is the two-state present value (active or inactive), BACnetPriorityArray is the 16-slot command array, and the other 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 binary-output for this object
Present_ValueBACnetBinaryPVThe commanded state. 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, off-normal, or fault)
Out_Of_ServiceBOOLEANWhen true, Present_Value is decoupled from the physical output for testing
PolarityBACnetPolarityMaps the logical state to the physical signal (normal or reverse)
Priority_ArrayBACnetPriorityArrayThe 16 command slots; the highest-priority non-Null slot wins
Relinquish_DefaultBACnetBinaryPVThe state 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 properties integrators meet most are Minimum_On_Time and Minimum_Off_Time (short-cycle protection), the state labels Inactive_Text and Active_Text, and Feedback_Value (the sensed actual state, for proving the command took effect). The intrinsic-reporting group generally appears or is absent as a set.

PropertyDatatypeGroup
DescriptionCharacterStringGeneral
Device_TypeCharacterStringGeneral
Inactive_TextCharacterStringState labels
Active_TextCharacterStringState labels
Minimum_Off_TimeUnsigned32Switching protection
Minimum_On_TimeUnsigned32Switching protection
Change_Of_State_TimeBACnetDateTimeRuntime tracking
Change_Of_State_CountUnsignedRuntime tracking
Time_Of_State_Count_ResetBACnetDateTimeRuntime tracking
Elapsed_Active_TimeUnsigned32Runtime tracking
Time_Of_Active_Time_ResetBACnetDateTimeRuntime tracking
Feedback_ValueBACnetBinaryPVCommanding
Value_SourceBACnetValueSourceCommanding
Value_Source_ArrayBACnetARRAY[16] of BACnetValueSourceCommanding
Last_Command_TimeBACnetTimeStampCommanding
Command_Time_ArrayBACnetARRAY[16] of BACnetTimeStampCommanding
Time_DelayUnsignedIntrinsic reporting
Notification_ClassUnsignedIntrinsic 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
Audit_LevelBACnetAuditLevelAuditing
Auditable_OperationsBACnetAuditOperationFlagsAuditing
Interface_ValueBACnetOptionalBinaryPVIntegration
TagsBACnetARRAY[N] of BACnetNameValueTagging and profile
Profile_LocationCharacterStringTagging and profile
Profile_NameCharacterStringTagging and profile
  • Binary Input: the read-only two-state counterpart for contacts and statuses.
  • Binary Value: a two-state software point (a mode or enable flag).
  • Analog Output: the modulating equivalent, with the same priority-array model.

What Chipkin Provides

The Binary Output object, including the priority array, minimum on/off timing, and CHANGE_OF_STATE intrinsic reporting, is a first-class object type in the CAS BACnet Stack. Talk to us about modeling your device’s points.