← All Posts

CIP Explicit vs Implicit Messaging: When to Use Each

Once you get past the EtherNet/IP encapsulation layer, every CIP message is one of two types: explicit or implicit. They use different transports, different ports, and exist for different reasons. Confuse them and you will be debugging a controller that "cannot see its I/O" while tag reads work fine, or vice versa.

This guide compares the two and tells you when each is appropriate. For the surrounding protocol structure, see the CIP protocol guide.

The Core Distinction

Explicit messaging spells out exactly what it wants on every message: the service code, object path, and attribute. It is request-response and flexible, but carries addressing overhead on every frame. It runs over TCP 44818.

Implicit messaging sets up a connection once (via ForwardOpen), then exchanges data at a fixed rate with no per-message addressing: the meaning of each byte is "implied" by the connection configuration. It is fast and deterministic, ideal for cyclic I/O. It runs over UDP 2222.

Mnemonic: explicit = "read this specific tag now" (TCP, on demand). Implicit = "stream these I/O bytes every 5 ms forever" (UDP, cyclic).

Feature Comparison

Factor
Explicit
Implicit
Transport / port
TCP 44818
UDP 2222
Style
Request-response
Cyclic connection
Per-message overhead
High (full path)
Low (data only)
Determinism
Best-effort
Fixed RPI cycle
Setup
RegisterSession only
ForwardOpen + connection
Typical use
Tags, browse, config
Real-time I/O, drives
Used by SCADA
Yes (polling)
Rarely

When to Use Explicit Messaging

Explicit messaging is what almost every non-Rockwell tool (SCADA drivers, data loggers, custom apps) uses, because it does not require the connection bookkeeping of implicit messaging.

When to Use Implicit Messaging

Implicit connections are configured in Logix Designer (Studio 5000) when you add a module to the controller tree and set its RPI. The controller handles ForwardOpen and the cyclic exchange; you never write implicit-messaging code yourself in normal project work.

Why the Split Exists

It is a latency/overhead trade-off. Explicit messaging carries enough metadata to be self-describing, which is exactly what you want for occasional reads against a large, changing data set. Implicit messaging strips that metadata to recover the bandwidth and determinism that real-time I/O demands, at the cost of pre-configuration. Real Allen-Bradley systems run both at once: implicit for the I/O rack, explicit for the HMI and SCADA.

Read Tags (Explicit) on macOS

MacTools EtherNet/IP Explorer uses explicit CIP messaging to browse and read/write Allen-Bradley tags natively on macOS: the right tool for SCADA-style polling, monitoring, and ad-hoc reads.

Get MacTools EtherNet/IP Explorer

Related: Continuous Monitoring

Voltrus SCADA polls EtherNet/IP tags (and Modbus, S7, OPC-UA, DNP3) with explicit messaging: dashboards, alarms, historian. Free open source core.

Further Reading