Protokolle und Daten

BACnet: Geräteinstanzen, Adressen und Discovery

BACnet-Geräte mit Who-Is und I-Am finden: Geräteinstanzen, Netznummern und MAC-Adressen prüfen und nicht erkannte Geräte eingrenzen.

BACnet findet Geräte, indem ein Client eine Frage als Broadcast sendet und auf Antworten wartet. Er sendet Who-Is; jedes passende Gerät antwortet mit I-Am und teilt seine Geräteinstanz und Adresse mit. Damit dies funktioniert, muss jedes Gerät eine eindeutige Geräteinstanz und jedes Netz eine eindeutige Netznummer haben. Außerdem muss der Broadcast das Netz des Geräts erreichen. Die meisten Probleme bei der Discovery verletzen eine dieser drei Bedingungen.

Dieser Leitfaden gehört zur Reihe über BACnet und Gebäudeprotokolle.

Drei Kennungen

KennungBedeutungEindeutigkeitBeispiel
GeräteinstanzInstanznummer des Device-Objekts, 0 bis 4.194.302Im gesamten Standort eindeutig20102
NetznummerNummer eines BACnet Netzes, 1 bis 65.534Im gesamten Standort eindeutig12
Adresse im NetzIP-Adresse und UDP-Port bei BACnet/IP oder MAC-Adresse von 0 bis 254 bei MS/TPInnerhalb dieses Netzes eindeutig10.20.4.31:47808 oder MAC 7

Die Geräteinstanz ist die beständige Kennung. Clients finden ein Gerät über seine Instanz und merken sich anschließend seine Adresse. Erhält es eine neue IP-Adresse, wird es bei einer erneuten Discovery unter derselben Instanz wiedergefunden.

Die Einführung des BACnet Committee legt fest, dass die Instanznummer des Device-Objekts im gesamten BACnet Internetwork eindeutig sein muss. Objektkennungen innerhalb eines Geräts, zum Beispiel analog-input 3, müssen nur innerhalb dieses Geräts eindeutig sein.

So funktionieren Who-Is und I-Am

  1. Der Client sendet Who-Is als Broadcast. Er kann alle Geräte anfragen oder nur Instanzen in einem bestimmten Bereich.
  2. Jedes passende Gerät sendet I-Am als Broadcast. Die Antwort enthält die Geräteinstanz, die größte akzeptierte Nachricht, die Unterstützung für Segmentierung und die Herstellerkennung.
  3. Der Client erfasst die Quelladresse der I-Am-Antwort und ordnet ihr die Geräteinstanz zu.
  4. Anschließend liest er das Device-Objekt, gewöhnlich dessen Object_List, um weitere Objekte zu finden.

Das verwandte Dienstepaar Who-Has und I-Have findet ein Gerät über den Namen oder die Kennung eines enthaltenen Objekts.

Nicht jedes Gerät kann unmittelbar teilnehmen. Der Artikel von Karg zu MS/TP erklärt: Ein MS/TP-Slave hält nie das Token und kann daher Who-Is nicht selbst beantworten. Ein Router oder Slave-Proxy antwortet für ihn; alternativ bindet der Client ihn statisch an eine konfigurierte Adresse. Der Vergleich von BACnet/IP und MS/TP erklärt Token Passing und Slave-Geräte.

Warum ein Gerät nicht erscheint

BeobachtungMögliche Ursache
Geräte im lokalen Subnetz erscheinen, andere nichtBroadcasts enden an IP-Routern; es braucht BBMDs oder eine Registrierung als Foreign Device
Kein Gerät erscheintFirewall blockiert UDP 47808; Client hört auf der falschen Netzwerkschnittstelle oder nutzt einen anderen UDP-Port
Ein Gerät fehltInstanz außerhalb des Who-Is-Bereichs, MS/TP-Bus hinter einem Router mit falscher Netznummer oder MS/TP-Slave
Ein Gerät erscheint und verschwindet oder Werte wechseln zwischen zwei AnlagenZwei Geräte verwenden dieselbe Geräteinstanz
Geräte hinter zwei Routern werden verwechseltZwei Netze haben dieselbe Netznummer
Discovery funktioniert, Leseanfragen laufen in ein TimeoutDas Gerät antwortet auf Broadcasts, aber nicht auf direkte Nachrichten: NAT, Firewallregel oder eine zu große Nachricht

Der Leitfaden zu Routing und BBMD erläutert, wie Broadcasts andere Subnetze erreichen.

Ping, Discovery und Lesen belegen Unterschiedliches

Prüfen Sie in dieser Reihenfolge und dokumentieren Sie jedes Ergebnis:

TestWas ein Erfolg belegt
Ping an die IP-AdresseDie Netzwerkschnittstelle des Geräts ist erreichbar. ICMP kann blockiert sein; ein Fehlschlag beweist deshalb wenig
Who-Is und I-AmDas Gerät spricht BACnet in diesem Netz und hat die erwartete Instanz
Present_Value eines Objekts lesenDer Client kann das Gerät direkt adressieren und das Objekt ist vorhanden
Fortlaufende WertaktualisierungAbfragen oder COV-Meldungen laufen weiter; jeder Datenpunkt hat einen aktuellen Zeitstempel

Ein erfolgreicher Schritt belegt den nächsten noch nicht. Ein Gerät kann auf Ping antworten, obwohl BACnet deaktiviert ist. Es kann auf Who-Is antworten und dennoch eine nicht unterstützte ReadPropertyMultiple-Anfrage zurückweisen.

Vor dem Anschluss eines neuen Clients

Stimmen Sie Folgendes mit der für das BMS verantwortlichen Person ab:

  • UDP-Port und IP-Subnetz jedes BACnet/IP-Netzes;
  • verwendete Netznummern und den Plan für Geräteinstanzen;
  • ob BBMDs vorhanden sind, wo sie stehen und ob der neue Client sich dort registrieren darf;
  • den Zeitpunkt der Discovery an einem großen Standort, weil ein globales Who-Is viele I-Am-Antworten auf einmal auslöst.

Discovery mit Edge

Edge auf dem ZGW-20 Gateway ist standardmäßig ein BACnet/IP Client auf UDP-Port 47808. Edge findet Geräte durch einen Broadcast im lokalen Netz und identifiziert jedes über seine Geräteinstanz. Der Verbindungstest von Edge ist ein Ping. Discovery, das Lesen eines Datenpunkts und ein fortlaufend aktueller Zeitstempel sind die folgenden Schritte der oben beschriebenen Prüfung. Für Controller in anderen Subnetzen muss das BACnet Netz am Standort die Broadcast-Verteilung oder das Routing bereitstellen.

Häufige Fragen

Was ist eine BACnet Geräteinstanz?

Die Zahl in der Kennung des Device-Objekts, von 0 bis 4.194.302. Sie muss im gesamten BACnet Internetwork eines Standorts eindeutig sein, weil Clients Geräte über diese Zahl finden und mit ihnen verbinden.

Welche Aufgaben haben Who-Is und I-Am in BACnet?

Who-Is fragt per Broadcast nach Geräten, wahlweise nur in einem Bereich von Geräteinstanzen. Jedes passende Gerät antwortet mit I-Am. Darin stehen Geräteinstanz, maximale Nachrichtengröße, Unterstützung für Segmentierung und Herstellerkennung. Die Geräteadresse ermittelt der Client aus der Antwort.

Warum erkennt mein Client ein BACnet Gerät nicht?

Häufige Ursachen sind ein anderes IP-Subnetz ohne BBMD, eine Firewall, die UDP 47808 blockiert, eine Instanz außerhalb des Who-Is-Bereichs, doppelte Geräteinstanzen, ein MS/TP-Slave ohne eigene Broadcast-Antwort oder die Bindung des Clients an die falsche Netzwerkschnittstelle.

Was ist eine BACnet Netznummer?

Eine Zahl von 1 bis 65.534 für ein BACnet Netz am Standort, etwa ein für BACnet verwendetes IP-Subnetz oder einen MS/TP-Bus. Router verwenden sie zur Weiterleitung. Jedes Netz am Standort braucht eine andere Nummer.