BACnet File Object Overview
The BACnet File object represents a file stored within a BACnet device and accessed through standardized File Services. File objects allow BACnet clients to read or write structured data such as trend logs, configuration files, or vendor-defined data.
Any file accessible through BACnet File Services is represented by a corresponding File object within the device.
BACnet File Services
File Services are defined in Clause 14 of the BACnet standard. This clause specifies how files may be accessed and manipulated within BACnet devices.
The BACnet standard allows two categories of files to be accessed through File Services:
- Vendor-defined files
- Standard BACnet-defined files
Purpose of the File Object
The primary purpose of the File object is to uniquely identify and describe a specific file within a BACnet device. This includes metadata that allows clients to understand file type, size, and access method before performing read or write operations.
Core descriptive elements include:
- File name
- File size
- Creation or modification date
- File type
BACnet File Object Properties
The following table lists the standard properties of the BACnet File object and their associated datatypes as defined by the BACnet specification.
| Property | Datatype |
| Object_Identifier | BACnet Object Identifier |
| Object_Name | Character String |
| Object_Type | BACnet Object Type |
| Description | Character String |
| File_Type | Character String |
| File_Size | Unsigned |
| Modification_Date | BACnet Date Time |
| Archive | Boolean |
| Read_Only | Boolean |
| File_Access_Method | BACnet File Access Method |
| Record_Count | Unsigned |
| Profile_Name | Character String |
Atomic Read and Write Operations
BACnet File Services define two operations:
- Atomic Read
- Atomic Write
An atomic operation is defined as a single, indivisible operation in which no other read or write operation may occur on the same file simultaneously. Synchronization and concurrency control are the responsibility of the device developer.
Atomic Read Structure
| Parameter Name | Request | Indication | Response | Confirm |
| Argument | M | M(=) | ||
| File Identifier | M | M(=) | ||
| Stream Access | S | S(=) | ||
| File Start Position | M | M(=) | ||
| Requested Octet Count | M | M(=) | ||
| Record Access | S | S(=) | ||
| File Start Record | M | M(=) | ||
| Requested Record Count | M | M(=) | ||
| Result(+) | S | S(=) | ||
| End Of File | M | M(=) | ||
| Stream Access | S | S(=) | ||
| File Start Position | M | M(=) | ||
| File Data | C | C(=) | ||
| Record Access | S | S(=) | ||
| File Start Record | M | M(=) | ||
| Returned Record Count | M | M(=) | ||
| File Record Data | C | C(=) | ||
| Result(-) | S | S(=) | ||
| Error Type | M | M(=) |
Atomic Write Structure
| Parameter Name | Request | Indication | Response | Confirm |
| Argument | M | M(=) | ||
| File Identifier | M | M(=) | ||
| Stream Access | S | S(=) | ||
| File Start Position | M | M(=) | ||
| File Data | M | M(=) | ||
| Record Access | S | S(=) | ||
| File Start Record | M | M(=) | ||
| Record Count | M | M(=) | ||
| File Record Data | M | M(=) | ||
| Result(+) | S | S(=) | ||
| Stream Access | S | S(=) | ||
| File Start Position | M | M(=) | ||
| Record Access | S | S(=) | ||
| File Start Record | M | M(=) | ||
| Result(-) | S | S(=) | ||
| Error Type | M | M(=) |
M = Mandatory C = Conditional S = Selection
The "=" symbol indicates equivalence to the parameter immediately preceding it.
Example File Object Instance
The following example illustrates a BACnet File object representing a trend log stored within an automation device:
Object_Identifier = (File, 7)
Object_Name = "TREND_AI1"
Object_Type = FILE
Description = "Trend of AI1"
File_Type = "TREND"
File_Size = 750
Modification_Date = (1-NOV-1995, 08:30:49.0)
Archive = FALSE
Read_Only = FALSE
File_Access_Method = RECORD_ACCESS
Record_Count = 150
FAQ: BACnet File Object
What is a BACnet File object used for?
It represents a file stored within a BACnet device and provides standardized access through File Services.
Are BACnet File objects required to use standard file formats?
No. Files may be vendor-defined or standardized, as indicated by the File_Type property.
What does “atomic” mean in BACnet File Services?
Atomic operations ensure that a file read or write completes as a single, uninterrupted operation.
Can BACnet File objects be used for trend data?
Yes. Trend logs are a common use case and are often implemented as File objects using record-based access.