What the Access Door Object Is
The Access Door object, defined in Clause 12.26 of ANSI/ASHRAE 135-2024, is how a BACnet device represents a physical access-control door. It is an abstract interface to the hardware that makes up a door: the lock, the door contact, and the Request-To-Exit device. Those parts may or may not be exposed individually, but together they form one door that a controller can lock, unlock, and monitor.
Present_Value is a door command (lock, unlock, and the pulse variants), written through a priority array so that several controllers and operators can command the same door without conflict. The object tracks the physical condition of the door through Door_Status, Lock_Status, and Secured_Status. Access Door objects that support intrinsic reporting apply the CHANGE_OF_STATE event algorithm on the door alarm state and deliver alarms through the event notification services.
Where You’ll See It
- Controlled doors and gates. A door controller wired to an electric strike or maglock, a door contact, and a REX button presents the door as one Access Door object.
- Access controllers. Panels that carry the b-acc and b-acdc access-control profiles host Access Door objects alongside Access Point objects that decide when to unlock them.
- Momentary release. An operator or an Access Point granting entry pulses the door open for
Door_Pulse_Time, then it re-locks automatically.
How Commanding Works
A WriteProperty to Present_Value does not set the door directly. It places a door command in one of 16 slots of the Priority_Array, chosen by the write’s priority (1 = highest, 16 = lowest). The object presents the highest-priority non-Null slot as Present_Value and drives the lock hardware to match. Writing Null at a priority clears that slot (relinquishes the command). When every slot is Null, the door falls back to Relinquish_Default. Current_Command_Priority reports which slot is currently in control. This is the same priority-array arbitration used by an Analog Output, applied to door commands rather than analog levels, so an override from an operator and a scheduled unlock never collide.
Required Properties
Clause 12.26 requires every Access Door 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 access-door for this object |
Present_Value | BACnetDoorValue | The commanded door state (lock, unlock, pulse). Writable, but through the priority array, not as a direct store |
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) |
Reliability | BACnetReliability | Names the reason whenever the fault flag is set |
Out_Of_Service | BOOLEAN | When true, Present_Value is decoupled from the physical door for testing |
Priority_Array | BACnetPriorityArray | The 16 command slots; the highest-priority non-Null slot wins |
Relinquish_Default | BACnetDoorValue | The door command taken when every priority slot is Null |
Current_Command_Priority | BACnetOptionalUnsigned | Which priority slot (1-16) is currently in control, or none |
Door_Pulse_Time | Unsigned | How long a momentary unlock stays released, in tenths of a second |
Door_Extended_Pulse_Time | Unsigned | The longer pulse used when extended access time is granted |
Door_Open_Too_Long_Time | Unsigned | How long the door may stay open before a door-open-too-long alarm |
Property_List | BACnetARRAY[N] of BACnetPropertyIdentifier | The list of properties this instance actually implements |
Optional Properties
The properties integrators meet most are the door-state group (Door_Status, Lock_Status, Secured_Status), which reports what the physical door is doing, Door_Members (the hardware or sub-doors this object aggregates), and the command-tracking group (Value_Source, Last_Command_Time), which records who last commanded the door. The intrinsic-reporting group generally appears or is absent as a set. 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 |
Maintenance_Required | BACnetMaintenance | General |
Door_Status | BACnetDoorStatus | Access model |
Lock_Status | BACnetLockStatus | Access model |
Secured_Status | BACnetDoorSecuredStatus | Access model |
Door_Members | BACnetARRAY[N] of BACnetDeviceObjectReference | Access model |
Door_Unlock_Delay_Time | Unsigned | Access model |
Door_Alarm_State | BACnetDoorAlarmState | Intrinsic reporting |
Masked_Alarm_Values | BACnetLIST of BACnetDoorAlarmState | Intrinsic reporting |
Alarm_Values | BACnetLIST of BACnetDoorAlarmState | Intrinsic reporting |
Fault_Values | BACnetLIST of BACnetDoorAlarmState | Fault detection |
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_Evaluation_Inhibit | BOOLEAN | Fault detection |
Value_Source | BACnetValueSource | Commanding |
Value_Source_Array | BACnetARRAY[16] of BACnetValueSource | Commanding |
Last_Command_Time | BACnetTimeStamp | Commanding |
Command_Time_Array | BACnetARRAY[16] of BACnetTimeStamp | 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
- Access Point: the object that authenticates and authorizes a credential, then commands this door to unlock.
- Access Zone: the secured area reached through the access points that control these doors.
- Binary Output: the general-purpose commandable two-state output, when a door needs no access-control model behind it.
What Chipkin Provides
The Access Door object, including its door-command priority array and door-state model, is a first-class object type in the CAS BACnet Stack. Talk to us about modeling your device’s points.