The BACnet Object and Property Model
Everything BACnet does rests on one idea: a device exposes its data as a collection of objects, and each object carries a defined set of properties. If you are integrating a building controller into a supervisory system, or mapping HVAC points into a historian, understanding the object and property model is what lets you read a device you have never seen before. This reference explains what an object is, what a property is, which properties every object must have, and why this structure makes BACnet self-describing in a way a bare register protocol is not.
BACnet Object and Property Model in one line: In BACnet, a device is modeled as a set of standardized objects - such as Analog Input, Binary Output, or Schedule - and each object is a bundle of named properties like Present_Value, Object_Name, and Status_Flags. The object type tells a client what the data represents, and its properties hold the value, units, and status. Because every object of a given type carries the same required properties, a client can read any conforming device without a vendor-specific data map.
What an Object Represents
A BACnet object is a software representation of one thing the device measures, controls, or manages. A temperature sensor input becomes an Analog Input object; a controllable damper becomes an Analog Output or a Binary Output; a running total from a meter becomes an Accumulator. The standard defines a catalogue of object types, and each type has an agreed meaning, so a client that finds an Analog Value object in one vendor's controller and another vendor's controller can treat both the same way. This is the heart of BACnet interoperability, and it is a deliberate contrast with a protocol like Modbus, where a register number carries no built-in meaning at all.
Objects are not limited to physical points. Alongside inputs and outputs there are objects for data structures the controller manages internally: a Schedule object that turns points on and off by time of day, a Calendar object that lists special dates, a Trend Log object that records a point's history, a Notification Class object that routes alarms. Treating these as objects, with the same read and write mechanics as a sensor value, is what lets a supervisory client configure a controller's scheduling or alarming remotely without a proprietary tool. Each of these object types has its own dedicated reference in this cluster.
Every object on a device is addressed by an Object_Identifier, which combines the object type and an instance number - Analog Input 3, Binary Output 12. That identifier is how a client names the object it wants to read or write. The type half tells the client how to interpret the object; the instance half distinguishes it from every other object of that type on the same device. The identifier and the property model together mean a client can locate and interpret any point on a device it has only just discovered.
What a Property Is and Which Ones Are Required
A property is a named, typed attribute of an object. The Present_Value property holds the object's current value - the measured temperature, the commanded output, the run status. Object_Name holds a human-readable label. Units holds the engineering unit for an analog value. Status_Flags holds the four fault and alarm bits that tell a client whether the value is trustworthy. Each property has a defined data type and a defined meaning, so a client reading Units on any Analog Input knows it will get an enumerated engineering unit, not a free-form string.
The standard marks each property of each object type as required, optional, or writable. Required properties must exist on every object of that type, which is what guarantees a client can rely on finding Present_Value, Object_Name, Object_Type, and Status_Flags on any input or value object. Optional properties may or may not be present depending on the device and how rich the vendor made it. Writable properties are the ones a client may change - the Present_Value of an output object, the schedule entries of a Schedule object. Reading a device's Property_List, where supported, tells a client exactly which properties a given object actually carries.
Because the required-property set is fixed per object type, integration becomes a browse-and-map exercise rather than a decode exercise. A client walks the device's object list, reads Object_Name and Present_Value for each object, and has a working point list. This is why bringing BACnet points into a tag database or a SCADA tag structure is usually more straightforward than mapping a register-based device, where the same work requires an externally supplied register map to give the numbers meaning.
How the Model Shapes Integration and Monitoring
When a supervisory system or gateway reads a BACnet controller, it is really reading properties of objects. A poll for a room temperature is a request for the Present_Value property of a specific Analog Input object; a command to a damper is a write to the Present_Value of an Analog Output object at a chosen priority. Understanding that every interaction is a property access on a named object is what makes the rest of BACnet - the services that do the reading and writing, described in the ReadProperty service reference - fall into place.
The self-describing nature of the model also shapes how a value should be trusted. A Present_Value never travels alone in a well-designed integration: its Status_Flags and Reliability properties say whether the value is currently valid, in fault, or in alarm. A client that maps only Present_Value and ignores the status properties will happily record a stale or faulted number as if it were good. Reading the status alongside the value is a small amount of extra work that turns a raw number into a trustworthy one, which matters as much for a facility HVAC point as for a process measurement.
For unified monitoring, the object model is what lets facility data sit naturally beside process telemetry. A cloud SCADA such as Merobix that browses a BACnet device's objects can map each Present_Value into a tag, carry its units and status, and trend it in the same historian as everything else. The point mapping is durable because the object identifiers are stable on the device, so once the objects are mapped the integration does not depend on rediscovering them - the same principle covered in the BACnet discovery guide.
Frequently Asked Questions
What is the difference between an object and a property in BACnet?
An object represents one thing the device measures, controls, or manages - an input, an output, a schedule, an alarm source. A property is a named, typed attribute of that object, such as Present_Value for its current value, Object_Name for its label, or Status_Flags for its validity. A device is a collection of objects, and each object is a collection of properties. A client reads or writes data by naming an object and one of its properties.
Which properties does every BACnet object have?
Every object carries at least Object_Identifier, Object_Name, and Object_Type as required properties, so a client can always identify and name it. Value-bearing objects such as inputs, outputs, and value objects additionally require Present_Value and Status_Flags. Beyond that, the required-property set depends on the object type, and each type's required properties are fixed by the standard, which is what lets a client interpret an object it has never seen before.
Why is the BACnet object model called self-describing?
Because the type and meaning of every value travel with the data rather than living in an external map. An Analog Input object announces that it is an analog measurement, carries its own engineering units, and reports its own validity through Status_Flags. A client can browse a device, read each object's name and value, and build a working point list without a vendor-specific register map, which is the practical difference from a bare register protocol.
Sources and verification
This page references the protocol specifications published by the organizations below. Editions, product capabilities, and documentation change over time - confirm current requirements and specifications directly with the source.
- Modbus Application Protocol Specification - Modbus Organization
Merobix is not affiliated with, endorsed by, or sponsored by these organizations; their names are used only to identify the standards and products discussed.
Automation services
Need help turning this into a working system?
Merobix integrates SCADA, programs Allen-Bradley and Siemens PLCs, and designs and fabricates industrial control panels.
Meeting requests are reviewed before confirmation.