BACnet vs Modbus ist eine Frage, auf die jeder Facility-Ingenieur, Systemintegrator und jedes Automatisierungsteam früher oder später stößt, meist dann, wenn eine Kältemaschine das eine Protokoll spricht und die Energiezähler das andere. Dieser Leitfaden vergleicht beide Protokolle hinsichtlich Datenmodell, Transport, Discovery, Sicherheit und Aufwand im Alltag und zeigt anschließend, wie ein Gateway beide in MQTT übersetzt, sodass die Daten an einem Ort landen. Am Ende wissen Sie, welches Protokoll zu welcher Aufgabe passt und wie Sie beide in eine moderne Telemetrie-Pipeline bringen.
Zwei Protokolle, zwei verschiedene Welten
Modbus entstand Ende der 1970er-Jahre für speicherprogrammierbare Steuerungen. Es ist bewusst minimalistisch: Ein Client fragt einen Server nach einem Block von 16-Bit-Registern oder einzelnen Bits, und der Server antwortet. Auf der Leitung gibt es keine Namen, keine Einheiten und keine Beschreibungen. Alles, was den Zahlen Bedeutung verleiht, steckt in einer Registertabelle, meist einem PDF des Geräteherstellers.
BACnet (Building Automation and Control networks) wurde von der ASHRAE für HLK, Beleuchtung, Zutrittskontrolle und Brandmeldesysteme entwickelt und ist als ASHRAE 135 und ISO 16484-5 genormt. Es war von Anfang an auf Interoperabilität zwischen Herstellern in großen Gebäuden ausgelegt. Statt anonymer Register stellt ein BACnet-Gerät typisierte Objekte mit benannten Eigenschaften bereit, und Geräte können sich im Netz gegenseitig finden.
Dieser Unterschied in der Philosophie erklärt fast alles Weitere im Vergleich. Modbus ist einfach zu implementieren und bei Zählern, Antrieben und SPSen nahezu universell. BACnet ist reichhaltiger, selbstbeschreibend und dominiert in der Gebäudeleittechnik.
BACnet vs Modbus auf einen Blick
| Aspekt | Modbus | BACnet |
|---|---|---|
| Ursprung und Domäne | Industriesteuerungen, Zähler, Antriebe | Gebäudeautomation: HLK, Beleuchtung, Zutritt, Brandschutz |
| Datenmodell | Coils, Discrete Inputs, Holding- und Input-Register (16 Bit) | Objekte (Analog Input, Binary Output, Schedule, Trend Log...) mit Eigenschaften |
| Selbstbeschreibung | Keine, Registertabelle nötig | Objektnamen, Einheiten, Beschreibungen direkt vom Gerät lesbar |
| Discovery | Keine, Adressen müssen bekannt sein | Broadcasts Who-Is / I-Am und Who-Has / I-Have |
| Serieller Transport | Modbus RTU über RS-485 | MS/TP über RS-485 |
| IP-Transport | Modbus TCP, Port 502 | BACnet/IP über UDP, Port 47808 (0xBAC0) |
| Änderungsbenachrichtigung | Keine, nur Polling | Change-of-Value-Abonnements (COV) |
| Alarme und Zeitpläne | Nicht Teil des Protokolls | Native Objekte und Dienste für Alarme, Ereignisse, Zeitpläne, Trends |
| Sicherheit | Keine im klassischen Modbus; Modbus/TCP Security ergänzt TLS auf Port 802 | Keine im klassischen BACnet/IP; BACnet Secure Connect (BACnet/SC) ergänzt TLS über WebSockets |
| Implementierungsaufwand | Sehr gering | Höher, besonders für vollständige Geräteprofile |
Datenmodelle: Register gegen Objekte
Am Datenmodell entscheidet sich die Frage BACnet vs Modbus meist, denn es bestimmt, wie viel Integrationsaufwand jedes neue Gerät verursacht.
Modbus: Zahlen an Adressen
Ein Modbus-Energiezähler stellt die Spannung etwa im Holding-Register 3000 als 32-Bit-Float über zwei Register bereit. Um sie zu nutzen, müssen Sie Adresse, Funktionscode, Datentyp, Wortreihenfolge und einen eventuellen Skalierungsfaktor kennen. Ist die Wortreihenfolge falsch, werden aus 230 V unsinnige Werte. Jedes neue Gerätemodell bedeutet, eine neue Registertabelle zu lesen und in der Gateway-Konfiguration abzubilden.
Der Vorteil ist die Vorhersehbarkeit: Jede SPS, jedes SCADA-Paket und jedes Gateway spricht es.
BACnet: typisierte Objekte mit Eigenschaften
Ein BACnet-Controller stellt etwa analog-input,3 bereit, mit Eigenschaften wie object-name („AHU-1 Supply Air Temp“), present-value (13.4), units (degrees-Celsius), status-flags und reliability. Ein Client kann die object-list des Geräts aufzählen und Namen und Einheiten ohne externes Dokument lesen. Schreibzugriffe laufen über ein Prioritätsarray mit 16 Stufen: Ein Override für den Personenschutz auf Priorität 1 gewinnt gegen einen geplanten Sollwert auf Priorität 16, und wird eine Priorität freigegeben, übernimmt die nächste Stufe.
Diese Fülle kostet Komplexität: Die Stacks sind größer, Geräteprofile legen fest, welche Dienste vorhanden sein müssen, und große Liegenschaften erfordern eine sorgfältige Verwaltung von Geräteinstanz- und Netzwerknummern.
Transport und Vernetzung
Beide Protokolle haben eine serielle und eine IP-Variante, und die Paare wirken auf dem Papier ähnlich.
- Modbus RTU vs BACnet MS/TP. Beide laufen auf RS-485-Linien. Modbus RTU nutzt einen einzigen Master, der die Slaves der Reihe nach pollt. MS/TP arbeitet mit Token Passing zwischen Mastern, sodass mehrere Controller Verkehr auslösen können; Slaves sind als passive Knoten zulässig. MS/TP-Linien sind bei Feldcontrollern an VAV-Boxen und Gebläsekonvektoren verbreitet.
- Modbus TCP vs BACnet/IP. Modbus TCP ist eine einfache TCP-Verbindung zu Port 502, die Router und Firewalls problemlos passiert. BACnet/IP nutzt UDP auf Port 47808 und setzt für die Discovery auf Broadcasts. Broadcasts überqueren keine Subnetze, weshalb BACnet-Standorte BACnet Broadcast Management Devices (BBMDs) oder Foreign Device Registration einsetzen, um Subnetze zu verbinden.
Für den Fernzugriff eignen sich beide klassischen Protokolle schlecht für das Internet. Keines hat eingebaute Authentifizierung oder Verschlüsselung, und Port 502 oder 47808 öffentlich freizugeben, ist ein bekannter Weg, ein Gebäude oder Werk scannen und angreifen zu lassen. Die moderne Antwort lautet: Beide im lokalen Netz belassen und die Daten über ein verschlüsseltes, authentifiziertes Protokoll nach außen bringen. Das entspricht auch dem Zonen-und-Conduits-Gedanken der IEC 62443 und den Anforderungen, die NIS2 an Betreiber wichtiger Einrichtungen stellt. Genau hier kommt MQTT ins Spiel.
Polling gegen Change of Value
Modbus kennt keine Ereignisse. Wenn Sie wissen wollen, wann sich eine Temperatur ändert, pollen Sie sie alle paar Sekunden und vergleichen. Für eine Handvoll Zähler ist das in Ordnung, für Tausende Datenpunkte verschwenderisch.
BACnet bietet COV-Abonnements: Ein Client abonniert ein Objekt, und das Gerät sendet eine Benachrichtigung, wenn sich der Wert über sein COV-Inkrement hinaus bewegt oder sich die Status-Flags ändern. Abonnements haben eine Lebensdauer und müssen erneuert werden, und nicht jedes Gerät unterstützt COV für jeden Objekttyp. Produktive Gateways kombinieren daher meist COV, wo verfügbar, mit Polling als Rückfallebene.
Das ist für MQTT relevant, denn MQTT ist ereignisgesteuert: Werden COV-Benachrichtigungen oder per Totband gefilterte Polls in Publishes umgewandelt, bleibt die Bandbreite gering. Zur Abstimmung des Totbands siehe den Leitfaden zu Report by Exception.
Wann Sie welches wählen
Nutzen Sie diese Checkliste, wenn Sie die Wahl haben, etwa bei der Spezifikation einer Neuanlage:
- Geht es vor allem um HLK, Beleuchtung oder Gebäudetechnik? Bevorzugen Sie BACnet. Ihre Gebäudeleittechnik mit ihren Grafiken und ihrem Alarmmanagement erwartet BACnet-Objekte.
- Handelt es sich um einen Zähler, Antrieb, Wechselrichter oder einfachen Sensor? Modbus ist oft die einzige Option und völlig ausreichend. Die meisten Gebäudeleitsysteme binden Modbus-Geräte über ein Gateway oder einen Treiber ein.
- Benötigen Sie Zeitpläne, Trends und Alarme direkt in den Feldgeräten? BACnet hat dafür native Objekte; bei Modbus implementieren Sie sie in der SPS oder im SCADA.
- Müssen Controller verschiedener Hersteller direkt zusammenarbeiten? BACnet, mit BTL-gelisteten Geräten.
- Ist das Integrationsbudget pro Gerät knapp und die Datenpunktliste klein? Modbus ist schneller verdrahtet und konfiguriert.
- Brauchen Sie sicheren Transport im lokalen Netz? Achten Sie auf Unterstützung für BACnet/SC oder Modbus/TCP Security und planen Sie in jedem Fall eine Netzwerksegmentierung.
In der Praxis laufen an den meisten Standorten beide. Die eigentliche Frage lautet nicht BACnet vs Modbus, sondern wie man beide in eine einheitliche, sauber benannte Datenschicht bringt, etwa einen Unified Namespace (UNS).
BACnet und Modbus zu MQTT überbrücken
Ein Protokoll-Gateway sitzt im lokalen Netz, spricht nach unten BACnet und Modbus und veröffentlicht nach oben per MQTT an einen Broker. Das kann ein kommerzielles Gebäude-Gateway sein, ein Industrie-PC mit Node-RED oder ein kleiner Python-Dienst. Das Muster ist immer gleich:
- Modbus-Register nach Zeitplan pollen, in technische Werte dekodieren und ein Totband anwenden.
- BACnet-COV abonnieren, wo unterstützt, und den Rest pollen.
- Beides in ein einheitliches Payload-Format mit Wert, Einheit, Qualität und Zeitstempel normalisieren.
- Auf Topics veröffentlichen, die die Anlage beschreiben, nicht das Protokoll.
Der letzte Punkt ist der wichtigste. Konsumenten sollte es egal sein, ob die Zulufttemperatur aus analog-input,3 oder aus Holding-Register 3000 stammt. Ein Topic-Baum nach Ort und Anlage, im Sinne von ISA-95-MQTT-Topics, verbirgt das Protokoll vollständig. Genau das ist die Idee des UNS: Die ISA-95-Hierarchie (Enterprise → Site → Area → Line → Cell) wird zur Topic-Struktur auf dem Broker. In der Fertigung entsteht so etwa acme/werk-stuttgart/montage/linie-1/zelle-3/temperatur, in Liegenschaften übernehmen Campus, Gebäude, Etage und Anlage die Rolle der Ebenen. Werk und Gebäudetechnik können so im selben Namespace landen, was zum Beispiel ein gemeinsames Energiemonitoring erleichtert. Mehr dazu im Beitrag zu Sparkplug B und Unified Namespace.
connectmq/demo/a7f3k2/campus1/building-b/floor3/ahu1/supply-air-temp
connectmq/demo/a7f3k2/campus1/building-b/floor3/ahu1/fan-status
connectmq/demo/a7f3k2/campus1/building-b/plantroom/meter1/active-power
connectmq/demo/a7f3k2/campus1/building-b/plantroom/meter1/voltage-l1
Eine normalisierte Payload von beiden Seiten sieht so aus:
{
"value": 13.4,
"unit": "degC",
"quality": "good",
"ts": "2026-10-16T09:41:07Z",
"source": "bacnet:device-120001/analog-input:3"
}
Den Topic-Aufbau auf dem öffentlichen MQTT-Broker ausprobieren
Bevor Sie echte Anlagen anbinden, können Sie das Topic-Design gegen den öffentlichen MQTT-Broker unter broker.connectmq.com validieren. Verwenden Sie ein zufälliges Präfix, denn der öffentliche MQTT-Broker ist für jeden lesbar und nur für Tests gedacht, nicht für Produktionsdaten:
# Terminal 1: alles unter Ihrem Test-Präfix beobachten
mosquitto_sub -h broker.connectmq.com -p 1883 -i bms-watch-a7f3k2 \
-t 'connectmq/demo/a7f3k2/#' -v
# Terminal 2: einen BACnet-Datenpunkt und einen Modbus-Datenpunkt simulieren
mosquitto_pub -h broker.connectmq.com -p 1883 -i bms-sim-a7f3k2 \
-t 'connectmq/demo/a7f3k2/campus1/building-b/floor3/ahu1/supply-air-temp' \
-m '{"value":13.4,"unit":"degC","quality":"good"}'
mosquitto_pub -h broker.connectmq.com -p 1883 -i bms-sim2-a7f3k2 \
-t 'connectmq/demo/a7f3k2/campus1/building-b/plantroom/meter1/active-power' \
-m '{"value":42.7,"unit":"kW","quality":"good"}'
Zählen Sie beim Entwurf Ihre Topic-Ebenen: Der öffentliche MQTT-Broker erlaubt bis zu 8 Ebenen, lange Gebäudehierarchien müssen für Tests also eventuell abgeflacht werden. Produktive Broker in Ihrem eigenen Plan unterliegen diesem Testlimit nicht.
Details zur Modbus-Seite finden Sie unter Modbus TCP zu MQTT und Modbus RTU zu MQTT.
Produktivbetrieb: ein privater Broker
Für echte Gebäude und Anlagen richten Sie das Gateway auf einen privaten Broker mit Zugangsdaten und TLS auf Port 8883 aus. Mit ConnectMQ erstellen Sie einen Broker im Portal, kopieren den generierten Benutzernamen, das Passwort und die Client-ID in das Gateway und sehen die eingehenden Topics sofort im Live-Topic-Explorer. Schwellwert-Alarmregeln im Portal können eine Zulufttemperatur oder einen Leistungswert melden, der einen Grenzwert überschreitet, während Historians, Dashboards und Analysen als gewöhnliche MQTT-Clients abonnieren. Wenn Sie zuerst die Abwägungen beim Hosting verstehen möchten, lesen Sie über die Vorteile eines verwalteten MQTT-Brokers.
Häufige Fallstricke bei der Integration beider Protokolle
- Modbus-Wortreihenfolge und Skalierung. Prüfen Sie jeden 32-Bit-Wert gegen die Geräteanzeige, bevor Sie ihm vertrauen.
- Doppelte BACnet-Geräteinstanzen. Zwei Controller mit derselben Instanznummer verursachen sporadisches, verwirrendes Verhalten. Prüfen Sie das vor der Integration.
- Schreiben auf die falsche BACnet-Priorität. Ein Gateway, das mit hoher Priorität schreibt und nie freigibt, kann den Gebäudezeitplan aushebeln.
- Zu schnelles Polling. Eine gemeinsam genutzte RS-485-Linie kann durch ein aggressives Gateway ausgebremst werden.
- Flache Topic-Namen. Topics wie
modbus/40001sind im großen Maßstab nicht nutzbar. Benennen Sie nach Anlage.
Das Gesamtbild, wie diese Bausteine in einem Werk zusammenspielen, zeigt der Leitfaden zu Industrial IoT mit MQTT mit Architektur, Edge-Gateways und Datenmodellierung von Anfang bis Ende.
Starten Sie mit ConnectMQ
Sobald Ihr Gateway BACnet und Modbus in saubere MQTT-Topics übersetzt, braucht es einen zuverlässigen Cloud-MQTT-Broker als Ziel. Erstellen Sie unter app.connectmq.com einen kostenlosen Serverless-Broker, ganz ohne Kreditkarte, und verbinden Sie Ihr Gateway in wenigen Minuten per TLS. ConnectMQ bietet Ihnen den Live-Topic-Explorer und Schwellwert-Alarme, um jeden Datenpunkt zu prüfen, sobald er online geht.
Häufig gestellte Fragen
Ist BACnet besser als Modbus?
Keines ist grundsätzlich besser. BACnet ist reichhaltiger und selbstbeschreibend, was zur Gebäudeautomation passt; Modbus ist einfacher und bei Zählern, Antrieben und SPSen nahezu universell.
Können BACnet- und Modbus-Geräte direkt miteinander kommunizieren?
Nein, es sind unterschiedliche Protokolle. Sie benötigen ein Gateway oder einen Controller, der beide spricht, oder Sie bringen beide in MQTT und lassen die Konsumenten mit einer normalisierten Datenschicht arbeiten.
Welche Ports verwenden BACnet/IP und Modbus TCP?
BACnet/IP nutzt UDP-Port 47808, Modbus TCP nutzt TCP-Port 502. Keiner davon sollte ins Internet freigegeben werden; senden Sie Daten stattdessen per MQTT mit TLS nach außen.
Unterstützt BACnet ereignisgesteuerte Aktualisierungen?
Ja, über Change-of-Value-Abonnements (COV), wobei die Unterstützung je nach Gerät und Objekttyp variiert. Modbus hat kein Gegenstück und setzt immer auf Polling.



