Skip to main content

Architektur, Bestandteile und deren Aufgaben

CODESYS BACnet2 SL und CODESYS BACnet(1) SL beinhalten jeweils drei IEC-Bibliotheken:

  • CmpBACnet, CmpBACnet2

  • BACnet, BACnet2

  • BACnetDefaultImpl, BACnet2DefaultImpl2

(Hinweis: Die nachfolgenden Beschreibungen gelten für beide "Varianten" einer Bibliothek.)

Außerdem enthält das Package das BACnet-Plugin für die CODESYS-Entwicklungsumgebung, das Konsistenzprüfungen bezüglich Bibliotheksversionen und BACnet-Objekt-Ids durchführt und EDE-Export/Import ermöglicht.

Der BACnet-Stack (BACstack) ist ein optionaler Bestandteil der CODESYS-Laufzeitsysteme (Komponente CmpBACnet).

Die IEC-Bibliothek CmpBACnet stellt die Integration des BACnet-Stacks in eine CODESYS-IEC-Umgebung dar, und stellt die BACnet-Datentypen sowie die BACstack-Methoden zur Verfügung. Die alleinige Nutzung der IEC-Bibliothek CmpBACnet (ohne die Bibliotheken BACnet und BACnetDefaultImpl) würde zu kompliziertem und umfangreichem IEC-Applikationscode führen.

Für weitere Informationen siehe: Wann Bibliothek BACnet oder CmpBACnet verwenden?

Die Bibliothek BACnet vereinfacht die BACnet-Applikationsentwicklung gegenüber der alleinigen Nutzung von CmpBACnet erheblich, speziell in den folgenden Bereichen:

  • Starten/Stoppen des BACnet-Stacks

  • Verwenden von BACnet-Server-Objekten und deren Propertys

  • Auslösen von asynchronen (Service-) Requests - zumeist „client service requests“ - und Verarbeiten der „request transaction“

  • Verarbeiten von „callbacks“ des BACnet-Stacks (siehe IBACnetEventConsumer) und Verteilen der „callbacks“ auf mehrere Empfänger in der Applikation

Des Weiteren stellt die Bibliothek BACnet einen Plugin-Mechanismus (BACnetServerPlugin) zur Verfügung, um bestimmte Aspekte der Bibliothek BACnet erweitern zu können. BACnetServerPlugin bildet die Grundlage für die Bibliothek BACnetDefaultImpl.

Die Bibliothek BACnetDefaultImpl dient der weiteren Vereinfachung der BACnet-Applikationsentwicklung. Der BACnet-Standard ASHRAE 135 läßt einige Aspekte der praktischen Verwendung von BACnet offen. Die prominentesten Beispiele sind folgende:

  • Persistenz der Server-Objekte

  • Speicherung und Persistenz von Trend Log-, Trend Log Multiple - und Event Log-Einträgen

  • Aktualisierung der Datum / Uhrzeit-Information des Device-Objekts

CODESYS-Implementierungen für diese Aspekte müssen auf einigen Annahmen über die SPS und die Applikation basieren, wie beispielsweise:

  • Die SPS verfügt über ein Dateisystem.

  • Das SPS-Dateisystem hat keine zu strengen Begrenzungen hinsichtlich Datenvolumen, Geschwindigkeit oder Anzahl Schreibzyklen.

Aufgrund dieser Annahmen können solche Implementierungen nicht in der Bibliothek BACnet fix enthalten sein, da dies die Realisierung anderer Anwendungsfälle und das Beachten anderer Randbedingungen verhindern würde.

Die Bibliothek BACnetDefaultImpl ist der Platz für solche „Default-Implementierungen“. Im besten Fall, also wenn die Annahmen zutreffen, können dann diese Standardimplementierungen einfach verwendet werden. Wenn die Annehmen nicht zutreffen, kann die Standardimplementierung eines bestimmten Aspekts sehr gut als Beispiel und Grundlage einer SPS-/applikationsspezifischen Implementierung verwendet werden.

Deswegen wird die Bibliothek BACnetDefaultImpl sowohl als übersetzte Bibliothek als auch als Quellcode-Bibliothek ausgeliefert.