1. Overview: Industrial Ethernet Protocols for PLC LAN Communication
Programmable Logic Controllers exchange I/O, peer data, and diagnostics over Local Area Networks using TCP/IP as the transport layer, with vendor-defined application protocols riding on top of User Datagram Protocol (UDP) and Transmission Control Protocol (TCP). Three protocol families dominate the installed base across Siemens, Allen-Bradley, and Schneider Electric platforms: PROFINET (PROFIBUS Nutzerorganisation, PI), EtherNet/IP (ODVA), and Modbus TCP (Modbus Organization). All three share the same physical layer (IEEE 802.3 100BASE-TX / 1000BASE-T over UTP/STP copper, or 100BASE-FX/1000BASE-LX fiber), but they diverge sharply in how they map data, schedule deterministic traffic, and expose diagnostics.
| Protocol | Governing Body | Typical Transport | Default Port | Determinism | Primary Vendors |
|---|---|---|---|---|---|
| PROFINET RT / IRT | PI (PROFIBUS Nutzerorganisation) | UDP/RTP + TCP | UDP 34962/34963, TCP 34964 | Class 1 RT (1 ms) / Class 3 IRT (≤ 1 ms, isochronous) | Siemens, Phoenix Contact, Beckhoff, ABB |
| EtherNet/IP | ODVA | TCP + UDP | TCP 44818 (CIP Messaging), UDP 2222 (I/O) | CIP Sync (PTP IEEE 1588) for motion | Rockwell, Schneider (M580 eIP), Omron, Mitsubishi (built-in) |
| Modbus TCP | Modbus Organization | TCP | 502 | Non-deterministic (request/response) | Schneider Modicon, AutomationDirect, generic I/O |
References: PROFINET specification and white papers, ODVA EtherNet/IP Technology, Modbus Messaging on TCP/IP Implementation Guide v1.0b, and the IEEE 802.3 Ethernet working group documentation.
2. Physical Layer, Cabling, and Topology
Industrial Ethernet over copper and fiber follows IEEE 802.3. Choose cabling based on segment length, EMI environment, and required bandwidth. PROFINET installation guide "PROFINET Cabling and Interconnection Technology" (PNO Order No. 8.072) and the ODVA EtherNet/IP Media Planning Guide both specify Cat 5e or better for new installations.
| Media | Standard | Max Segment | Typical Use |
|---|---|---|---|
| 10BASE-T (Cat 3+) | IEEE 802.3i | 100 m | Legacy 10 Mbit/s links |
| 100BASE-TX (Cat 5e) | IEEE 802.3u | 100 m | Most PROFINET / EtherNet/IP copper drops |
| 1000BASE-T (Cat 5e / Cat 6) | IEEE 802.3ab | 100 m | Backbone and gigabit uplinks |
| 1000BASE-LX (fiber) | IEEE 802.3z | 550 m MMF / 10 km SMF | Plant backbone, EMI-heavy areas |
| 100BASE-FX (fiber) | IEEE 802.3u | 2 km MMF | Bridge between buildings or cabinets |
3. IP Address Planning and Subnet Design
Every PLC and field device on the LAN needs a unique IPv4 address and matching subnet mask. Industrial networks commonly use an RFC 1918 private range such as 10.0.0.0/8 or 192.168.1.0/24. Avoid DHCP on the control network; static addressing makes diagnosis predictable and removes a single point of failure during controller warm restarts.
| Network | Subnet Mask | Usable Hosts | Typical Assignment |
|---|---|---|---|
| 10.10.10.0/24 | 255.255.255.0 | 254 | Single-cell control network |
| 10.20.0.0/16 | 255.255.0.0 | 65 534 | Plant-wide process network |
| 192.168.100.0/24 | 255.255.255.0 | 254 | OEM machine subnet |
Reserve a documented address range for PLCs (e.g., 10.10.10.10–10.10.10.99), HMI/SCADA (10.10.10.100–10.10.10.149), drives (10.10.10.150–10.10.10.199), and distributed I/O blocks (10.10.10.200–10.10.10.250). Reserve .1 as the gateway and .254 as engineering access.
| Address | Function |
|---|---|
| 224.0.0.1 | All hosts (IGMPv2) |
| 224.0.0.251 | mDNS (multicast DNS discovery) |
| 01-0E-CF-00-00-00 / FF-04-00-00 | EtherNet/IP I/O multicast base |
| 01-0E-CF-00-00-00 | PROFINET LLDP / DCP multicast base |
4. PROFINET (Siemens) Configuration
PROFINET is engineered by PI and supported by Siemens, Phoenix Contact, Beckhoff, and most European PLC vendors. It runs on standard TCP/IP plus the RT (Real-Time) and IRT (Isochronous Real-Time) channels that bypass the OS for deterministic traffic. PROFINET classes (CC-A, CC-B, CC-C) define switch and topology behavior.
4.1 Device Roles
- IO Controller: the PLC (S7-1200, S7-1500, ET200S CPU, SINUMERIK) that runs the application program and configures the IO.
- IO Device: distributed field device (ET200SP, ET200MP, SINAMICS drive, Festo valve island).
- IO Supervisor: engineering or HMI tool (TIA Portal, PRONETA, SIMATIC Automation Tool).
4.2 TIA Portal Configuration Steps (S7-1500 ↔ ET200SP)
- In Devices & Networks, add the S7-1500 CPU (e.g., 6ES7515-2AM02-0AB0, FW V2.9) and the ET200SP IM155-6 PN ST (6ES7155-6AU02-0BN0).
- Connect their PROFINET ports with a drag from one port's green dot to the other; the topology editor will accept the connection.
- On the ET200SP, set IP 10.10.10.20, subnet 255.255.255.0, and PROFINET device name
et200sp-line1. - Drag slot modules from the catalog (DI 16×24VDC, DQ 16×24VDC/0.5A, AI 4×U/I/RTD) into the device view.
- Compile HW Config and download to the CPU. The CPU assigns the IP via DCP during startup; the IM's "BF" LED should be off within a few seconds.
4.3 Port LEDs and Their Meaning (ET200SP IM155-6 PN)
| LED | State | Meaning |
|---|---|---|
| LK1 / LK2 | Green, steady | Link at 100 Mbit/s |
| LK1 / LK2 | Green, flashing | Activity (frame received or sent) |
| LK1 / LK2 | Off | No link |
| BF (bus fault) | Off | Configuration OK, cyclic data exchange running |
| BF | Red, flashing | No PROFINET IO Controller reachable / no name assigned |
| BF | Red, steady | Configuration mismatch (slot, GSD version, watchdog timeout) |
Reference: Siemens SiePortal: PROFINET Configuration with TIA Portal and the Siemens Industry Online Support portal for S7-1500 manuals (entry ID 86140384) and ET200SP system manual (entry ID 58649293).
5. EtherNet/IP (Rockwell/ODVA) Configuration
EtherNet/IP is the ODVA-maintained CIP-on-Ethernet protocol. It is dominant in North American plants and supported by Allen-Bradley ControlLogix, CompactLogix, MicroLogix (with 1761-NET-ENI or 1761-NET-ENIW), and a large installed base of third-party I/O.
5.1 CIP Connection Types
- CIP Class 3 (Explicit Messaging): request/response used for configuration, MSG instructions in ladder or structured text.
- CIP Class 1 (I/O Messaging): scheduled cyclic I/O produced/consumed tags or rack-optimized connections.
- CIP Class 0 / UDP Implicit: broadcast for I/O discovery (used by AOI I/O assemblies).
5.2 Studio 5000 / Logix Designer Connection Setup
- Add an Ethernet Module under the backplane: 1756-EN4TR (ControlLogix, 5069-AENTR (CompactLogix 5380), or 1734-AENTR (POINT I/O).
- Open Module Properties, set IP address 10.10.10.30, subnet 255.255.255.0, gateway 10.10.10.1.
- On another controller's Ethernet module, create a Produced Tag of datatype DINT[100] with scope Controller, set the connection RPI to 10 ms.
- On the consumer controller, add a Consumed Tag, browse to
2_1756_15:Lincoln/ProducedTag, and accept the proposed RPI. - Verify the Connection tab status reads
Running; otherwise the value ofProducedTag.ConnectionFaultedwill be 1.
5.3 Connection Fault Codes (1756-EN4TR / 5069-AENTR)
| Code (hex) | Meaning |
|---|---|
| 0x0008 | Connection request size mismatch |
| 0x0010 | Connection timeout (no I/O received within RPI × 4) |
| 0x0020 | RPI out-of-range for the module |
| 0x0100 | Electronic key mismatch (vendor / product / revision) |
| 0x0110 | Connection type not supported |
| 0x0204 | Module in fault or unconfigured |
Reference: ODVA EtherNet/IP Specification (PUB00048) and the Rockwell Automation EtherNet/IP Documentation Center.
6. Modbus TCP Configuration
Modbus TCP is the lightest of the three protocols: an MBAP header (7 bytes) wraps the familiar Modbus PDU. It is widely deployed on Schneider Modicon M340/M580, Modicon Momentum, AutomationDirect BRX/CLICK, and embedded SCADA I/O. The Modbus Organization publishes the protocol openly.
6.1 MBAP Header Layout
| Field | Bytes | Description |
|---|---|---|
| Transaction ID | 2 | Echoed by server; client uses it to pair requests/responses |
| Protocol ID | 2 | Always 0x0000 for Modbus |
| Length | 2 | Number of bytes following (Unit ID + PDU) |
| Unit ID | 1 | 0xFF for plain TCP, 1–247 for serial gateway |
6.2 Common Function Codes
| Code (hex) | Name | Address Range | PDU Size |
|---|---|---|---|
| 0x01 | Read Coils | 0xxxx | 1–2000 coils |
| 0x02 | Read Discrete Inputs | 1xxxx | 1–2000 inputs |
| 0x03 | Read Holding Registers | 4xxxx | 1–125 registers |
| 0x04 | Read Input Registers | 3xxxx | 1–125 registers |
| 0x05 | Write Single Coil | 0xxxx | 1 coil |
| 0x06 | Write Single Register | 4xxxx | 1 register |
| 0x0F | Write Multiple Coils | 0xxxx | 1–1968 coils |
| 0x10 | Write Multiple Registers | 4xxxx | 1–123 registers |
6.3 Exception Codes
| Code | Meaning |
|---|---|
| 0x01 | Illegal function (device does not support FC) |
| 0x02 | Illegal data address |
| 0x03 | Illegal data value |
| 0x04 | Slave device failure |
| 0x05 | Acknowledge (long-duration command in progress) |
| 0x06 | Slave device busy |
| 0x0A | Gateway path unavailable |
| 0x0B | Gateway target device failed to respond |
6.4 Modbus TCP Code Skeleton (Structured Text)
// Poll Holding Registers 40001..40010 (UINT16) from Modbus TCP server 10.10.10.50
IF mb_tcp_connect(socket_id := s, server_ip := '10.10.10.50', port := 502) THEN
mb_tcp_read(s := s, unit_id := 1, fc := 16#03, start_addr := 0, quantity := 10, dst := HR_buf);
ELSE
mb_error_cnt := mb_error_cnt + 1;
END_IF;
Reference: Modbus Messaging on TCP/IP Implementation Guide v1.0b and the Modbus Application Protocol Specification V1.1b3.
7. Siemens S7 PUT/GET Communication (S7-1200/1500 ↔ S7-1500)
The PUT/GET instructions (part of the S7 communication package) allow two S7 CPUs to exchange a data block over ISO-on-TCP (port 102) or TCP. Enable the partner on each side first.
- Open Properties → Communication on the S7-1500 CPU and tick "Permit access with PUT/GET from remote partner (PLC, HMI, OPC, ...)". This setting is disabled by default in firmware V2.6 and later for security reasons.
- Insert a TSEND_C/TRCV_C pair or use PUT/GET from the Instructions → Communication → S7 Communication palette.
- Define the connection in Connections → S7 Connection, set partner IP to 10.10.10.40, leave TSAP as
10.01(rack 0, slot 1). - Download both CPUs; verify the connection status word
STATUSis 0x0000 (idle) before triggering the read.
// SCL on the client CPU, triggered by a 200 ms cyclic OB
IF "send_clock".Q THEN
"put_id".REQ := TRUE;
"put_id".ID := W#16#0001;
"put_id".ADDR := P#DB100.DBX0.0 BYTE 200; // local source 200 bytes
// partner: DB200, starting at byte 0
"put_id".RD_1 := P#DB200.DBX0.0 BYTE 200;
END_IF;
Reference: Siemens SiePortal: S7-1200/1500 Communication — Program Examples.
8. Allen-Bradley Produced/Consumed Tags
Logix Designer produced/consumed tags are the simplest cross-controller data exchange over EtherNet/IP; no MSG instruction needed, the engine handles the cyclic UDP connection at the requested RPI.
- Create a User-Defined tag, e.g.,
Line1_Recipe[0..49], datatypeSINT, scopeController. - Open the tag, set Produce checkbox. Set the connection RPI to 10 ms (minimum for 5069-AENTR over copper).
- On the consumer controller, add the same tag name and set Consume. Browse to the producer's path:
2_1756_85:Process/Line1_Recipe. - Download both controllers; the consumer tag populates within one RPI after connection is up. If the connection does not establish, the
I.ConnectionFaultedbit goes true and the controller logs event 941.
9. Network Switches and Topology for Industrial Use
Managed industrial Ethernet switches provide port-level diagnostics, IGMP snooping, and VLAN segmentation; unmanaged switches work for simple star topologies. PROFINET Conformance Classes (CC-A, CC-B, CC-C) define minimum switch behavior for PROFINET networks.
| Class | Topology | Switch Features Required |
|---|---|---|
| CC-A | Star / tree | Unmanaged OK |
| CC-B | Star / tree, MRP redundancy optional | Managed, MRP-capable, port diagnostics |
| CC-C | Line with cut-through (< 1 ms) | Managed, cut-through forwarding, MRP / MRPD |
Recommended managed switches: Siemens SCALANCE XC-200 / XC-300 / XR-500, Phoenix Contact FL SWITCH 2300 / 3300, Cisco IE-3300 / IE-3400, Hirschmann RSP / RSPE, Stratix 5700/5400 (Rockwell). Avoid consumer-grade switches in cabinets near drives; they lose packets during broadcast storms and lack the cut-through forwarding that CC-C requires.
9.1 Media Redundancy Protocols
| Protocol | Recovery Time | Scope |
|---|---|---|
| MRP (IEC 62439-2) | ≤ 200 ms | PROFINET, single ring |
| MRPD (MRP with DLR-style cut-through) | 0 ms (bumpless) | PROFINET IRT only |
| PRP (IEC 62439-3) | 0 ms (duplicate path) | Substation / power |
| DLR (Device-Level Ring, ODVA) | ≤ 3 ms for 50 nodes | EtherNet/IP ring |
10. Diagnostics, Status Words, and Error Codes
10.1 PROFINET Diagnostics Sources
- Port LED behavior: green steady = link, flashing green = activity, off = no link, red = port error or chassis fault.
- Web server of ET200SP: shows device name, IP, slot diagnostics, channel diagnostics, maintenance events, and PROFIenergy profile.
-
TIA Portal → Online → Diagnostics: lists the IO Device status as
OK,Maintenance required,Maintenance demanded, orFault, with a hyperlinked diagnostic buffer entry. - PRONETA: free-of-charge tool for network analysis, topology discovery, and signal-quality assessment on PROFINET nodes.
10.2 EtherNet/IP Diagnostics
- RSWho / RSLinx Classic / FactoryTalk Linx: browse the network; a yellow triangle = no connection, red X = connection fault.
-
Module-fault AOI: exposes codes in
ModuleFault(see Table 6) and counters inModuleCIPErrors/ModuleMissedPackets. - Embedded EDS / AOP files: publish per-channel fault data via the standard CIP "Alarm" object.
10.3 Modbus TCP Diagnostics
- Watch the MBAP exception codes from Table 9 in the response frame.
- Use Wireshark on TCP port 502 to confirm PDU size and timing; filter by
tcp.port == 502 && modbus. - Industrial Ethernet switches with port mirroring (e.g., SCALANCE SP mirroring) allow in-line capture without breaking the line.
11. Performance, Cycle Times, and Update Rates
| Mechanism | Minimum Update | Jitter | Payload (typical) |
|---|---|---|---|
| PROFINET IRT | 250 µs – 1 ms | < 1 µs | ≤ 1440 bytes/slot |
| PROFINET RT | 1 ms | ≤ 100 µs | ≤ 1440 bytes/slot |
| EtherNet/IP RPI | 2 ms | ≤ 1 ms | ≤ 480 bytes (prod/cons) |
| Modbus TCP poll | 10 ms (cycle) | application-bound | 125 registers typical |
| S7 PUT/GET | 10 ms | application-bound | ≤ 400 bytes per call |
| S7 BSEND/BRCV | 10 ms | application-bound | up to 64 KB |
11.1 Application Cycle Calculation
For an OB1 with a network latency of 5 ms and 32 bytes of process data, the total round-trip is:
T_total = T_cycle + T_profinet_RT + T_switch_latency
T_total = 1 ms + 1 ms + 0.1 ms
T_total = 2.1 ms
For tight motion loops (less than 1 ms), switch to PROFINET IRT with cut-through switches (Siemens SCALANCE XC-200 with IRT "high-performance" mode) and configure the send clock to 250 µs.
12. Security and Field Tips
- Disable unused ports on managed switches and use 802.1X where supported by the controller.
- VLAN-separate control (VLAN 10), SCADA/HMI (VLAN 20), and plant IT (VLAN 30). Trunk the uplink with dot1Q tags.
- Cell Protection with ACLs: only allow Modbus 502 between known peers; deny everything else by default.
- Disable router advertisements and unused services (SMTP, FTP, web, Telnet) on the PLC unless needed for diagnostics.
- Maintain firmware: keep PROFINET device firmware and CPU firmware matched to the GSD version to avoid slot-mismatch faults after device replacement.
- Lock the PROFINET name: in TIA Portal set the port assignment to "permanent" so a replaced spare device does not automatically get the old IP/role.
12.1 IEC 62443 Zones and Conduits
Segment the plant into zones (e.g., "Boiler Control", "Packaging Line") with defined conduits (single routing point) at every zone boundary. The PLC LAN belongs to a Security Level 1 (SL1) zone; the corporate intranet is SL2; the public internet is SL3. Apply the SL-T (target security level) from IEC 62443-3-3 to each conduit, not to the devices.
13. Practical Selection Guide
| Application | Recommended Protocol | Reason |
|---|---|---|
| Servo motion < 1 ms update | PROFINET IRT or CIP Motion | Isochronous data with < 1 µs jitter |
| High-speed I/O at 250 µs | PROFINET IRT | Isochronous, deterministic |
| Standard discrete I/O at 1–10 ms | PROFINET RT or EtherNet/IP RPI | Sufficient determinism, broad device support |
| Process / SCADA polling | Modbus TCP or OPC UA | Simple, open, widely understood |
| Cross-vendor integration | OPC UA Pub/Sub over UDP or Modbus TCP | Open specification, no licensing |
| Safety-rated I/O | PROFIsafe over PROFINET or CIP Safety over EtherNet/IP | Black-channel safety with one Ethernet |
14. Troubleshooting Matrix
| Symptom | Likely Root Cause | Resolution |
|---|---|---|
| ET200SP BF LED red, flashing | No PROFINET name assigned | Assign name with TIA Portal or PRONETA |
| ET200SP BF LED red, steady | Slot/GSD mismatch | Reinstall the matching GSD file in TIA Portal |
| EtherNet/IP module yellow triangle in RSWho | IP or gateway wrong on module or PC | Set static IP matching subnet; ping from workstation |
| EtherNet/IP connection 0x0010 timeout | RPI too aggressive for the switch fabric | Raise RPI to 20 ms minimum; check multicast filtering |
| Modbus TCP exception 0x02 | Start address out of range | Subtract 1 from holding-register offset; Modbus is 0-based in PDU but 1-based for documentation |
| S7 PUT returns STATUS 0x80E1 | PUT/GET not enabled on partner CPU | Tick "Permit access with PUT/GET from remote partner" in partner CPU properties |
| Intermittent timeouts on PROFINET | Broadcast storm from PC on same VLAN | Move engineering PC to a separate VLAN; enable storm control on switch |
15. Reference Documentation
- Siemens SiePortal: PROFINET Configuration with TIA Portal
- Siemens Industry Online Support
- PROFINET specification and installation guide
- ODVA EtherNet/IP Technology
- Rockwell Automation Industrial Communications
- Modbus Organization specifications
- IEC 61918, IEC 62443 standards
What is the default TCP port for Modbus TCP?
Port 502. Modern firewalls and IEC 62443 zone policies require explicit rules for 502 since it is widely scanned. Modbus TCP Security (Modbus Organization, MBAPS) uses port 802 with TLS.
Which UDP/TCP ports does PROFINET use?
PROFINET uses UDP 34962 and 34963 for RT/IRT cyclic data, and TCP 34964 for the Context Manager (PROFINET CBA). The IO Controller opens these automatically; firewall rules must allow them bidirectionally.
Can PROFINET and EtherNet/IP share the same switch?
Yes. Both run over 100 Mbit/s Ethernet and use different multicast MAC ranges. In practice, deploy a managed switch with VLAN separation (VLAN 10 PROFINET, VLAN 20 EtherNet/IP) and IGMP snooping to prevent broadcast overlap. Disable QoS priority 6 on one protocol if it is starving the other.
How do I find the IP of an unknown PROFINET device?
Use Siemens PRONETA (free) to scan the network. The tool reports the device's MAC, current IP, PROFINET name, and signal quality. Assign a fresh IP and name without launching TIA Portal.
What is the maximum payload for an S7 PUT/GET call?
Up to 400 bytes per PUT/GET instruction on S7-1200 and S7-1500. For larger blocks use BSEND/BRCV (up to 64 KB) or split the payload into multiple PUT calls and verify STATUS=0x0000 between calls.
Why does my EtherNet/IP produced tag show ConnectionFaulted=1 after a controller restart?
The consumer detects the loss within RPI × 4. After the producer CPU completes its restart, it re-opens the multicast UDP connection; the consumer re-establishes within one RPI. If the fault persists, check ModuleFault (Table 6) for 0x0020 (RPI out-of-range) or 0x0100 (electronic-key mismatch).
Do I need an industrial switch for PROFINET IRT?
Yes. PROFINET IRT requires cut-through forwarding to meet the isochronous timing budget. Certified SCALANCE XC-200, Phoenix Contact FL 3300, or Hirschmann RSP switches are commonly used. Unmanaged switches cannot be configured for IRT and will force the controller to fall back to RT (1 ms update instead of 250 µs).