BACnet: The File Object

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 = FILE
Property: Description = “Trend of AI1″
Property: File_Type = “TREND”
Property: File_Size = 750
Property: Modification_Date = (1-NOV-1995, 08:30:49.0)
Property: Archive = FALSE
Property: Read_Only = FALSE
Property: File_Access_Method= RECORD_ACCESS
Property: Record_Count = 150

Written by: Scott Cosby

© Chipkin Automation Systems 2007