Overview
BACnet models all building automation data as objects — typed containers with properties. Understanding object types is essential for configuring gateways, mapping points from other protocols, and diagnosing interoperability issues.
This reference covers the object types most commonly encountered in protocol conversion and BMS integration work — the types you’ll configure on a QuickServer when bridging Modbus, EtherNet/IP, or other protocols to BACnet/IP or BACnet MS/TP.
For a high-level overview of the object model, see the BACnet Objects knowledge base page.
Analog Objects
Analog objects represent continuously variable numeric values — temperatures, pressures, setpoints, percentages.
Analog Input (AI)
| Property | Detail |
|---|---|
| Access | Read-only |
| Present Value | REAL (32-bit float) |
| Units | Engineering units (e.g., degrees-fahrenheit, percent, pascals) |
| Typical Use | Sensor readings — zone temperature, duct pressure, flow rate, humidity |
AI objects represent physical sensor measurements. In a protocol conversion, Modbus input registers (FC04) or read-only holding registers (FC03) typically map to AI objects on the BACnet side.
Analog Output (AO)
| Property | Detail |
|---|---|
| Access | Read/Write |
| Present Value | REAL (32-bit float) |
| Units | Engineering units |
| Typical Use | Actuator commands — valve position (0–100%), fan speed setpoint, damper command |
AO objects represent physical actuator commands. When a BMS writes to an AO, the gateway translates the write into the source protocol’s write command — for Modbus, that means FC06 or FC16 to a holding register.
Analog Value (AV)
| Property | Detail |
|---|---|
| Access | Read/Write |
| Present Value | REAL (32-bit float) |
| Units | Engineering units (optional) |
| Typical Use | Calculated values, configuration parameters, setpoints, internal variables |
AV objects represent software-defined numeric values — not directly tied to a physical sensor or actuator. In gateway configurations, AV is the most flexible analog type and is commonly used as the default mapping target for Modbus holding registers.
[!WARNING] Some legacy integrations (especially Metasys N2 → BACnet conversions) use AV objects with Present Value
0.0/1.0to represent binary on/off states. This works but is semantically incorrect — Binary Value objects should be used for discrete states. Always verify the upstream device’s actual data types before assuming AV means “analog.”
Binary Objects
Binary objects represent discrete on/off states — exactly two possible values: Active (1) or Inactive (0).
Binary Input (BI)
| Property | Detail |
|---|---|
| Access | Read-only |
| Present Value | ENUMERATED: Active / Inactive |
| Active/Inactive Text | Customizable labels (e.g., "Running" / "Stopped") |
| Typical Use | Status contacts — fan running status, alarm states, door position |
BI objects map well to Modbus discrete inputs (FC02) and individual bits extracted from status registers.
Binary Output (BO)
| Property | Detail |
|---|---|
| Access | Read/Write |
| Present Value | ENUMERATED: Active / Inactive |
| Typical Use | Relay commands — fan start/stop, valve open/close, lighting on/off |
BO objects map to Modbus coils (FC05/FC15).
Binary Value (BV)
| Property | Detail |
|---|---|
| Access | Read/Write |
| Present Value | ENUMERATED: Active / Inactive |
| Typical Use | Software flags — enable/disable states, mode switches, override flags |
BV objects represent software-defined binary states. Like AV vs AI/AO, BV is the “virtual” counterpart to BI/BO.
Multi-State Objects
Multi-state objects represent enumerated states — a fixed set of named values (e.g., Off / Low / Medium / High).
Multi-State Input (MSI)
| Property | Detail |
|---|---|
| Access | Read-only |
| Present Value | Unsigned integer (1-based state index) |
| Number of States | Defines valid range (e.g., 4 = states 1–4) |
| State Text | Array of state names (e.g., ["Off", "Low", "Med", "High"]) |
| Typical Use | Operating mode status, fan speed stage feedback |
Multi-State Output (MSO)
| Property | Detail |
|---|---|
| Access | Read/Write |
| Present Value | Unsigned integer (1-based state index) |
| Typical Use | Mode selection commands, speed stage commands |
Multi-State Value (MSV)
| Property | Detail |
|---|---|
| Access | Read/Write |
| Present Value | Unsigned integer (1-based state index) |
| Typical Use | Configuration enumerations, schedule mode settings |
[!NOTE] Multi-state Present Values are 1-based — state 1 is the first state, not state 0. This is a common source of off-by-one errors when mapping from Modbus registers where the source data may be 0-based.
Device Object
Every BACnet device has exactly one Device object. It identifies the device on the network and advertises its capabilities.
| Property | Detail |
|---|---|
| Object Identifier | Device Instance — must be unique across the entire BACnet internetwork (0–4,194,302) |
| Object Name | Human-readable device name |
| Vendor Name | Manufacturer name |
| Model Name | Product model |
| Protocol Services Supported | Bitmask of supported BACnet services |
| Object List | List of all objects in the device |
The Device object is what Who-Is / I-Am discovery reports. When a BMS discovers a QuickServer, it reads the Device object to learn the device’s identity and enumerate its objects.
Quick Reference: Object Type Selection
Use this table when deciding which BACnet object type to create for a given source data point:
| Source Data Characteristic | Recommended BACnet Type |
|---|---|
| Read-only analog measurement (sensor) | AI |
| Read/write analog setpoint or command | AO (physical) or AV (virtual) |
| Read-only 32-bit float from Modbus | AI |
| Read/write 16-bit register from Modbus | AV |
| Read-only discrete status (contact, alarm) | BI |
| Read/write discrete command (relay, enable) | BO (physical) or BV (virtual) |
| Read-only coil or discrete input from Modbus | BI |
| Read/write coil from Modbus | BO |
| Enumerated state (mode, speed stage) | MSI (read-only) or MSV (read/write) |
| Bit extracted from a Modbus status register | BI or BV |
Gateway Mapping Examples
Modbus to BACnet
| Modbus Source | Function Code | BACnet Target | Notes |
|---|---|---|---|
| Holding Register (temperature) | FC03 | AI | Scale factor may apply |
| Holding Register (setpoint) | FC03/FC06 | AV or AO | FC06 for write |
| Holding Register (32-bit float, 2 regs) | FC03/FC16 | AI or AV | Check word order |
| Input Register (measurement) | FC04 | AI | Read-only |
| Coil (relay command) | FC01/FC05 | BO | Discrete R/W |
| Discrete Input (alarm contact) | FC02 | BI | Discrete read-only |
| Status register (bit field) | FC03 + bit extract | BI per bit | Bit extraction in gateway config |
[!TIP] For bit extraction from Modbus status registers, configure the gateway to read the full 16-bit register and extract individual bits as separate BI or BV objects. This is a common pattern for generator controllers and power meters that pack multiple boolean statuses into a single register.
EtherNet/IP to BACnet
| EtherNet/IP Source | BACnet Target | Notes |
|---|---|---|
| INT tag (sensor) | AI | Scale appropriately |
| DINT tag (setpoint) | AV | 32-bit integer |
| BOOL tag (status) | BI | Direct binary map |
| BOOL tag (command) | BO | Direct binary map |
Configuration Intake Checklist
What BACnet object types does the BMS expect?
Request the BMS point list from the integrator. It specifies which object types and instance numbers the BMS will poll. Your gateway config must match.
What is the Device Instance?
The Device Instance must be unique across the entire BACnet network. Coordinate with the BMS integrator to get an assigned instance number.
Are there existing objects to preserve?
When replacing a legacy gateway, the BMS may already have points configured for specific object types and instances. Changing these requires the BMS integrator to remap — avoid this by matching the old gateway’s object list exactly.
Does the source data need scaling or type conversion?
Modbus registers are unsigned 16-bit integers by default. If the BACnet side expects a float (AI/AO/AV), the gateway must apply a scale factor or register-pair combination. See Modbus Data Types & Byte Order Reference.
Related Articles
- BACnet Objects - Knowledge Base
- BACnet Discovery & Network Architecture Reference
- Troubleshooting Guide for BACnet MS/TP Networks
- Device Instance - Knowledge Base
- Modbus Addressing & Register Reference
- Modbus Data Types & Byte Order Reference
Chipkin Tools
- QuickServer — Multi-protocol gateway supporting BACnet/IP, BACnet MS/TP, Modbus, EtherNet/IP
- QuickServer — Protocol converter with web-based configuration
- CAS BACnet Explorer — Discover, browse, and read/write BACnet objects
- Chipkin Support — Configuration assistance and protocol integration help