BACnet: The File Object

BACnet Integration Solutions

Chipkin has BACnet solutions for almost every situation. We have over 20+ years experience in BACnet integration, check out our BACnet Products:


The File object is defined by the BACnet standard as data files that are described by the object’s properties, and accessed through File Services.

File Services is listed in the standard as Clause 14. The clause describes the access and manipulation of files within BACnet devices. The developer has two options regarding file types accessed through File Services:

  • Vendor defined files
  • Bacnet standard files

Any file accessible through File Services has a related File object in a BACnet device.

The primary purpose of the File object is to identify a specific file through the following descriptions:

  • File Name
  • File Size
  • Creation Date
  • File Type

The following table will present the actual properties and associated datatypes of the File object from the BACnet standard:

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

The developer should be aware that File Services has two specific operations:

  • Atomic Read
  • Atomic Write

The meaning of Atomic is defined in the standard as a singular operation in that no other similar operation is permitted for the same file. In addition, the synchronization of these operations is matter for the developer.

The following two tables will examine the structure of the Atomic Read and Write operations:

Atomic Read Structure Table

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 Table:

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 parameter.
C – Conditional parameter.
S – Selection parameter from a collection of two or more possible parameters.

The code “=” following one of the codes M, C, or S indicates that the parameter is equivalent to the parameter to its immediate left in the table.

The following example from the BACnet standard will present the File object structure from an actual automation application. This example will specifically examine a File object that contains trend information:

Property: Object_Identifier = (File, Instance 7)Property: Object_Name = “TREND_AI1”³Property: Object_Type = FILEProperty: Description = “Trend of AI1”³Property: File_Type = “TREND”Property: File_Size = 750Property: Modification_Date = (1-NOV-1995, 08:30:49.0)Property: Archive = FALSEProperty: Read_Only = FALSEProperty: File_Access_Method= RECORD_ACCESSProperty: Record_Count = 150

Written by: Scott Cosby

Contact Us

Contact us via phone (+1 866-383-1657) or leave a detailed message below for sales, support, or any other needs

*Required Field
*Required Field
I'd like to receive the newsletter. *Check email for confirmation.
*Required Field
8:00am - 12:00pm 12:00pm - 5:00pm