La libreria IEC CmpBACnet rappresenta l'integrazione dello stack BACnet in un ambiente IEC CODESYS e fornisce i tipi di dati BACnet e i metodi BACstack. L'uso esclusivo della libreria IEC CmpBACnet (senza le librerie BACnet e BACnetDefaultImpl ) comporterebbe un codice applicativo IEC complesso e lungo.
La libreria BACnet semplifica notevolmente lo sviluppo di applicazioni BACnet rispetto all'utilizzo
esclusivo di CmpBACnet, soprattutto nelle seguenti aree:
-
Avvio e arresto dello stack BACnet
-
Utilizzo degli oggetti del server BACnet e delle loro proprietà
-
Triggering di richieste asincrone (principalmente richieste di servizi client) ed elaborazione della transazione di richiesta
-
Elaborazione di callback dallo stack BACnet (vedere
IBACnetEventConsumer) e distribuzione dei callback a più ricevitori nell'applicazione.
Inoltre, la libreria BACnet fornisce un meccanismo di plug-in (BACnetServerPlugin) per estendere alcuni aspetti della libreria BACnet. BACnetServerPlugin è la base per la libreria BACnetDefaultImpl.
La libreria BACnetDefaultImpl è utilizzata per semplificare ulteriormente lo sviluppo di applicazioni BACnet. Lo
standard BACnet ASHRAE 135 lascia aperti alcuni aspetti dell'uso pratico di BACnet.
Gli esempi più significativi sono i seguenti:
-
Persistenza degli oggetti del server
-
Memorizzazione e persistenza delle voci
Trend Log,Trend Log MultipleeEvent Log -
Aggiornamento delle informazioni sulla data/ora dell'oggetto dispositivo
La libreria IEC BACnet è intesa come un livello sopra la libreria IEC CmpBACnet. Tuttavia, il livello non nasconde la libreria, perché ciò richiederebbe che la libreria
BACnet abbia delle funzioni di "facciata" per le funzioni di CmpBACnet. Queste funzioni di facciata comporterebbero un aumento del codice dell'applicazione
e dei requisiti di runtime. Questo è difficile da accettare per il PLC. Per questo
motivo, è necessario sapere quando devono essere utilizzati gli elementi della libreria
BACnet o della libreria CmpBACnet.
Regole generali:
-
Avvio e arresto dello stack BACnet
Utilizzare sempre
BACnetServer.StartBACnetStackeBACnetServer.StopBACnetStackoAutoStart. Non utilizzare mai direttamente le funzioni corrispondenti della libreriaCmpBACnet, come ad esempioCmpBACnet.BACnetServerInit. -
Utilizzo degli oggetti del server BACnet e delle loro proprietà
Utilizzare sempre i blocchi funzione specificati in IEC-lib-BACnet, come ad esempio
BACnetAnalogValue. Non utilizzare mai direttamente le funzioni corrispondenti della libreriaBACnet, come ad esempioCmpBACnet.BACnetStorePropertyInstance. -
Attivazione di richieste asincrone
Utilizzare sempre i blocchi funzione client specificati della libreria
BACnet, come ad esempioBACnetClientReadProperty. Non utilizzare mai direttamente le funzioni corrispondenti della libreriaCmpBACnet, come ad esempioCmpBACnet.BACnetReadProperty. Tutte le funzioni della libreriaCmpBACnetche richiedono unBACnetAsyncTransactionTokenappartengono a questa categoria e non devono mai essere utilizzate direttamente. -
Elaborazione di callback dallo stack BACnet e distribuzione dei callback a più ricevitori nell'applicazione
Utilizzare sempre
IBACnetEventConsumereBACnetServer.RegisterHook/UnregisterHook/RegisterCallback/UnregisterCallback. Non utilizzare mai direttamente le funzioni corrispondenti della libreriaCmpBACnet, comeCmpBACnet.BACnetSetHookoCmpBACnet.BACnetSetCallback.
Quando è opportuno e sicuro chiamare direttamente le funzioni della libreria CmpBACnet?
Fondamentalmente, è necessario chiamare direttamente le funzioni di CmpBACnet solo quando la funzionalità corrispondente non è presente nella libreria BACnet. Controllare la libreria BACnet prima di provare a usare direttamente CmpBACnet. È possibile utilizzare funzioni bloccanti in CmpBACnet, come BACnet*CbCompletion, BACnetIam(Ex), o BACnetIHave(Ex), BACnetUnconf*.
Il più delle volte si utilizza BACnet*CbCompletion per implementare il proprio IBACnetEventConsumer.BACnetEventCallbacks specifico. Ma prima controllate se la libreria BACnetDefaultImpl contiene già un'implementazione standard appropriata.
Il sito BACnetDefaultImpl.library aperto è fornito nella cartella degli esempi e può essere utilizzato per la personalizzazione
da parte dell'utente.