Der BACnet Treiber ermöglicht es dem Gateway sowohl als BACnet Client als auch als BACnet Server aufzutreten. Dabei unterstützt er die Standards BACnet IP, BACnet/SC, BACnet Ethernet als auch BACnet MS/TP. Darüber hinaus werden bei Bedarf BBMD-(BACnet Management Broadcast Device) und FD- (Foreign Device) Funktionalitäten zur Verfügung gestellt.
Der Name des BACnet-Treibers lautet: bac
Die Routing-Adresse des ersten BACnet-Treibers ist die 940
Die Datenpunktdatei für den ersten BACnet-Treiber heißt: bac1.txt
Die Konfigurationsdatei für globale Einstellungen des ersten BACnet-Treibers heißt: bac1.cfg
Bei dem BACnet-Treiber sowie allen weiteren Gateway-Treibern gilt für die Definiton von Datenpunkten in der Datenpunktdatei:
Typ | Bedeutung |
---|---|
M | Ganzzahliger Wert (Binäre Datenpunkte, Zählwerte) der vom Gateway nur gelesen werden kann/soll. |
S | Ganzzahliger Wert der vom Gateway gelesen sowie geschrieben werden kann/soll. |
X | Analogwert (mit Nachkommastellen) der vom Gateway nur gelesen werden kann/soll. |
Y | Analogwert (mit Nachkommastellen) der vom Gateway gelesen sowie geschrieben werden kann/soll. |
A | String, findet z.B. Verwendung bei BACnet Trends und ESPA4.4.4 Datenpunkten |
Die Adressen sind wie folgt aufgebaut.
<device>.<typ> [<nr>]
Kommunikationsstatus mit entferntem BACnet Gerät: „<device> failure“
Dabei gilt folgende Definition:
Parameter | Wertebereich | Beschreibung |
---|---|---|
device | 0 - 4194302 0 - (2 22-2) local | Device-ID des BACnet Gerätes. Stimmt diese mit der in der bac1.cfg definierten Device ID überein so handelt es sich um einen lokalen Datenpunkt (das Gateway ist dann BACnet Server) die Datenpunkte werden immer als Server ausgeführt |
typ | AI AO AV AG BI BO BV CA CO DE EE FI GR IV LAV LO MI MO MV NC PIV PR SC TR VSOT@<nummer> | Analog Input Analog Output Analog Value Averaging Binary Input Binary Output Binary Value Calendar Command Device Enrollment File Group Integer Value Large Analog Value Loop Multistate Input Multistate Output Multistate Value Notification Class Positiv Integer Value Programm Schedule Trendlog Vendor Specific Object Type, dabei ist <nummer> der Object-Type |
nr | 0 - 4194303 (0 - 2 22-1) | Objekt Nummer (muss innerhalb eines Devices für jeden Typ eindeutig sein |
Für lokale Datenpunkte müssen jedem Datenpunkt noch mindestens die sog. required properties übergeben werden. Zusätzlich zu den required properties können bei Bedarf weitere optional properties übergeben werden. Grundsätzlich sind die hier angegebene Properties nicht durch andere BACnet Geräte beschreibbar. Sollen diese dennoch von anderen BACnet Geräten beschreibbar sein, so kann das Propertie durch den Zusatz ||W als schreibbar deklariert werden. Die geschriebenen Werte sind dann solange gültig bis das Gateway neu gestartet wird. Durch den Zusatz ||WP werden diese persistent auf dem Gateway gespeichert und sind auch nach einem Neustart wieder verfügbar. Einträge für die Beschreibung oder die Einheit sehen dann z.B. folgendermaßen aus.
bac_description = Beschreibung ||WP
bac_units = 62 ||W
Ein „local“ bei der Device Object Instance (DOI) führt dazu, dass das Object immer als Server ausgeführt wird. Die DOI wird aus den Gateway-Einstellungen genommen. Bei Änderung der DOI muss die Projektierung nicht angepasst werden. Eine Beschreibung der lokalen BACnet Datenpunkte und ihren properties folgen aufgeschlüsselt nach Art der Datenpunkte:
BACnet_Analog
BACnet_Binary
BACnet_Multistate
BACnet_NotificationClass
BACnet_Trendlog
BACnet_Schedule
BACnet_Calendar
BACnet_Event_Enrollment
Typische Datenpunktdefinitionen für entfernte Datenpunkte können demnach sein:
[M 1234.BI 5]
name = digitale Betriebsmeldung
query = pe
[S 1234.BO 10]
name = digitaler Sollwert
query = pe
writecache = yes
[M 1234.MI 15]
name = multistate Meldung z.B. 0,1,2 für Aus,An,Auto
query = pe
[S 1234.MV 16]
name = multistate Sollwert z.B. Stufenschalter 0,1,2 für Aus,An,Auto
query = pe
writecache = yes
[X 1234.AI 17]
name = Temperatur Messwert
query = pe
[Y 1234.AO 17]
name = Temperatur Sollwert
query = pe
writecache = yes
Definition von Alarming
Die Beschreibung zur Definition/Konfiguration des Alarming (Intrinsic Reporting) findet sich unter BACnet Alarming
Zugriff auf einzelne Properties
Der BACnet-Treiber bietet die Möglichkeit, auch auf einzelne Properties eines Datenpunktes zuzugreifen. Dazu ist es erforderlich, den Namen des Properties hinter dem Datenpunkt in geschweiften Klammern anzugeben. Um z. B. auf den Event-State eines Datenpunktes zuzugreifen, muss ein Eintrag {event-state} angehängt werden. Eine Definition sähe dann so aus:
[M 1234.AI 17 {event-state}]
name = Event-State von AI 17
query = pe
Routing deaktivieren bei mehreren Datalink-Layern
Bei Verwendung von mehreren Datalink-Layern findet normalerweise automatisch ein Routing zwischen den Layern statt. Dieses Verhalten kann manuell in der bac1.cfg angepasst werden, indem folgender Eintrag ergänzt wird:
[general]
routing_switched_off = 1
Zusätzlich muss in den konfigurierten Datalink-Layern der Eintrag
bind_on_any_address = 0
eingetragen sein, um den Zugriff zwischen den einzelnen LAN-Ports zu trennen.
Verwendung von mehreren LAN-Ports
Wenn auf einem Gateway (z. B. Double-X, oder Maxi-MK II) auf beiden Netzwerk-Ports BACnet betrieben wird, oder BACnet auf eth1 laufen soll, dann muss ebenfalls deaktiviert werden, dass der BACnet-Treiber auf allen Adressen arbeitet. Dazu muss im jeweiligen Datalink-Layer der Eintrag
bind_on_any_address = 0
eingetragen sein.
Deaktivieren von Intrinsic Reporting
Unter gewissen Umständen kann es erforderlich sein, dass die Funktionalität „Intrinisc Reporting“ für Objekte deaktiviert wird. Dies kann man dadurch erreichen, dass entweder alle dafür erforderlichen Properties nicht in der Datenpunktliste angelegt werden, oder man deaktiviert die evtl. vorhandenen Proprties durch einen zusätzlichen Konfigurationseintrag:
intrinsic_reporting = 0
PICS (BACnet Protocol Implementation Conformance Statement)
Dieses findet sich auf unserer Homepage zum Download unter: https://www.mbs-solutions.de/s/MBS_UGW_PICS_Rev22.pdf
Eintragen eines RestartNotificationRecipients
Es gibt zwei Varianten, über das Device oder über die IP-Adresse. Fürs Device 99999:
[0] = Device
8 = Objekt Device
RestartNotificationRecipients = (([0](8,99999)))
Alternativ über die IP-Adresse:
[1] = Address
0 = local Network
0a996d78bac0 = IP-Adresse 10.153.109.120 Port 47808
RestartNotificationRecipients = (([1](0,0a996d78bac0)))
BACnet-Revision ändern
Die Gateways arbeiten mit aktueller Firmware zur Zeit mit BACnet Protocol Revision 22. Unter Umständen kann es erforderlich sein, mit einer älteren Revision zu arbeiten. Dies kann über einen Eintrag in der bac1.cfg erfolgen, dieser sieht dann wie folgt aus:
[BACnet]
ProtocolRevision=14
Gängige Werte wären hier 12, 14 oder 22.
Polling-Geschwindigkeiten ändern
Soll ein BACnet Client Objekte pollen, kann das mit unterschiedlichen Geschwindigkeiten erfolgen. Mit pollspeedindex = 1-8 findet diese Differenzierung statt. Die Geschwindigkeiten sind in der bac1.cfg unter den PollTimeout_1-8 definiert und veränderbar.
Das folgende Beispiel entspricht der Einstellung in der bac1.cfg für PollTimeout_1 = 10
[M 1234.BI 4]
name = Remote Binary Input 4 from Device 1234
query = pe
pollspeedindex = 1