EtherNet/IP Guide

Read and write tags on Allen-Bradley and other CIP devices.

Overview

ControlBird's EtherNet/IP (EIP) support connects industrial automation systems to Allen-Bradley PLCs, including ControlLogix and CompactLogix families, using the CIP (Common Industrial Protocol) over TCP. Connectivity is tag-based: instead of addressing raw registers, you reference PLC tags by name and map each one to a field on a ControlBird Store entity. Reads, writes, and read/write round-trips are all supported, with configurable polling and per-connection timeouts for resilient operation across less-than-perfect networks.

ControlBird manages the CIP session over TCP and layers tag addressing, data-type mapping, polling, and observability on top.

New to device integration?

EtherNet/IP follows the same controller / endpoint / mapper pattern as every other protocol in ControlBird. For a hands-on introduction to wiring a device into the Store, start with walkthrough step 7: Connect a Device.

Capabilities

  • Tag-based addressing using Allen-Bradley CIP syntax, including program scope and array indexing
  • Read operations via polling-based tag value retrieval
  • Write operations that update PLC tag values from Store fields
  • Broad data-type support: Bool, Sint, Int, Dint, Lint, Real, Lreal, String, and UDT structures
  • Configurable connection and operation timeouts
  • ArrayIndex and ElementCount fields for array access
  • Direction control: Read, Write, or ReadWrite per mapper
  • Persistent TCP heartbeat mode for stateful connection management
  • Detailed protocol wire logging and metrics tracking
  • Leader-Only and All-Warm connection modes for multi-endpoint deployments

Default Port

EtherNet/IP communicates over TCP port 44818, the standard Allen-Bradley EIP port defined by IEC 61158-5-12. ControlBird endpoints default to 127.0.0.1:44818; set the Host field to your PLC's network address.

Entity Model

An EtherNet/IP integration is built from three entity types. The controller owns one or more endpoints, and each endpoint is targeted by mappers that bind individual PLC tags to Store fields.

EipClientController

Manages EtherNet/IP client protocol connections and orchestrates the endpoint/mapper lifecycle.

FieldPurpose
NameDisplay name of the controller
DescriptionFree-text description
DisabledDisables the controller and its connections
EndpointConnectionModeLeaderOnly (default) or AllWarm for multi-endpoint load balancing
EndpointsHolds the controller's endpoints
FaceplatesUI faceplate associations

EipEndpoint

Configures the connection parameters for a specific Allen-Bradley PLC device.

FieldDefaultPurpose
Name(none)Display name of the endpoint
Description(none)Free-text description
Host127.0.0.1PLC network address
Port44818EtherNet/IP TCP port
ConnectionTimeoutMs5000Timeout for establishing the TCP/CIP session
OperationTimeoutMs10000Timeout for individual read/write operations
TlsEnabled(none)TLS toggle (see security note below)
Certificate(none)Certificate reference
LoggingEnabledProtocol wire logging on/off
MaxLogFiles1Number of rotated log files retained
MaxLogSizeMb1Maximum size per log file (MB)
MinRetryBackoffMs1000Initial reconnect backoff
MaxRetryBackoffMs60000Maximum reconnect backoff
Faceplates(none)UI faceplate associations

EipMapper

Maps an individual PLC tag to a ControlBird entity field, with direction and polling configuration.

FieldDefaultPurpose
Name(none)Display name of the mapper
Description(none)Free-text description
Direction(none)Read, Write, or ReadWrite
Disabled(none)Disables the mapper
PollIntervalMs1000Read polling frequency
ReadModeSubscribeFalls back to polling (see subscriptions note)
SourcePath(none)PLC tag name to read/write
TargetEntity(none)Store entity to bind the value to
TargetField(none)Store field on the target entity
ArrayIndex0Starting index for array tag access
ElementCount1Number of array elements to slice
TagName(none)PLC tag identifier
Faceplates(none)UI faceplate associations

Tag Addressing

EtherNet/IP uses Allen-Bradley CIP tag syntax. Tag names accept alphanumeric characters and underscores; a colon denotes program scope, a dot accesses structure members, and brackets index into arrays.

SyntaxExampleMeaning
Controller tagTemperatureTop-level controller-scope tag
Program scopeMyProgram:MainRoutine.TemperatureTag inside a program, via colon
Structure memberMotor.SpeedMember of a UDT, via dot
Array elementMyArray[5]Single element of an array, via brackets

Data Type Mapping

ControlBird maps PLC data types to its stored value types automatically. All integer widths collapse to Int, and all floating-point widths collapse to Float.

PLC TypeControlBird Value
BoolBool
Sint, Int, Dint, LintInt
Usint, Uint, Udint, UlintInt
Real, LrealFloat
StringString
UDT (User-Defined Type)Structure

On write, ControlBird selects a compatible PLC integer or floating-point type based on the value being written, so you do not need to specify the wire type yourself.

Configuration Workflow

EtherNet/IP entities are created and managed through the Device Manager app in the Platform UI. A typical setup proceeds as follows.

  1. Create an EipEndpoint with the PLC's network address (Host / Port). Defaults are 127.0.0.1:44818.
  2. Adjust ConnectionTimeoutMs (default 5000ms) and OperationTimeoutMs (default 10000ms) to suit your network.
  3. Create an EipClientController and choose its EndpointConnectionMode: LeaderOnly (default) or AllWarm for multi-endpoint load balancing.
  4. Create EipMapper entities that link PLC tag names (SourcePath) to ControlBird fields (TargetEntity / TargetField).
  5. Set Direction (Read, Write, or ReadWrite) and ReadMode. Subscribe is the default but resolves to polling, since native subscriptions are not supported.
  6. Configure PollIntervalMs (default 1000ms) for read polling frequency.
  7. For array tags, set ArrayIndex (default 0) and ElementCount (default 1) on the mapper.
  8. Keep the endpoint's Logging field Enabled (default) to capture protocol traffic while debugging.

Polling and Subscriptions

EtherNet/IP has no native subscription mechanism, so mappers fall back to polling. Even though a mapper's ReadMode shows Subscribe by default, value updates are obtained by reading each tag at the configured PollIntervalMs interval.

Connection management uses a persistent TCP heartbeat rather than poll-based liveness. The session is held open for stateful operation; if it drops, ControlBird reconnects using exponential backoff bounded by MinRetryBackoffMs (default 1000ms) and MaxRetryBackoffMs (default 60000ms).

Array Access

To read or write a slice of an array tag, combine the bracket syntax in the tag name with the mapper's array fields. ArrayIndex sets the starting element and ElementCount sets how many elements to transfer.

Tag:          MyArray
ArrayIndex:   5
ElementCount: 10
// Reads MyArray[5] through MyArray[14]

Security

TLS is not supported in transit

ControlBird's EtherNet/IP transport does not support TLS for EtherNet/IP traffic. To protect device communication, place the connection on a segmented control network or route it through a VPN. On newer PLC firmware, CIP Security can provide authenticated and encrypted CIP sessions. For general certificate handling in ControlBird, see the certificates guide.

Logging and Metrics

When an endpoint's Logging field is Enabled, ControlBird captures both transmitted requests (TX) and received responses (RX). Output is rotated across MaxLogFiles files (default 1), each capped at MaxLogSizeMb megabytes (default 1).

ControlBird also tracks runtime metrics for monitoring connection health and throughput, including active and cumulative connection counts, total tag reads and writes, and request success and error totals.

Multi-endpoint deployments

Use LeaderOnly when a single ControlBird node should own each PLC connection at a time, and AllWarm when you want every endpoint kept warm across nodes for load balancing. The choice is set on the EndpointConnectionMode field of the EipClientController.