The question that appears the first time a data centre or a factory tries to put building systems and process equipment on one dashboard.
| BACnet/IP | Modbus TCP | |
|---|---|---|
| Specification | ASHRAE 135 / ISO 16484-5 | Modicon Modbus, TCP encapsulation (Modbus-TCP) |
| First published | 1995 | 1979 (serial), 1999 (TCP) |
| Transport | UDP 47808 (0xBAC0) | TCP, port 502 |
| Data model | Objects with properties — Analog Input, Binary Value, Schedule, Trend Log. Standard object types with standard property identifiers. | Flat 16-bit registers and single-bit coils. No types, no names, no metadata — a register is a number at an address. |
| Discovery | Yes — Who-Is / I-Am broadcast discovery, then read the object list. | None. You need the vendor's register map, usually a PDF. |
| Security | Weak historically. BACnet/SC (secure connect) is the current answer and is not widely deployed. | None in the base specification. Whatever the network gives you. |
| Polling or subscription | Both — polled reads and COV (change of value) subscriptions. | Polling only. The client asks; the device answers. |
| Implementation complexity | Moderate. The object model is clean; the broadcast/BBMD routing across subnets is not. | Lowest of any protocol here. A working client is ~200 lines. |
| Typical industries | Buildings. HVAC, chillers, air handlers, lighting, metering. | Everything. Drives, meters, inverters, sensors, PLCs, BESS. |
| Forge support | Adapter shipped. 3 OEM families mapped. | Adapter shipped. 14 OEM families mapped. |
Strength. Genuinely standardised object semantics inside its domain.
What it costs you. Object *names* are free text set by the commissioning engineer, so the semantics stop at the object type.
BACnet/IP adapter →Strength. Universal, trivial to implement, works on hardware from 1985.
What it costs you. Carries no semantics whatsoever. Scaling, byte order and register meaning all live outside the protocol.
Modbus TCP adapter →BACnet has real object semantics inside buildings; Modbus has no semantics anywhere. But BACnet object *names* are free text typed by a commissioning engineer, so 'AHU-3 SAT' and 'RTU3_SupplyTemp' are the same measurement at two sites of the same customer. The gap between the two protocols is smaller than the gap between two BACnet installations.
Forge is not an argument for a protocol. It is the layer that makes the choice stop mattering downstream: 16,908 curated mappings across 14 protocol adapters, resolving to 366 canonical fields with enforced units and physics bounds.
Two devices, two protocols, two vendors, two entirely different tag names — and one canonical field out. Both of these are real mappings from the corpus, not illustrations.
Same field: energy_kwh. Same unit contract, same physics
bounds, same shape. Your query does not need to know which protocol the reading
arrived on.