Skip to main content
Version: 2.0

EtherNet/IP Integration Guide

Connect MaestroHub to Allen-Bradley PLCs (ControlLogix, CompactLogix, Micro820) using the EtherNet/IP protocol. This guide covers connection setup, function authoring, and pipeline integration for tag-based industrial communication.

Overview

The EtherNet/IP connector provides:

  • Native CIP communication with Allen-Bradley PLCs over EtherNet/IP
  • Tag-based addressing with support for controller-scoped and program-scoped tags
  • Comprehensive data type support for all standard CIP types including arrays
  • Tag discovery to browse and explore available tags in the PLC
  • Batch operations for efficient multi-tag reads and writes
Supported PLCs

This connector is designed for Allen-Bradley PLCs that support EtherNet/IP CIP (Common Industrial Protocol):

  • ControlLogix (1756 series) - configure the appropriate CPU slot
  • CompactLogix (1769 series) - uses slot 0
  • Micro820 - uses slot 0

Connection Configuration

Creating an EtherNet/IP Connection

From ConnectionsNew ConnectionEtherNet/IP, configure the fields below:

EtherNet/IP Connection Creation Fields

1. Profile Information
FieldDefaultDescription
Profile Name-A descriptive name for this connection profile (required, max 100 characters)
Description-Optional description for this EtherNet/IP connection
2. PLC Configuration
FieldDefaultDescription
Host-PLC IP address or hostname (e.g., 192.168.1.100) - required
Port44818TCP port number (1-65535). Standard EtherNet/IP port is 44818
Slot0CPU slot number in the chassis (0-16). Use 0 for CompactLogix and Micro820

Slot Configuration by PLC Type

PLC TypeSlot SettingNotes
ControlLogix (1756)0-16Set to the physical slot where the CPU module is installed
CompactLogix (1769)0Always use slot 0
Micro8200Always use slot 0
3. Timeout Configuration
FieldDefaultDescription
Timeout (ms)5000Connection and request timeout in milliseconds (1000-300000)
4. Keep-Alive Settings
FieldDefaultDescription
Keep AlivetrueEnable TCP keep-alive to maintain the connection
Keep Alive Interval (ms)10000Interval between keep-alive packets in milliseconds (1000-3600000)
5. Connection Labels
FieldDefaultDescription
Labels-Key-value pairs to categorize and organize this connection (max 10 labels)

Example Labels

  • environment: production
  • team: automation
  • protocol: ethernetip
  • plc-type: controllogix
Notes
  • Slot Configuration: For ControlLogix systems with multiple modules, set the slot to match the physical slot number of the CPU module (typically slot 0 for the leftmost position).
  • Timeout Values: Increase timeout values for PLCs on slow networks or when reading large tag arrays.
  • Keep-Alive: Enabling keep-alive prevents the connection from being dropped during idle periods and helps detect connection failures.
  • Standard Port: The default EtherNet/IP port 44818 is the industry standard. Only change this if your network requires a non-standard configuration.

Supported Data Types

EtherNet/IP uses CIP (Common Industrial Protocol) data types. The connector supports all standard types:

CIP TypeDescriptionValue Range
boolBooleantrue / false
sintSigned 8-bit integer-128 to 127
intSigned 16-bit integer-32,768 to 32,767
dintSigned 32-bit integer-2,147,483,648 to 2,147,483,647
lintSigned 64-bit integerFull 64-bit range
usintUnsigned 8-bit integer0 to 255
uintUnsigned 16-bit integer0 to 65,535
udintUnsigned 32-bit integer0 to 4,294,967,295
ulintUnsigned 64-bit integerFull 64-bit range
real32-bit floating pointIEEE 754 single precision
lreal64-bit floating pointIEEE 754 double precision
stringCharacter stringVariable length

Tag Naming Conventions

Allen-Bradley PLCs use a hierarchical tag naming system:

Controller-Scoped Tags

Temperature
Motor1_Speed
Process_Data

Program-Scoped Tags

Program:Main.LocalVar
Program:Safety.EmergencyStop

Array Elements

DataArray[0]
Temperature_History[5]
Motor_Speeds[0]

Structure Members

Motor.Speed
Pump_Data.Pressure
Recipe.Step1.Duration
Case Sensitivity

CIP protocol is case-insensitive. Tags like Temperature, TEMPERATURE, and temperature all reference the same tag.

Function Builder

Creating EtherNet/IP Functions

After saving the connection, author reusable EtherNet/IP functions:

  1. Open FunctionsNew Function
  2. Choose the appropriate function type: Read Tag, Write Tag, Read Multiple Tags, Write Multiple Tags, or Browse Tags
  3. Select the EtherNet/IP connection profile you configured
  4. Define tag names, data types, and execution options

Quick Add: Bulk Function Creation

When you need to create multiple EtherNet/IP functions at once, the Quick Add feature accelerates the setup process by allowing batch creation from a table or CSV import.

When to Use Quick Add

  • Onboarding a new PLC with many tags to monitor
  • Converting existing tag lists from PLC programming software
  • Rapidly setting up data collection for multiple process variables
  • Standardizing function definitions across similar PLCs

How to Use Quick Add

  1. Navigate to your EtherNet/IP connection in Connections
  2. Click Quick Add Functions button
  3. Choose your input method:
    • Table Entry: Define functions row by row in the interface
    • CSV Import: Upload a prepared CSV file with tag definitions

Table Columns

ColumnDescriptionExample
Function NameUnique identifier for the functionRead_Temperature
TypeEtherNet/IP operationRead Tag, Write Tag
Tag NameFull tag pathTemperature, Program:Main.Speed
Data TypeCIP data typereal, dint, bool

CSV Import Format

name,functionType,tagName,dataType,value
Read_Temperature,read,Temperature,real,
Read_MotorStatus,read,Motor1_Running,bool,
Write_Setpoint,write,Setpoint,real,75.5
Read_Process_Values,read_tags,Temperature,real,
Read_Process_Values,read_tags,Pressure,real,
Write_Setpoints,write_tags,Setpoint,real,75.5

Grouping for Multi-Tag Functions

When importing read_tags or write_tags functions, rows with the same function name are grouped together:

name,functionType,tagName,dataType,value
Process_Readings,read_tags,Temperature,real,
Process_Readings,read_tags,Pressure,real,
Process_Readings,read_tags,FlowRate,real,

This creates a single Process_Readings function that reads all three tags in one batch operation.

Read Tag Function

Purpose: Read a single tag value from the PLC. Supports scalar values and array elements.

Configuration Fields

FieldTypeRequiredDefaultDescription
Tag NameStringYes-Full tag path (e.g., Temperature, Program:Main.Speed, DataArray[0])
Data TypeEnumYes-CIP data type (bool, sint, int, dint, lint, usint, uint, udint, ulint, real, lreal, string)
LengthNumberNo1Number of elements to read (1 for scalar, >1 for array reads, max 10000)

Use Cases: Process variable monitoring, sensor readings, equipment status checks, setpoint verification

Example Output

{
"value": 75.5,
"tagName": "Temperature",
"dataType": "real"
}

Write Tag Function

Purpose: Write a value to a single tag in the PLC. Supports automatic type conversion.

Configuration Fields

FieldTypeRequiredDefaultDescription
Tag NameStringYes-Full tag path (e.g., Setpoint, Program:Main.Target)
Data TypeEnumYes-CIP data type for the target tag
ValueAnyYes-Value to write (supports parameters with ((parameterName)) syntax)
LengthNumberNo1For arrays, number of elements to write

Use Cases: Setpoint updates, recipe downloads, equipment control, alarm acknowledgement

Safety First

Always implement validation and safety checks before writing to industrial equipment. Consider adding condition nodes to verify values are within safe ranges before writing to the PLC.

Read Multiple Tags Function

Purpose: Read multiple tags in a single batch operation. More efficient than multiple single-tag reads.

Configuration Fields

FieldTypeRequiredDefaultDescription
TagsArrayYes-Array of tag definitions, each with tagName and dataType

Tag Definition Fields

FieldTypeRequiredDescription
tagNameStringYesFull tag path
dataTypeEnumYesCIP data type

Use Cases: Dashboard data collection, periodic process snapshots, historian logging, batch process monitoring

Example Output

{
"results": [
{ "tagName": "Temperature", "value": 75.5, "success": true },
{ "tagName": "Pressure", "value": 14.7, "success": true },
{ "tagName": "FlowRate", "value": 120.3, "success": true }
]
}

Write Multiple Tags Function

Purpose: Write values to multiple tags in a single batch operation.

Configuration Fields

FieldTypeRequiredDefaultDescription
TagsArrayYes-Array of tag definitions, each with tagName, dataType, and value

Tag Definition Fields

FieldTypeRequiredDescription
tagNameStringYesFull tag path
dataTypeEnumYesCIP data type
valueAnyYesValue to write

Use Cases: Recipe downloads, batch setpoint updates, coordinated control actions, system configuration updates

Example Output

{
"results": [
{ "tagName": "Setpoint1", "success": true },
{ "tagName": "Setpoint2", "success": true },
{ "tagName": "Mode", "success": true }
]
}

Browse Tags Function

Purpose: Discover and list all available tags in the PLC. Useful for initial setup and tag exploration.

Configuration Fields

FieldTypeRequiredDefaultDescription
FilterStringNo-Optional prefix filter to narrow results (case-insensitive). Leave empty to browse all tags

Use Cases: PLC tag discovery, documentation generation, configuration validation, integration setup

Example Output

{
"tags": [
{ "name": "Temperature", "dataType": "real", "scope": "controller" },
{ "name": "Motor1_Speed", "dataType": "dint", "scope": "controller" },
{ "name": "Program:Main.LocalVar", "dataType": "int", "scope": "program" }
]
}

Using Parameters

Parameters follow the ((parameterName)) syntax and appear in the function editor panel. Use parameters to make functions reusable across different contexts.

ConfigurationDescriptionExample
TypeCoerce runtime values into CIP data typesnumber, string, boolean
RequiredEnforce presence of the parameterRequired / Optional
Default ValueProvide fallback values for unattended runs0, false, 100.0
DescriptionHelp field to capture parameter purpose"Target temperature setpoint in degrees C"

Example: A write function with a parameterized value:

  • Tag Name: Setpoint
  • Data Type: real
  • Value: ((targetValue))

This allows the same function to write different values based on pipeline inputs.

Pipeline Integration

Use the EtherNet/IP connection functions you create here as nodes inside the Pipeline Designer to coordinate PLC data with the rest of your production flow.

EtherNet/IP Node

The EtherNet/IP Node executes a single function from your connection. Drag the node onto the canvas, select your connection and function, bind parameters to upstream outputs or constants, and tune retries or error branches as needed.

The function you select determines the operation: read, write, browse, or batch operations are all performed through the same node type.

If you are planning broader orchestration, review the Connector Nodes page for guidance on where EtherNet/IP nodes fit within multi-system automation patterns.

EtherNet/IP Read Group Node

The EtherNet/IP Read Group node allows you to execute multiple read operations efficiently within a single node. Use this for comprehensive data collection from multiple tags or connections.

When to use Read Group vs. standard node:

ApproachUse Case
EtherNet/IP NodeExecute a single function (read, write, browse, or batch operation)
Read Group NodeExecute multiple read functions from one or more connections in a single node