FB_FileWrite
The function block FB_FileWrite writes data into a file. For write access the file must have been opened in the corresponding mode, and it must be closed again for further processing by external programs.
This function block is only suitable for logging in real-time to a limited extent. |
Inputs
VAR_INPUT
sNetId : T_AmsNetId;
hFile : UINT;
pWriteBuff : PVOID;
cbWriteLen : UDINT;
bExecute : BOOL;
tTimeout : TIME := DEFAULT_ADS_TIMEOUT;
END_VAR
Name | Type | Description |
---|---|---|
sNetId | T_AmsNetId | String containing the AMS network ID of the target device to which the ADS command is addressed (type: T_AmsNetId). |
hFile | UINT | File handle, which was generated when the function block FB_FileOpen was created. |
pWriteBuff | PVOID | Address of the buffer containing the data to be written. The buffer can be a single variable, an array or a structure, whose address can be found with the ADR operator. |
cbWriteLen | UDINT | Number of bytes to be written |
bExecute | BOOL | The function block is activated by a rising edge at this input. |
tTimeout | TIME | States the length of the timeout that may not be exceeded by execution of the ADS command. |
Outputs
VAR_OUTPUT
bBusy : BOOL;
bError : BOOL;
nErrId : UDINT;
cbWrite : UDINT;
END_VAR
Name | Type | Description |
---|---|---|
bBusy | BOOL | When the function block is activated, this output is set to TRUE and remains set until feedback is received. As long as bBusy is TRUE, no new command can be executed. |
bError | BOOL | If an error occurs during command execution, this output is set, once the bBusy output has been reset. |
nErrId | UDINT | Returns the ADS error code or the command-specific error code when the bError output is set. |
cbWrite | UDINT | Contains the number of the last successfully written data bytes. A write error indicates that the number of successfully written data bytes is less than the requested length (cbWriteLen) or zero. A write error can occur if the data carrier is full, for example. If a write error occurs, the bError and nErrID outputs are not set. Since the PLC application knows the number of data bytes to be written, it can compare the actual written length with the requested length and detect write errors. When a write error occurs, the internal file pointer has an undefined position. |
Command-specific error code | Possible cause |
---|---|
0x703 | Invalid or unknown file handle. |
0x70E | File was opened with wrong method (e.g. with obsolete FILEOPEN function block). |
Example of calling the block in FBD:
PROGRAM Test
VAR
fbFileWrite : FB_FileWrite;
hFile : UINT;
bFileWrite : BOOL;
bFileWriteBusy : BOOL;
bFileWriteError : BOOL;
nFileWriteErrorId: UDINT;
nFileWriteCount : UDINT;
fileData : ARRAY[0..9] OF BYTE;
END_VAR
In the example, after a rising edge at bFileWrite, 10 bytes of the array FILEDATA are written to the file.
Requirements
Development environment |
Target system type |
PLC libraries to include (Category group) |
---|---|---|
TwinCAT v3.1.0 |
PC or CX (x86, x64, ARM) |
Tc2_System (System) |