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
- undEvent Log
-EinträgenAktualisierung 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.