BACnet


 

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:

TypBedeutung
MGanzzahliger Wert (Binäre Datenpunkte, Zählwerte) der vom Gateway nur gelesen werden kann/soll.
SGanzzahliger Wert der vom Gateway gelesen sowie geschrieben werden kann/soll.
XAnalogwert (mit Nachkommastellen) der vom Gateway nur gelesen werden kann/soll.
YAnalogwert (mit Nachkommastellen) der vom Gateway gelesen sowie geschrieben werden kann/soll.
AString, 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:

ParameterWertebereichBeschreibung
device0 - 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
typAI
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
nr0 - 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