Resolving SIMATIC NET 8.2 OPC DA Remote Connection Failures

David Krause12 min read
OPC / OPC UASiemensTroubleshooting
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

1. Problem Definition

When deploying SIMATIC NET 8.2 as an OPC DA (Classic, COM/DCOM-based) server across two SCADA hosts, a common failure pattern is:

  • The OPC server works locally on each of the two hosts (server-to-self).
  • The OPC server works server-to-server between the two SCADA hosts.
  • A third client PC — same domain, same Windows user, identical DCOM permissions — cannot enumerate or connect to the OPC server list.
  • Other services (e.g. Microsoft SQL Server, file shares) on the same hosts are reachable from the third PC.

This isolation is the fingerprint of a DCOM / COM Security boundary problem, not a network outage, and it is amplified by SIMATIC NET's tightly coupled PC station architecture and its dependency on the SIMATIC NET Configuration Console and the S7DOS Help Service. The symptom is identical on SIMATIC NET 8.1, 8.2, and the V8.2 SP1 update (HF17 and later); the same SIMATIC NET communication settings utility (SimaticComSettings.exe) is used to correct it.

Scope. This article targets SIMATIC NET V8.2 OPC DA (COM/DCOM) remote access from a third Windows client. It does not cover S7 communication to a SIMATIC S7 PLC, PROFINET IO diagnostics, or S7-1200/S7-1500 PUT/GET. OPC UA migration is covered in section 9 as a recommended long-term remediation.

2. SIMATIC NET 8.2 OPC DA Architecture

SIMATIC NET 8.2 implements OPC DA on top of COM/DCOM with two cooperating services per PC station. Understanding them is mandatory before changing permissions.

Component Service / Executable Function Default Account
OPC DA Server SIMATIC NET OPC Server (out-of-process COM) Exposes tags for S7 / S7-1200 / S7-1500 / PROFINET / WinAC Local System or configured user
S7DOS Help Service S7DoS Help Service (S7dos_serv.exe) Station name resolution (PC station index lookup for remote clients) Local System
SIMATIC NET Configuration Configuration Console (s7wsvcx.exe) Local PC station mode and DB configuration Interactive user
COM Security Helper SimaticComSettings.exe One-click DCOM permission hardener Interactive user

The OPC server registers its CLSID under HKEY_CLASSES_ROOT\CLSID and HKEY_LOCAL_MACHINE\SOFTWARE\Siemens\SIMATIC NET\OPCSrv. A remote OPC client first contacts the S7DOS service on UDP/TCP to resolve the station name, then opens an authenticated DCOM channel to the OPC server CLSID. If any of the four layers below fails, the remote client silently reports "Cannot connect to OPC server" while local enumeration still succeeds.

3rd Party Client PCSCADA / Scout SCADA Server #1SIMATIC NET 8.2 SCADA Server #2SIMATIC NET 8.2 ✗ DCOM blocked ✓ Server↔Server Layer 1: Network / Firewall Layer 2: S7DOS Station Resolution Layer 3: DCOM Launch + Access Layer 4: COM Authentication (RPC)

3. Root Cause Analysis

The "works server-to-server, fails from third PC" pattern has five independent causes, each with its own diagnostic fingerprint. Walk them in this order before changing anything.

# Layer Symptom Fast Check
L1 Windows Firewall or intermediate firewall RPC error 0x800706BA (E_RPC_SERVER_UNAVAILABLE), DComLaunch hung Test-NetConnection -ComputerName <Srv> -Port 135
L2 S7DOS Help Service not started / wrong logon Server list empty from third PC; "Cannot find station" in Event Log sc query S7DoS
L3 DCOM Access / Launch permissions missing for third user 0x80070005 (E_ACCESSDENIED) in OPC client trace dcomcnfg → My Computer → COM Security
L4 COM authentication level mismatch (RPC_C_AUTHN_LEVEL_*) 0x80070721 or "CoCreateInstance failed" with no further detail dcomcnfg → Default Properties
L5 SIMATIC NET PC station mode not installed on the client Client cannot enumerate server list even with correct DCOM Check SIMATIC NET Configuration Console on client
Why server-to-server works but third PC fails. The two SCADA servers were likely commissioned with SIMATIC NET's Communication Settings utility, which hardens DCOM for the local machine and the domain group "Siemens SIMATIC NET Users" (or the explicit user accounts). The third PC was never enrolled in that helper. The DCOM identity, launch, and access ACLs are machine-scoped, not user-scoped, so identical Windows users on a non-enrolled machine still fail. This is the single most common SIMATIC NET 8.2 remote-access fault.

4. Solution A — Run the SIMATIC NET Communication Settings Helper

The Siemens-shipped helper configures DCOM, the firewall, and the SIMATIC NET service logon in one pass. Use it on the OPC server PC first, then re-test.

  1. Log in to the OPC server with a Windows account that has local administrator rights.
  2. Launch Start → Siemens Automation → SIMATIC → SIMATIC NET → Communication Settings.
  3. Click Apply. The tool performs five sub-steps:
  • Registers SIMATIC NET OPC server CLSIDs ({B6EACB30-9D4F-11D1-A80A-006008A74BFA} and {B6EACB40-9D4F-11D1-A80A-006008A74BFA}).
  • Sets RPC_C_AUTHN_LEVEL_PKT_PRIVACY (encrypt) on the OPC server CLSID — required for DA 3.0.
  • Adds ANONYMOUS LOGON, EVERYONE, and the configured SCADA user to the DCOM Access and Launch ACLs.
  • Opens Windows Firewall inbound rules for OPCEnum.exe, S7DoS_serv.exe, and the SIMATIC NET OPC server executable.
  • Starts the S7DOS Help Service in auto-start mode.
  1. Repeat the helper on the client PC (third SCADA node) so its own DCOM outbound ACLs match.
  2. Reboot both machines when prompted. SIMATIC NET 8.2 requires a restart for the COM security cache to flush.
Verification step. Immediately after reboot, run dcomcnfg on the server and expand Component Services → Computers → My Computer → DCOM Config → SIMATIC NET OPC Server. Right-click → Properties → Security. The three tabs (Launch, Access, Configuration) must list INTERACTIVE, EVERYONE, and Siemens SIMATIC NET Users with Allow. If a tab shows only Default, the helper did not run with elevation.

5. Solution B — Manual DCOM Hardening for SIMATIC NET

When the helper is unavailable (locked-down corporate image, missing installation media) or when granular audit is required, perform these steps manually. All changes are on the OPC server unless noted.

5.1 Default COM Security Properties

  1. Component Services → My Computer → right-click → Properties → Default Properties tab.
  2. Enable Enable Distributed COM on this computer.
  3. Set Default Authentication Level to Connect for legacy DA 2.0 clients or Packet Privacy for DA 3.0 clients (Scout, WinCC 7.4 SP1, TIA Portal V14+).
  4. Set Default Impersonation Level to Identify.

5.2 COM Security ACLs

Edit My Computer → Properties → COM Security tab.

  • Access Permissions → Edit Limits: add EVERYONE Allow Local + Remote. For hardened environments, replace with the explicit SCADA service account.
  • Launch and Activation Permissions → Edit Limits: add EVERYONE Allow Local Launch, Remote Launch, Local Activation, Remote Activation.
  • Access Permissions → Edit Default: identical scope, plus ANONYMOUS LOGON.
  • Launch and Activation Permissions → Edit Default: identical scope.

5.3 SIMATIC NET OPC Server CLSID Permissions

  1. In DCOM Config locate SIMATIC NET OPC Server (CLSID {B6EACB30-9D4F-11D1-A80A-006008A74BFA} for DA 3.0, {B6EACB40-9D4F-11D1-A80A-006008A74BFA} for DA 2.0).
  2. Right-click → Properties → Security tab → customize all three sections as in §5.2.
  3. Identity tab: keep The launching user for service accounts or This user with the SIMATIC NET runtime account for unattended operation.
  4. Endpoints tab: leave default unless a custom static port is required (e.g. 5000-5020 TCP for Siemens S7 routing).

5.4 OPCEnum and S7DOS Registration

SIMATIC NET 8.2 ships its own OPCEnum.exe (Siemens-internal build, version 8.2.x.y) and S7DOS help service. Re-register on the server with administrative command prompt:

cd "C:\Program Files\Siemens\Automation\SIMATIC.NET\opc2\bins\opcenum"
regsvr32 /u opcenum.exe
regsvr32 opcenum.exe

sc stop S7DoS
sc start S7DoS
sc query S7DoS

6. Solution C — Firewall, RPC, and Network Configuration

DCOM negotiates dynamic TCP ports (1024-65535) via the RPC endpoint mapper on TCP/135. Both Windows Firewall with Advanced Security (WFAS) and any intermediate L3 firewalls must allow:

Port Protocol Source Destination Purpose
135 TCP Client Server RPC Endpoint Mapper
1024-65535 TCP Client Server DCOM dynamic range (or restricted static range)
UDP 6110 UDP Client Server S7DOS station name resolution (legacy)
TCP 49152-49157 TCP Client Server Reserved Win10/Server 2016+ RPC range (override possible)

For a deterministic rule set, restrict the DCOM range with the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Rpc]
"EnableAuthEpResolution"=dword:00000001
"RestrictRemoteClients"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet]
"Ports"="5000-5020"
"PortsInternetAvailable"="N"
"UseInternetPorts"="N"

This binds SIMATIC NET OPC to TCP 5000-5020 only. Then create one inbound rule on the server allowing that exact range from the third client IP.

Quick triage. Before changing registry, temporarily disable Windows Firewall on both client and server and re-test. If the third PC connects with firewall off, you have a rule scope problem, not a DCOM problem. Re-enable and add only the required ports — never leave firewalls disabled in production.

7. Solution D — Authentication, User Rights, and Kerberos Delegation

Identical Windows user accounts are necessary but not sufficient. The third PC must also have:

  • Membership in the local group Distributed COM Users on the server (or the configured OPC group).
  • Log on locally (or Access this computer from the network) right granted to the user account on the server — default for Domain Users.
  • If the SIMATIC NET OPC server runs under a dedicated service account (recommended for production), the SPN HOST/<server-fqdn> must be registered to that account for Kerberos to succeed.

Register the SPN with administrative command prompt on a domain controller:

setspn -S OPCSIMATIC/<server-fqdn> <DOMAIN\service-account>
setspn -L <DOMAIN\service-account>

Then, on the third client PC, force Kerberos delegation for the OPC server name in Setspn + Active Directory Users & Computers → service account → Delegation tab → Trust this user for delegation to specified services → add HOST and cifs against the server SPN.

NTLM vs Kerberos Failure Codes

HRESULT Name Typical Cause Fix
0x80070005 E_ACCESSDENIED Missing DCOM Launch/Access right §5.2 ACL
0x800706BA RPC_SERVER_UNAVAILABLE Firewall / endpoint mapper / RPC service stopped §6 + restart RPCSS
0x80070721 RPC_E_AUTHN_LEVEL_MISMATCH Server encrypts, client allows only Connect §5.1 Default Authentication Level
0x80010119 RPC_E_SERVER_TOO_BUSY Server CPU saturated or COM quota reached Increase SharedSection in registry
0x8001011A RPC_E_CALL_CANCELED Client timed out before RPC handshake Check network latency, MTU

8. Solution E — SIMATIC NET PC Station Mode on the Client

A subtle SIMATIC NET requirement: the client PC must have the SIMATIC NET Configuration Console installed with a PC station of its own, even if it has no S7 connection. The OPC client uses the local PC station index to negotiate the channel. Without it, server browsing succeeds but CoCreateInstance on the OPC server CLSID returns 0x80040154 (CLASS_NOT_REGISTERED) on the client side, masquerading as a server fault.

Install SIMATIC NET 8.2 in Client mode on the third PC. Open Station Configuration Editor, add a new station matching the host name, save, and close. The OPC Scout will then enumerate servers across the network.

9. OPC UA Migration Path

DCOM-based OPC DA is deprecated. SIMATIC NET 8.2 supports OPC UA server on the S7-1200, S7-1500, and WinAC side and OPC UA client on the PC station side. Migration removes every layer covered above.

Property OPC DA 3.0 (DCOM) OPC UA (TCP, no DCOM)
Transport COM/DCOM, RPC over TCP 135 TCP binary or HTTPS, port 4840 (default) or 443
Security RPC authentication levels Application + transport certificates, signing/encryption
Firewall impact Dynamic RPC range required One static port
Platform Windows only Cross-platform
Siemens support lifecycle End of active development (V8.2 final) Primary direction in TIA Portal V17+

To enable OPC UA on SIMATIC NET 8.2:

  1. Open SIMATIC NET Configuration Console → OPC UA.
  2. Activate the OPC UA Server for the configured S7 connection.
  3. Import or auto-generate the server certificate (CN=SIMATIC NET OPC UA).
  4. Add an Endpoint on opc.tcp://<server>:4840 with SecurityPolicy = Basic256Sha256 and MessageSecurityMode = SignAndEncrypt.
  5. Distribute the server certificate to the client's trusted peers (%ProgramData%\Siemens\Automation\OPCUAServer\pki\trusted).
  6. From the third PC, point OPC Scout or any OPC UA client to opc.tcp://<server>:4840 and authenticate with a user token.

10. Verification Procedure

After applying any of the solutions above, run this checklist from the third PC. Each step has a pass/fail criterion.

Step Command / Action Pass Criterion Fail → Section
V1 Test-NetConnection -ComputerName <Srv> -Port 135 TcpTestSucceeded: True §6
V2 Get-Service S7DoS -ComputerName <Srv> Status: Running §4 step 5
V3 Run OPC Scout → OPC.SimaticNET → Server List Both SCADA servers listed §2, §8
V4 Add group Test.Group, item S7:[S7 connection_1]DB1,W0 Quality Good, Value updates §5.3, §7
V5 From third PC, repeat V3 and V4 simultaneously to both servers Both servers respond < 200 ms §6, §10 perf
V6 Reboot third PC; V3-V5 must succeed without re-login Service auto-restart OK §4 step 5, §7

11. Troubleshooting Matrix

Symptom First Action Second Action Third Action
Server list empty from third PC, full from server itself Verify S7DOS service running on server (§4 step 5) Run SimaticComSettings.exe on server Check UDP 6110 between hosts
Server list visible but Add Server fails with 0x800706BA Test-NetConnection to 135 Check intermediate firewall stateful inspection Verify RPCSS service Running on server
Add Server OK, Connect OK, Read returns 0x80070005 Inspect server-side Application Event Log for DCOM error 10016 Run dcomperm against the CLSID ACL Add the connecting user to OPC Users group
Read returns 0x80070721 Match Default Authentication Level on server (§5.1) Match endpoint AuthenticationLevel on client DCOM Config Force legacy Connect if DA 2.0 only
Intermittent drops after 15 min Check DCOM Session Timeout registry value Inspect SMB session limit Disable TCP chimney offload on Broadcom NIC
Works from one third PC, fails from another Compare gpresult /r Check WinRM / WMI group policy Rebuild client with SIMATIC NET install media
Works before Windows update, fails after Review KB article for KB IDs that affect DCOM (e.g. KB5005565) Re-apply SimaticComSettings.exe Pin DCOM group policy via GPO

12. Frequently Asked Questions

Why does my third PC fail to connect to SIMATIC NET 8.2 OPC DA when the two SCADA servers connect to each other fine?

The two SCADA servers were configured by the SIMATIC NET Communication Settings helper, which sets machine-wide DCOM Access/Launch ACLs and starts the S7DOS Help Service. The third PC was never enrolled, so its DCOM outbound and the server's inbound ACLs do not match. Run SimaticComSettings.exe on both server and client, then reboot.

Do I need SIMATIC NET installed on the OPC client PC, or only on the server?

Yes — the client PC must have SIMATIC NET 8.2 installed (Client mode) with a configured PC station in the Station Configuration Editor. Without it, CoCreateInstance on the SIMATIC NET OPC CLSID returns 0x80040154 (CLASS_NOT_REGISTERED) even though DCOM is correct.

Which TCP ports must be open in the firewall for SIMATIC NET OPC DA remote access?

Open TCP/135 (RPC Endpoint Mapper) plus the DCOM dynamic range (default 1024-65535) or a restricted static range such as TCP/5000-5020 if you set PortsInternetAvailable=N in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet. UDP/6110 is also required for S7DOS station-name resolution on legacy SIMATIC NET builds.

What is the equivalent HRESULT for "Cannot connect to OPC server" in SIMATIC NET 8.2?

The generic message maps to one of five HRESULTs: 0x800706BA (RPC_SERVER_UNAVAILABLE), 0x80070005 (E_ACCESSDENIED), 0x80070721 (RPC_E_AUTHN_LEVEL_MISMATCH), 0x80010119 (RPC_E_SERVER_TOO_BUSY), or 0x80040154 (CLASS_NOT_REGISTERED). Enable the COM+ tracing on the server to see the precise value in the Application Event Log.

Should I migrate from OPC DA to OPC UA on SIMATIC NET 8.2?

Yes. SIMATIC NET 8.2 supports both DA and UA, but DA relies on DCOM and is deprecated by both Siemens and the OPC Foundation. Enable OPC UA on TCP/4840 with Basic256Sha256 and SignAndEncrypt; distribute the server certificate to trusted peers; and switch the third client to an OPC UA endpoint. This eliminates every firewall, DCOM, and Kerberos configuration step covered in this article.

Back to blog