Overview
Direct peer-to-peer Ethernet communication between a Siemens SIMATIC S7-1500 and an Allen-Bradley (Rockwell Automation) ControlLogix L6x/L7x/L8x processor is technically possible without any third-party protocol gateway. Three production-grade paths exist on a standard 10/100/1000 Mbit/s TCP/IP Ethernet network:
- EtherNet/IP scanner/adapter on the S7-1500 (firmware V2.5 and later for scanner, V2.6 for adapter in TIA Portal V15.1 and later) talking to a ControlLogix EtherNet/IP adapter on the 1756-EN2T or 1756-EN2TR module, or to the on-board port of an L8xE processor.
-
Open User Communication (OUC) over ISO-on-TCP (RFC 1006), TCP, or UDP using the S7-1500
TSEND/TUSEND,TRCV/TURCVandTMAILinstructions on one side and aMSGinstruction or socket API on the ControlLogix side. -
Modbus TCP using the S7-1500
MB_CLIENT/MB_SERVERinstructions paired with a Modbus TCP-capable AOI or instruction on the ControlLogix side.
This reference covers each path with hardware prerequisites, TIA Portal and Studio 5000 configuration blocks, register/tag mapping, data-size limits, error codes, and a field-tested troubleshooting matrix.
Communication Path Comparison
| Path | Siemens Side | AB Side | Max Payload | Cyclic / Acyclic | CPU Load | Failover |
|---|---|---|---|---|---|---|
| EtherNet/IP Scanner/Adapter | S7-1500 FW ≥ 2.5 with EIP_SCANNER/EIP_ADAPTER FBs |
1756-EN2T/R or L8xE on-board port | ~480 bytes per direction (per CIP connection) | Cyclic (RPI ≥ 1 ms) or acyclic | Medium | Connection-based, automatic reconnect |
| ISO-on-TCP (RFC 1006) / OUC | S7-1500 PN port or CP 1543-1 | 1756-EN2T/R + CIP Generic MSG or socket AOI | 32 000 bytes per call (TSEND_C) | Acyclic | Low | Application-managed |
| TCP / UDP raw | S7-1500 PN port with TSEND/TRCV | 1756-EN2T/R with MSG over socket | 8 192 bytes (TCP) / 1 472 bytes (UDP) | Acyclic | Low | Application-managed |
| Modbus TCP | S7-1500 with MB_CLIENT/MB_SERVER | 1756-EN2T/R + Modbus TCP AOI | 125 registers (250 bytes) / call | Acyclic | Low | Application-managed |
Path 1 — EtherNet/IP Scanner on S7-1500
The S7-1500 CPU family gained native EtherNet/IP connectivity through PROFINET/Ethernet-IP linkage. The integrated PROFINET interface of an S7-1511, S7-1513, S7-1515, S7-1516, S7-1517, S7-1518 or the rack-mounted S7-1505-S (CPU 1505 SP) supports the CIP (Common Industrial Protocol) layer and presents itself as a Class 1 EtherNet/IP scanner in TIA Portal V15.1 and later. Firmware prerequisites:
- S7-1500 CPU firmware V2.5 or higher for
EIP_SCANNER. - S7-1500 CPU firmware V2.6 or higher and TIA Portal V15.1 or higher for
EIP_ADAPTER(so that an AB scanner can consume S7-1500 tags). - 1756-EN2T firmware V5.007 or higher recommended for stable Class 1 connections to third-party scanners.
Library blocks used from the "EtherNet/IP Scanner / Adapter" library in TIA Portal:
| FB / FC | Direction | Purpose |
|---|---|---|
EIP_SCANNER |
S7-1500 → AB adapter | Establish CIP Class 1 connection, read/write assembly tags |
EIP_ADAPTER |
S7-1500 ← AB scanner | Advertise CIP connection from an AB scanner |
EIP_CONNECT |
Both | Build CIP session and connection handles |
EIP_READ / EIP_WRITE
|
Both | CIP acyclic data record read/write |
Reference Siemens entry 109739495 — Connecting S7-1200 / S7-1500 to a third-party EtherNet/IP device (Entry ID 108740380) for the canonical configuration walk-through and connection parameter spreadsheet.
Step-by-step: S7-1500 as Scanner to ControlLogix
- In TIA Portal, open Devices & Networks, add the S7-1500 CPU, drag the EtherNet/IP scanner from the catalog onto the PROFINET interface. Assign the scanner IP (e.g.
192.168.0.10/24). - Add a ControlLogix station entry with IP
192.168.0.20/24, vendor ID0x0001(Rockwell Automation/Allen-Bradley), device type0x000C(generic CIP adapter) or0x000E(drive). For a 1756-EN2T, choose vendor0x0001, device type0x000Eor the generic adapter type and supply the assembly instance numbers from the Studio 5000 project (Input 100, Output 101, Configuration 102, Heartbeat 199 are typical for explicit messaging only). - Configure Connection parameters: RPI ≥ 5 ms (per practical field experience with non-Rockwell scanners), Output assembly (T→O) instance 101 length = number of bytes to write, Input assembly (O→T) instance 100 length = number of bytes to read, Configuration assembly 102 length 0, timeout multiplier 4, transport class 1.
- Map the assemblies to PLC tags of matching byte length (max 480 bytes per direction per CIP connection — the S7-1500 implementation limit observed on tested firmware V2.6 and V2.9). For larger payloads, instantiate multiple connections.
- Call
EIP_SCANNERfrom OB1 (or a cyclic OB with the same scan time). WireREQto a one-shot trigger, supplyCONNECTION_HANDLEfromEIP_CONNECT, supply source/target buffers asVARIANTpointers (e.g.P#DB100.DBX0.0 BYTE 480). - Download the project and observe the scanner status word (
STATUS=16#0000when connected, non-zero CIP error otherwise).
Step-by-step: S7-1500 as Adapter to an AB Scanner
- Add the S7-1500 CPU and on the same PROFINET interface, switch the role to EtherNet/IP adapter. TIA Portal will create a default CIP assembly template with instances 100 (input), 101 (output), 102 (configuration).
- Resize the assembly lengths to match the application. The library enforces a 480-byte ceiling per direction.
- Export the EDS file (or vendor ID + device type + instance numbers) and import it into Studio 5000 via EDS Hardware Installation Tool.
- In Studio 5000, add a new Ethernet Module under the 1756-EN2T or L8xE backplane. Pick the imported EDS, set Connection Parameters: Input = instance 101 (data S7 sends), Output = instance 100 (data S7 receives), Configuration = instance 102, RPI = 50 ms starting point.
- Use the generated I/O tags (e.g.
I_Scanner:I,O_Scanner:O) in ladder or AOI logic.
Path 2 — Open User Communication (OUC) over ISO-on-TCP / TCP / UDP
Open User Communication is the legacy Siemens term for socket-style communication that does not require an additional CP module on the S7-1500 side. The on-board PN interface of every S7-1500 CPU (and S7-1200 V4.0+) supports it natively. The blocks involved are summarised below:
| Instruction | Protocol | Function | Max Length |
|---|---|---|---|
TSEND_C |
TCP / ISO-on-TCP | Send + connect management | 32 000 bytes |
TRCV_C |
TCP / ISO-on-TCP | Receive + connect management | 32 000 bytes |
TSEND |
TCP / ISO-on-TCP / UDP | Send only | 8 192 bytes |
TRCV |
TCP / ISO-on-TCP / UDP | Receive only | 8 192 bytes |
TUSEND |
UDP | Send datagram | 1 472 bytes |
TURCV |
UDP | Receive datagram | 1 472 bytes |
TCON |
All | Establish connection | — |
TDISCON |
All | Terminate connection | — |
On the ControlLogix side, a MSG instruction with Service = SOCKET_CREATE / SOCKET_ACCEPT / SOCKET_SEND / SOCKET_RECV / SOCKET_CLOSE (CIP Sync, requires 1756-EN2T firmware V5.011+ for full SOCKET services) handles the equivalent function. For older 1756-EN2T firmware, write your own socket AOI using the Socket_Open instance or use third-party AOI bundles such as the public Rockwell sample "Socket Messaging AOI".
TIA Portal OUC Configuration
- In Devices & Networks > S7-1500 > Properties > Ethernet addresses, enable Use router only if the AB device is on a different subnet.
- Insert the desired instruction (
TSEND_C+TRCV_C) into a function block such as FB100 "OUC_AB_Comms". - Right-click on the
CONNECTpin → Connection properties → Partner. Specify Partner IP (e.g.192.168.0.20), Partner port (e.g.2000), Local port (e.g.2001), Connection type = ISO-on-TCP for parity with legacy AB integration, or TCP if the AB side uses CIP socket or a TCP-capable AOI. - Set TSAPs: Local TSAP =
10.00hex is the S7 default; for AB use the equivalent CIP path or AOI convention (the TSAP bytes are sent but AB MSG-based sockets ignore them). - Map send/receive buffers to DBs. Example:
P#DB101.DBX0.0 BYTE 256. - Run
TSEND_Cin OB1 (rising edge onREQto send). PlaceTRCV_Cin OB1 withEN_R= TRUE for continuous receive.
Studio 5000 OUC Configuration
- Confirm the 1756-EN2T module is in the chassis, double-click → Connection tab → verify IP Address matches the partner IP entered on the S7 side.
- Create an AOI or a routine containing ladder logic for the
MSGinstruction with theSOCKETservice class. A skeleton:
MSG(SocketService := SOCKET_CREATE,
SocketInstance := SocketInst,
Server := 0, // 0 = client mode
RemotePort := 2001,
RemoteAddress := '192.168.0.10',
LocalPort := 2000,
Status => MsgStatus);
- On a successful create, perform
SOCKET_SENDwith the byte payload as theSourceBuffer. For each poll cycle, performSOCKET_RECVand copy the received buffer into a tag of matching length. Close the socket only on shutdown. - If your 1756-EN2T firmware does not expose SOCKET services, use the CIP Generic MSG against a CIP path of the AB-side Ethernet module with service
0x4C(CIP encapsulation socket open) — see EN2T user manual Rev. 1756-UM540.
Reference OUC Example for HMI Integration
The AutomationDirect C-more HMI setup guide for Siemens Ethernet ISO over TCP/IP (S7-1200 or S7-1500) documents the equivalent connection parameters (port 102, TSAP 10.00 / 10.01) and is useful for sanity-checking the TIA side of any ISO-on-TCP socket between an S7-1500 and a third-party device.
Path 3 — Modbus TCP
Modbus TCP is the lowest-friction option when both vendors are accepted but the firmware revision of the ControlLogix is not known. Siemens S7-1500 provides the MB_CLIENT and MB_SERVER instructions (under Communication > Modbus TCP) natively on every firmware V1.7+ CPU. The ControlLogix side requires either a Rockwell-published AOI ("Modbus TCP AOI") or a vendor AOI from Prosoft, HMS, or Red Lion. For systems where neither AOI can be added, fall back to OUC.
- Add
MB_CLIENTto the S7-1500 program.MB_Unit_ID= 255 for TCP,REQpulsed,MB_DB_ADDR= the Modbus function code (16#03= read holding registers,16#06= write single,16#10= write multiple). - Set Connect_ID unique (1, 2, 3...), IP address
192.168.0.20, port502. - Map
MB_DATA_PTRto a global DB ofWORDregisters. Each Modbus register consumes oneWORDin the Siemens DB, while each AB-sideSINT/INT/DINTneeds explicit byte-swap consideration (Modbus is big-endian, ControlLogix is little-endian). - Verify with the standard Modbus diagnostic
DONE,BUSY, andERRORoutputs.
Hardware & Firmware Prerequisites
| Component | Minimum Revision | Notes |
|---|---|---|
| S7-1500 CPU (any PN model) | Firmware V2.5 | Required for EtherNet/IP scanner FBs |
| S7-1500 CPU (adapter role) | Firmware V2.6 + TIA V15.1 | Required to expose CIP adapter assemblies |
| ControlLogix 1756-EN2T | Firmware V5.007 | Native socket services V5.011+ |
| ControlLogix 1756-EN2TR | Firmware V5.011 | DLR ring-topology capable |
| ControlLogix 1756-ENBT | — | Not suitable for OUC/Modbus TCP/Scanner from user program |
| L8xE on-board port | Firmware V28+ | Direct socket support, no EN2T required |
| CompactLogix L27ERM / L3xERM / L4x | Firmware V20+ | On-board Ethernet usable for socket comms |
| TIA Portal | V15.1 | Includes EIP scanner/adapter blocks |
| Studio 5000 Logix Designer | V30+ | EDS Hardware Installation Tool support |
Data Layout & Byte Order
Every byte transferred between the two controllers requires attention to two distinct ordering conventions:
-
Siemens S7-1500: Big-endian at the bit and byte level, but the on-board PROFINET stack is little-endian for CIP and ISO-on-TCP payloads. Use
SWAPinstructions orWORD_TO_INTfor explicit conversion. -
Allen-Bradley ControlLogix: Little-endian throughout. Tags of type
SINT[],INT[], andDINT[]consume memory in low-to-high byte order.
When mapping a Siemens WORD to an AB INT, a single SWAP on the Siemens side or a SWAP_INT AOI on the AB side normalises the value. When mapping a Siemens REAL (DWORD) to an AB REAL (32-bit float), the same SWAP operation is required because the IEEE 754 byte order differs.
Performance & Throughput
| Path | Typical Update Time (100 bytes) | CPU Overhead | |
|---|---|---|---|
| Determinism | |||
| EtherNet/IP scanner | 5–20 ms (RPI 5–10 ms) | Low (1 ms per call) | High |
| ISO-on-TCP TSEND_C | 20–50 ms (OB1 cycle) | Very low | Medium |
| Modbus TCP | 30–100 ms | Low | Low |
| UDP TUSEND/TURCV | 5–15 ms | Very low | None (loss possible) |
TMAIL_STATUS to return 16#80C0 "No resources available".Verification Steps
- Layer 1 / 2: confirm physical link (green/yellow LEDs on both PN ports).
- Layer 3: ping both controllers from a maintenance laptop. On the S7-1500 use Online & Diagnostics > Functions > Ping; on the ControlLogix use Studio 5000 > RSLinx Classic > Ethernet Devices > Browse.
-
Layer 4: from a maintenance laptop run
telnet <ControlLogix IP> 2000to verify the AB-side socket port is reachable (only valid for OUC path). - Application: insert a 4-byte counter in both projects. Force a known value on the source, observe it on the destination within one RPI/poll cycle.
-
Diagnostics: S7-1500
TSEND_C.STATUS=16#0000,DONE= TRUE pulse on success. ControlLogixMSGinstruction.ER= 0,.DN= 1 on completion. For EtherNet/IP scanner, watch theSTATUSoutput ofEIP_SCANNER:16#0000= running,16#FF01= not connected,16#FF02= connection timeout.
Troubleshooting Matrix
| Symptom | Likely Cause | Diagnostic | Remedy |
|---|---|---|---|
| Ping fails in one direction | Firewall on EN2T, ACL on managed switch | Try ping in both directions from each device | Enable ICMP on the EN2T (Studio 5000 module properties > Port Configuration > Allow ICMP Echo). Disable ACL on switch port. |
| TSEND_C.STATUS = 16#80C4 | Partner unreachable / partner port closed | Check AB MSG EN bit, AB SocketStatus tag |
Open the partner port on the AB side. Verify Local Port and Partner Port values are not both 0. |
| EIP_SCANNER STATUS = 16#FF02 | Connection timeout, wrong assembly instance | Check CIP connection in Studio 5000 > Connected Components Workbench or RSWho | Re-check Input/Output instance numbers match the AB adapter configuration. Verify RPI is not zero. |
| Data appears byte-swapped | Endianness mismatch | Compare hex dump from both sides using Wireshark | Apply SWAP on Siemens side or SWAP_INT/SWAP_REAL AOI on AB side. |
| Modbus MB_CLIENT ERROR = 16#80A8 | Gateway / TCP error | Wireshark capture on port 502 | Verify the AB-side Modbus server is listening (open Modbus TCP AOI must be running in OB1 / periodic task). |
| MSG instruction stuck with .EN = 1 but .ER = 1 | CIP path invalid | Inspect Communication tab of MSG | Set CIP path to EN2T,2,192.168.0.20,1,0 for direct socket service. |
| ENBT-only chassis, no OUC support | ENBT does not expose socket layer | — | Replace ENBT with EN2T or EN2TR; alternatively move to CompactLogix with on-board port. |
| S7-1500 adapter not appearing in RSWho | Firmware too old, EDS missing | EDS Hardware Installation Tool | Update S7-1500 firmware to V2.6+, regenerate and install EDS. |
| Intermittent disconnects with CPU red SF LED | CIP RPI too aggressive for non-Rockwell scanner | Reduce RPI to 20 ms, raise timeout multiplier | Set RPI to 20 ms, timeout multiplier to 4 (4× RPI), check Electronic Keying set to Compatible on AB side. |
Safety-Critical Considerations
- F-CPU limitation: if the S7-1500 is a failsafe CPU (S7-1515F, S7-1516F, S7-1517F, S7-1518F), only Open User Communication (OUC) is permitted for safety-relevant data exchange. EtherNet/IP scanner/adapter FBs are not safety-rated and cannot be used to transmit F-runtime data. The CP 1543-1 industrial Ethernet security module also supports OUC with ISO-on-TCP and TCP.
- Network isolation: place the Siemens and Allen-Bradley subnets behind a managed switch with port security. Disable LLDP on the AB side (or the S7 PROFINET interface will mis-interpret LLDP frames and log a "link-up/link-down" storm).
- CPU redundancy: H-CPU firmware does not change any of the OUC block calls but be aware that the connection ID may shift after a redundancy switchover; re-trigger the TCON instance in OB72.
Recommended Path by Application
- High-speed I/O mirror (≤ 480 bytes, ≤ 10 ms): EtherNet/IP scanner/adapter, S7-1500 FW V2.6+.
- Large block data exchange, recipe transfer, fault logs: ISO-on-TCP OUC with TSEND_C / TRCV_C.
- Mixed fleet, brownfield, unfamiliar firmware: Modbus TCP with vendor AOIs.
- Best-effort telemetry, heartbeats, HMI traffic: UDP TSEND/TURCV.
FAQ
Do I need a gateway between an S7-1500 and a ControlLogix?
No. A direct Ethernet link works for EtherNet/IP (S7-1500 FW V2.5+ scanner, V2.6+ adapter), Open User Communication over ISO-on-TCP/TCP/UDP, and Modbus TCP. Gateways from Anybus, Hilscher, Prosoft, or Red Lion are only required when the firmware revision of either controller cannot be updated or when one side lacks the appropriate protocol stack.
Why does my 1756-ENBT not accept MSG socket instructions?
The 1756-ENBT is a bridge module; its firmware does not expose the TCP/UDP socket services to user programs. Replace it with a 1756-EN2T (firmware V5.007+) or 1756-EN2TR (firmware V5.011+) to enable SOCKET_CREATE, SOCKET_SEND, SOCKET_RECV and SOCKET_CLOSE CIP services. L8xE and CompactLogix-E processors have a usable on-board Ethernet port and do not require an extra module.
What is the maximum payload size between an S7-1500 and ControlLogix?
For EtherNet/IP, the S7-1500 implementation is limited to approximately 480 bytes per direction per CIP Class 1 connection. ISO-on-TCP TSEND_C supports up to 32 000 bytes per call; TCP TSEND supports up to 8 192 bytes; UDP TUSEND/TURCV supports up to 1 472 bytes. Modbus TCP supports up to 125 holding registers (250 bytes) per request.
Can an S7-1500F exchange failsafe data with ControlLogix GuardLogix?
No. CIP Safety is a separate stack and is not implemented on the S7-1500F EtherNet/IP blocks. Use PROFIsafe on PROFINET for F-CPU to F-CPU communication, or a third-party safety gateway. OUC with non-safety protocols can still be used for non-safety status reporting between an F-CPU and a ControlLogix.
Which TIA Portal version first added EtherNet/IP scanner/adapter support?
TIA Portal V15.1 with S7-1500 CPU firmware V2.5 added the scanner role; firmware V2.6 and TIA V15.1 added the adapter role. Siemens Entry ID 108740380 documents the full configuration procedure including the EDS export for third-party scanners such as ControlLogix with 1756-EN2T/R or L8xE processors.