Interne Datenpunkte des BACnet Treibers

Der BACnet Treiber verfügt über zwei interne Datenpunkttypen: _Bacnet und _BacnetDevice.

Im internen Datenpunkttyp _Bacnet wird eine Instanz mit Datenpunktelementen für jeden WinCC OA BACnet Treiber erzeugt. Der Name jedes Datenpunktes wird folgendermaßen gebildet: "_Bacnet_<driver number>".

Im internen Datenpunkttyp _BacnetDevice wird für jedes parametrierte BACnet Gerät eine Instanz mit Datenpunktelementen erzeugt.

In den folgenden Tabellen werden die Strukturen beider Datenpunkttypen beschrieben.

_Bacnet

Datenpunktelement Typ Beschreibung
Browse.Devices.Range string

Mit diesem Datenpunktelement kann die Suche (Browse) des BACnet Netzwerks nach angeschlossenen Geräten gestartet werden. Dabei kann man einen Bereich für die Geräte-ID angeben. Wird der String leer gelassen, wird der komplette ID Bereich durchsucht. Ein Bereich der Geräte IDs, nach welchen gesucht wird, kann im folgenden Format angegeben werden:

"<niedrigste Grenze des Geräts>-<höchste Grenze des Gerätes>"

z.B.: "100-200"

Browse.Devices.Timeout uint Setzt das Timeout in Sekunden, wie lange im Netzwerk nach einem Gerät gesucht werden soll. Wird dieser Wert auf 0 gesetzt, wird ein Defaultwert von 10 Sekunden verwendet.
Browse.Devices.DeviceId dyn_uint Enthält alle Geräte IDs der Geräte, welche im BACnet Netz gefunden wurden.
Browse.Devices.VendorId dyn_uint Enthält alle Vendor IDs der Geräte, welche im BACnet Netz gefunden wurden.
Browse.Devices.NetworkType dyn_uint Aktuell nicht verwendet. Enthält die Netzwerk IDs der Geräte, welche im BACnet Netz gefunden wurden.
Browse.Devices.Segmentation dyn_uint Enthält den unterstützten Segmentierungsmodus der Geräte, welche im BACnet Netz gefunden wurden.
Browse.Objects.DeviceId uint Mit diesem Datenpunktelement kann ein Gerät nach BACnet Objekten durchsucht werden. Dazu muss die Geräte ID auf dieses Datenpunktelement geschrieben werden.
Browse.Objects.DeviceIdReturn uint Auf dieses Datenpunktelement wird die DeviceId des Ergebnisses zurückgeschrieben. Damit kann das Ergebnis einfach bei der Verarbeitung des Hotlinks zugeordnet werden.
Browse.Objects.ObjectType dyn_uint Enthält die Objekttypen der Objekte, welche im BACnet Gerät gefunden wurden.
Browse.Objects.Instance dyn_uint Enthält die Objektinstanzen der Objekte, welche im BACnet Gerät gefunden wurden.
Browse.Objects.PropertyId dyn_string

Enthält die unterstützen Properties der Objekte, welche im BACnet Gerät gefunden wurden.

Wird nur zuverlässig befüllt, wenn das gebrowste Gerät

Segmentierung und ReadPropertyMultiple unterstützt.

Browse.Objects.Name dyn_string Enthält die Objektnamen der Objekte, welche im BACnet Gerät gefunden wurden.
Config.AlarmPrioMapping dyn_string

Definiert das Mapping von BACnet-Alarmprioritäten auf WinCC OA-Alarmklassen.

Ein Mapping hat den folgenden Aufbau:

<BACnet Startprio1> < WinCC OA Alarmklasse1>

<BACnet Startprio2> < WinCC OA Alarmklasse2>

...

Ein Beispiel für ein solches Mapping ist:

0 BACnet_danger
50 BACnet_alarm
100 BACnet_warning
200 BACnet_info

D.h.: Die BACnet-Prioritäten 0-49 gehören zur Alarmklasse "BACnet_danger", 50-99 zu "BACnet_alarm", 100-199 zu "BACnet_warning" und 200-255 (höchste BACnet Priorität) zu "BACnet_info".

Für weitere Informationen siehe Intrinsic und Algorithmic Alarming.

Config.Devices dyn_string Hier können die Geräte eingetragen werden, die beim Treiberstart angemeldet werden sollen, obwohl noch keine Peripherieadresse für das Gerät parametriert sind. Wenn es Peripherieadressen für ein Gerät gibt, erfolgt diese Anmeldung automatisch. Somit ist dieses DPE nur in Spezialfällen notwendig.
Command.SyncTime time Über dieses Datenpunktelement kann eine Zeitsynchronisation als Broadcast ausgelöst werden. Bei der Nullzeit wird vom Treiber die aktuelle Zeit genommen, sonst wird die explizite angegebene Zeit zur Synchronisation verwendet.
Command.AddDevice string Mittels dieses Eintrages kann ein BACnet Gerät dem Treiber hinzugefügt werden. Hierfür muss der Name des DPs (vom Typ _BacnetDevice) an das DPE Command.AddDevice geschrieben werden.
State.HomelessAlarm string

Auf dieses Datenpunktelement werden Alarme/Ereignisse abgebildet, die keiner Adresse zugewiesen werden können. Dies erfolgt nur, wenn der entsprechende Config-Eintrag reportHomelessAlarms gesetzt ist.

Die Informationen des Alarms/Ereignisses werden in einem String im folgenden Format kodiert:

<Gerätename>.<GeräteId>.<Objekttyp>.<Instanz>.<Ereignistyp>.

<Ereigniszustand>.<Meldetyp>.<Priorität>

_BacnetDevice

Datenpunktelement Typ Beschreibung
Command.Password string Enthält das Passwort, welches für BACnet Services verwendet wird (falls eines erforderlich ist).
Command.CmdPriority int Priorität der Schreibbefehle in dem Prioritätsarray des BACnet Objektes. Ist der Wert dieses DPEs auf 0, so wird der Default = 8 verwendet.
Command.CommControl uint

De-/Aktivierung der Kommunikation.

  • 0 → Die Kommunikation des Gerätes wird aktiviert.

  • 1 → Die Kommunikation des Gerätes wird deaktiviert (DM-DCC-A Dienst).

  • 2 → Die Initierung von Nachrichten durch das Geärt wird deaktivert. Das Gerät reagiert auf Dienste, aber wird keinen eigenen Dienst initiieren, mit der Ausnahme des "IAm" Dienstes.

Command.GQ uint

Löst eine Generalabfrage (GQ) für das entsprechende Gerät aus.

Durch den übergebenen Wert kann definiert werden, welche Daten abgefragt werden sollen:

  • 0 → GQ für Werte und Events
  • 1 → GQ nur für Werte
  • 2 → GQ nur für Events
  • 3 → Setzt UNKNOWN_PROPERTY Adressen zurück (dieser Befehl wird z.B. über die Schaltfläche "Reset Properties" des Geräte-Faceplates ausgelöst)
  • 10 → GQ für Descriptions (Beschreibungen)
  • 11 → GQ für Units (Einheiten)
Command.Reinitialize uint

Löst eine Reinitialisierung des Gerätes (DM-RD-A Dienst) aus, wenn ein entsprechender Wert auf das Datenpunktelement geschrieben wird

Folgende Werte können verwendet werden:

  • 0 → Kaltstart durchführen

  • 1 → Warmstart durchführen

Command.SyncTime time

Synchronisiert die Zeit am Gerät mit der Zeit vom Datenpunktelement.

Wenn am Datenpunktelement die Nullzeit gesetzt wurde, wird die aktuelle Systemzeit vom Treiber automatisch bestimmt und mit dem Telegramm gesendet (DM-TS-A Dienst).

Command.Service dyn_string

Über dieses Datenpunktelement können spezielle Services zum Gerät abgesetzt werden. Das erste Element des dyn_strings enthält das Kommando und die Parameter. Die Kommandos mit den möglichen Parametern sind:

  • CreateObject

    <Objekttyp>

    <Objektinstanz> (optional)

    <Objektname> (optional)

  • DeleteObject

    <Objekttyp>

    <Objektinstanz>

  • GetProperties

    <Objekttyp>

    <Objektinstanz>

  • LifeSafetyOperation

    <requesting source>

    <BACnet LifeSafetyOperation Code>

    <Objekttyp> (optional)

    <Objektinstanz> (optional)

  • SendTxtMsg

    <zu sendende Message>

Der Objekttyp muss in den obigen Kommandos als String wie in der Peripherieadresse angegeben werden. Die Antwort wird über das Datenpunktelement State.Service zurückgegeben.

Es ist auch ein Datei-Transfer über diesen Datenpunkt möglich, für Details siehe Datei-Transfer.

Beispiele:

CreateObject
Schedule
10
SCH1
SendTxtMessage
This is a Text for sending
State.Online bool Information über den Verbindungsstatus des BACnet Gerätes (TRUE = Online; FALSE = Offline).
State.SentTelegrams uint Anzahl der gesendeten Telegramme seit Treiberstart.
State.RcvTelegrams uint Anzahl der empfangenen Telegramme seit Treiberstart.
State.FailedCOVReg uint Zähler für fehlgeschlagene COV (Change Of Value) Registrierungen für das Gerät.
State.Service dyn_string

Auf dieses Datenpunktelement wird die Antwort auf einen Service Request über Command.Service zurückgegeben.

In der ersten Zeile steht der Status von der Befehlsausführung und in den weiteren Zeilen sind die Property-IDs enthalten.

State.TextMsg string Wenn der Treiber eine UnconfirmedTextMessage von dem Gerät empfängt so wird der darin enthaltene Text auf dieses Datenpunktelement abgebildet.
DeviceId int Identifikator des BACnet Gerätes. Die Nummer entspricht der Instanznummer des Gerät-Objektes.
ConnInfo string

Auf dieses Datenpunktelement werden die Informationen zum statischen Address Binding eines Gerätes geschrieben.

Das Format ist:

<Netzwerknummer>:<IP-Adresse>:<Portnummer>

Also z.B.: "1:192.168.152.20:47808"

Wenn dieses Datenpunktelement leer ist, wird dynamisches Address Binding angewendet (die Adressinformationen werden automatisch aktualisiert).

Active bool Das Gerät kann entweder auf aktiv (TRUE) oder auf inaktiv (FALSE) gesetzt werden. Wenn das Gerät inaktiv gesetzt wird, dann führt der Treiber keine Kommunikation mit dem Gerät durch. Das Gerät kann jederzeit neu aktiviert werden. Siehe auch "Aktiv"-Checkbox im Kapitel Parametrierung des BACnet Treibers.
AliveInterval uint Zeit in Sekunden, nach deren Ablauf dieses Gerät im Netzwerk abgefragt wird. Der Defaultwert ist 0, wodurch das Intervall vom Config-Eintrag deviceStatusPollTimeout herangezogen wird (wenn auch dieser Config-Eintrag nicht gesetzt wurde, ist der allgemeine Defaultwert 30 Sekunden). Wurde dieses Datenpunktelement auf größer als 0 Sekunden gesetzt, so wird (nur) für dieses Gerät das eingestellte Intervall verwendet (pro BACnet Gerät einstellbar).
TimeSyncInterval uint Zeit in Sekunden, nach deren Ablauf eine Zeitsynchronisation dieses Gerätes im Netzwerk stattfindet. Der Defaultwert ist 0, wodurch keine gerichtete Zeitsynchronisation durchgeführt wird.
Flags bit32

Dieses Datenpunktelement wird für verschiedene Geräteeinstellungen verwendet.

Folgende Bits sind momentan in Verwendung:

B0:

  • 0 - Objektbrowsing mit Property “All”

  • 1 - Objektbrowsing ohne Property “All“ (Properties stehen nicht zur Verfügung)

B1:

  • 0 - Zeit des Gerätes wird für den Zeitstempel des Alarms verwendet

  • 1 - Zeit des Erhalts wird für den Zeitstempel des Alarms verwendet

B2:

  • 0 - Zeitstempel des Gerätes wird mit lokaler Zeit angegeben

  • 1 - Zeitstempel des Gerätes wird mit UTC Zeit angegeben

B3:

  • 0 - Alarmtexte werden bei Generalabfragen nicht abgefragt.

  • 1 - Der Treiber kann bei Generalabfragen das Event_Message_Texts Property auslesen (wenn dieses vom Gerät unterstützt wird). Das Property enthält die letzten Alarmtexte, d.h. bei Generalabfragen können Alarmtexte aktualisiert werden.

B4:

  • 0 - Verwende UTF-8 Konvertierung für Strings mit ANSI X3.4 Enkodierung

  • 1 - Verwende UTF-8 Konvertierung für Stings mit ANSI X3.4 Enkodierung nicht.

B5

  • 0 - TrendLogs wurden ohne zeitbasiertes Lesen initialisiert
  • 1 - TrendLogs werden mit zeitbasiertem Lesen initialisiert

B8:

  • 0 - Neustart-Erkennung wird nicht verwendet

  • 1 - Neustart-Erkennung wird mittels Auswertung der COV Notifikationen verwendet

B9:

  • Momentan nicht in Verwendung, jedoch reserviert für zukünftige Erweiterungen.

B10:

  • 0 - Treiber nicht der Gruppe Restart_Notification_Recipients hinzufügen.

  • 1 - Treiber der Gruppe Restart_Notification_Recipients hinzufügen.

B11:

  • 0 - COV Registrierung wird nicht aktualisiert

  • 1 - COV Registrierung wird aktualisiert

B12:

  • 0 - Event Generalabfrage nicht durchführen

  • 1 - Event Generalabfrage durchführen

B13:

  • 0 - Data Gereralabfrage nicht durchführen

  • 1 - Data Generalabfrage durchführen

B15:

B16:

  • 0 - Treiber meldet sich bei der Notification Class mit der BACnet-Adresse an

  • 1 - Treiber meldet sich bei der Notification Class mit Device Identifier an

B17:

  • 0 -Verbindung wird initialisiert auch wenn der Status "Operational" nicht erreicht wurde.

  • 1 - Warte auf den Status "Operational" bevor die Verbindung initialisiert wird.

Die Bits 8-13 definieren, wie sich der Treiber verhält wenn er einen Neustart des Geräts detektiert.

AlarmPrioMapping dyn_string

Definiert das Mapping von BACnet Alarmprioritäten auf WinCC OA Alarmklassen für ein BACnet Gerät.

Ein Mapping hat den folgenden Aufbau:

<BACnet Startprio1> < WinCC OA Alarmklasse1>

<BACnet Startprio2> < WinCC OA Alarmklasse2>

...

Ein Beispiel für ein solches Mapping ist:

0 BACnet_danger
50 BACnet_alarm
100 BACnet_warning
200 BACnet_info

D.h.: Die BACnet-Prioritäten 0-49 gehören zur Alarmklasse "BACnet_danger", 50-99 zu "BACnet_alarm", 100-199 zu "BACnet_warning" und 200-255 (höchste BACnet Priorität) zu "BACnet_info".

Für weitere Informationen siehe Intrinsic und Algorithmic Alarming.

NotificationClasses dyn_int Definiert die Notification Classes bei denen der Treiber registriert werden soll (siehe auch Intrinsic und Algorithmic Alarming - Notification Class).