IEC kütüphanesi CmpBACnet, BACnet yığınının CODESYS IEC ortamına entegrasyonunu temsil eder ve BACnet veri türlerinin yanı sıra BACstack yöntemlerini de sağlar. IEC kütüphanesi CmpBACnet 'un ( BACnet ve BACnetDefaultImpl kütüphaneleri olmadan) tek başına kullanılması karmaşık ve uzun IEC uygulama koduna
neden olur.
BACnet kütüphanesi, özellikle aşağıdaki alanlarda CmpBACnet'un tek başına kullanımına kıyasla BACnet uygulama geliştirmeyi önemli ölçüde basitleştirir:
-
BACnet yığınının başlatılması ve durdurulması
-
BACnet sunucu nesnelerini ve özelliklerini kullanma
-
Eşzamansız istekleri (çoğunlukla istemci hizmet istekleri) tetikleme ve istek işlemini işleme
-
BACnet yığınından gelen geri çağrıların işlenmesi (bkz.
IBACnetEventConsumer) ve geri çağrıların uygulamadaki birden fazla alıcıya dağıtılması
Ayrıca, BACnet kütüphanesi, BACnet kütüphanesinin belirli yönlerini genişletmek için bir eklenti mekanizması (BACnetServerPlugin) sağlar. BACnetServerPlugin, BACnetDefaultImpl kütüphanesinin temelini oluşturur.
BACnetDefaultImpl kütüphanesi, BACnet uygulama geliştirmenin daha da basitleştirilmesi için kullanılır.
BACnet standardı ASHRAE 135, BACnet'in pratik kullanımının bazı yönlerini açık bırakmaktadır.
En dikkate değer örnekler arasında aşağıdakiler yer almaktadır:
-
Sunucu nesnelerinin kalıcılığı
-
Trend Log,Trend Log MultipleveEvent Loggirişlerinin depolanması ve kalıcılığı -
Cihaz nesnesinin tarih/saat bilgilerinin güncellenmesi
IEC kütüphanesi BACnet, IEC kütüphanesi CmpBACnet üzerinde bir katman olarak tasarlanmıştır. Ancak, katman kütüphaneyi gizlemez çünkü
bu BACnet kütüphanesinin CmpBACnet işlevleri için "cephe" işlevlerine sahip olmasını gerektirir. Bu dış cephe işlevleri
daha büyük uygulama koduna ve çalışma zamanı gereksinimlerinin artmasına neden olur.
Bunu PLC'nin kabul etmesi zordur. Bu nedenle, BACnet kütüphanesindeki veya CmpBACnet kütüphanesindeki öğelerin ne zaman kullanılacağının bilinmesi gerekir.
Genel kurallar:
-
BACnet yığınının başlatılması ve durdurulması
Her zaman
BACnetServer.StartBACnetStackveBACnetServer.StopBACnetStackveyaAutoStartadreslerini kullanın.CmpBACnetkütüphanesininCmpBACnet.BACnetServerInitgibi ilgili işlevlerini asla doğrudan kullanmayın. -
BACnet sunucu nesnelerini ve özelliklerini kullanma
Her zaman IEC-lib-BACnet'te belirtilen fonksiyon bloklarını kullanın, örneğin
BACnetAnalogValue.BACnetkütüphanesininCmpBACnet.BACnetStorePropertyInstancegibi ilgili işlevlerini asla doğrudan kullanmayın. -
Eşzamansız isteklerin tetiklenmesi
Her zaman
BACnetkütüphanesinin belirtilen istemci fonksiyon bloklarını kullanın, örneğinBACnetClientReadProperty.CmpBACnetkütüphanesininCmpBACnet.BACnetReadPropertygibi ilgili işlevlerini asla doğrudan kullanmayın.CmpBACnetkütüphanesininBACnetAsyncTransactionTokengerektiren tüm fonksiyonları bu kategoriye aittir ve asla doğrudan kullanılmamalıdır. -
BACnet yığınından gelen geri çağrıların işlenmesi ve geri çağrıların uygulamadaki birden fazla alıcıya dağıtılması
Her zaman
IBACnetEventConsumerveBACnetServer.RegisterHook/UnregisterHook/RegisterCallback/UnregisterCallbackadreslerini kullanın.CmpBACnetkütüphanesininCmpBACnet.BACnetSetHookveyaCmpBACnet.BACnetSetCallbackgibi ilgili işlevlerini asla doğrudan kullanmayın.
CmpBACnet kütüphanesinin işlevlerini doğrudan çağırmak ne zaman uygun ve güvenlidir?
Temel olarak, yalnızca BACnet kütüphanesinde karşılık gelen bir işlev sağlanmadığında CmpBACnet işlevlerini doğrudan çağırmak gerekir. Doğrudan CmpBACnet adresini kullanmayı denemeden önce BACnet kütüphanesini kontrol edin. CmpBACnet, BACnet*CbCompletion, BACnetIam(Ex) veya BACnetIHave(Ex), BACnetUnconf* gibi engelleme işlevlerini kullanmak mümkündür.
Çoğu zaman, özel IBACnetEventConsumer.BACnetEventCallbacklerinizi uygulamak için BACnet*CbCompletion kullanacaksınız. Ancak önce BACnetDefaultImpl kütüphanesinin zaten uygun bir standart uygulama içerip içermediğini kontrol edin.
Açık BACnetDefaultImpl.library örnek klasörde sağlanmıştır ve kullanıcı özelleştirmesi için kullanılabilir.