PLCSIM Advanced Distributed Mode: Resolving Flash and Load Failures on VMware ESXi
PLCSIM Advanced V2.0 in distributed mode allows a TIA Portal engineering station on one physical machine to download, flash, and commission a virtual SIMATIC S7-1500 / ET 200SP CPU instance running on a separate Windows host. The architecture is straightforward in concept — a local PLCSIM Virtual Ethernet Adapter bridges the simulator to the physical network — but the implementation depends on a layered set of network features that many virtualization stacks disable by default. When any one of those features is misconfigured, the symptom is consistent: the S7-PLCSIM instance appears in the "Accessible devices" search result list on the remote TIA Portal, but every download or flash operation times out or fails with a generic error.
This reference documents the exact failure mode observed on a Windows 7 x64 host (updates through December 2017, no Meltdown/Spectre patches) running PLCSIM Advanced V2.0 inside an ESXi virtual machine, with TIA Portal V14 SP1 and V15 engineering stations on a separate physical PC. It documents the root cause (Promiscuous Mode on the ESXi vSwitch / Portgroup), the diagnostic path that proves the cause, the fix, and a broader set of related configuration points that produce the same or similar symptoms.
1. Problem Statement
The failure profile is highly specific and easy to misdiagnose as a TIA Portal configuration problem, a firewall issue, or a corrupted PLCSIM installation:
- PLCSIM Advanced V2.0 is installed on the simulation host (VM or physical PC).
- The PLCSIM Virtual Ethernet Adapter is created and bound.
- A S7-1500 / ET 200SP CPU instance is started in PLCSIM Advanced; the instance is reachable on the TCP/IP network (a ping to the instance IP succeeds from the remote engineering station).
- On the engineering station, TIA Portal V14 SP1 or V15 is launched and the user opens "Online → Accessible devices" or uses "Extended download to device".
- The "S7-1500 (PLCSIM)" entry appears in the result list of accessible devices, with its IP address and a correct target identifier.
- Selecting the device and pressing "Flash" or "Load" fails. The download dialog either times out, returns a generic "The device could not be reached" message, or hangs indefinitely.
- The same TIA Portal installation running on the same host as PLCSIM Advanced (i.e., locally attached to the PLCSIM Virtual Ethernet Adapter) successfully flashes and loads the simulated CPU.
- Replacing the simulated target with a real SIMATIC S7-1515 (or equivalent) connected to the same physical network segment succeeds without modification — download and flash complete normally.
- Windows Firewall is fully disabled on both hosts. UAC is fully disabled. The PLCSIM Virtual Ethernet Adapter is visible in the network connections list and shows link state up.
The combination of "visible in accessible devices, but cannot flash or load" is the diagnostic fingerprint of the distributed-mode Promiscuous Mode issue. A firewall would prevent visibility entirely. A misconfigured IP subnet would also prevent visibility. A real-hardware-OK / simulated-fail pattern rules out the physical network, the engineering station, and the TIA Portal installation as the source of the problem.
2. Why the PLCSIM Instance Is Visible but Not Loadable
PLCSIM Advanced uses a virtual Ethernet adapter that is implemented as a Windows network interface. When the simulator is started in distributed mode (TCP/IP broadcast mode), it transmits S7 discovery frames that mimic a Siemens CPU. The engineering station answers with a directed request, the simulator responds, and the CPU appears in the "Accessible devices" list. All of these transactions are normal unicast TCP/IP packets routed through the physical network.
The flash and load operations, however, use a different mechanism. PLCSIM Advanced relies on the host OS accepting and processing frames whose destination MAC address is not the host's own NIC MAC — the simulator's Virtual Ethernet Adapter uses one MAC address while the underlying physical NIC presents another. When TIA Portal sends a flash/load request to the simulator IP, the destination MAC in the frame may be resolved by ARP to the simulator's virtual MAC rather than the host's physical NIC MAC. A standard vSwitch in default configuration rejects frames whose destination MAC does not match any active uplink port, which causes the load/flash packet to be dropped silently.
This is precisely the case where VMware ESXi's Promiscuous Mode on the relevant Portgroup is required: it instructs the vSwitch to forward all frames observed on the port — including frames whose destination MAC is unknown to the switch — to the connected VM, allowing the PLCSIM Virtual Ethernet Adapter to receive and process them.
3. Root Cause Analysis
Three independent network layers must each permit the PLCSIM traffic to flow in distributed mode. If any one of them blocks the traffic, the visible-but-unloadable symptom appears:
| Layer | Required Setting | Default Behavior | Symptom if Missing |
|---|---|---|---|
| Windows network adapter | PLCSIM Virtual Ethernet Adapter bound and enabled | Adapter created on install but not always connected | PLCSIM does not bind to TCP/IP stack |
| VMware vSwitch / Portgroup | Promiscuous Mode = Accept (or "Legacy") | Reject | Visible in accessible devices, Flash/Load fails |
| VMware vSwitch / Portgroup | MAC Address Changes = Accept, Forged Transmits = Accept | Accept (usually default) | Rare; some vSphere versions reject forged MAC |
In the reported incident, the host ESXi Portgroup was configured with Promiscuous Mode = Reject. PLCSIM Advanced discovery frames were forwarded (because they used the host's own physical MAC during the ARP exchange), so the engineering station could see the simulated CPU. Flash/load frames used the simulator's virtual MAC and were dropped at the vSwitch.
4. Solution: Enable Promiscuous Mode on the ESXi Portgroup
4.1 Prerequisites
- vSphere Client or ESXi web client access with permission to edit the host networking configuration.
- The name of the vSwitch and the specific Portgroup that the PLCSIM Advanced VM is connected to. In the vSphere UI this is under Host → Configure → Networking → Virtual Switches or Host → Networking → Port groups.
- Confirm that the PLCSIM Virtual Ethernet Adapter on the guest is up and has an IP address on the engineering subnet.
4.2 Step-by-Step Procedure
- Open the vSphere Client and connect to the ESXi host or to the vCenter managing the host.
- Select the host. Navigate to Configure → Networking → Virtual Switches.
- Identify the Portgroup used by the PLCSIM Advanced VM. The Portgroup name typically matches the VM network label, e.g. "VM Network", "PLCSIM_Network", or a custom label.
- Click Edit settings on the Portgroup (pencil icon).
- Switch to the Security tab.
- Set Promiscuous Mode from "Reject" to "Accept". (In some vSphere builds the option is labeled "Allow".)
- Set MAC Address Changes to "Accept".
- Set Forged Transmits to "Accept".
- Click OK to apply.
- No VM reboot is required. The new settings take effect immediately for the Portgroup.
- From the engineering station, retry the download/flash in TIA Portal. The operation should complete in seconds.
5. Verifying the Fix
After enabling Promiscuous Mode, validate the configuration in three ways before considering the issue closed:
-
TCP connectivity test. From the engineering station, run
ping <PLCSIM_instance_IP>. The reply should arrive in < 1 ms on a local segment. A failed ping points to a remaining L3 issue (subnet, route, or firewall) rather than Promiscuous Mode. - TIA Portal flash test. Open the project, right-click the target device, select "Online → Extended download to device", select "S7-1500 (PLCSIM)" from the list, confirm "Flash" is selected, and press "Flash". The flash should complete in seconds and report success. A repeated failure with the same fingerprint indicates a residual configuration problem at a different layer.
-
Wireshark confirmation. On the engineering station, run Wireshark on the interface facing the PLCSIM network. Filter on the PLCSIM instance MAC address (
eth.addr == <PLCSIM_MAC>). During a download attempt, you should see the TIA Portal → PLCSIM TCP three-way handshake and the S7 download PDUs. If Wireshark shows the engineering station transmitting but no responses, the problem is downstream — typically Promiscuous Mode is still not applied to the correct Portgroup.
6. Related Configuration Points
6.1 PLCSIM Virtual Ethernet Adapter Selection
PLCSIM Advanced binds the simulated CPU to a single Windows network interface. The instance dialog presents the list of available interfaces, including physical adapters and the PLCSIM Virtual Ethernet Adapter. The selection is per-instance and persistent across reboots of the simulator service.
| Adapter Type | When to Use | Notes |
|---|---|---|
| PLCSIM Virtual Ethernet Adapter | Distributed mode; PLCSIM on one host, TIA on another | Requires Promiscuous Mode if host is a VM on a shared vSwitch |
| Physical NIC | PLCSIM on a dedicated physical host connected to the engineering LAN | No Promiscuous Mode requirement |
| Microsoft Loopback Adapter | Local-only testing | Used when PLCSIM and TIA Portal are on the same host; not appropriate for distributed mode |
A common mistake is to bind PLCSIM to the Local Area Connection when the host's intended distributed network is actually a different physical interface (e.g. a separate NIC for the engineering VLAN). When binding to a wrong interface, the simulator responds only on that interface, and the remote engineering station will not see the CPU at all — different symptom from the Promiscuous Mode issue, but worth verifying with ipconfig /all and the instance IP.
6.2 Windows Network Stack Considerations
The PLCSIM Virtual Ethernet Adapter is a kernel-mode NDIS driver. The following host-side conditions interfere with distributed-mode operation:
-
Windows Firewall: Must allow inbound traffic on the simulator's TCP ports (typically TCP/102 for S7-communication). Even with Firewall reported as off, verify with
netsh advfirewall show allprofiles. - Third-party endpoint protection: Some enterprise security suites inject a filtering driver above NDIS and silently drop frames whose source/destination MAC does not match a known binding. Disable or whitelist PLCSIM in such suites before testing.
- Hyper-V vSwitch (nested virtualization): If the PLCSIM host is itself a Hyper-V VM with the "Virtual Switch Manager" in default mode, frame handling mirrors the ESXi problem. Use an External switch bound to a Promiscuous-Mode-enabled physical NIC.
6.3 TIA Portal Compatibility Matrix
The PLCSIM Advanced V2.0 release was shipped alongside TIA Portal V15 and updated for V15.1, V16, V17, and V18 in subsequent updates. TIA Portal V14 SP1 is technically compatible with PLCSIM Advanced V2.0 but has known limitations with newer CPU firmware versions:
| TIA Portal Version | PLCSIM Advanced V2.0 Compatible | S7-1500 CPU Firmware | Notes |
|---|---|---|---|
| V14 SP1 | Yes (with update) | Up to V2.5 | Some V2.6+ firmware features not simulated |
| V15 | Yes | Up to V2.6 | Recommended minimum |
| V15.1 | Yes | Up to V2.6.6 | Improved distributed-mode stability |
| V16 / V17 | Yes (PLCSIM Advanced V2.0 + hotfix) | V2.7+ | Confirm hotfix installation |
Mismatched versions — for instance, TIA V16 trying to load a project targeting CPU firmware V2.9 into a PLCSIM V2.0 instance that only supports up to V2.6 — produce a download-time error rather than the visible-but-unloadable fingerprint. The fingerprint remains characteristic of the network-layer issue.
7. Status Indicators and Other Non-Simulated Behaviors
A separate but commonly confused limitation applies when using "Extended download to device" in TIA Portal: the CPU status-indicator LEDs are not simulated by PLCSIM Advanced. This is documented in the PLCSIM Advanced user manual and applies regardless of network configuration. The behavior affects:
- RUN/STOP/ERROR LED transitions during download
- MAINT (maintenance) LED state changes
- Link/Activity LEDs on the PROFINET ports of the simulated CPU
If a user observes that download completes successfully but no LED change is visible on the PLCSIM instance window, this is expected behavior, not a network problem. PLCSIM Advanced V2.0 and later simulate the operational state of the CPU internally (the instance dialog reports the current state) but the visual LED indicators are reserved for hardware targets.
8. PLCSIM Advanced and Safety Programs
PLCSIM Advanced supports testing of fail-safe (F-CPU) programs. The F-program runs in the same simulated CPU instance as the standard program and shares the same network identity. No additional Portgroup configuration is required beyond what is needed for the standard program.
Per the TIA Portal safety programming documentation (linked in the references at the bottom of this article), the F-CPU is simulated when:
- The TIA Portal project has a Safety Administration Editor configured.
- The F-CPU in the project is an S7-1500F / ET 200SPF variant (or S7-1500 with F-capability activated).
- PLCSIM Advanced instance is started with the matching CPU type.
- The download target includes both the standard and safety programs.
If distributed mode download is configured correctly (Promiscuous Mode enabled), safety program download follows the same path and completes with the standard program.
9. PLCSIM Advanced Versions and the Fix
The Promiscuous Mode requirement is not specific to PLCSIM Advanced V2.0. It applies to all PLCSIM Advanced versions from the initial V1.0 release through V7.0 (current at the time of writing) when used in distributed mode inside a virtualized host. Newer versions add CPU firmware coverage and additional features but do not change the underlying network model. The same vSwitch setting applies.
Recommended reference for the architecture overview: S7-PLCSIM Advanced - Getting Started (PDF). The "Getting Started" document includes a network-architecture diagram that confirms the Virtual Ethernet Adapter model and the broadcast/unicast handling described above.
10. Diagnostic Decision Matrix
Use the following matrix to localize the failure mode before applying any change:
| Symptom | Likely Layer | Action |
|---|---|---|
| PLCSIM not visible in "Accessible devices" | L3 / firewall / wrong adapter | Verify IP subnet, ping test, firewall rules, adapter selection |
| Visible but Flash/Load fails (this article) | L2 / Promiscuous Mode | Enable Promiscuous Mode on vSwitch Portgroup |
| Flash succeeds, Load fails with version error | Firmware mismatch | Match TIA Portal project version to PLCSIM-supported CPU firmware |
| Load succeeds, no LED transition visible | PLCSIM limitation | Expected behavior; LEDs are not simulated |
| Intermittent failures with high CPU load | Performance / timeout | Reduce simulator CPU load; increase TIA Portal download timeout |
| Successful locally, fails remotely | Distributed-mode network | Confirm Promiscuous Mode + adapter binding |
11. Field-Engineering Notes
- Apply Promiscuous Mode to the smallest possible scope. Create a dedicated Portgroup (or VLAN-backed Portgroup) for the PLCSIM host VM, attach only that VM, and enable Promiscuous Mode on the Portgroup rather than on the entire vSwitch. This keeps the L2 exception isolated to the engineering test network.
- Document the deviation. Promiscuous Mode triggers audit findings in many OT environments. Document the change, the justification, the affected VM, and the rollback procedure in the site's network exception register.
- Test the rollback. Before applying the fix, verify that disabling Promiscuous Mode immediately stops distributed-mode downloads — this confirms the setting is the actual cause and not coincidentally enabled.
- Check for nested virtualization. If the PLCSIM host VM is itself hosted on an ESXi host that is itself a VM (nested ESXi), Promiscuous Mode must be enabled at every layer of vSwitch in the chain, including the outer physical ESXi.
- Confirm firmware of the S7-1500 CPU in the TIA project matches what PLCSIM Advanced can simulate. The flash operation may succeed even when the load fails because of a firmware mismatch — but a fingerprint of "visible + flash fails" still points to the network issue, not firmware.
12. FAQ
Why does PLCSIM Advanced V2.0 appear in TIA Portal's accessible devices list but fail to load from a remote PC?
The PLCSIM Virtual Ethernet Adapter uses a MAC address distinct from the host's physical NIC. Discovery frames resolve to the physical MAC and pass through the ESXi vSwitch, but flash/load frames may resolve to the virtual MAC and are dropped unless Promiscuous Mode is set to Accept on the Portgroup that carries the PLCSIM VM.
Do I need Promiscuous Mode if PLCSIM Advanced is installed on a physical PC rather than a VM?
No. Promiscuous Mode is a virtual-switch feature. When PLCSIM Advanced runs directly on a physical Windows host with its own NIC, the host network stack processes all frames destined for the local interface without requiring vSwitch-level override. Promiscuous Mode is only required when PLCSIM is hosted on a VM behind a vSphere vSwitch.
Does enabling Promiscuous Mode affect the simulated S7-1500 safety program download?
No. The safety program is downloaded through the same S7-communication channel as the standard program. Once the network layer is correctly configured for distributed mode, both standard and safety downloads follow the same path and complete normally.
Why does PLCSIM Advanced not simulate the CPU status-indicator LEDs during "Extended download to device"?
The PLCSIM Advanced architecture simulates the CPU's logical state but reserves the LED indicators for physical hardware targets. This is documented behavior, not a configuration error. The PLCSIM instance dialog reports the current CPU state (RUN/STOP/ERROR) directly, even when the LEDs do not visually transition.
Which TIA Portal versions are compatible with PLCSIM Advanced V2.0 in distributed mode?
TIA Portal V14 SP1 (with the matching update), V15, V15.1, V16, and V17 are all compatible. Newer TIA Portal versions require a PLCSIM Advanced hotfix to ensure full coverage of newer S7-1500 CPU firmware versions, but the distributed-mode network configuration requirements (Promiscuous Mode) do not change between TIA Portal versions.
How do I confirm the correct Portgroup is selected for the fix?
In vSphere, edit the VM settings → Network Adapter → confirm which network label the adapter is connected to. Match that label to the Portgroup name under Host → Configure → Networking → Virtual Switches. Apply Promiscuous Mode to that specific Portgroup, not to other Portgroups that are not carrying PLCSIM traffic.
Can I use a Hyper-V or VirtualBox VM as the PLCSIM Advanced host instead of ESXi?
Yes, but the equivalent configuration must be applied. On Hyper-V, use an External virtual switch in "Allow management operating system to share this network adapter" mode and verify that the PLCSIM Virtual Ethernet Adapter can receive frames with non-host MAC addresses. On VirtualBox, set the attached adapter to "Promiscuous Mode: Allow All" in the network settings of the VM.