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
BOOLEANBoolean value1 bit
BYTEUnsigned 8-bit8 bits
INT16Signed 16-bit16 bits
UINT16Unsigned 16-bit16 bits
INT32Signed 32-bit32 bits
UINT32Unsigned 32-bit32 bits
INT64Signed 64-bit64 bits
UINT64Unsigned 64-bit64 bits
FLOAT3232-bit float32 bits
FLOAT6464-bit float64 bits
ASCIIASCII character8 bits
STRINGString valueVariable

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
MQTT topic to publish tag data.
PUBLISH_MODE
string
Output format: JSON, RAW, or BINARY. Default: JSON.

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