EtherNet/IP Configuration

DataForeman connects to Rockwell Automation (Allen-Bradley) PLCs using the EtherNet/IP protocol, supporting ControlLogix, CompactLogix, and Micro800 series controllers.

Overview

The EtherNet/IP driver provides:

  • Auto-discovery of controller tags
  • Support for all Logix data types
  • Program-scoped and controller-scoped tags
  • Structure and UDT (User-Defined Type) support
  • Array element access
  • Multi-rate polling optimization

Connection Setup

Required Information

Field Description Typical Value
IP Address Controller network address 192.168.1.100
Connection Name Friendly identifier Main PLC ControlLogix
Slot Controller slot in chassis ControlLogix: 0
CompactLogix: varies
Timeout Connection timeout (ms) 5000 (default)
Max Tags Per Read Tags batched per CIP request 500 (default, range 1-2000)
Max Concurrent Connections Parallel read operations 8 (default, range 1-32)

Creating a Connection

  1. Navigate to ConnectivityDEVICES tab
  2. Select the ETHERNET/IP protocol tab
  3. Click Setup New Connection
  4. Fill in the connection details:

IP Address:

  • Must be reachable from DataForeman server
  • Use static IP addresses for PLCs
  • Example: 192.168.1.10

Slot Number:

  • ControlLogix: Enter PLC (processor) slot number
  • CompactLogix: Varies by model (often 0 or 1)
  • Micro800: Typically 0
  • Check controller chassis configuration

Timeout:

  • Default 5000ms works for most networks
  • Increase for slow/unreliable networks
  • Decrease for fast local networks

Max Tags Per Read:

  • Maximum number of tags to read in a single CIP request (default: 500)
  • Range: 1-2000 tags
  • What it does: Batches multiple tag reads into single network requests for efficiency
  • How it works: When polling tags, DataForeman groups them into chunks of this size
  • CIP Connection Usage: Each read operation requires one temporary CIP connection

Understanding CIP Connections:

EtherNet/IP uses CIP (Common Industrial Protocol) connections for communication. Each PLC has a limited number of available CIP connections. This limitation applies to both the processor AND the EtherNet/IP communication module/network card.

Connection Limits Vary By:

  • Processor model: Different processors have different capabilities
  • EtherNet/IP module: Communication cards (1756-EN2T, EN3TR, EN4TR, ENBT, etc.) each have their own limits
  • Controller series: Micro800 series have much lower limits than ControlLogix

Important: Even if your processor supports many connections, your EtherNet/IP communication module may have a lower limit. The effective limit is always the lower of the two values (processor or network card). Check your specific hardware documentation for exact connection limits.

⚠️ Important Warnings:

  • Don’t set max tags per read too low: Setting this to a small number (e.g., 10-50) when you have 500+ tags will create many parallel CIP connections and may exceed the controller’s connection limit
  • Older equipment: Older controllers and EtherNet/IP modules typically have more limited CIP connections. Exceeding this limit causes connection failures
  • Connection sharing: Remember that other devices (HMIs, programming software, other SCADA systems) also consume CIP connections
  • Symptoms of too many connections: PLC rejects connections, intermittent communication failures, “connection refused” errors, actual poll rates slower than configured rates
  • Check your hardware specs: Consult Rockwell Automation documentation for your specific processor and EtherNet/IP module connection limits

Recommended Settings:

  • Large tag counts (500+ tags): Keep default of 500 tags per read
  • Medium tag counts (100-500 tags): 250-500 tags per read
  • Small tag counts (<100 tags): Match your total tag count
  • Older PLCs: Use 500 tags per read to minimize connection count
  • Fast polling: Larger batch sizes reduce network overhead

Max Concurrent Connections:

  • Maximum number of simultaneous read operations (default: 8)
  • Range: 1-32 connections
  • Controls parallel polling when you have multiple poll groups
  • Lower this value for controllers with limited CIP connection capacity
  • Start conservatively and increase if needed based on your hardware capabilities

Example Calculation:

If you have:

  • 1000 tags to poll
  • Max tags per read = 500
  • Max concurrent connections = 8

DataForeman will:

  1. Split 1000 tags into 2 chunks (500 each)
  2. Use 2 CIP connections at a time to read them
  3. Total CIP usage: 2 connections (well within limits)

But if you set max tags per read = 50:

  1. Split 1000 tags into 20 chunks (50 each)

  2. Try to use up to 8 concurrent connections

  3. This could overwhelm older PLCs!

  4. Click Save to create the connection

  5. Connection starts automatically

Note: Test connection feature not currently available for EtherNet/IP. Connection will attempt when saved.

Tag Discovery

EtherNet/IP supports automatic tag discovery from the controller.

Auto-Discovery

  1. Go to ConnectivityTAGS tab
  2. Select ETHERNET/IP protocol
  3. Choose your connection from dropdown
  4. Click Discover Tags button
  5. Wait for discovery to complete
  6. Select tags from the discovered list
  7. Choose poll group and save

Discovery finds:

  • Controller-scoped tags
  • Program-scoped tags
  • Tag data types automatically
  • Array dimensions

Manual Tag Entry

You can also enter tag names manually:

  1. Enter tag names (one per line or comma-separated)
  2. System resolves data types automatically
  3. Select poll group
  4. Click Add Tags to save

Tag Path Format

Controller-scoped tags:

TagName

Program-scoped tags:

Program:ProgramName.TagName

Structure members:

StructTag.Member
StructTag.Member.SubMember

Array elements:

ArrayTag[0]
ArrayTag[5]
TwoDArray[0,0]

Examples:

Temperature          (Controller tag)
Pressure             (Controller tag)
Program:Main.Valve1  (Program-scoped)
Status.Running       (Structure member)
Setpoints[0]         (Array element)

Supported Data Types

DataForeman supports all common Logix data types:

Numeric Types:

  • DINT - 32-bit signed integer
  • INT - 16-bit signed integer
  • SINT - 8-bit signed integer
  • REAL - 32-bit floating point
  • LINT - 64-bit signed integer (newer controllers)

Other Types:

  • BOOL - Boolean (true/false)
  • STRING - Text string

Complex Types:

  • Structures: Auto-flattened into individual tags
  • Arrays: Access elements individually
  • UDTs: Treated as structures

CSV Import/Export

Manage tags in bulk using spreadsheets.

Export tags:

  1. Click CSV Import/Export button
  2. Select Export CSV
  3. Open in Excel for editing

Import tags:

  1. Create CSV with columns:
    • tag_path: EIP tag path (required)
    • tag_name: Display name (optional)
    • data_type: Data type (optional, auto-detected if omitted)
    • poll_group: Poll group name (optional)
    • unit: Engineering unit (optional)
  2. Click Import CSV and select file
  3. Review and confirm import

Example CSV:

tag_path,tag_name,poll_group,unit
Temperature,Tank Temperature,Fast,°F
Pressure,Tank Pressure,Fast,PSI
Program:Main.Valve1,Main Valve,Medium,
Setpoints[0],SP1,Slow,

Multi-Rate Polling

Optimize controller load and network traffic with poll groups:

Poll Group Rate Best For
Ultra Fast 50ms Critical control loops
Very Fast 100ms High-speed monitoring
Fast 250ms Process control
Normal 500ms Standard monitoring
Standard 1000ms Default rate
Slow 2000ms Slow-changing values
Very Slow 5000ms Setpoints, status

Best Practice: Group tags by update frequency to minimize controller overhead.

Device Discovery

DataForeman provides multiple methods to discover and identify Allen-Bradley devices on the network.

Network Auto-Discovery

Automatically scan your network to find all EtherNet/IP devices:

  1. Navigate to ConnectivityDEVICES tab
  2. Click Device Discovery button
  3. (Optional) Change broadcast address if needed
    • Default: 255.255.255.255 (all subnets)
    • Specific subnet: e.g., 192.168.1.255
  4. Click Scan Network
  5. Wait for discovery to complete (5-15 seconds)
  6. View discovered devices with:
    • IP address
    • Product name and model
    • Vendor information
    • Serial number
    • Firmware revision

Network Requirements for Auto-Discovery:

Discovery uses UDP broadcast packets. For successful results:

  • ✅ Devices must be on the same network subnet
  • ✅ Firewall must allow UDP port 44818 (EtherNet/IP)
  • Virtual Machines: Must use Bridged network adapter
    • NAT mode will NOT work (blocks broadcast packets)
    • Shared/Host-Only mode will NOT work
    • ✅ Use Bridged mode to allow VM direct network access

Troubleshooting Discovery:

  • No devices found? Check VM network adapter is Bridged
  • Firewall blocking? Temporarily disable to test
  • Wrong subnet? Adjust broadcast address
  • Switch configuration? Ensure switches forward broadcasts

Single Device Identification

Identify a specific device by IP address:

  1. Navigate to ConnectivityDEVICES tab
  2. Click Device Discovery button
  3. Enter specific IP address (e.g., 192.168.1.10)
  4. Click Identify Device
  5. Results show:
    • Product name
    • Product type/family
    • Serial number
    • Firmware revision

Use for:

  • Verifying controller connectivity
  • Identifying devices with known IPs
  • Testing connectivity before creating connection
  • Confirming IP addresses

Rack Configuration (ControlLogix)

For ControlLogix chassis systems:

  1. Click Rack Config button
  2. Enter chassis IP and processor slot
  3. View all modules in chassis:
    • Slot numbers
    • Module types
    • Product names
    • Serial numbers

Useful for:

  • Documenting chassis configuration
  • Identifying I/O modules
  • Troubleshooting hardware

Connection Management

Starting/Stopping

  • Connections start automatically when created
  • Green indicator = connected and collecting data
  • Red indicator = disconnected or error
  • Click Start/Stop button to control

Editing Connections

  1. Click edit icon (✏️) on connection row
  2. Modify settings as needed
  3. Save changes
  4. Connection restarts with new configuration

Deleting Connections

Cannot delete connections with saved tags. Remove all tags first, then delete connection.

Troubleshooting

Connection Failed

“Cannot connect to controller”:

  • Verify IP address is correct
  • Ping the controller from DataForeman server
  • Check firewall allows port 44818 (EtherNet/IP)
  • Verify slot number is correct
  • Ensure controller is in RUN or REMOTE RUN mode

“Timeout”:

  • Network latency too high
  • Increase timeout value in connection settings
  • Check network quality and bandwidth
  • Verify no packet loss

“Slot not found”:

  • Wrong slot number
  • Check chassis configuration in Studio 5000
  • Try slot 0 for most controllers

Discovery Fails

“Failed to discover tags”:

  • Connection not started (check Devices tab)
  • Controller has connection limits
  • Network communication issues
  • Large tag database (may take time)

“No tags found”:

  • Program may be empty
  • Tags may be in programs (use program-scoped paths)
  • Controller may restrict tag access

Tags Not Updating

Check connection status:

  • Must be green on Devices tab
  • Verify controller is in RUN mode
  • Check for connection errors in diagnostics

Verify tag paths:

  • Correct spelling and case sensitivity
  • Include Program: prefix for program tags
  • Array indices within bounds

Controller limits:

  • Check for max connection limit
  • Too many active connections to controller
  • Reduce number of connections or tags

Performance Issues

Slow reads:

  • Too many tags in single poll group
  • Reduce poll rate for non-critical tags
  • Spread tags across multiple poll groups

Controller overload:

  • Excessive polling frequency
  • Use appropriate poll groups

Best Practices

Tag Organization

  • Use descriptive names: Follow plant naming standards
  • Group by function: Organize related tags together
  • Document tag paths: Keep records in CSV exports
  • Consistent naming: Use standard prefixes/suffixes

Performance

  • Appropriate poll rates: Don’t over-poll slow values
  • Enable write-on-change: Reduces database storage
  • Limit tag count: Keep under 500-1000 tags per connection
  • Group polls: Batch similar update frequencies

Reliability

  • Static IPs: Never use DHCP for controllers
  • Dedicated network: Isolate OT from IT networks
  • Monitor health: Use Live Status indicator
  • Regular backups: Export tag configurations

Security

  • Network isolation: Use VLANs for PLC networks
  • Firewall rules: Restrict port 44818 access
  • Read-only: DataForeman currently read-only (write coming soon)
  • Audit access: Review diagnostic logs regularly

Network Requirements

Firewall Rules:

  • Outbound TCP/UDP: Port 44818 (EtherNet/IP)
  • Direction: DataForeman → Controller
  • Protocol: Both TCP and UDP

Docker Considerations:

  • No port mapping needed (outbound only)
  • Connectivity service initiates connections
  • Ensure Docker network can reach controller IPs

Supported Controllers

Tested and supported:

  • ControlLogix (1756 series)
  • CompactLogix (1769 series)
  • Micro800 series
  • SoftLogix (emulated controllers)

Compatibility:

  • Most Logix-based controllers supported
  • PLC-5 and SLC 500 not supported (different protocol)
  • For older controllers, consider DH+/DF1 gateway

Advanced Features

Array Optimization

Efficient Array Reading:

DataForeman automatically optimizes array tag reads for maximum efficiency:

  • Batch Mode (Default): Reads entire arrays as single tags
  • Benefit: Single CIP request instead of multiple individual reads
  • Performance: Significantly reduces network overhead and PLC load
  • When Used: When reading 10+ array elements or more than 10% of an array

Example:

  • If you have Temperatures[0] through Temperatures[99] (100 element array)
  • Reading 20 elements: DataForeman reads the entire array once instead of 20 individual reads
  • Result: 20x fewer CIP requests, faster polling, lower controller load

💡 Optimization Tip: When working with large arrays, this automatic batching can dramatically improve performance. Arrays are read as contiguous memory blocks, which is highly efficient on Logix controllers.

⚡ Performance Best Practice for High-Speed Polling:

If you need to poll hundreds or thousands of tags at fast scan rates (50-250ms):

  1. Organize data in PLC arrays: Instead of scattered individual tags, create arrays in your PLC logic
  2. Copy values to arrays: Use PLC logic to move the values you need into contiguous arrays
  3. Configure high-speed task: Place the copy logic in a periodic task or program that runs at least as fast as your desired poll rate
    • Example: If polling at 100ms, PLC task must execute at ≤100ms
    • Task scan rate slower than poll rate = stale data
  4. Poll the arrays: DataForeman reads entire arrays efficiently with minimal CIP connections

Example PLC Configuration:

// In a 50ms periodic task/program:
DataForeman_Array[0] := ActualTag1;
DataForeman_Array[1] := ActualTag2;
DataForeman_Array[2] := ActualTag3;
// ... etc

Benefits:

  • Single array read vs. hundreds of individual tag reads
  • Dramatically reduces CIP connection usage
  • Much lower PLC and network overhead
  • Enables fast polling without overwhelming the controller

Write-on-Change

Configure change detection to reduce database growth:

  • Deadband: Minimum change to save value
  • Heartbeat: Max time between saves
  • See Tag Management for details

Tag Type Resolution

DataForeman automatically resolves tag types:

  • Queries controller for data type
  • Handles structures and arrays
  • Validates data type compatibility

Connection Pooling

For multiple programs or large tag sets:

  • Each poll group uses optimized batching
  • Automatic read request optimization
  • Minimizes controller overhead

Limitations

Current version:

  • Write operations not yet implemented
  • No ladder logic upload/download
  • Discovery may timeout on very large programs

Coming soon:

  • Tag write support
  • Improved error diagnostics
  • Connection test before save
  • AOI (Add-On Instruction) member access

For controller programming and tag configuration, refer to Rockwell Automation Studio 5000 documentation.