Wann Bibliothek BACnet oder CmpBACnet verwenden?
Anmerkung
Die Beschreibungen gelten immer auch für die entsprechende Bibliothek von CODESYS BACnet2 SL ("major revision 2").
Die IEC-Bibliothek BACnet
ist als Schicht über der IEC-Bibliothek CmpBACnet
vorgesehen. Dabei verdeckt sie diese jedoch nicht, weil dies in der Bibliothek BACnet
„Fassaden-Funktionen“ für Funktionen von CmpBACnet
erfordern würde. Solche „Fassaden-Funktionen“ würden zu größerem Applikationscode und erhöhtem Laufzeitbedarf führen. Dies ist für die SPS schwer tolerierbar. Aus diesem Grund ist es notwendig zu wissen, wann Elemente aus der Bibliothek BACnet
beziehungsweise CmpBACnet
einzusetzen sind.
Starten/Stoppen des BACnet-Stacks
Verwenden Sie dafür stets
BACnetServer.StartBACnetStack
undBACnetServer.StopBACnetStack
oderAutoStart
. Verwenden Sie dafür nie direkt die entsprechenden Funktionen der BibliothekCmpBACnet
wie beispielsweiseCmpBACnet.BACnetServerInit
.Verwenden von BACnet-Server-Objekten und deren Propertys
Verwenden Sie dafür stets die spezifischen Functionsbausteine in IEC-lib-BACnet, wie beispielsweise
BACnetAnalogValue
. Verwenden Sie dafür nie direkt die entsprechenden Funktionen der BibliothekBACnet
wie beispielsweiseCmpBACnet.BACnetStorePropertyInstance
).Auslösen von asynchronen Requests
Verwenden Sie dafür stets die spezifischen Client-Funktionsbausteine der Bibliothek
BACnet
wie beispielsweiseBACnetClientReadProperty
. Verwenden Sie dafür nie direkt die entsprechenden Funktionen der BibliothekCmpBACnet
wie beispielsweiseCmpBACnet.BACnetReadProperty
). Alle Funktionen der BibliothekCmpBACnet
, die einBACnetAsyncTransactionToken
erfordern, gehören zu dieser Kategorie und sollten nie direkt verwendet werden.Verarbeiten von „callbacks“ des BACnet-Stacks und Verteilen der „callbacks“ auf mehrere Empfänger in der Applikation
Verwenden Sie dafür stets
IBACnetEventConsumer
undBACnetServer.RegisterHook
/UnregisterHook/RegisterCallback
/UnregisterCallback
. Verwenden Sie dafür nie direkt die entsprechenden Funktionen der BibliothekCmpBACnet
(CmpBACnet.BACnetSetHook
,CmpBACnet.BACnetSetCallback
).
Für weitere Informationen siehe: Architektur, Bestandteile und deren Aufgaben
Wann ist es angemessen/sicher, Funktionen der Bibliothek CmpBACnet
direkt aufzurufen?
Grundsätzlich ist es nur nötig, Funktionen von CmpBACnet
direkt aufzurufen, wenn keine entsprechende Funktionalität in der Bibliothek BACnet
bereitgestellt ist. Bitte prüfen Sie daher zuerst die Bibliothek BACnet
, bevor Sie versuchen CmpBACnet
direkt zu verwenden. „Blockierende“ Funktionen in CmpBACnet
können verwendet werden, beispielsweise BACnet*CbCompletion
, BACnetIam(Ex)
, BACnetIHave(Ex), BACnetUnconf*
.
Am häufigsten werden Sie BACnet*CbCompletion
verwenden, um Ihre spezifischen IBACnetEventConsumer.BACnetEventCallback
s zu realisieren. Aber prüfen Sie vorab, ob die Bibliothek BACnetDefaultImpl
bereits eine geeignete Standardimplementierung beinhaltet.