Skip to main content

BACnet/IP (HVAC / Building Automation)

BACnet (Building Automation and Control networks) is the standard communication protocol for the building automation (BA) domain. It is most widely used in HVAC, lighting, fire detection, and access control, and BACnet/IP — BACnet carried over IP — is now the de facto default.

This gateway supports BACnet/IP in read mode through the common integration engine.

More BMS than PLC

BACnet is normally encountered not on general industrial PLCs but on BMS (Building Management System) controllers (Honeywell, Johnson Controls, Schneider Andover, Delta Controls, Siemens Desigo, and so on). If a BMS is already in operation, consider using the BMS gateway or integration API first rather than polling the controllers directly.


Registration form entries

FieldWhat to enterExample
IP addressIP of the BACnet controller192.168.10.50
PortBACnet/IP port47808 (= 0xBAC0, standard)
Device ID (device-id)BACnet device instance number1001
Response timeoutResponse wait time (ms)3000
How to find the Device ID

BACnet identifies a device by the combination of IP and Device ID. Scanning the network with a free tool such as YABE (Yet Another BACnet Explorer) shows the device instance number and object list at a glance. The value is also stated in the BACnet PICS document of the BMS submittal drawings.


If the field uses BACnet/MSTP (serial)

If what is installed in the field is BACnet/MSTP (RS-485), PlantPulse Edge cannot communicate with it directly. One of the following is required.

MethodNotes
BACnet router (Cimetrics B6020, Contemporary Controls BASrouter, etc.)MSTP ↔ IP conversion. The most common approach
Add an IP module on the BMS sideController firmware/module upgrade
Via an integration gateway (Niagara, Tridium)The standard on large sites

PLC address notation for tags

BACnet objects are entered in the <objectType>:<instance> format.

NotationMeaning
analogValue:1Analog Value 1 (real values such as temperature, humidity, flow)
analogInput:5Analog Input 5 (direct sensor input)
analogOutput:2Analog Output 2 (valve / damper command)
binaryValue:10Binary Value 10 (boolean value)
binaryInput:5Binary Input 5 (digital input / contact)
binaryOutput:3Binary Output 3 (relay command)
multiStateValue:1Multi-State Value 1 (mode / state)

Commonly used object types.

TypeCodePurpose
Analog Input / Value / OutputanalogInput / analogValue / analogOutputReal values (temperature, air volume, etc.)
Binary Input / Value / OutputbinaryInput / binaryValue / binaryOutput0/1 (running, alarm)
Multi-State Input / Value / OutputmultiStateInput / multiStateValue / multiStateOutput1, 2, 3, … (operating mode)

Data format matching

BACnet objectData formatFormat modifier
analogValue / analogInput / analogOutputFloatREAL
binaryValue / binaryInput / binaryOutputBoolean(leave empty)
multiStateValue / multiStateInput / multiStateOutputInteger(leave empty)
(property) strings such as Object NameString(leave empty)

By default the object's Present_Value property is read. If another property is needed (for example Status_Flags or Out_Of_Service), call it directly from Advanced — REST API.


Common problems and remedies

SymptomPossible causeRemedy
"No response" / timeoutDevice ID mismatch, port 47808 blocked, BBMD not configuredDiscover the device with YABE and check the ID; allow 47808/UDP through the firewall
Devices on other subnets are not visibleBACnet is confined to the same broadcast domain by defaultConfigure BBMD (BACnet Broadcast Management Device) or Foreign Device Registration
Values arrive but their meaning is unclearEngineering Units are stored in the object propertiesCheck the per-object unit (°C, kPa, %, …) in YABE or the BMS drawings
Only multi-state numbers are shownState_Text is a separate propertyConvert to labels using the BMS mapping table (1 = stopped, 2 = running, 3 = alarm, etc.) and a formula

Next steps

  • BACnet examples in Advanced — REST API
  • For building site integration it is usually simpler to build on top of Niagara / Tridium — consult the BMS team.