← 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

Frequently Asked Questions

What is the difference between explicit and implicit messaging in CIP?

Explicit messaging is request-response: each message carries the full service code, object path, and attribute, used for tag reads/writes, browsing, and configuration over TCP 44818. Implicit messaging is connection-oriented and cyclic: after a ForwardOpen, data exchanges at a configured Requested Packet Interval (RPI) over UDP 2222 with no per-message addressing, used for real-time I/O between a controller and remote I/O or drives.

Which port does implicit messaging use?

Implicit (cyclic I/O) messaging uses UDP port 2222. Explicit messaging uses TCP port 44818. Both ports must be open on any firewall between a controller and its EtherNet/IP devices for the system to function. UDP 44818 is also used for the ListIdentity discovery broadcast.

When should I use explicit messaging?

Use explicit messaging for anything that does not need deterministic cyclic updates: reading and writing tags, browsing the tag database, reading device identity and diagnostics, and configuration. SCADA and monitoring tools use explicit messaging almost exclusively because they poll on demand rather than exchange data at a fixed cycle rate.

What is an RPI in EtherNet/IP?

RPI stands for Requested Packet Interval — the rate at which data is exchanged on an implicit (cyclic) connection, configured when the connection is opened with ForwardOpen. Typical RPIs are 1-100 ms. A smaller RPI means fresher data but more network traffic. The controller and device maintain the connection at the configured RPI without per-message requests.

Related: Continuous Monitoring

Voltrus SCADA polls EtherNet/IP tags (and Modbus, S7, OPC-UA, DNP3) with explicit messaging — dashboards, alarms, historian. From $249 lifetime.

Further Reading