Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AVEVA™ Communication Drivers

Block reads and writes of arrays

  • Last UpdatedAug 29, 2024
  • 2 minute read

The ABCIP Communication Driver supports Block Reads and Writes of one-dimensional arrays from the supported ControlLogix, FlexLogix, and CompactLogix controllers.

The following features are not supported by the Communication Driver:

  • Block Reads/Writes of strings.

  • Block Reads/Writes of structures (either predefined or user-defined).

    Note: The requested block size cannot exceed 486 bytes.

There are five different data types that are supported, each of which requires a different allowance on the qualifier due to the block size limitation.

There are three optimization modes supported, each with a different maximum qualifier allowance as shown in the following table: Optimize for Reads, Optimize for Startup, and No Optimization.

Note: The number in the "Ln" qualifier should not need an offset, because it is the total number counting from 1 (one).

Data Type

Qualifier Allowance (n)

Optimize for Read

Optimize for Startup
No Optimization

Boolean (VT_BOOL)

3840

3831

SINT (VT_I1)

486

478

INT (VT_I2)

243

239

DINT (VT_I4)

114

114

Real (VT_R4)

121

119

LINT (VT_I8)

60

59

Note: Boolean array tags may allow up to 3872 items in a block if the specified range of array elements fits exactly into a contiguous block of DINT-based (4-byte) memory units. That is, Boolean array item block starting from array index zero or at every quadruple of byte (32-bits) margin.
For example, index 0, 32, 64, 96, … can exploit this feature to the maximum.

The Block Reads and Writes of Arrays feature works differently for a DDE/SuiteLink client and OPC client.

  • In an OPC client, the array of data is displayed as an array of values (a series of data) separated by ";" according to their data types.

  • In a DDESuiteLink client, the array of data is expressed as a string of Hex data block, of which each unit occupies the same byte size as defined by the data types.

    • The Hex value contained in each unit of the data block is equivalent to the decimal quantity stored in each individual item in the controller.

    • The data in the array block can be parsed according to the byte size of the data type.

    • The Hex value can be converted to its equivalent decimal quantity for use in the application.

      For example:

      A DINT (double integer data type) item occupies 4 (four) bytes of data, which amounts to 8 (eight) Hex digits.
      An array block of DINT items from the InTouch HMI using DDESuiteLink should be parsed into individual units of 8 (eight) Hex characters.
      Then each unit of parsed data needs to be converted from Hex to its equivalent decimal value for usage.

TitleResults for “How to create a CRG?”Also Available in