SPS Bibliothek: TcBACnet.Lib

Im Folgenden wird der Funktionsumfang der SPS Bibliothek "TcBACnet.lib" beschrieben. Die Bibliothek bietet die Möglichkeit auf Objekte einer BACnet-Konfiguration komfortabel aus einem SPS-Programm zuzugreifen.

Der Einsatz der Bibliothek ist nicht zwingend.

Der Zugriff auf die Daten (Properties) der BACnet-Objekte kann auf 2 Arten erfolgen:

  1. Die Funktionsbausteine bzw. selbst deklarierten Variablen werden mit Hilfe des "synchronen" Prozessdatenmappings verknüpft (Verknüpfung der SPS mit der Hardware-Konfiguration im System Manager). Dafür enthalten die Funktionsbausteine der SPS die Zuweisung als Eingangs- bzw. Ausgangsdaten ("bValue AT%I* : BOOL" bzw. "bValue AT%Q* : BOOL"). Der Vorteil liegt im zyklischen Update der Daten. Sämtliche Werte werden synchron zum SPS-Zyklus geschrieben bzw. gelesen.
  2. Objekt-Daten werden asynchron mit Hilfe von ADS gelesen bzw. geschrieben. Dabei werden die zu schreibenden/lesenden Daten mit Hilfe von ADS-Bausteinen an die entsprechende Adresse (NetId, Port, Index-Group u. -Offset --> Objekt-Type, -Instance und Property-ID) gesendet (FB_BACnet_WriteProp) bzw. von dieser gelesen (FB_BACnet_ReadProp). Der Vorteil dieser Methode besteht in der Möglichkeit Daten nur dann zu Schreiben, wenn tatsächlich eine Änderung vorliegt. Bei häufigen Änderungen kann es jedoch zu Verzögerungen kommen, die nicht vorhersehbar sind. Die maximale Verzögerung liegt bei 5 Sekunden ("tBACnet_ADSTimeOut : TIME := t#5s"). Nach Ablauf der Zeit meldet der Baustein einen Fehlercode zurück.

SPS Bibliothek: TcBACnet.Lib 1: Die Bibliothek (tcbacnet_1.2.4.zip) kann hier heruntergeladen werden.

Installation: Der Inhalt des ZIP-Archives muss in den TwinCAT Ordner (default: "C:\TwinCAT") unter "\Plc\Lib" kopiert werden.

Übersicht

Die SPS-Bibliothek TcBACnet-Lib ist eine Sammlung von Funktionsbausteinen zur Programmierung eines BACnet-Controllers. Für jedes BACnet-Objekt stehen Funktionsbausteine zur Verfügung, über die ausgewählte Properties gelesen und geschrieben werden. Generell wird zwischen Funktionsbausteinen für Server- und Client-Objekte unterschieden. Funktionsbausteine für Client-Objekte werden mit dem Präfix "Remote" bezeichnet, da sie den Zugriff auf entfernte BACnet-Objekte auf anderen Geräten ermöglichen. Die BACnet-Objekt-Funktionsbausteine realisieren eine Auswertung, ob Prozessdaten gültig sind bzw. der BACnet-Controller betriebsbereit ist (bReady).

Der Funktionsbaustein FB_BACnet_Adapter repräsentiert ein BACnet-Device und damit den Zugangspunkt zum BACnet-Netzwerk über Netzwerkkarte. Über diesen Baustein kann u.a. erkannt werden, ob ein Link vorhanden ist. Um die Übersicht im SPS-Programm zu erhöhen, wird der BACnet-Adapter als globale Variable innerhalb der TcBACnet-Lib angelegt, da in der Mehrzahl der Projekte genau ein BACnet-Adapter verwendet wird.

Je nach Client- bzw. Server-Funktionalität, werden mit den Funktionsbausteinen FB_BACnet_Device bzw. FB_BACnet_RemoteDevice Zustands- und Steuerinformationen des BACnet-Client bzw. Server verknüpft. Die Betriebsbereitschaft der BACnet-Objekte wird über den Client- bzw. Server-Status sowie der Property System_Status des jeweiligen Device bzw. Remote Device-Objekts ermittelt. Jedem BACnet-Objekt-Funktionsbaustein muss deshalb eine Referenz auf die Instanz des zugehörigen FB_BACnet_Device bzw. FB_BACnet-RemoteDevice übergeben werden, um die Statusauswertung (bReady) zu ermöglichen.

Die nachfolgende Abbildung zeigt eine Übersicht der Funktionsbausteine der TcBACnet-Lib und den entsprechenden Verknüpfungen mit den BACnet-Modulen. Die Verknüpfung zwischen einem SPS-Programm auf Basis von TcBACnet-Lib und den BACnet-Modulen einer Konfiguration über die Funktion SPS-Automapping automatisiert erstellt werden.

SPS Bibliothek: TcBACnet.Lib 2:
SPS Bibliothek: TcBACnet.Lib 3:

Bausteinbezeichnung

Die Bausteinbeschreibungen beziehen sich auf die Bausteinversionen mit maximalen Prozessdaten (Erweiterung "_EX"). Die Standardbausteine enthalten einen minimal nötigen Satz an Prozessdaten, um Performanceverluste bei großen Konfigurationen zu vermeiden.Zudem gibt es Funktionsbausteinvarianten für Objekte mit kommandierbarer Property Present_Value die den Schreibzugriff mit Hilfe von ADS realisieren (Erweiterung "_ADS"). Diese Bausteinvariante schreibt den Wert der Property Present_Value mit entsprechender Priorität nur bei Änderungen in das Objekt via ADS (WOC). So kann auf Objekte des lokalen Server mehrfach geschrieben werden (z.B. Schreiben gleicher Priorität).Funktionsbausteinvarianten mit der Erweiterung "_RAW" bieten den Zugriff auf den Rohwert des entsprechenden Objekts. Bei Verwendung dieser Bausteinvariante wird die Property Present_Value nicht auf die Klemmenhardware sondern im PLC Programm abgebildet. So lassen sich BACnet-Werte z.B. von Subbussystemen umsetzen. Ein Beispiel befindet sich in der Bausteinbeschreibung.