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.

Supported Data Types

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 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 inmation automatically deduces the string length for the string value of the IO item.

VT_BSTR

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

inmation.mass({
    {
        class = inmation.model.classes.IoItem,
        operation = inmation.model.codes.MassOp.UPSERT,
        path = "/System/Core/Connector/Logix5000/Var1",
        ObjectName = "Var1",
        ItemID = "Var1",
        IoType = inmation.model.codes.IoTypeMode.IOITEMTYPEPLCAB_CIP
    }
})

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