FB_FileRead

FB_FileRead 1:

With this function block the contents of an already opened file can be read. The file must have been already opened for read access.

VAR_INPUT

VAR_INPUT
    sNetId      : T_AmsNetId;
    hFile       : UINT;
    pReadBuff   : DWORD;
    cbReadLen   : UDINT;
    bExecute    : BOOL;
    tTimeout    : TIME;
END_VAR

sNetId    :Is a string containing the AMS network identifier of the target device to which the ADS command is directed.

hFile    : Is occupied by the file handle already created by FB_FileOpen.

pReadBuff  : Contains the address of the buffer for the read data. The buffer can be a single variable, an array or a structure, whose address can be found with the ADR operator.

cbReadLen : Contains the number of bytes to be read.

bExecute    : The ADS command is triggered by a rising edge at this input.

tTimeout    : States the time before the function is cancelled.

VAR_OUTPUT

VAR_OUTPUT
    bBusy       : BOOL;
    bError      : BOOL;
    nErrId      : UDINT;
    cbRead      : UDINT;
    bEOF        : BOOL;
END_VAR

bBusy:    This output remains TRUE until the block has executed a command, but at the longest for the duration supplied to the ‘tTimeout’ input. While bBusy = TRUE, no new command will be accepted at the inputs. Please note that it is not the execution of the service but its acceptance whose time is monitored.

bError:    This output is switched to TRUE if an error occurs during the execution of a command. The command-specific error code is contained in ‘nErrId’.

nErrId:    Contains the command-specific ADS error code of the most recently executed command.

cbRead : Contains the number of bytes currently read.

bEOF : This output is switched to TRUE if an end of file is reached and no more data bytes could be read (cbRead=0). This output is not set if some data bytes could be read (cbRead>0).

  

Function specific ADS error code

Possible reason

0x703

Invalid or unknown file handle.

0x70A

No memory for read buffer.

0x70E

File was opened with wrong method ( e.g. with 'obsolete' FILEOPEN function block ).

 

Example of calling the block in FBD:

PROGRAM Test
VAR
    fbFileRead      : FB_FileRead;
    hFile           : UINT;
    bFileRead       : BOOL;
    bFileReadBusy   : BOOL;
    bFileReadError  : BOOL;
    nFileReadErrorId: UDINT;
    nFileReadCount  : UDINT;
    bFileReadEOF    : BOOL;
    FILEDATA        : ARRAY[0..9] OF BYTE;
END_VAR

FB_FileRead 2:

After a rising edge at ”bFileRead" and successful execution of the read instruction the currently read bytes from the file are found in ”FILEDATA". The number of bytes actually read in the previous read procedure can be determined from the parameter ”cbRead". 

Requirements

Development environment

Target system type

PLC libraries to include

TwinCAT v2.8.0

PC or CX (x86)

TcSystem.Lib

TwinCAT v2.10.0 Build >= 1301

CX (ARM)

TcSystem.Lib