What the Binary Input Object Is
The Binary Input object, defined in Clause 12.6 of ANSI/ASHRAE 135-2024, is how a BACnet device represents a two-state physical input: a value that is either active or inactive. A door contact, a fan status, a flow switch, or any dry contact wired to the device shows up as a Binary Input whose Present_Value is active or inactive.
The one twist unique to binary objects is polarity. Polarity maps the physical signal to the logical state: with normal polarity, an energized input reads active; with reverse polarity, the mapping is flipped. This lets an integrator make a normally-closed contact and a normally-open contact both read active when the condition they monitor is true. Binary Input objects that support intrinsic reporting apply the CHANGE_OF_STATE event algorithm.
Where You’ll See It
- Status and feedback. Fan and pump run-status, damper end-switches, and equipment proof points.
- Alarm contacts. Freeze-stats, flow switches, and other dry-contact alarms wired into a controller.
- Runtime tracking. With the optional state-change and elapsed-active-time properties, a Binary Input can count starts and total run hours for maintenance.
Required Properties
Clause 12.6 requires every Binary Input object to provide these properties. Datatypes are the spec’s names: BACnetBinaryPV is the two-state present value (active or inactive), BOOLEAN a true/false flag, and the other 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 binary-input for this object |
Present_Value | BACnetBinaryPV | The current state, active or inactive, after polarity is applied |
Status_Flags | BACnetStatusFlags | Four health flags: in-alarm, fault, overridden, out-of-service |
Event_State | BACnetEventState | The object’s current event state (normal, off-normal, or fault) |
Out_Of_Service | BOOLEAN | When true, Present_Value is decoupled from the physical input for testing |
Polarity | BACnetPolarity | Maps the physical signal to the logical state (normal or reverse) |
Property_List | BACnetARRAY[N] of BACnetPropertyIdentifier | The list of properties this instance actually implements |
Optional Properties
The properties integrators meet most are Inactive_Text and Active_Text (the labels a display shows for each state), Alarm_Value (which state is the alarm), and the runtime-tracking group (Change_Of_State_Count, Elapsed_Active_Time). The intrinsic-reporting group generally appears or is absent as a set.
| Property | Datatype | Group |
|---|---|---|
Description | CharacterString | General |
Device_Type | CharacterString | General |
Inactive_Text | CharacterString | State labels |
Active_Text | CharacterString | State labels |
Change_Of_State_Time | BACnetDateTime | Runtime tracking |
Change_Of_State_Count | Unsigned | Runtime tracking |
Time_Of_State_Count_Reset | BACnetDateTime | Runtime tracking |
Elapsed_Active_Time | Unsigned32 | Runtime tracking |
Time_Of_Active_Time_Reset | BACnetDateTime | Runtime tracking |
Alarm_Value | BACnetBinaryPV | Intrinsic reporting |
Time_Delay | Unsigned | Intrinsic 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 |
Event_Algorithm_Inhibit_Ref | BACnetObjectPropertyReference | Intrinsic reporting |
Event_Algorithm_Inhibit | BOOLEAN | Intrinsic reporting |
Time_Delay_Normal | Unsigned | Intrinsic reporting |
Reliability | BACnetReliability | Fault detection |
Reliability_Evaluation_Inhibit | BOOLEAN | Fault detection |
Audit_Level | BACnetAuditLevel | Auditing |
Auditable_Operations | BACnetAuditOperationFlags | Auditing |
Interface_Value | BACnetOptionalBinaryPV | Integration |
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 commandable two-state counterpart that drives a relay or output.
- Binary Value: a two-state software point with no physical input.
- Analog Input: the measured-value equivalent for continuous readings.
What Chipkin Provides
The Binary Input object, including polarity handling and the CHANGE_OF_STATE intrinsic reporting algorithm, is a first-class object type in the CAS BACnet Stack. Talk to us about modeling your device’s points.