ADSREAD
This function block allows execution of an ADS read command, to request data from an ADS device.
VAR_INPUT
VAR_INPUT
NETID : T_AmsNetId;
PORT : T_AmsPort;
IDXGRP : UDINT;
IDXOFFS : UDINT;
LEN : UDINT;
DESTADDR : DWORD;
READ : BOOL;
TMOUT : TIME;
END_VAR
NETID : Is a string containing the AMS network identifier of the target device to which the ADS command is directed.
PORT : Contains the port number of the ADS device.
IDXGRP : Contains the index group number (32 bit, unsigned) of the requested ADS service. This value is to be found in the ADS table of the addressed device.
IDXOFFS : Contains the index offset number (32 bit, unsigned) of the requested ADS service. This value is to be found in the ADS table of the addressed device.
LEN : Contains the number, in bytes, of the data to be read.
DESTADDR : Contains the address of the buffer which is to receive the data that has been read. The programmer is himself responsible for dimensioning the buffer to a size that can accept ‘LEN’ bytes. The buffer can be a single variable, an array or a structure, whose address can be found with the ADR operator.
READ : The ADS command is triggered by a rising edge at this input.
TMOUT : States the time before the function is cancelled.
VAR_OUTPUT
VAR_OUTPUT
BUSY : BOOL;
ERR : BOOL;
ERRID : UDINT;
END_VAR
BUSY : This output remains TRUE until the block has executed a command, but at the longest for the duration supplied to the ‘Timeout’ input. While Busy = 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.
ERR : This output is switched to TRUE if an error occurs during the execution of a command. The command-specific error code is contained in ‘ErrorId’. If the block has a timeout error, ‘Error’ is TRUE and ‘ErrorId’ is 1861 (hexadecimal 0x745). Is reset to FALSE by the execution of a command at the inputs.
ERRID : Contains the command-specific error code of the most recently executed command. Is reset to 0 by the execution of a command at the inputs.
Example of calling the block in FBD:

Here the error status of axis no. 6, as an element with a size of 4 bytes, is interrogated and written into the ‘dataArr’ buffer. The IDXGRP 00004006 (hex) and the IDXOFFS 00000001 (hex) can be found in the NC-ADS documentation.
Requirements
Development environment | Target system type | PLC libraries to include |
---|---|---|
TwinCAT v2.7.0 | PC or CX (x86) | PLCSystem.Lib |
TwinCAT v2.8.0 | PC or CX (x86) | TcSystem.Lib |
TwinCAT v2.10.0 Build >= 1301 | CX (ARM) | TcSystem.Lib |