Topic: DMD0380

Help File Version: 2.10.0.636

FILEOPEN - Open File


The Open File (FILEOPEN) instruction is used to either open an existing file, or create a new file on one of the existing file systems and initializes the File Handle structure that will be used other FILE instructions.

 

 

File System selects which of the available file systems to use:

@RamFS is the 1 MB file system in the Do-more CPU's system RAM. All Do-more CPUs will have this file system available.

 

@SDCardFS is the file system on the removable media installed in the micro-SD card slot (BRX only). This file system is automatically created when the removable media is inserted into the micro-SD card slot. The $SDCardFS.MediaInstalled and $SDCardFS.MediaMounted structure elements will be ON if there is a functional file system available on media in the micro-SD slot.

Note: All micro-SD media must be formatted in a PC before it can be used in a Do-more CPU. Only micro-SD media which has been formatted as FAT32 is supported. The file system can only access the first 32GB of storage space on the micro-SD media; any micro-SD card that is larger than 32GB must be reformatted to FAT32 before it can be used.

File Name - the full path (including any directories) of the file on the specified file system. This can be text enclosed in double quotes, or any system or user-defined string. The File Name allows a maximum length of 255 characters including spaces and non-alphanumeric characters, excluding the following characters which have special meaning to the file system * ? " : < > | . The File Name is not case sensitive.

 


Mode - selects the type of accesses that will be allowed on the file.

 

  • Read - open the file so that the contents of the file can only be read from using the FILEREAD - Read from File instruction.

    If the file does not exist an error is generated.
    If the file does exist it will be opened, and the file pointer will moved to the beginning of the file.

  • Write (Create / Append if exists) - open the file so that it can be written to using the FILEWRITE - Write to File instruction and read from using the FILEREAD - Read from File instruction.

    If the file does not exist it will be created and opened for writing.
    If the file does exist it will be opened and the file pointer will be moved to the end of the file so that if additional data is written to the file, the new data will be added to the existing contents of the file and WILL NOT overwrite the existing contents of the file.

  • Write (Create / Overwrite if exists - open the file so that it can be written to using the FILEWRITE - Write to File instruction and read from using the FILEREAD - Read from File instruction.

    If the file does not exist it will be created and opened for writing.
    If the file does exist it will be opened, any existing data in the file will be deleted, and the file pointer will moved to the beginning of the file.


File Handle Struct - when a file is opened the File Handle Structure that is associated with that file is initialized and remains valid until it is closed using the Close File (FILECLOSE) instruction. The File Handle Struct is used by other FILE instructions when accessing the file. File Handle Struct names must be unique, and consist of 1 to 16 characters in length and consist of any combination of alphanumeric characters and underscores ('_', 'a-z', 'A-Z', 0-9), no spaces or punctuation marks are allowed, and must begin with a letter or an underscore.

 


The On Success and On Error parameters specify what action to perform when this instruction completes. You do not have to use the same type of selection for both On Success and On Error.

 

If the Set Bit selection is used for either On Success or On Error, the specified BIT location will be SET OFF when the instruction is first enabled and will remain OFF until the instruction completes. Once complete, the appropriate Success or Error bit location will be set ON. The specified Bit location is enabled with a SET (Latch) operation (not an OUT operation) meaning that it will remain ON even if this instruction's input logic goes OFF.

 

If the JMP to Stage selection is used for either On Success or On Error the target Stage must be in the same Program code-block as this instruction, you cannot specify a target Stage that exists in a different Program code-block. When the operation finishes, the target Stage will be enabled the same way as a standalone Jump to Stage (JMP) instruction would do it. The JMP to Stage option will only be selectable if this instruction is placed in a Program code-block.

 

On Success selects which of the following actions to perform if the operation is successful:

  • Enable Set Bit then specify any writable bit location.
  • Enable JMP to Stage then specify any Stage number from S0 to S127 in the current Program code-block.

 

On Error selects which of the following actions to perform if the operation is unsuccessful:

  • Enable SET Bit then specify writable bit location.
  • Enable JMP to Stage then specify any Stage number from S0 to S127 in the current Program code-block.

 

If either the On Success or On Error selections are set to JMP to Stage, Automatically create the SG box for any NEW stage number will be enabled which will automatically create any target stage that does not already exist.

  • Below this rung will create the new target stage on a new rung following this instruction.
  • At end of code-block will create the new target stage on the last rung of this Program.

 


Error Codes

Improper use of any FILE instruction or any file system hardware problem will generate a warning message at runtime. When any of these warnings are generated, the On Error parameter in the instruction will be ON and the System ERR variable will contain one of the following text messages. You will also be alerted to this condition by yellow "Warning" text displayed in the Status Bar of Do-more Designer. Clicking that text will open the System Status to display the full text of the warning message.

 

 

Text displayed in the ERR System variable

 

How To Solve / What To Do

SdCard not installed, or has an error

 

On PLC systems that have an SD Card slot, this indicates the SD card is either missing or an error occurred while trying to mount the file system on that media.

 

Note: you can use the File System structure's .MediaInstalled and .MediaMounted in permissive contacts with the input logic of the FILEOPEN instruction to make sure the removable media is properly installed and available before an attempt is made to execute the instruction.

 

File wasn't found

 

The File Name specified could not be located not on the specified File System. It could be spelled wrong, or it could be located in a sub-folder that is not specified, or located on a different File System.

 

File access denied

 

An attempt to open a file for Create / Append that is marked as either Read-Only or as a System file.

 

Attempted to open a device that is already open

 

An attempt was made to open a file that is currently open with a different File Handle or an attempt was made to open a file with a File Handle that is currently in use.

 

File system is full

 

An attempt was made to open a file for Create / Append but there is insufficient space on the specified File System to perform the operation.

 

Unknown error

 

An attempt to open a file in a folder when that folder does not exist, for example trying to open \MyFolder\MyFile.txt when \MyFolder doesn’t exist.

 

 


File Handle Structure

 

Each time the Open File (FILEOPEN) instruction is executed the structure associated with the File Handle is initialized. The contents of the structure's fields will remain valid until a Close File (FILECLOSE) instruction is executed, which will uninitialize the structure. The File Handle structure has the following member fields which can be used in the ladder logic.

.DeviceID (read only) is a 16-bit value that uniquely identifies this file handle.

 

.Open (read only) is a Boolean value that will be ON if the associated file is currently open, and will be OFF if the associated file is not open.

 

.Success (read only) is not used by FILEOPEN.

 

.Error (read only) is not used by FILEOPEN.

 

.EndOfFile (read only) is a Boolean value that will be ON if the file pointer is at the end of the file, that is, after the last byte of data in the file.

 

.FileSize (read only) is a 32 bit value that contains the current number of Bytes in the file.

 

.FilePointer (read only) is a 32 bit value that contains the current location of the file pointer, which is the byte offset from the beginning of the file that indicates where in the file that FILEREAD, FILEWRITE and FILETRUNC operations will be executed.

 


Status Display

 

The red triangle in the upper left corner of the status display indicates this is a Fully Asynchronous instruction.

 

The gray triangle at the right end of the input leg indicates the input is edge-triggered, meaning this instruction will execute each time the input logic transitions from OFF to ON.

.


See Also

FILECLOSE - Close File

 

FILECOPY - Copy File

 

FILEDEL - Delete File

 

FILELOG - Log to File

 

FILENEWFLDR - Make New Folder

 

FILEOPEN - Open File

 

FILEQUERY - Query File or Folder Information

 

FILEREAD - Read from File

 

FILESEEK - Seek to Position in File

 

FILESYSCMD - Perform File System Command

 

FILETRUNC - Truncate File

 

FILEWRITE - Write to File

 

EMAIL - Send Email (with file attachment)

 


Related Topics

File System Reference

 

Browse PLC File Systems

 


Example