Defining a Native EIP PLC peripheral address

This chapter describes the configuration of a peripheral address for a native EIP PLC.

Reference

The completely formatted address string. You can enter the address directly in the Reference text field, or create it via the separate fields.

Reference Syntax

<device>:L.<logix tag>
Note: Please note that the previous syntax <device>.<logix or pccc tag> is still valid for compatibility reasons, but should not be used anymore.

Driver Number

Must be set to match the corresponding instance of the Ethernet IP driver.

Connection Name

Select the PLC to which this address should be assigned.

Type

The type of the selected PLC (cannot be changed here).

PLC Tag

The exact symbolic tag name used in the PLC. An optional .bit suffix can be added to INT and DINT tags to select a specific bit.

Omitting subscripts from an array tag will access the first element of the array.

When using implicit receive mode the offset and size inside the Tag Set must be defined in the Format <TagSetName>/<offset>[:<size>], e.g. "MyTagSet/0:50" would mean that it will get its data from the implicit Tag Set called MyTagSet, starting at offset 0 for 50 elements. The offset starts at zero and is mandatory, the length however is optional and should be used for arrays only.

Type of transformation

Choose the transformation type for this PLC tag from the combo box. You must match the transformation type to the data type of the selected tag in the PLC, or the request will be rejected by the PLC. The possible choices are:

  • Int16
  • Int32
  • Uint16
  • Uint32
  • Float32
  • Char
  • String
  • Bit
  • Bit in word
  • Bit in dword
  • Blob
  • Raw text array
  • Bit in Byte
  • Float64 (Double)
  • Raw Text (16-bit to 2 char string)

Strings are sent with their current text length but are truncated at 82 bytes.

Note: User defined strings with a length greater than 82 are not supported by the EIP driver for Logix PLCs.

The Raw text array to string transform allows transferring text that is stored in an INT array in the PLC, two characters per element, into a WinCC OA string data point.

It is permitted to read an entire structure into a Blob DPE (up to the configured message size of 512 - 2048 bytes). Logix Blob-reads are not grouped together in polls. Writing Blob DPEs to Logix PLCs is not supported.

"Bit in byte" uses the SINT type within the PLC whereas "Bit in word" uses the type INT.

In case the specific type is not listed above, choose a matching basic type and data length. In WinCC OAthere is no difference between a BCD type, such as UINT_BCD, and its basic type, UINT.

Bit in word and bit in dword allow reading a specific bit of a WORD or DWORD symbol. Therefore, use the optional .bit suffix in the PLC Tag as described above (e.g. MyWord.5 to read bit 5 of MyWord). When using Omron PLCs these transforms do not support writes.

When configuring an address for a dyn datapoint, use the associated basic types. For example, when adding an int16 array the transformation int16 should be used.

The Raw Text transformation can be used to transfer 2-characters of text to or from WinCC OAstring datapoint elements and a 16-bit PLC register. Text defaults to little endian byte order. A swap-bytes checkbox allows reversing alternate bytes.

The "raw text array" transformation is used to transform a PLC array of 2-character text registers to a WinCC OA string datapoint element. When writing a string longer than the PLC’s array, the message will be rejected by the PLC.

Note: Structures such as TIMER cannot be published when using Omron PLCs, only the individual fields can be transmitted to WinCC OA.

Direction

Define if you want to send values of a datapoint element to the PLC (output), or read them from the PLC into the datapoint (input). The In/Out selection allows using both, but should be used with caution.

Receive mode

Choices are:

  • Polling - Allows adding this address to a poll group which can then be scheduled.
  • Single query – The address is only polled on demand by writing its element name to the _DriverCommon.SQ internal datapoint for the corresponding driver number. These addresses are also polled by the EIP driver during a general query.
  • Implicit – Allows high-speed updates of WinCC OA datapoint elements from the PLC without polling. The driver requests a scheduled stream of updates of a specified Tag Set. Once this request is accepted by the PLC it begins sending UDP datagrams containing the data for the entire Tag Set at the specified rate without polling for data.

Poll group

Choose already existing poll groups. If there are no poll groups available you have to create them with the specific polling parameters in a separate panel. The panel is opened by clicking on the Poll groups... button (see Poll groups for more information on poll groups and polling parameters).

Implicit Tag-Sets

Choose an already existing Tag Set for the implicit receive mode. If there are no Tag Sets available, you have to create them with the specific parameters in a separate panel. This panel is opened by clicking on the Tag Sets button (see Ethernet/IP Implicit Messaging for more information on Implicit Messaging).

Address active

The Address active check box is chosen. The address is used by the driver (see Reference tables). An inactive address exists and the attributes can be set and queried but the driver does not use them. This means that no values can be sent to remote system or received from the remote system for this datapoint.

Old/new comparison

You can choose this option only when the transfer direction is set to Input. If the option is chosen the data is only sent in case of changes. The comparison is based on the raw data without conversion.

Data types - additional information

Arrays

By far, the highest transfer rates can be achieved by grouping the data into arrays in the PLC. These arrays can then be read into corresponding dyn data points in WinCC OA, or into separate data points per array element. When using individual array elements, these are automatically grouped into blocks for efficient transfer, up to the MaxGap setting.

  • When accessing an array of BOOLs in the PLC, this must be addressed as an array of 32-bit integers. So rather than addressing SomeBits[70] you would instead specify SomeBits[2].6
  • It is permitted to read an entire PLC array into a dyn DPE of the corresponding type.
  • You can read a range of a PLC array, by using this syntax: ArrayName[starting-index]:range. For example MyIntArray[30]:10 would read elements 30 through 39 of MyIntArray into the configured dynamic data point. If starting at index 0, it is still mandatory to specify MyIntArray[0]:range. MyIntArray:range is not permitted.
  • It is permitted to read a multi-dimension PLC array into a WinCC OAdyn data point, although it will be “flattened” into one dimension. If a starting range and index are specified, all dimensions must be specified.
  • When reading elements of the same array into separate non-dynamic data points, nearby elements are optimized into blocks for efficient transfer, up to the defined MaxGap number. If reading sparse elements of an array, it may be better to increase MaxGap from its default size of 5.
  • If you want to read arrays as a whole without specifying an array length, you have to enable "Read by ID" or trigger the info query manually.

Reading of arrays automatically uses as many transactions as necessary, which allows reading arrays of any size. An array-read is always a separate transaction within the PLC and is not grouped with other tags.

Unlike reads, the whole array needs to fit in one message when writing arrays, which means that the maximum size of the array depends on the element type and on the configured message size.

Using array[index]:length to separate the array into multiple dyn datapoint elements allows you to write bigger arrays.

Note: The size of the symbol table in the PLC has a very significant impact on performance. Reducing the number of rows in the PLC symbol table can provide a significant boost in the transfer rate. An Array counts as a single row. This means that configuring one array with 1000 elements results in a better performance than 10 arrays with 100 elements each.
Note: Only single-dimension arrays are grouped.
Note: Array length specifiers are not supported for Bool arrays when using Omron PLCs due to protocol limitations.
Attention: An array address must be configured only once. This means that configuring e.g. MyIntArray[0]:10 and MyIntArray[3] is not allowed, since MyIntArray[3] is also in the scope of MyIntArray[0]:10. To prevent unexpected behavior and data loss, such configurations must be avoided.
DPE type PLC data type Transformation Address example Notes
int INT int16 MyInt Reads value of MyInt
int INT Array Element int16 MyIntArray[5] Reads value of element 5 of MyIntArray
int DINT int32 MyDInt Reads value of MyDInt
int DINT array element int32 MyDIntArray[5] Reads value of element 5 of MyDIntArray
float REAL float32 MyReal Reads value of MyReal
float REAL array element float32 MyRealArray[5] Reads value of element 5 of MyRealArray
bool BOOL bit MyBool Reads value of MyBool
bool INT bit in word MyInt.3 Reads value of bit 3 MyInt
bool INT array element bit in word MyIntArray[5].3 Reads value of bit 3 of 6th word, i.e. bit 163
dyn int INT array int16 MyIntArray Reads complete array, requires info query to be performed
dyn int INT array int16 MyIntArray[5]:3 Reads 3 values from MyIntArray starting with element 5
dyn int DINT array int32 MyDIntArray Reads complete array, requires info query to be performed
dyn int DINT array int32 MyDIntArray[5]:3 Reads 3 values from MyDIntArray starting with element 5
dyn float REAL array float32 MyRealArray Reads complete array, requires info query to be performed
dyn float REAL array float32 MyRealArray[5]:3 Reads 3 values from MyRealArray starting with element 5
dyn bool BOOL array bit MyBoolArray Reads a complete array, requires info query to be performed
dyn bool BOOL array bit MyBoolArray[5]:3 Reads 96 bits from MyBoolArray starting at bit 160

Program tags

By default, the EIP driver accesses controller-tags in the PLC. You can, however, access program-tags, by using this syntax:

Program:programName.tagName

Configuration of Omron CJ2 PLCs

An Omron CJ2 series PLC implements Ethernet/IP protocol much like an Allen Bradley Control Logix PLC. All transfers are based on symbolic tag-names. It is not possible to directly specify a low-level block address in the EIP driver. Instead it must be added to the Symbols table in CX-Programmer, and then set as a Net Variable for Publication as shown in the figure below.