File and Project Information ¶ Scope Name Type Content FileHeader creationDateTime date 16.08.2022, 11:27:04 companyName string 3S-Smart Software Solutions GmbH libraryFile BACnetDefaultImpl.library primaryProject True productName CODESYS productProfile CODESYS V3.5 SP16 Patch 1 contentFile BACnetDefaultImpl.clean.json version version 2.0.0.0 ProjectInformation AutoResolveUnbound bool True IsEndUserLibrary False Released True SourceLibrary False LastModificationDateTime date 16.08.2022, 11:27:04 LibraryCategories library-category-list Intern|BACnet Author string 3S - Smart Software Solutions GmbH Company 3S - Smart Software Solutions GmbH CompiledLibraryCompatibilityVersion CODESYS V3.5 SP15 DefaultNamespace BACnetDefaultImpl Description See: Description DocFormat reStructuredText LanguageModelAttribute qualified-access-only Placeholder BACnetDefaultImpl Project BACnetDefaultImpl Title BACnetDefaultImpl Version version 1.7.0.0
Library Reference ¶ This is a dictionary of all referenced libraries and their name spaces. BACnet ¶ Library Identification ¶ Placeholder: BACnet Default Resolution: BACnet, * (3S - Smart Software Solutions GmbH) Namespace: BACnet Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: BACnet CmpBACnet ¶ Library Identification ¶ Placeholder: CmpBACnet Default Resolution: CmpBACnet, * (3S - Smart Software Solutions GmbH) Namespace: CmpBACnet Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: True SystemLibrary: False Key: CmpBACnet CmpErrors2 Interfaces ¶ Library Identification ¶ Name: CmpErrors2 Interfaces Version: newest Company: System Namespace: CmpErrors Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: CmpErrors2 Interfaces, * (System) CmpEventMgr ¶ Library Identification ¶ Placeholder: CmpEventMgr Default Resolution: CmpEventMgr, * (System) Namespace: CmpEventMgr Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: CmpEventMgr CmpLog ¶ Library Identification ¶ Placeholder: CmpLog Default Resolution: CmpLog, * (System) Namespace: CmpLog Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: CmpLog Component Manager ¶ Library Identification ¶ Placeholder: Component Manager Default Resolution: Component Manager, * (System) Namespace: Component_Manager Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: Component Manager Standard ¶ Library Identification ¶ Placeholder: Standard Default Resolution: Standard, * (System) Namespace: Standard Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: Standard StringUtils ¶ Library Identification ¶ Placeholder: StringUtils Default Resolution: StringUtils, * (System) Namespace: Stu Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: StringUtils SysDir ¶ Library Identification ¶ Placeholder: SysDir Default Resolution: SysDir, * (System) Namespace: SysDir Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: SysDir SysFile ¶ Library Identification ¶ Placeholder: SysFile Default Resolution: SysFile, * (System) Namespace: SysFile Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: SysFile SysMem ¶ Library Identification ¶ Placeholder: SysMem Default Resolution: SysMem, * (System) Namespace: SysMem Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: SysMem SysSem ¶ Library Identification ¶ Placeholder: SysSem Default Resolution: SysSem, * (System) Namespace: SysSem Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: SysSem SysTime ¶ Library Identification ¶ Name: SysTime Version: 3.5.9.0 Company: System Namespace: SysTime Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: SysTime, 3.5.9.0 (System) SysTypes2 Interfaces ¶ Library Identification ¶ Name: SysTypes2 Interfaces Version: newest Company: System Namespace: SysTypes Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: SysTypes2 Interfaces, * (System) Util ¶ Library Identification ¶ Placeholder: Util Default Resolution: Util, * (System) Namespace: Util Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: Util Library Parameter ¶ Parameter: IBLOCKSIZE = 22800
LogObjectBaseFileHandleTableEntry (STRUCT) ¶ TYPE LogObjectBaseFileHandleTableEntry : STRUCT InOut: Name Type Initial instNumber DWORD Constants.LOG_INVALID_INSTNUMBER hFile RTS_IEC_HANDLE RTS_INVALID_HANDLE
LogObjectsBase (FB) ¶ FUNCTION_BLOCK ABSTRACT LogObjectsBase EXTENDS BACnet.BACnetServerPluginBase Base class for logging objects default implementions (Trend_Log, Trend_Log_Multiple, Event_Log). It tries to provide a feature complete implementation for logging objects with a reasonable simple implementation. Assumptions / provisions of LogObjectBase and derived: A.) All log data are stored in the file system, one file per object. If large data volumes should be used (Buffer_Size) a high performance file system is recommended. B.) no sophisticated Sequence / Total_Record_Count overflow handling needed - they simply overflow / wrap around If those assumptions / provisions are not valid for your use case, a more sophisticated implementation is needed, for example based on database, in-memory-database etc. BACstack log data are delivered as either IEC_BACNET_LOG_RECORD, IEC_BACNET_LOG_RECORD_MULTIPLE, or IEC_BACNET_EVENT_LOG_RECORD packed in a IEC_BACNET_PROPERTY_CONTENTS and are stored binary as is in one file per logging object. Such a log file contains: 1.) file header 2.) 0..numRecords-1 log records A log record in such a file consists of: 1.) log record header sequence : IEC_BACNET_UNSIGNED time stamp : IEC_BACNET_DATE_TIME 2.) log record data as C-structure 3.) actual number of records in file : IEC_BACNET_UNSIGNED Reasons to do so: - SysFile write operations in append mode doesnt allow writing at file pos <> end for some platforms - reading the last record should be efficient (rewind from file end), for example to get last sequence number If the number of records is supposed to be limited practically (Buffer_Size), then purge operations of the data files are needed (to get rid of old records). Those purge operations are done implicitely in the implementation. A purge operation basically copies the records - except the purged record(s) - to a temporary file, deletes the data file, copy/move the data file to the data file. For those purge operations it might be useful to choose a TempPath on a high speed file system (RAM file system). If TempPath <> PersistentPath the temporary file will be copied to the data file and deleted afterwards, otherwise the temporary file will be renamed to the data file. The purge operations involve a significant performance degradation. In general this should not be an issue, because BACnet logging objects are designed to inform a BACnet management device (OWS/AWS) about “log buffer mostly full” via Notification_Threshold and notifications. The BACnet management device should read and clear the log buffer to avoid “log buffer full” situations which will cause loss of logging data anyway. Properties: HardShutdown MaxDataSize ObjectType PersistentPath ServerDeviceId TempPath Methods: FreeReadRangeResult GetBufferSize GetRecordsByPosition GetRecordsBySequence GetRecordsByTime GetStopWhenFull Init PostStopBACnetStack ReadRangeResultSetInfo ScanObjectsAndSetCallbackAttachments SetCallbackAttachments SetReadCallbackAttachment SetWriteCallbackAttachment UpdateObjectPropertiesFromDataFile ComputeRecordSize CreateDataFiles DataFileName ListDataFiles LogDataFile LogFilePos LogFileSize LogFileSizeAndPos LogObjectAddrString LogObjectPropertyAddrString LogReadRangeResult LogRecord LogRecordContentInfo ObjectId PurgeDataFile ReadNumberOfRecordsAndLastSequenceFromDataFile ReadNumberOfRecordsFromDataFile ReadRangeErrorCompletion ReadRangeInfoToString RemoveDataFiles RemoveUnusedDataFiles ResetDataFile WriteRecordContentToDataFile Structure: BACnetEventCallback ReadRangeErrorCompletion (Method) Files DataFiles CreateDataFiles (Method) DataFileName (Method) ListDataFiles (Method) PurgeDataFile (Method) ReadNumberOfRecordsAndLastSequenceFromDataFile (Method) ReadNumberOfRecordsFromDataFile (Method) RemoveDataFiles (Method) RemoveUnusedDataFiles (Method) ResetDataFile (Method) WriteRecordContentToDataFile (Method) base ComputeRecordSize (Method) FreeReadRangeResult (Method) GetBufferSize (Method) GetRecordsByPosition (Method) GetRecordsBySequence (Method) GetRecordsByTime (Method) GetStopWhenFull (Method) HardShutdown (Property) Init (Method) Logging LogDataFile (Method) LogFilePos (Method) LogFileSize (Method) LogFileSizeAndPos (Method) LogObjectAddrString (Method) LogObjectPropertyAddrString (Method) LogReadRangeResult (Method) LogRecord (Method) LogRecordContentInfo (Method) MaxDataSize (Property) ObjectHandling ObjectId (Method) ObjectType (Property) PersistentPath (Property) PostStopBACnetStack (Method) ReadRangeResultSetInfo (Method) ScanObjectsAndSetCallbackAttachments (Method) ServerDeviceId (Property) SetCallbackAttachments (Method) SetReadCallbackAttachment (Method) SetWriteCallbackAttachment (Method) TempPath (Property) ToString ReadRangeInfoToString (Method) UpdateObjectPropertiesFromDataFile (Method)
BACnetEventCallback ¶ ReadRangeErrorCompletion (Method)
IBase.FB_Init (METH) ¶ METHOD FB_Init : BOOL InOut: Scope Name Type Return FB_Init BOOL Input bInitRetains BOOL bInCopyCode BOOL
IBase.FB_Reinit (METH) ¶ METHOD FB_Reinit : BOOL InOut: Scope Name Type Return FB_Reinit BOOL
IBase.QueryInterface (METH) ¶ METHOD QueryInterface : POINTER TO POINTER TO BYTE InOut: Scope Name Type Comment Return QueryInterface POINTER TO POINTER TO BYTE Input iid DWORD InterfaceID pResult POINTER TO UDINT
IBase.Release (METH) ¶ METHOD Release : DINT InOut: Scope Name Type Return Release DINT
InterfaceIds (GVL) ¶ InOut: Scope Name Type Initial Constant ITFID_IBase DWORD 16#0 ITFID_ICmpStartOEM DWORD 16#2000 ITFID_ICmpEndOEM DWORD 16#3FFF