Allen-Bradley Logix 5000 Devices

The Logix 5000 series PLCs from Allen-Bradley are supported via EtherNet/IP connections. This device uses Logix tags to identify data objects in the PLC and supports browsing of the PLC namespace.

During a browse operation, I/O Items are created automatically, but they can also be created manually if the tag name and structure definition is known in advance.

Multiple Allen-Bradley datasource objects under a single Node are supported. However, they cannot communicate with the PLC (same or different devices) concurrently. Their read and write operations will be serialized and executed sequentially. We recommend to use multiple Nodes to connect to multiple Allen-Bradley devices.

Supported Data Types

AspenTech Inmation can access tags based on atomic data types (also called elementary data types) or compound data types, such as arrays, predefined structures and user-defined structures (UDTs).

Atomic Data Types

The following atomic data types are supported:

Table 1. Atomic data types
Data Type Description Normalized Type Range

BOOL

Single bit value

VT_BOOL

0 or 1

SINT

Signed 8-bit integer value

VT_I1

-128 …​ 127

USINT

Unsigned 8-bit integer value

VT_UI1

0 …​ 255

INT

Signed 16-bit integer value

VT_I2

-32,768 …​ 32,767

UINT

Unsigned 16-bit integer value

VT_UI2

0 …​ 65,535

WORD

16-bit boolean array

VT_BOOL | VT_ARRAY

0 or 1 at each array position

DINT

Signed 32-bit integer value

VT_I4

-2,147,483,648 …​ 2,147,483,647

UDINT

Unsigned 32-bit integer value

VT_UI4

0 …​ 4,294,967,295

DWORD

32-bit boolean array

VT_BOOL | VT_ARRAY

0 or 1 at each array position

LINT

Signed 64-bit integer value to store date and time values

VT_I8

Valid Date/Time range is from 1/1/1970 12:00:00 AM coordinated universal time (UTC) to 1/1/3000 12:00:00 AM UTC. Time resolution is in microseconds.

ULINT

Unsigned 64-bit integer value

VT_UI8

0 …​ 18,446,744,073,709,551,615

LWORD

64-bit boolean array

VT_BOOL | VT_ARRAY

0 or 1 at each array position

REAL

32-bit IEEE single-precision floating point value

VT_R4

\$-3.40282347E^38...-1.17549435E^-38\$ (negative values)

0

\$1.17549435E^-38...3.40282347E^38\$ (positive values)

LREAL

64-bit IEEE double-precision floating point value

VT_R8

\$-1.7976931348623157E^308 ... -2.2250738585072014E^−308\$ (negative values)

0

\$2.2250738585072014E^−308 ... 1.7976931348623157E^308\$ (positive values)

The LINT date type represents timestamps with microsecond resolution, whereas AspenTech Inmation timestamps have millisecond resolution (with a bigger valid range). To not lose precision, the normalized data type is VT_I8 instead of VT_DATA which is used for timestamps with millisecond resolution.

Structures

Structures are supported in a generic way if structure definitions are available (see the Load Tag Info property). The value of an IO Item pointing to a structure tag is encoded as a JSON string according to the structure type definition.

Some predefined Logix structures are handled in a special way.

Table 2. Predefined Logix structures
Structure Definition Description Normalized Type

STRING

STRING ::= SEQUENCE OF {
    DINT LEN;
    SINT[82] DATA;
}

String data types hold up to 82 ASCII characters and AspenTech Inmation automatically deduces the string length for the string value of the IO item.

VT_BSTR

STRING_16

STRING_16 ::= SEQUENCE OF {
    DINT LEN;
    SINT[16] DATA;
}

String data types hold up to 16 ASCII characters and AspenTech Inmation automatically deduces the string length for the string value of the IO item.

VT_BSTR

STRING_32

STRING_32 ::= SEQUENCE OF {
    DINT LEN;
    SINT[32] DATA;
}

String data types hold up to 32 ASCII characters and AspenTech Inmation automatically deduces the string length for the string value of the IO item.

VT_BSTR

Custom structures whose definition match the predefined STRING structure except for the DATA array length are treated the same way as the predefined string structures. The tag value will be a regular string instead of a JSON string containing the structure member values.

Arrays

Arrays of both atomic data types and structures are supported. Tag arrays can be one-, two-, or three-dimensional. A one-dimensional array has a normalized AspenTech Inmation type of VT_ARRAY combined with the array element data type. A two- or three-dimensional array is represented as a JSON string which encodes the data as JSON arrays.

Browsing and Manual I/O Item Creation

Tags of a Logix 5000 PLC can be browsed and created in the I/O model automatically.

Manual creation of I/O Items requires knowledge of the Logix tag name and potentially its structure definition. For simple cases, the ItemID is just the tag name in case of global tags, or the tag name prefixed with the program name: [program name:]<tag name>.

For example, I/O Items can be created using the following Lua scripting Mass configuration example:

syslib.mass({
    {
        class = syslib.model.classes.IoItem,
        operation = syslib.model.codes.MassOp.UPSERT,
        path = "/Home/Europe/Germany/Cologne/Logix5000/Var1",
        ObjectName = "Var1",
        ItemID = "Var1",
        IoType = syslib.model.codes.IoTypeMode.IOITEMTYPEPLCAB_CIP
    }
})

For a detailed description of the ItemID syntax, see the Allen-Bradley Logix 5000 ItemID section.

Manually created I/O Items will initially display a red "bad" state after creation. Disabling and re-enabling the PLC Datasource will reload the PLC project, updating the symbolic links of the tags and the I/O Item will enter a green "good" state.

Writing to Tags

Writing to tags directly is supported for atomic data types and the predefined or custom string structures. If the new string value is larger then the DATA array count, the value is truncated. For custom string structures, the DATA field is written first and the LEN field second. If writing to LEN fails, an error is logged, but the DATA field keeps the newly written character data.

Arrays and non-string structures can be written to by creating IO-Item objects which address atomic structure members or a single array element. Using the Allen-Bradley Logix 5000 ItemID syntax allows objects to address individual atomic members or elements.