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.StartBACnetStackundBACnetServer.StopBACnetStackoderAutoStart. Verwenden Sie dafür nie direkt die entsprechenden Funktionen der BibliothekCmpBACnetwie 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 BibliothekBACnetwie beispielsweiseCmpBACnet.BACnetStorePropertyInstance).Auslösen von asynchronen Requests
Verwenden Sie dafür stets die spezifischen Client-Funktionsbausteine der Bibliothek
BACnetwie beispielsweiseBACnetClientReadProperty. Verwenden Sie dafür nie direkt die entsprechenden Funktionen der BibliothekCmpBACnetwie beispielsweiseCmpBACnet.BACnetReadProperty). Alle Funktionen der BibliothekCmpBACnet, die einBACnetAsyncTransactionTokenerfordern, 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
IBACnetEventConsumerundBACnetServer.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.BACnetEventCallbacks zu realisieren. Aber prüfen Sie vorab, ob die Bibliothek BACnetDefaultImpl bereits eine geeignete Standardimplementierung beinhaltet.