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:
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:
Ein Beispiel für ein solches Mapping ist:
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:
|
_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.
|
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:
|
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:
|
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:
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:
|
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:
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:
B1:
B2:
B3:
B4:
B5
B8:
B9:
B10:
B11:
B12:
B13:
B15:
B16:
B17:
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:
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). |