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 |
|
|
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.
-