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.
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
| Field | What to enter | Example |
|---|---|---|
| IP address | IP of the BACnet controller | 192.168.10.50 |
| Port | BACnet/IP port | 47808 (= 0xBAC0, standard) |
| Device ID (device-id) | BACnet device instance number | 1001 |
| Response timeout | Response wait time (ms) | 3000 |
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.
| Method | Notes |
|---|---|
| BACnet router (Cimetrics B6020, Contemporary Controls BASrouter, etc.) | MSTP ↔ IP conversion. The most common approach |
| Add an IP module on the BMS side | Controller 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.
| Notation | Meaning |
|---|---|
analogValue:1 | Analog Value 1 (real values such as temperature, humidity, flow) |
analogInput:5 | Analog Input 5 (direct sensor input) |
analogOutput:2 | Analog Output 2 (valve / damper command) |
binaryValue:10 | Binary Value 10 (boolean value) |
binaryInput:5 | Binary Input 5 (digital input / contact) |
binaryOutput:3 | Binary Output 3 (relay command) |
multiStateValue:1 | Multi-State Value 1 (mode / state) |
Commonly used object types.
| Type | Code | Purpose |
|---|---|---|
| Analog Input / Value / Output | analogInput / analogValue / analogOutput | Real values (temperature, air volume, etc.) |
| Binary Input / Value / Output | binaryInput / binaryValue / binaryOutput | 0/1 (running, alarm) |
| Multi-State Input / Value / Output | multiStateInput / multiStateValue / multiStateOutput | 1, 2, 3, … (operating mode) |
Data format matching
| BACnet object | Data format | Format modifier |
|---|---|---|
| analogValue / analogInput / analogOutput | Float | REAL |
| binaryValue / binaryInput / binaryOutput | Boolean | (leave empty) |
| multiStateValue / multiStateInput / multiStateOutput | Integer | (leave empty) |
| (property) strings such as Object Name | String | (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
| Symptom | Possible cause | Remedy |
|---|---|---|
| "No response" / timeout | Device ID mismatch, port 47808 blocked, BBMD not configured | Discover the device with YABE and check the ID; allow 47808/UDP through the firewall |
| Devices on other subnets are not visible | BACnet is confined to the same broadcast domain by default | Configure BBMD (BACnet Broadcast Management Device) or Foreign Device Registration |
| Values arrive but their meaning is unclear | Engineering Units are stored in the object properties | Check the per-object unit (°C, kPa, %, …) in YABE or the BMS drawings |
| Only multi-state numbers are shown | State_Text is a separate property | Convert 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.