Fixing WinCC Flexible 2008 SP5 0x320 Error on Windows 10

David Krause16 min read
HMI / SCADASiemensTroubleshooting
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Problem Summary

When migrating a WinCC Flexible 2008 SP5 Runtime installation from Windows XP to Windows 10 64-bit (build 1607), HMI screens compile and transfer successfully to the Panel PC but fail to communicate with the connected SIMATIC S7-300 PLCs (CPU 319-3 PN/DP family). The runtime behavior resembles simulator mode: tag values appear blank rather than displaying hash marks (#) when the controller is offline, and no live process data is read. The WinCC Flexible message system reports two recurring alarms:

  • General connection error 0x320
  • Connection lost to <IP address> / <slot number>

This symptom set is the classic fingerprint of a misbound S7ONLINE access point inside the Windows PG/PC Interface, not a missing SIMATIC NET installation. The runtime cannot resolve the symbolic S7ONLINE access point to a physical TCP/IP interface, so all S7 communication requests are dropped at the application layer before any packet reaches the PLC.

Error Code Analysis

Hex Code 0x320 (Decimal 800)

WinCC Flexible Runtime and WinCC (TIA Portal) both surface S7 communication faults as numeric Win32-style status codes. The 0x320 class indicates a transport-layer failure during the S7 connection setup: the ISO-on-TCP (RFC1006) or TCP socket cannot be opened against the configured partner. Typical underlying reasons and adjacent codes include:

Hex Decimal Meaning
0x320 800 Connection establishment failed (TCP/ISO-on-TCP timeout, ARP failure, or wrong access point binding)
0x321 801 Connection aborted by partner
0x322 802 Local resource shortage (handle/connection limit)
0x323 803 Connection rejected (wrong TSAP, rack/slot)
0x327 807 Network adapter offline or unbound from access point

Although 0x320 is commonly associated with PC Station / SIMATIC NET OPC configurations, the same code is raised by the native S7DOS / S7OLE communications DLL inside WinCC Flexible when the S7ONLINE access point cannot be resolved. The runtime never marks the tag as "connection quality = good", so the I/O field stays blank instead of falling back to a hash mark.

"Connection Lost to IP Address / Slot"

The companion alarm text includes the PLC's IP address and the S7-300 CPU slot number (slot 2 for the 319-3 PN/DP, slot 4 for older 31x-2 DP). A wrong slot number is a frequent secondary fault: the HMI project was originally compiled against a different CPU in the same rack, or the rack/slot mapping was changed during the migration. Open WinCC Flexible 2008 SP5 Engineering, select Project → Connections, and confirm the partner points to the same IP, rack 0, and slot number as the physically installed CPU.

Engineering check: Slot 2 is mandatory for the 319-3 PN/DP because the PROFINET interface occupies slot 2 of the S7-300 backplane. A leftover slot-3 setting from an older 31x-2 DP project will silently produce 0x320 instead of the expected 0x323 because the TSAP layer never gets that far.

Root Cause

The Windows 10 image does not inherit the legacy PG/PC Interface binding from Windows XP. The S7ONLINE access point is either:

  1. Unassigned (default = no active interface), or
  2. Bound to a wireless adapter that is disabled, or
  3. Bound to a virtual Hyper-V / VMware bridge that has no route to the PLC subnet, or
  4. Bound to the wrong physical NIC on a Panel PC with dual Ethernet ports.

When the S7ONLINE entry is not resolvable, the S7 communications DLL inside WinCC Flexible Runtime treats every read/write as a transport failure and never marks a tag as having a valid PLC address. The I/O field therefore stays blank. On a correctly configured legacy XP system the I/O field shows hash marks (#) when the connection drops because the PLC variable address is syntactically valid; in the broken Windows 10 configuration the variable address is never evaluated at all.

SIMATIC NET is not the missing component when the Panel PC runs WinCC Flexible Runtime alone. The native S7 protocol stack shipped with WinCC Flexible 2008 SP5 already implements ISO-on-TCP and TCP/IP S7 communication directly against the Windows TCP stack. SIMATIC NET only becomes mandatory when the application requires:

  • OPC DA / AE / HDA server exposure to a third-party SCADA,
  • S7 redundancy with four-standby partner routing,
  • Routing through a PC Station configured in STEP 7 / NCM PC,
  • FDL or PROFIBUS DP master on the PC, or
  • Alarm-/logging-redundancy S7 connections managed by PC Station.

None of these apply to a single HMI Runtime panel polling a single S7-300 PN/DP CPU. Siemens documents all legitimate configuration permutations in the WinCC Flexible configuration compendium linked from Siemens Support entry 24109937.

Affected Versions and Components

Component Tested / Affected Version Notes
WinCC Flexible Runtime 2008 SP5 (HF13 or later recommended) Build 800x; HF hotfixes address Windows 10 quirks
WinCC Flexible Engineering 2008 SP5 Advanced Used to compile and transfer the project
STEP 7 V5.6 + SP2 Last release that runs natively on Windows 10 64-bit without virtualization
Windows 10 Enterprise LTSB 2016, build 1607 Required for STEP 7 V5.6 compatibility; newer builds break VB6-based tools
CPU SIMATIC S7-300 CPU 319-3 PN/DP (6ES7318-3EL01-0AB0, 6ES7318-3FL01-0AB0) 3-port: MPI/DP, DP, PN; PROFINET on slot 2
Panel PC Siemens SIMATIC IPC or third-party with dual Intel NICs Two Ethernet ports typical; only one must carry S7 traffic
Why build 1607? STEP 7 V5.6 and WinCC Flexible 2008 SP5 rely on VB6 runtimes and legacy 16-bit installers. Microsoft broke several compatibility shims in build 1703 (Creators Update) and later. Siemens formally certifies LTSB 2016 (1607) and LTSC 2019 (1809) for STEP 7 V5.6. Installing a non-LTS consumer build (e.g., 1909, 20H2, 22H2) typically returns error 1935 or fails the Simatic Manager setup with a missing dependency on msi.dll.

Prerequisites

  • Local administrator account on the Panel PC
  • WinCC Flexible 2008 SP5 Runtime installed and licensed through the Automation License Manager
  • WinCC Flexible project already transferred to the Runtime database
  • Ethernet cable connected between the Panel PC's NIC and the PLC's PROFINET port (X3)
  • Successful ping <PLC IP> from an elevated command prompt
  • PLC IP address, subnet mask, and rack/slot verified in the WinCC Flexible project

Step-by-Step Resolution

1. Verify the Project Transfer

Confirm the compiled runtime file set actually replaced the previous Windows XP image. The transfer directory is typically C:\Program Files\Siemens\Automation\WinCC Flexible 2008\HmiRTm. On Windows 10 64-bit with default UAC redirection, the real path is C:\Program Files (x86)\Siemens\Automation\WinCC Flexible 2008\HmiRTm. The transferred project files end in *.fwx and must be newer than the original XP build date.

2. Open the Windows PG/PC Interface Applet

  1. Press Win + R, type control, press Enter.
  2. In Control Panel, set View by to Small icons.
  3. Locate and double-click Set PG/PC Interface.

If the applet is missing, install it from the WinCC Flexible 2008 SP5 DVD's \SETUP\SUPPORT\PGPC directory or copy SETPGAI.exe and the S7EHTMLR DLLs from a working reference machine. The applet writes its configuration into the registry at HKLM\SOFTWARE\Siemens\Automatic\PGPCInterface.

3. Assign the S7ONLINE Access Point

  1. In the Access Point of the Application dropdown, select S7ONLINE.
  2. In the Interface Parameterization Used list, expand the TCP/IP group.
  3. Select the entry that names the physical NIC you intend to use. On a dual-port Panel PC the correct entry is Networkcard.TCPIP.1 for the on-board Intel NIC. The second NIC would be Networkcard.TCPIP.2.
  4. Click OK to commit the binding.
Critical: Do not select TCP/IP (Auto) or a virtual adapter. Auto-mode binds the first enumerated interface at runtime, which on Windows 10 64-bit is usually the Hyper-V vEthernet (Default Switch) — invisible to the user but always present after Hyper-V is enabled. Also avoid TCP/IP -> Networkcard (Auto) — it enumerates alphabetically and can pick a Wi-Fi NIC first.

4. Confirm the Binding Persists Across Reboot

Open regedit and verify the assignment persists:

[HKLM\SOFTWARE\Siemens\Automatic\PGPCInterface\S7ONLINE]
"SetPGInterface"="Networkcard.TCPIP.1"

If the value reverts to (unset) after a reboot, another installer (often SIMATIC Manager's NCM PC wizard) is overwriting the binding. Install SIMATIC Manager and WinCC Flexible on different Panel PCs or run NCM PC explicitly and re-bind afterwards.

5. Restart the WinCC Flexible Runtime Service

  1. Open services.msc.
  2. Stop and restart the Siemens WinCC Flexible Runtime service (service name WinCCflexibleRT).
  3. Restarting re-reads the S7ONLINE binding; an open runtime often ignores changes made through the applet until the next process start.

6. Optional: When SIMATIC NET Must Coexist

If the same Panel PC hosts a third-party OPC client or a STEP 7 PC Station configured in NCM PC, the S7ONLINE access point is consumed by SIMATIC NET's s7oiehsx virtual adapter. In that case you must install SIMATIC NET 2008 SP2 or later, configure the PC Station as an HMI station, and ensure the WinCC Flexible project uses the PC Station's local S7 connection (type SIMATIC S7 Protocol Suite) rather than the legacy S7ONLINE routing. See the Siemens WinCC Flexible configuration compendium for the matrix of permitted combinations.

Verification Procedure

  1. Launch WinCC Flexible Runtime.
  2. Open the WinCC Flexible Messages view (the diagnostics screen that lists connection alarms).
  3. Confirm the 0x320 and connection lost messages disappear within 30 seconds of start-up.
  4. Touch any I/O field wired to a process tag: the value should update within the configured acquisition cycle (default 1 s).
  5. Physically disconnect the Ethernet cable. Within the configured timeout (default 5 s) the I/O field should display hash marks (#) — this is the expected fallback for a healthy S7 connection.
  6. Reconnect the cable. The runtime should re-establish the S7 connection automatically and resume reading tags without a restart.

If the I/O fields remain blank after Step 5, the runtime is still in simulator mode. Check that the transferred project file actually contains the connection configuration: open the *.fwx project with WinCC Flexible 2008 SP5 Engineering and verify the Connections node lists the PLC's IP under Partners.

Diagnostic Tools

WinCC Flexible Diagnose Button

The diagnose button in the runtime environment enumerates every device reachable via the S7ONLINE access point on the local LAN. On a healthy network the panel should list all 20+ PLCs of the subnet. If the list is empty despite successful ping, the access point is bound to a non-broadcast-capable virtual adapter. The diagnose function uses UDP broadcast to port 17171; corporate switches that drop directed broadcasts will also produce an empty list — verify the switch port configuration before assuming a binding fault.

Wireshark Capture

Install Wireshark on the Panel PC and capture on the bound interface while starting the runtime. Filter for tcp.port == 102 (ISO-on-TCP / RFC1006). The expected handshake is a SYN from the PC to the PLC's IP on port 102, followed by a SYN-ACK. If no SYN appears at all, the access point binding is the failure point. If SYN appears but no SYN-ACK follows, the PLC is unreachable (firewall, wrong IP, wrong VLAN, duplicate IP). If SYN-ACK appears but the runtime still reports 0x320, capture the next TPKT payload and verify the TSAP request matches the configured partner TSAP (typically 01.01 on the PLC side).

PLC-Side PN Port Diagnostics

From STEP 7 V5.6: PLC → Module Information → Communication. The active TCP connections list shows the PC's IP, the port number, and the byte count. A connection that never establishes here confirms the request never reaches the CPU. The 319-3 PN/DP CPU display also scrolls a status code — code E0 indicates an established S7 connection, while E1 through E4 indicate progressive connection setup states.

ARP Table Verification

Run arp -a from the Panel PC and confirm the PLC IP resolves to the expected MAC address. A duplicate IP that resolves to the wrong MAC produces a successful ping but every S7 packet is delivered to the wrong device, producing 0x320 with no consistent error pattern.

Troubleshooting Matrix

Symptom Likely Cause Action
Blank I/O fields, 0x320 + "connection lost" S7ONLINE unbound or bound to wrong NIC Re-assign S7ONLINE → Networkcard.TCPIP.1
Hash marks (#) in fields after cable disconnect Healthy S7 connection — fallback works No action needed; verify tag addresses
Diagnose button lists zero devices Access point bound to virtual adapter or blocked UDP broadcast Select physical NIC explicitly; verify switch config
Wireshark shows SYN but no SYN-ACK PLC offline or duplicate IP on subnet Check CPU display, run arp -a, verify subnet mask
Runtime launches but immediately exits Damaged transferred project or missing license Re-transfer project, re-license with Automation License Manager
0x320 only on the secondary NIC NIC teaming enabled and one member disabled Disable NIC teaming for the WinCC panel port
Works on one Panel PC but not another with identical image Different NIC driver exposes different PnP instance Re-run Set PG/PC Interface on each panel individually
0x320 on every restart even though binding is correct Fast Startup hibernation tears down S7 session Disable Fast Startup in power options
Runtime works for 30 minutes then drops to 0x320 Power plan switching to Balanced / Saver, NIC powersave Set power plan to High performance, disable NIC power management

When SIMATIC NET Becomes Mandatory

SIMATIC NET is required when the Panel PC must simultaneously serve as:

  • PC Station in STEP 7 / NCM PC: the PC participates in the S7 routing topology and acts as a gateway between subnets. WinCC Flexible then connects via the PC Station's local S7 connection rather than the S7ONLINE access point.
  • OPC DA server: third-party SCADA or MES clients consume tags through an OPC proxy. SIMATIC NET provides the OPC server; WinCC Flexible 2008 SP5 does not expose an OPC DA interface on its own.
  • S7 Redundant Connection: two S7-400H CPUs require SIMATIC NET's redundancy layer; WinCC Flexible's native S7 stack does not implement H-pair failover.
  • PROFIBUS DP master on the PC: a CP 5611 / CP 5621 card needs the SIMATIC NET DP driver to publish I/O to WinCC Flexible via OPC.
  • Routing across subnets: when the HMI panel must reach a PLC that is not on its directly connected LAN, the panel needs an S7 route. SIMATIC NET's s7oiehsx virtual adapter owns the routing table; WinCC Flexible alone cannot publish S7 routes.

For a Panel PC running WinCC Flexible RT only against a single S7-300 PN/DP, none of these conditions apply, so SIMATIC NET can legitimately be omitted from the bill of materials. The vendor quote that omitted SIMATIC NET was correct.

CPU 319-3 PN/DP Specifics

The 319-3 PN/DP (6ES7318-3EL01-0AB0 and 6ES7318-3FL01-0AB0) is the top-end S7-300 CPU with three interfaces: MPI/DP (X1), DP (X2), and PROFINET (X3). The PROFINET port occupies slot 2 of the S7-300 backplane in the WinCC Flexible connection editor. Common migration mistakes:

  • Leaving the slot at the historical default of slot 3 (which was correct for 31x-2 DP CPUs using the DP port in slot 4). This produces connection error 0x323 (connection rejected), but if the slot value is also wrapped into an invalid TSAP pair the runtime may instead surface 0x320.
  • Addressing the second PROFINET port of a 319-3 PN/DP when only one is active in the hardware configuration (STEP 7 HW Config marks the unused port as "deactivated").
  • Forgetting to assign a router for cross-subnet HMI traffic; 319-3 PN/DP defaults to no default gateway, so cross-network read attempts fail silently after the initial ARP.
  • Using a 100 Mbit switch port on a 1 Gbit PROFINET port. Auto-negotiation falls back to 100 Mbit but duplex mismatches produce intermittent 0x320 after a few minutes of run time.
PN port LED check: The X3 port has two LEDs labelled "Link" and "Activity". A solid green Link LED with no Activity LED proves the cable and physical link are good; traffic is failing inside the application layer. A flashing Link LED with no Activity LED indicates a link-up / link-down loop — typically a faulty patch cable or a switch port in err-disabled state.

Windows 10 1607 Compatibility Checklist

For STEP 7 V5.6 and WinCC Flexible 2008 SP5 to install and run reliably on Windows 10 64-bit build 1607:

  • Disable Secure Boot or sign the legacy Siemens drivers (Simatic Manager setup ships an INF that requires test-signing mode on some hardware).
  • Install only the language packs the project strings depend on; missing MUI strings cause WinCC Flexible startup errors.
  • Disable Fast Startup. Fast Startup leaves the system in a hibernation hybrid state and can break the S7ONLINE binding on the next boot.
  • Set the power plan to High performance so the S7 connection does not get torn down when the panel screen saver activates.
  • Disable Hyper-V completely unless explicitly required; its virtual switch inserts a vEthernet adapter that hijacks the S7ONLINE Auto-mode binding.
  • Disable Windows Firewall on the panel port or add an inbound allow rule for TCP port 102 (ISO-on-TCP). The default Windows 10 firewall profile is Public and blocks unsolicited inbound traffic — not normally an issue for outbound HMI traffic, but some STEP 7 diagnostic functions (PG functions) require inbound replies.
  • Disable NIC Teaming on the panel port. Windows 10 1607 supports native NIC teaming through the Hyper-V virtual switch; teamed NICs do not expose the PnP instance that SETPGAI.exe expects.
  • Verify the .NET Framework 3.5 feature is installed; WinCC Flexible 2008 SP5 uses .NET 2.0/3.5 components that are not enabled by default on Windows 10 1607.

Field-Proven Configuration Sequence

The fastest repeatable recovery procedure for a freshly imaged Windows 10 panel that must run WinCC Flexible RT against an S7-300 PN/DP:

  1. Image Windows 10 LTSB 2016 (1607) with all critical and important updates applied.
  2. Install STEP 7 V5.6 SP2 if PG functions are needed; otherwise skip.
  3. Install WinCC Flexible 2008 SP5 Advanced; during install, enable "Runtime" component.
  4. Enable .NET Framework 3.5 from Windows Features.
  5. Disable Hyper-V, NIC teaming, Fast Startup, and Windows Firewall on the panel NIC.
  6. Set power plan to High performance; disable NIC power management.
  7. Transfer the compiled *.fwx project via Ethernet or USB stick to C:\Program Files (x86)\Siemens\Automation\WinCC Flexible 2008\HmiRTm.
  8. Open Control Panel → Small icons → Set PG/PC Interface. Assign S7ONLINE → Networkcard.TCPIP.1.
  9. Restart the WinCCflexibleRT service.
  10. Launch Runtime, verify tag updates, verify hash marks on cable disconnect.

The whole sequence typically takes 90 minutes on a freshly imaged Panel PC and eliminates the recurring 0x320 / blank-tag pattern without any SIMATIC NET installation.

FAQ

Do I need SIMATIC NET for WinCC Flexible 2008 SP5 Runtime on a Panel PC?

No. If the panel only runs WinCC Flexible RT and polls S7-300/S7-400 PLCs over PROFINET, the native S7 stack inside WinCC Flexible is sufficient. SIMATIC NET is only required when the same PC hosts an OPC server, a STEP 7 PC Station, S7 redundant connections, cross-subnet routing, or a PROFIBUS DP master.

What does WinCC Flexible error 0x320 mean?

0x320 (decimal 800) is a generic connection-establishment failure. The runtime cannot open the ISO-on-TCP or TCP socket against the configured PLC. The most common cause is a misbound S7ONLINE access point in the Windows PG/PC Interface applet.

Why does the new Panel PC show blank I/O fields instead of hash marks when the cable is disconnected?

Hash marks (#) only appear when the S7 connection is established and then drops. Blank fields mean the connection was never established — the runtime has not even bound the symbolic tag address to a transport. Check the S7ONLINE → Networkcard.TCPIP.1 binding.

Why does the diagnose button in WinCC Flexible Runtime show zero devices despite a successful ping?

The access point is bound to a virtual adapter (Hyper-V vEthernet, VPN tunnel, or a disabled wireless NIC) or the switch is filtering UDP broadcast packets. Open Set PG/PC Interface and select the physical Ethernet port that is physically connected to the PLC subnet, then verify the switch permits broadcast on the relevant VLAN.

Which Windows 10 build is officially supported by STEP 7 V5.6 and WinCC Flexible 2008 SP5?

Siemens certifies Windows 10 Enterprise LTSB 2016 (build 1607) and LTSC 2019 (build 1809). Consumer builds (1703 and later) break VB6 installers and legacy drivers. Stick to LTSB/LTSC with security patches only.

How do I find the slot number for a 319-3 PN/DP CPU in WinCC Flexible 2008 SP5?

Open the connection editor (Project → Connections), select the partner, and set the slot to 2. The PROFINET interface of the 319-3 PN/DP occupies slot 2 of the S7-300 backplane regardless of the physical rack position.

Back to blog