Skip to main content

EtherNet/IP Overview

The ETHERNETIP route enables communication with CIP (Common Industrial Protocol) compatible devices using EtherNet/IP explicit messaging. It provides access to device attributes using CIP addressing (Class, Instance, Attribute) and supports Allen-Bradley PLCs and other EtherNet/IP devices.
EtherNet/IP uses CIP addressing which provides structured access to device data. Use this route when you need explicit messaging to specific CIP objects.

Basic Syntax

DEFINE ROUTE EIPDevice WITH TYPE ETHERNETIP
    ADD ETHERNETIP_CONFIG
        WITH IP "192.168.1.100"
        WITH PORT 44818
        WITH POLLING_MS 750
    ADD MAPPING DeviceData
        WITH EVERY 1 SECOND
        ADD TAG Temperature
            WITH ADDRESS "1.1.100.0"
            WITH DATA_TYPE "FLOAT32"
            WITH SOURCE_TOPIC "eip/temperature"

Connection Configuration

ETHERNETIP_CONFIG Parameters

IP
string
required
EtherNet/IP device IP address.
PORT
integer
EtherNet/IP port. Default: 44818.
POLLING_MS
integer
Polling interval in milliseconds. Default: 750.
CONNECTION_TIMEOUT
integer
Connection timeout in milliseconds. Default: 5000.
READ_WRITE_TIMEOUT
integer
Read/Write timeout in milliseconds. Default: 3000.
RETRY_ATTEMPTS
integer
Number of retry attempts. Default: 3.
RETRY_TIME_SECONDS
integer
Retry delay in seconds. Default: 5.

Connection Example

ADD ETHERNETIP_CONFIG
    WITH IP "192.168.1.100"
    WITH PORT 44818
    WITH POLLING_MS 500
    WITH CONNECTION_TIMEOUT 5000
    WITH READ_WRITE_TIMEOUT 3000
    WITH RETRY_ATTEMPTS 3
    WITH RETRY_TIME_SECONDS 5

CIP Addressing

EtherNet/IP uses CIP addressing in the format: ClassID.InstanceID.AttributeID.AttributeIndex
ComponentDescriptionExample
ClassIDCIP object class1 (Identity), 4 (Assembly), etc.
InstanceIDObject instance1, 2, 3…
AttributeIDAttribute numberVaries by class
AttributeIndexIndex for arrays0 for first element

Common CIP Classes

Class IDNameDescription
1IdentityDevice identification
2Message RouterMessage routing
4AssemblyI/O assemblies
6Connection ManagerConnection handling
102Analog Input PointAnalog inputs
103Analog Output PointAnalog outputs
104Discrete Input PointDigital inputs
105Discrete Output PointDigital outputs

Data Types

DATA_TYPE
string
required
CIP data type for the attribute:
Data TypeDescriptionSize
BOOLEAN / BOOLBoolean value1 bit
BYTEUnsigned 8-bit8 bits
USINTUnsigned 8-bit integer8 bits
SINTSigned 8-bit integer8 bits
INT16 / INTSigned 16-bit integer16 bits
UINT16 / UINT / WORDUnsigned 16-bit integer16 bits
INT32 / DINTSigned 32-bit integer32 bits
UINT32 / UDINT / DWORDUnsigned 32-bit integer32 bits
INT64 / LINTSigned 64-bit integer64 bits
UINT64 / ULINT / LWORDUnsigned 64-bit integer64 bits
FLOAT32 / REAL / FLOAT32-bit floating point32 bits
FLOAT64 / LREAL / DOUBLE64-bit floating point64 bits
CHARSingle character8 bits
WCHARWide character16 bits
TIMETime duration32 bits
DATEDate value16 bits
TODTime of day32 bits
ASCIIASCII string8 bits
STRINGString value (configurable LENGTH)Variable

TAG Configuration

Complete TAG Example

ADD TAG ProcessTemperature
    WITH ADDRESS "102.1.3.0"
    WITH DATA_TYPE "FLOAT32"
    WITH SOURCE_TOPIC "eip/process/temperature"
    WITH SCALING_FACTOR 0.1
    WITH OFFSET 0
    WITH DEADBAND 0.5
    WITH PUBLISH_MODE "JSON"
    WITH LENGTH 1

TAG Parameters

ADDRESS
string
required
CIP address in format: ClassID.InstanceID.AttributeID.AttributeIndex
DATA_TYPE
string
required
CIP data type: BOOLEAN, BYTE, INT16, UINT16, INT32, UINT32, INT64, UINT64, FLOAT32, FLOAT64, ASCII, STRING.
LENGTH
integer
String length (for STRING type only).
SCALING_FACTOR
decimal
Scaling multiplier for the value.
OFFSET
decimal
Value offset applied after scaling.
DEADBAND
decimal
Suppress updates if change is less than threshold.
SOURCE_TOPIC
string
Topic where PLC values are published. Subscribe here to receive sensor data.
PUBLISH_MODE
string
Output format: JSON, RAW, or BINARY. Default: JSON.

Event-Based Operations

For on-demand EtherNet/IP operations (not polling), use the EVENT syntax. Publish a message to SOURCE_TOPIC to trigger the operation; the route executes it and publishes the result to DESTINATION_TOPIC.

Supported Operations

OperationDescriptionQuery Parameters
READRead a CIP attribute on demandaddress, data_type
WRITEWrite a value to a CIP attributeaddress, data_type, value

Query Parameters

ParameterDescriptionExample
operationOperation type: READ or WRITEREAD
addressCIP address: ClassID.InstanceID.AttributeID.Index102.1.3.0, 1.1.7.0
data_typeCIP data typeFLOAT32, UINT16, BOOLEAN, STRING
valueValue to write (WRITE only)50.0, 1, true

Read Example

Read an analog input point value on demand:
ADD EVENT ReadAttribute
    WITH SOURCE_TOPIC "eip/commands/read"
    WITH DESTINATION_TOPIC "eip/responses/read"
    WITH QUERY "{operation: READ, address: 102.1.3.0, data_type: FLOAT32}"

Write Example

Write to an analog output point on demand:
ADD EVENT WriteOutput
    WITH SOURCE_TOPIC "eip/commands/write"
    WITH DESTINATION_TOPIC "eip/responses/write"
    WITH QUERY "{operation: WRITE, address: 103.1.3.0, data_type: FLOAT32, value: 50.0}"

Complete Examples

Read device identity information:
DEFINE ROUTE DeviceIdentity WITH TYPE ETHERNETIP
    ADD ETHERNETIP_CONFIG
        WITH IP "192.168.1.100"
        WITH PORT 44818
        WITH POLLING_MS 5000
    ADD MAPPING IdentityData
        WITH EVERY 30 SECONDS
        ADD TAG VendorID
            WITH ADDRESS "1.1.1.0"
            WITH DATA_TYPE "UINT16"
            WITH SOURCE_TOPIC "device/identity/vendor"
        ADD TAG DeviceType
            WITH ADDRESS "1.1.2.0"
            WITH DATA_TYPE "UINT16"
            WITH SOURCE_TOPIC "device/identity/type"
        ADD TAG ProductCode
            WITH ADDRESS "1.1.3.0"
            WITH DATA_TYPE "UINT16"
            WITH SOURCE_TOPIC "device/identity/product"
        ADD TAG SerialNumber
            WITH ADDRESS "1.1.6.0"
            WITH DATA_TYPE "UINT32"
            WITH SOURCE_TOPIC "device/identity/serial"
        ADD TAG ProductName
            WITH ADDRESS "1.1.7.0"
            WITH DATA_TYPE "STRING"
            WITH LENGTH 32
            WITH SOURCE_TOPIC "device/identity/name"

CIP Object Reference

AttributeDescriptionData Type
1Vendor IDUINT16
2Device TypeUINT16
3Product CodeUINT16
4RevisionUINT16[2]
5StatusUINT16
6Serial NumberUINT32
7Product NameSTRING
AttributeDescriptionData Type
3ValueFLOAT32/INT16
4StatusUINT16
5Scaling MinimumFLOAT32
6Scaling MaximumFLOAT32
AttributeDescriptionData Type
3ValueBOOLEAN
4StatusUINT16
AttributeDescriptionData Type
3DataVariable
4SizeUINT16

Troubleshooting

  • Verify IP address is correct
  • Check firewall allows port 44818 (TCP and UDP)
  • Ensure device supports EtherNet/IP explicit messaging
  • Try increasing CONNECTION_TIMEOUT
  • Verify ClassID.InstanceID.AttributeID format
  • Check CIP object exists on device
  • Consult device documentation for valid paths
  • Instance usually starts at 1, not 0
  • Verify DATA_TYPE matches attribute definition
  • Check device documentation for correct types
  • Some devices use INT16 instead of FLOAT32 for analog
  • Increase READ_WRITE_TIMEOUT
  • Check network connectivity
  • Reduce polling rate if device is slow
  • Verify device is not overloaded with connections

Next Steps

Allen-Bradley

Tag-based access to Allen-Bradley PLCs.

FINS (Omron)

Connect to Omron PLCs.