BACnet/IP - Building Automation over Ethernet
BACnet/IP is the IP-network version of BACnet, the protocol used in building automation systems. If Modbus is common around meters, drives, and factory devices, BACnet is common around HVAC, chillers, air handling units, variable air volume boxes, lighting panels, access systems, and building management systems.
BACnet does not start with registers. It starts with objects: analog inputs, binary outputs, schedules, calendars, trend logs, device objects, alarms, and loops. That makes it more descriptive than Modbus for building systems.
Learning Objectives
By the end of this lesson, you should be able to:
- Explain why BACnet is object-oriented rather than register-oriented.
- Identify where BACnet/IP sits in the communication stack.
- Recognize common BACnet object types and services.
- Understand device discovery with
Who-IsandI-Am. - Compare BACnet/IP with Modbus TCP and BACnet MS/TP.
- Troubleshoot common BACnet/IP addressing and integration problems.
Where BACnet/IP Fits
BACnet was created for interoperable building automation. BACnet/IP carries BACnet messages over UDP/IP, normally on UDP port 47808 (0xBAC0).
BACnet/IP is not just "Modbus with different register numbers." It has a richer application model and standardized object types.
BACnet Objects
Each BACnet device exposes objects. An object has a type, an instance number, and properties.
| Object type | Example | Important properties |
|---|---|---|
| Analog Input | Supply air temperature | presentValue, units, statusFlags |
| Analog Output | Cooling valve command | presentValue, priorityArray, relinquishDefault |
| Binary Input | Filter differential pressure switch | presentValue, activeText, inactiveText |
| Binary Output | Exhaust fan command | presentValue, priorityArray |
| Multi-state Value | Occupancy mode | stateText, presentValue |
| Schedule | Office hours | weekly schedule, exception schedule |
| Trend Log | Temperature history | log buffer, interval, record count |
| Device | Controller identity | object name, vendor, protocol revision |
Object addressing is commonly written like this:
Device 1201
analogInput:3 Supply air temperature
analogOutput:7 Cooling valve command
binaryOutput:2 Fan enable
Services - What BACnet Devices Do
BACnet services are operations performed on objects.
| Service | Purpose |
|---|---|
Who-Is |
Ask "which BACnet devices are on this network?" |
I-Am |
Device replies with its device instance and address |
ReadProperty |
Read one property from one object |
ReadPropertyMultiple |
Efficiently read many properties |
WriteProperty |
Write a command or configuration property |
SubscribeCOV |
Subscribe to change-of-value updates |
ConfirmedEventNotification |
Send alarms and events |
TimeSynchronization |
Synchronize controller clocks |
Discovery Example
Command Priority
BACnet outputs use a 16-level priority array. A lower priority number is stronger. This prevents a schedule, operator command, smoke-control sequence, and normal control loop from fighting invisibly.
| Priority | Typical use |
|---|---|
| 1 | Manual life safety |
| 2 | Automatic life safety |
| 5 | Critical equipment control |
| 8 | Manual operator command |
| 10 | Normal automatic control |
| 15 | Scheduling |
| 16 | Default command |
If a value is written at priority 8, a weaker priority 15 schedule cannot override it. To release the operator command, the system writes NULL at priority 8.
BACnet/IP Networks and BBMDs
BACnet discovery often uses broadcast messages. Routers normally do not forward broadcasts between IP subnets. A BBMD (BACnet Broadcast Management Device) forwards BACnet broadcasts in a controlled way so discovery can work across subnets.
Without correct BBMD configuration, devices may work by direct IP address but fail to appear during discovery.
Worked Example - Reading a Temperature
Suppose a BMS must read the supply air temperature from AHU controller device 1201.
- Discover the device using
Who-Isor configure its IP address directly. - Read the device object name to confirm identity.
- Read
analogInput:3 presentValue. - Read
analogInput:3 unitsandstatusFlags.
Example result:
| Property | Value | Meaning |
|---|---|---|
presentValue |
18.6 |
Current measured value |
units |
degreesCelsius |
Engineering unit |
statusFlags |
inAlarm=false, fault=false |
Value is usable |
Do not assume the numeric value is Celsius unless the units property confirms it.
BACnet/IP vs Modbus TCP
| Feature | BACnet/IP | Modbus TCP |
|---|---|---|
| Data model | Objects and properties | Coils and registers |
| Discovery | Native Who-Is / I-Am |
Usually manual |
| Typical domain | Building automation | Industrial devices, meters, drives |
| Transport | UDP/IP | TCP/IP |
| Events and alarms | Native | Vendor-specific or polled |
| Scheduling | Native object model | Usually application-specific |
| Security | BACnet/SC for secure deployments | Modbus Security or external VPN/TLS |
Practical Checks
- Confirm every BACnet device has a unique device instance number.
- Check UDP port
47808unless the site intentionally uses another port. - Verify BBMD settings when devices are on different IP subnets.
- Read object
unitsandstatusFlags; do not trustpresentValuealone. - Check priority arrays when an output refuses to change.
- Keep BACnet/IP on a controlled building network segment, not an open office LAN.
Common Mistakes
- Treating BACnet objects like fixed Modbus registers.
- Reusing the same BACnet device instance in two controllers.
- Forgetting that broadcasts do not cross routers without BBMD support.
- Writing to an output at high priority and never releasing it.
- Ignoring units, reliability, and status flags.
- Assuming BACnet/IP is secure just because it uses Ethernet.
Summary
BACnet/IP is the dominant open protocol for building automation over IP networks. Its strength is the object model: devices describe temperatures, commands, alarms, schedules, and trends using standardized object types and services. Good BACnet integration depends on unique device IDs, correct discovery, careful priority handling, and attention to units and status flags.
Further Reading
- ASHRAE Standard 135 - BACnet.
- BACnet International - BACnet basics and interoperability resources.
- ASHRAE guidance on BACnet Secure Connect (BACnet/SC).
- Vendor integration manuals for BACnet object lists and point maps.