This document describes an information model for file transfer. Files could be modelled in OPC UA as simple Variables using ByteStrings. However, the overall message size in OPC UA is limited due to resources and security issues (denial of service attacks). Only accessing parts of the array can lead to concurrency issues if one client is reading the array while others are manipulating it. Therefore, the ObjectType FileTypeis defined representing a file with Methodsto access the file. The life-cycle of a file stored on a hard disk and an instance of the FileTyperepresenting the file in an OPC UA AddressSpacecan be independent.
In addition to representing individual files this document also defines a way to represent a whole file system or a part of a file system. This can be done using the FileDirectoryTypein combination with the FileType. The FileDirectoryTypeprovides Methodsto create delete and move files and directories. The root of a file system or part of a file system is represented by an instance of the FileDirectoryTypewith the BrowseName FileSystem. All directories below the root directory are represented by instances of the FileDirectoryTypeor a subtype. All files below the root directory are represented by instances of the FileTypeor a subtype.
In different situations like transfer of configuration files or firmware update, the files are temporary, and an additional handshake is necessary to create the file for reading or to apply the file after writing it to the server. This use case is covered by the TemporaryFileTransferTypedefined in this document.