What the Analog Input Object Is
The Analog Input object, defined in Clause 12.2 of ANSI/ASHRAE 135-2024, is the standardized way a BACnet device represents an analog input: a measured value coming into the device from the physical world. A temperature sensor wired to a controller shows up on the network as an Analog Input object whose Present_Value is the temperature.
It is usually the first object type anyone meets. Discover a controller, open its object list, and the rows of measured values are Analog Inputs. An Analog Input can also raise its own alarm when the value leaves configured limits; this is called intrinsic reporting, uses the OUT_OF_RANGE event algorithm, and delivers the alarm through the event notification services.
Where You’ll See It
- Sensors on controllers. Space temperatures, duct pressures, flow rates, humidity: each physical analog input channel on a controller typically maps to one Analog Input object. Reading one is a ReadProperty exchange; watching one efficiently is a COV (Change of Value) subscription, where the device pushes updates instead of being polled.
- Gateways. A gateway exposing Modbus or M-Bus meter readings to a BMS commonly presents them as Analog Inputs so the head end (the central BMS server) treats them like any other sensor.
- Trend sources. Trend Logs most often record Analog Input
Present_Values, read back with ReadRange.
Required Properties
Clause 12.2 requires every Analog Input 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.
| 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 analog-input for this object |
Present_Value | REAL | The measured value. Read-only in normal operation; required to be writable while Out_Of_Service is true |
Status_Flags | BACnetStatusFlags | Four health flags: in-alarm, fault, overridden, out-of-service |
Event_State | BACnetEventState | The object’s current event state (normal, high-limit, low-limit, or fault for this object type) |
Out_Of_Service | BOOLEAN | When true, Present_Value is decoupled from the physical input for testing and override |
Units | BACnetEngineeringUnits | The engineering units of the value (degrees, pascals, percent), as reported by the device; verify against what the head end assumes |
Property_List | BACnetARRAY[N] of BACnetPropertyIdentifier | The list of properties this instance actually implements |
Optional Properties
The optional set is where vendors differ, and it is what separates a bare sensor point from one that can alarm and report on its own. The ones integrators meet most are COV_Increment (how much the value must change before a COV notification fires), the alarm-limit group (High_Limit, Low_Limit, Deadband, Limit_Enable), and Reliability, which names the reason whenever the fault flag in Status_Flags is set. The intrinsic-reporting group generally appears or is absent as a set: a device that supports intrinsic reporting on this object implements the group, and one that does not omits it. (Interface_Value, in the Integration group, reports the live physical input even while Out_Of_Service is true.)
| Property | Datatype | Group |
|---|---|---|
Description | CharacterString | General |
Device_Type | CharacterString | General |
Update_Interval | Unsigned | General |
Resolution | REAL | General |
Min_Pres_Value | REAL | Value range |
Max_Pres_Value | REAL | Value range |
COV_Increment | REAL | COV reporting |
Time_Delay | Unsigned | Intrinsic reporting |
Notification_Class | Unsigned | Intrinsic reporting |
High_Limit | REAL | Intrinsic reporting |
Low_Limit | REAL | Intrinsic reporting |
Deadband | REAL | Intrinsic reporting |
Limit_Enable | BACnetLimitEnable | 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 |
Fault_High_Limit | REAL | Fault detection |
Fault_Low_Limit | REAL | Fault detection |
Reliability_Evaluation_Inhibit | BOOLEAN | Fault detection |
Audit_Level | BACnetAuditLevel | Auditing |
Auditable_Operations | BACnetAuditOperationFlags | Auditing |
Interface_Value | BACnetOptionalREAL | Integration |
Tags | BACnetARRAY[N] of BACnetNameValue | Tagging and profile |
Profile_Location | CharacterString | Tagging and profile |
Profile_Name | CharacterString | Tagging and profile |
Related Objects
- Analog Output: the commandable counterpart driving a physical output.
- Analog Value: an analog point with no physical input behind it (setpoints, calculated values).
- Binary Input: the two-state equivalent for contacts and statuses.
- Multi-state Input: the equivalent for inputs with a small set of named states (off / low / high) rather than a measured number.
What Chipkin Provides
The Analog Input object is a first-class object type in the CAS BACnet Stack, including the OUT_OF_RANGE intrinsic reporting algorithm. Talk to us about modeling your device’s points.
Related Pages
- BACnet
- BACnet Objects
- BACnet ReadProperty Service
- BACnet COV
- BACnet Object Types & Properties Reference
- BACnet Stop Polling: Intrinsic Event Notification: how OutOfRange dispatches through the notification chain