1. Problem Overview
When a Siemens WinCC V7.3 SCADA station cannot reach an S7 PLC even though ICMP ping replies succeed, the issue almost always lies in the layer between SIMATIC NET, the S7 Protocol Suite, and the Windows routing stack. The WinCC server application is reachable, the TCP/IP path is open, yet S7DOS / S7 Online drivers report failure and the HMI tags remain in "connection error" state.
This reference documents a specific field case: a pair of Windows Server 2012 R2 virtual machines running WinCC V7.3 SP1, redundant configuration, communicating with S7-300 / S7-400 PLCs on a physically separated subnet, with intermediate Cisco routed links. Ping returns < 1 ms round-trip time, but WinCC's connection diagnostics show the error code 0x42C2 (S7 protocol: "Object could not be opened / connection to partner could not be established").
2. Affected System Architecture
| Component | Specification in Field Case | Notes for Diagnosis |
|---|---|---|
| SCADA platform | Siemens WinCC V7.3 SP1 (or later SP update) | Redundant server pair, 7.3 baseline |
| Server OS | Windows Server 2012 R2 (64-bit), fully patched | Hosted in VMware vSphere / Hyper-V |
| Client OS | Windows 7 SP1 (32-bit or 64-bit) | WinCC client stations |
| PLC family | S7-300 / S7-400 with Ethernet CP (CP 343-1 / CP 443-1) | Standard ISO-on-TCP connection |
| SIMATIC NET | v12 SP2, later upgraded to v13 SP1 | Version mismatch is a leading failure cause |
| Network topology | VM subnet ≠ physical NIC subnet ≠ client subnet ≠ PLC subnet | Routed via Cisco L3 switch / router |
| Diagnostic tool | WinCC Channel Diagnosis, S7 Protocol Suite log | Located in C:\Program Files (x86)\Siemens\WinCC\diagnose
|
3. Symptoms and Observed Error Codes
WinCC displays the connection to the PLC in red, the @ prefix tags (@ConnectedToPLC) return FALSE, and the runtime logs populate with one of the following recurring codes:
| Error Code | Decimal | Meaning (S7 Protocol Suite) | Typical Trigger |
|---|---|---|---|
0x42C2 |
17090 | Connection could not be established (S7 transport) | CP access point mismatch, wrong logical device, TCP 102 blocked |
0x42C3 |
17091 | Connection aborted by partner | PLC CPU in STOP, CP not configured to allow S7 communication |
0x7001 |
28673 | Connection not yet established / retrying | Transient; only valid briefly at startup |
0x7035 |
28725 | Resource allocation failure in S7DOS | SIMATIC NET service not running, license missing |
0x40B1 |
16561 | Connection already in use / duplicate handle | Two channel units targeting same MPI/TCP slot |
SIMATIC_S7_PROTOCOL_SUITE_0x.LOG (the trailing digit is the channel unit index, 0-based) in ...\WinCC\diagnose is the authoritative source. Always archive a copy of the last 200 lines before reinstalling components — the log is overwritten on each runtime start.4. Root Cause Analysis
After eliminating IP / DNS / physical layer as the issue (ping works across all three subnets), the residual failure space collapses to five categories. Apply this decision tree in order:
-
Logical device name vs. access point mismatch. The S7 Protocol Suite connection in WinCC Explorer references an "access point" (e.g.
S7ONLINE). The access point must be bound to a logical device that actually points at a working CP (e.g.CP_TCPIP_1→ a real Intel / VMXNET3 adapter). If the access point is bound to a non-existent or disabled device, every connect attempt times out. -
SIMATIC NET version mismatch. WinCC V7.3 SP1 was qualified against SIMATIC NET V13 SP1. Installing V12 with V13 in parallel corrupts the
s7oiehsx.exeshim service and the OPC UA / S7 routing table. This is the most common cause of the0x42C2signature after a clean WinCC install. - Routed network — S7 protocol behavior. S7 communication over TCP uses ISO Transport (RFC 1006) on destination port 102. The S7 partner may have its connection resources exhausted if the PLC CP has fewer active connections configured than WinCC requests. Default on CP 343-1 is 8 connections; WinCC typically requests 2 (one for diagnostics, one for tag traffic). Verify the CP connection count in STEP 7 / TIA Portal hardware configuration.
-
Windows Firewall on Server 2012 R2. Server 2012 R2 ships with the firewall enabled. After the first reboot post-install, the previously allowed
SIMATIC_NET_CPands7oiehsxrules may be removed if SIMATIC NET was upgraded. Blocked inbound on TCP 102 manifests exactly as 0x42C2. - VM virtual adapter quirks. VMware vmxnet3, E1000, or Hyper-V synthetic adapters all behave correctly for ISO-on-TCP, provided promiscuous mode is not required and the physical switch port is set to trunk/access as expected. If the VM was migrated between hosts with different virtual switch MAC tables, ARP caches on the Cisco router may take 5–15 minutes to refresh.
5. Pre-Diagnostic Checklist
Before opening the WinCC Explorer or uninstalling software, verify the following. Each item takes under 60 seconds:
-
ping <PLC_IP> -tfrom the VM host for 30 seconds — must show 0% loss, < 5 ms RTT. -
telnet <PLC_IP> 102from the VM — must show a black screen and not "connection refused" or timeout. A blank Telnet window is the cleanest proof that the S7 transport port is reachable. - On the PLC side, in STEP 7 / TIA, open CP Diagnostics → Connections and confirm the connection to the WinCC IP is established or incoming (not idle).
- Open Set PG/PC Interface (Start → Siemens Automation → Set PG/PC Interface) on the WinCC server. Confirm that
S7ONLINEaccess point is bound toCP_TCPIP_1::<NIC_GUID>matching the NIC that has the routing default gateway. - Verify SIMATIC NET version: Control Panel → Programs → "SIMATIC NET PC Software". It must read a version consistent with the WinCC compatibility matrix.
6. Diagnostic Procedure — Step by Step
-
Capture the baseline log. Stop the WinCC Runtime, copy
C:\Program Files (x86)\Siemens\WinCC\diagnose\SIMATIC_S7_PROTOCOL_SUITE_0x.LOGto a working directory. Clear or rename any older log. - Start Runtime with diagnostic verbosity raised. In WinCC Explorer, right-click the S7 Protocol Suite channel → "Channel Diagnosis" → enable "Extended Logging" (writes to the same file with extra detail).
- Trigger the connection attempt. Re-start Runtime. Wait 30 seconds.
-
Read the error block. Open the log, search for
0x42C2. The three lines above the error contain: the access point used, the target IP, the slot / rack, and the connection resource ID. This is the single most useful data set in the entire diagnostic flow. -
Validate the access point. Run
Set PG/PC Interfaceand confirm the S7ONLINE access point is bound to the correct CP. If it is bound to a non-existent device, you will see something like(unbound)or a grayed-out NIC name. -
Rebind if necessary. Select the correct access point → Properties → assign the real TCP/IP NIC. Click OK. No reboot is required for the binding change to take effect, but the SIMATIC NET service
s7oiehsxmust be restarted:
net stop "s7oiehsx.exe"
net start "s7oiehsx.exe"
- Retest. Re-trigger the connection. If 0x42C2 persists, the access point is correct and the failure is downstream of the S7 shim — proceed to Section 7.
7. SIMATIC NET Configuration
SIMATIC NET provides the S7 DOS shim (s7dos.dll) and the s7oiehsx routing service. Both must be installed by the same SIMATIC NET version. The configuration console is the SIMATIC NET Configuration shortcut in the Start menu (also called "Commissioning" in older releases).
Verify the following entries exist in the configuration:
- PC station name matches the Windows computer name exactly (case-insensitive, but the match must be exact).
- Index 1: S7ONLINE access point is associated with the TCP/IP NIC used to reach the PLC subnet.
-
OPC UA / S7 routing — if you only need native S7, the OPC UA service can be disabled. If OPC is in use, ensure the certificate store under
C:\ProgramData\Siemens\Automation\certstoreis not empty for the runtime user.
After any change in the SIMATIC NET Configuration, the Station Configuration Editor must be reopened and "Station -> Save and Compile" run. This regenerates the PCStation.xml consumed by the s7oiehsx service.
C:\Program Files (x86)\Siemens\SIMATIC_NET but leaves the older s7oiehsx.exe registered as a Windows service. Result: 0x42C2 immediately, and a "re-installation" does not fix it. Full uninstall of the older version, reboot, fresh install of the newer version is the only path.8. Logical Device Names and Access Points
The mapping below is the canonical source of the "access point not bound" failure. Pin it to the wall of the engineering room.
| Access Point (used in WinCC / STEP 7) | Typical Logical Device | Transports Supported | Bound To |
|---|---|---|---|
S7ONLINE |
CP_TCPIP_1 |
ISO-on-TCP (TCP 102), TCP, UDP | Physical or virtual NIC with the routing path to the PLC |
CP_PROFIBUS |
CP5611 / CP5621
|
PROFIBUS DP / MPI | Siemens PROFIBUS CP card (not applicable here) |
CP_ETHERNET |
CP_TCPIP_2 |
ISO, TCP, UDP | Secondary NIC, used for plant bus segmentation |
PG/PC |
User-defined | Per selection | STEP 7 engineering station only |
To rebind an access point:
- Open Start → Siemens Automation → Set PG/PC Interface.
- From the dropdown "Access Point of the Application", select
S7ONLINE. - In the "Interface Parameter Assignment Used" list, pick the entry that reads
CP_TCPIP_1 → <your NIC>. Do not select entries with greyed-out NIC names. - Click OK. A dialog confirms: "The interface was assigned successfully".
- Restart the SIMATIC NET service:
net stop s7oiehsx && net start s7oiehsxfrom an elevated command prompt.
For the official procedure, see the Siemens Knowledge Base entry "Why is the connection from WinCC to the S7 controller not established via TCP/IP?" in the Siemens Industry Online Support portal.
9. Network Routing Considerations for S7
WinCC does not require the S7 traffic to remain in a single broadcast domain. ISO-on-TCP (RFC 1006) is routable across L3 boundaries. The following must hold true for the routed path:
- The Windows routing table on the WinCC server must have a host route or a subnet route for the PLC IP, with the correct next-hop gateway. Verify with
route print. - All intermediate routers (Cisco L3 switches in this case) must permit TCP 102 in both directions. The Cisco ACL on the relevant VLAN interfaces must include a rule equivalent to:
permit tcp <wincc_subnet> <wincc_wildcard> host <plc_ip> eq 102
permit tcp host <plc_ip> eq 102 <wincc_subnet> <wincc_wildcard> established
- If NAT is in use (uncommon in industrial networks, but it occurs in brownfield integration with corporate IT), the S7 connection must be NAT-friendly. ISO Transport embeds the IP inside the S7 payload in some configurations, and NAT will break this. Use TCP (not ISO) variant of the S7 connection in NAT'd environments, configured in STEP 7 under the CP's "TCP Connection" rather than "ISO-on-TCP Connection".
- MTU: ISO-on-TCP has an overhead of ~120 bytes. If the path traverses a VPN or GRE tunnel with MTU 1400, fragmentation will cause the S7 handshake to drop silently. Test with
ping -f -l 1400 <plc_ip>and adjust the router MTU if needed.
10. VM-Specific Considerations
When WinCC runs inside a virtual machine, three additional failure modes appear that are absent on bare metal:
| Issue | Symptom | Fix |
|---|---|---|
| MAC change after vMotion / live migration | Cisco ARP cache still points to old MAC, ISO-on-TCP SYN times out | Either pin the VM to a host, or set the adapter to "MAC address: permanent" in vSphere |
| vmxnet3 vs E1000 driver | E1000 has known issues with high-rate S7 traffic; vmxnet3 preferred | Change the VM NIC type to vmxnet3 in the VM hardware config |
| Windows Server 2012 R2 TCP chimney offload | Disables S7 transport's small-packet optimization, can cause 0x42C2 under load | Disable with: netsh int tcp set global chimney=disabled
|
Additionally, on Server 2012 R2, ensure the following Windows Firewall rules are present and enabled:
- Inbound:
SIMATIC NET S7 Communication(or equivalents7oiehsx.exerule) — TCP, local port 102, profile: domain. - Inbound:
SIMATIC NET OPC UA— TCP, local port 4840 (only if OPC UA is used). - Outbound: TCP remote port 102 to the PLC subnet.
To script the firewall rules for SIMATIC NET in an elevated PowerShell:
New-NetFirewallRule -DisplayName "SIMATIC NET S7 Inbound" `
-Direction Inbound -Protocol TCP -LocalPort 102 `
-Action Allow -Profile Domain,Private
New-NetFirewallRule -DisplayName "SIMATIC NET S7 Outbound" `
-Direction Outbound -Protocol TCP -RemotePort 102 `
-Action Allow -Profile Domain,Private
11. Resolution Procedure
Apply the steps in this order. Each step is independent and verified; do not skip ahead.
-
Bind the correct access point. Open Set PG/PC Interface, set
S7ONLINEto the TCP/IP NIC with the route to the PLC. Restart thes7oiehsxservice. - Remove the wrong SIMATIC NET version. If V12 is installed with V13, uninstall V12 completely, reboot, then run "Repair" on V13 SP1 via Control Panel.
-
Recompile the PC Station. Open SIMATIC NET Configuration → Station Configuration Editor → Station → Save and Compile. The output
PCStation.xmlmust regenerate cleanly with no warnings. -
Open the Windows Firewall ports. Apply the two PowerShell rules above (or use
wf.mscwith the GUI). Verify withGet-NetFirewallRule -DisplayName "SIMATIC NET*". - Validate the CP connection count on the PLC. In STEP 7 / TIA, open the CP properties → "Options" → confirm the S7 connection resource for the WinCC partner is set to "Active" (WinCC initiates) or "Passive" (PLC waits) and is not exceeding the CP's total connection limit.
- Test with WinCC Channel Diagnosis. In WinCC Explorer → S7 Protocol Suite → right-click the connection → "Connection Status". Status should turn from red "Not Connected" to green "Connected".
-
Verify in Runtime. Start WinCC Runtime. The internal tag
@ConnectedToPLCshould report 1 for all configured PLCs within 30 seconds. The diagnose log will show0x0000(success) where0x42C2previously appeared.
12. Verification and Validation
Confirm the fix is complete and stable with the following checks. Run them at least twice, 5 minutes apart, to rule out transient flap:
- Open WinCC Channel Diagnosis → S7 Protocol Suite → the connection should be "Established, OK".
- From the WinCC server command line:
telnet <PLC_IP> 102still returns a black screen. - Open the WinCC tag browser, force a read of a known-changing process tag (e.g. a counter incremented in the PLC). Value should update at the configured acquisition cycle, no "<BAD>" quality stamp.
- Restart the WinCC Runtime service. The connection should re-establish automatically within 30 seconds; no manual intervention required.
- Failover to the redundant WinCC server. The standby should promote to master and re-establish all PLC connections within the configured redundancy switchover time (default 60 s).
- Check the diagnose log size: a healthy system generates roughly 50–200 lines per hour. A spiking log (> 5,000 lines/hour) indicates retry storms — re-verify Sections 7 and 8.
13. Preventive Measures and Hardening
Once the immediate failure is cleared, lock the configuration against recurrence:
- Document the access point binding in the project's engineering backup. A change to the Windows network stack can silently rebind the access point to a NIC that no longer has the route.
- Pin the SIMATIC NET version in the project documentation. Reject any patch that crosses a major version boundary (V12 → V13, V13 → V14) without a regression test against the full tag list.
- Add a scheduled task on the WinCC server that runs
netstat -an | findstr :102every 5 minutes and logs the result. A missing entry means the S7 shim is not listening — your earliest warning of regression. - For VM hosts, disable vMotion for the WinCC servers, or pin MAC addresses. The cost of vMotion downtime is rarely worth the gain for a 24/7 HMI.
- On the Cisco routed path, add an SNMP trap or syslog message for any ACL deny on TCP 102. This converts a future 0x42C2 into a 10-second fix instead of a 3-hour diagnostic session.
14. Related Configuration Reference
Quick reference for the values that are most often wrong in the field:
| Parameter | Typical Value | Where to Set |
|---|---|---|
| S7ONLINE access point binding | CP_TCPIP_1 → routed NIC | Set PG/PC Interface |
| S7 connection resource on PLC CP | 1 (active) or 2 (passive) per WinCC server | STEP 7 / TIA Portal hardware config |
| TCP port | 102 (ISO-on-TCP), 102 (TCP variant) | WinCC connection properties |
| SIMATIC NET version (WinCC V7.3 SP1) | V13 SP1 or later; never V12 alongside | Control Panel → Programs |
| PC Station name | Must equal Windows computer name | SIMATIC NET Configuration |
| Redundancy switchover time | 60 s default, 10 s min | WinCC Redundancy Editor |
| Acquisition cycle | 500 ms to 5 s typical | WinCC Tag Management |
FAQ
Does WinCC 7.3 S7 communication work across routed subnets, or only within the same subnet?
WinCC 7.3 S7 communication works across routed L3 boundaries. ISO-on-TCP (RFC 1006) and TCP variants are both routable. What must be true is that the Windows routing table on the WinCC server has a route to the PLC subnet, all intermediate router ACLs permit TCP 102 in both directions, and Windows Firewall on the server allows the S7ONLINE access point to bind to the correct NIC. A common misconception is that S7 requires L2 adjacency — it does not.
What does WinCC error code 0x42C2 mean and what is the most common fix?
Error 0x42C2 (decimal 17090) means the S7 transport layer could not establish the connection. The most common fix is to rebind the S7ONLINE access point to the correct TCP/IP NIC in Set PG/PC Interface and restart the s7oiehsx service. The second most common fix is uninstalling an older SIMATIC NET version (V12) that is shadowing the required V13 SP1 install. Always cross-check the file SIMATIC_S7_PROTOCOL_SUITE_0x.LOG in C:\Program Files (x86)\Siemens\WinCC\diagnose for the exact access point used in the failed attempt.
Why does ping work but WinCC cannot talk to the S7 PLC?
Ping uses ICMP, which is a separate protocol from the S7 transport (TCP port 102). A network can pass ICMP while blocking TCP 102 via Windows Firewall, Cisco ACL, or host-based security policy. To prove the S7 transport path is open, use telnet <PLC_IP> 102 — a blank terminal window is the expected response. A "connection refused" or timeout means the S7 port is blocked, and WinCC will report 0x42C2 even though ping succeeds.
Can SIMATIC NET V12 and V13 coexist on the same WinCC V7.3 server?
No. Parallel installation corrupts the s7oiehsx shim service registration and produces immediate 0x42C2 errors that a WinCC re-installation will not resolve. The supported sequence is: fully uninstall the older version, reboot, then install the newer version matching the WinCC compatibility matrix. For WinCC V7.3 SP1 the qualified version is SIMATIC NET V13 SP1 or higher.
Is the issue a routing problem if the VM server fails but a physical client with a different subnet works?
Not necessarily. The physical client succeeding proves that the network path is functionally viable for S7 traffic; the VM failing proves the issue is specific to the VM server stack — typically a logical device name / access point binding, a SIMATIC NET version mismatch, a VM NIC driver issue, or a Windows Firewall rule that exists on the physical machine but not on the VM image. Narrow the diagnosis to the VM configuration, not the routed network.