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: 0CompactLogix: 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
- Navigate to Connectivity → DEVICES tab
- Select the ETHERNET/IP protocol tab
- Click Setup New Connection
- 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:
- Split 1000 tags into 2 chunks (500 each)
- Use 2 CIP connections at a time to read them
- Total CIP usage: 2 connections (well within limits)
But if you set max tags per read = 50:
-
Split 1000 tags into 20 chunks (50 each)
-
Try to use up to 8 concurrent connections
-
This could overwhelm older PLCs!
-
Click Save to create the connection
-
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
- Go to Connectivity → TAGS tab
- Select ETHERNET/IP protocol
- Choose your connection from dropdown
- Click Discover Tags button
- Wait for discovery to complete
- Select tags from the discovered list
- 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:
- Enter tag names (one per line or comma-separated)
- System resolves data types automatically
- Select poll group
- 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 integerINT- 16-bit signed integerSINT- 8-bit signed integerREAL- 32-bit floating pointLINT- 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:
- Click CSV Import/Export button
- Select Export CSV
- Open in Excel for editing
Import tags:
- 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)
- Click Import CSV and select file
- 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:
- Navigate to Connectivity → DEVICES tab
- Click Device Discovery button
- (Optional) Change broadcast address if needed
- Default:
255.255.255.255(all subnets) - Specific subnet: e.g.,
192.168.1.255
- Default:
- Click Scan Network
- Wait for discovery to complete (5-15 seconds)
- 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:
- Navigate to Connectivity → DEVICES tab
- Click Device Discovery button
- Enter specific IP address (e.g.,
192.168.1.10) - Click Identify Device
- 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:
- Click Rack Config button
- Enter chassis IP and processor slot
- 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
- Click edit icon (✏️) on connection row
- Modify settings as needed
- Save changes
- 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]throughTemperatures[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):
- Organize data in PLC arrays: Instead of scattered individual tags, create arrays in your PLC logic
- Copy values to arrays: Use PLC logic to move the values you need into contiguous arrays
- 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
- 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
Related Documentation
- Device Setup - General connectivity guide
- Tag Management - Managing tags and metadata
- Chart Composer - Visualizing EIP data
- Troubleshooting - Common issues
For controller programming and tag configuration, refer to Rockwell Automation Studio 5000 documentation.