Problem Overview
The SIMATIC SIMIT Simulation Platform OPC DA client coupling is a documented integration path for connecting SIMIT virtual commissioning projects to live process data sources. Field installations routinely fail with the message OPC server cannot be reached when the client attempts to subscribe to a remote OPC Classic server, even when the same workstation can browse and subscribe to that same server through third-party OPC explorers (Matrikon OPC Explorer, Siemens OPC Scout V10) without issue.
This error does not indicate a network problem, a hostname resolution failure, or a missing server. It is a deterministic failure that originates inside the SIMIT OPC DA client runtime and is governed by the OPC Data Access specification compliance of the SIMIT build installed on the engineering workstation.
Symptoms
The failure presents as a fast, near-instantaneous error response. Typical symptoms reported in the field:
- SIMIT project starts in RUN mode and the OPC DA client coupling transitions to
Faultedstate within 1-2 seconds. - Message log shows
OPC server cannot be reachedimmediately on coupling activation, before any subscription is attempted. - Adding a known tag (point) to the coupling produces the identical message when the project is run.
- The remote server is reachable:
Matrikon OPC Explorer,Siemens OPC Scout V10, andOPC Expertcan browse, subscribe, and read/write tags on the same machine. -
ping,Test-NetConnectionon port 135 (RPC endpoint mapper), andtelnetto the OPC server's port all succeed. - Wireshark trace shows no SIMIT-originated DCOM bind traffic to the remote host - the SIMIT client aborts the connection during initial capability negotiation.
Root Cause Analysis
Three independent root causes produce this fault. They are additive: fixing one often exposes the next.
Cause 1 - OPC DA Specification Version Mismatch (Primary)
SIMIT V8.0 and the V8.1 base release ship with an OPC DA client that supports only OPC Data Access 3.0. Earlier specifications (OPC DA 1.0 and 2.0) are intentionally disabled at the COM proxy layer. Many production OPC servers (Siemens WinCC, PCS 7, older Matrikon Simulation Server, custom in-house DCOM servers) advertise themselves as OPC DA 1.0 or 2.0 servers, or as multi-version servers that prioritize legacy handshakes.
When SIMIT V8.0 sends an IOPCCommon::GetStatus or IOPCServer::GetStatus call, the proxy only accepts the DA 3.0 OPCSERVERSTATUS structure. A 1.0/2.0 server returns a structure of a different binary layout, and SIMIT's strict typed unmarshaller rejects the response. The COM runtime then surfaces this as RPC_E_DISCONNECTED (0x80010108) or simply a failed bind, which SIMIT renders as OPC server cannot be reached.
Affected versions and the fix matrix:
| SIMIT Version | OPC DA Support | Resolution |
|---|---|---|
| V8.0 | DA 3.0 only | Upgrade to V8.1 Update 1 or later |
| V8.0 Update 1 | DA 3.0 only | Upgrade to V8.1 Update 1 or later |
| V8.1 (base) | DA 3.0 only | Apply Update 1 |
| V8.1 Update 1 | DA 1.0, 2.0, 3.0 | No action required |
| V9.0 and later | DA 1.0, 2.0, 3.0 + OPC UA client | No action required |
| V10 / V11.3 | OPC UA client (DA removed) | Migrate to UA coupling |
Cause 2 - DCOM Security and OPCEnum Permissions
Even with the DA version mismatch resolved, a remote OPC server still requires a fully configured DCOM path on both endpoints. SIMIT must be able to:
- Resolve the remote host via NetBIOS or DNS.
- Contact the
OPCEnumservice on the remote host (registered as a COM catalog enumerator over RPC port 135). - Launch the OPC server process on the remote host under a security context that has access to the server's
AppID. - Establish a callback channel from the server back to the SIMIT client (reverse COM connection).
Disabling DCOM security across the board is a valid diagnostic step on an isolated test network, but it does not resolve the OPCEnum ACL on Windows Server installations where the OpcEnum service runs under the local system or a service account that has not been granted remote launch rights.
Cause 3 - Clock Skew Between Client and Server
OPC DA 3.0 added a server keep-alive and band-based update mechanism that includes a ServerBandwidth negotiation. SIMIT's COM marshalling layer validates the Bandwidth field against a window derived from the local system clock. When the client and server clocks differ by more than the configured tolerance (default 5 minutes in OPC DA 3.0 spec, but some servers enforce tighter windows), the connection is dropped before any tag read is attempted. The error path here also manifests as OPC server cannot be reached in SIMIT because the disconnect occurs during IConnectionPoint::Advise.
Diagnostic Procedure
Run these checks in order. Each one isolates one of the three root causes above.
- Verify SIMIT build version. Open SIMIT, navigate to Help → About. Confirm whether V8.0, V8.0u1, V8.1 base, V8.1u1, V9.0+, or V10/V11 is installed. Cross-reference against the table in Cause 1. If the build is V8.0/V8.0u1/V8.1 base, stop here and plan an upgrade before continuing.
- Verify remote server OPC DA compliance. On the engineering workstation, open Matrikon OPC Explorer or OPC Scout V10 and connect to the remote server. Right-click the server entry and read the Specification or Server Capabilities dialog. Note whether it advertises DA 1.0, 2.0, 3.0, or multiple. If it is DA 1.0/2.0 only and SIMIT is pre-V8.1u1, the upgrade is mandatory.
-
Validate DCOM path independently. Use
dcomcnfgon both machines, expand Component Services → Computers → My Computer → DCOM Config. Locate the target server'sAppIDand confirm the launch and access permissions include an account that exists on both machines. Then verify theOPCEnumservice is running:sc \\REMOTE_HOST query OpcEnum. If stopped, start it and set the startup type to Automatic. -
Check clock skew. Run
w32tm /monitor /computers:REMOTE_HOSTon the SIMIT workstation. A skew greater than 30 seconds between the two systems is a problem. Configure a common NTP source:w32tm /config /manualpeerlist:"time.nist.gov" /syncfromflags:manual /reliable:YES /updateand force a resync:w32tm /resync /force. -
Capture COM traffic. Install Wireshark on the SIMIT machine and filter on
dcerpcduring the SIMIT coupling activation. You should see: (a) a TCP SYN to port 135, (b) anep_map(endpoint map) request, (c) a bind to the server'sAppIDGUID, and (d) anIOPCServer::GetStatuscall. The absence of any traffic confirms SIMIT is rejecting the server during the COM proxy selection, which is the signature of the DA version mismatch.
Resolution
Resolution A - Upgrade SIMIT (Permanent Fix)
Apply the upgrade path indicated in the affected-versions table. For V8.x sites that cannot move to V9/V10, install V8.1 Update 1 over the existing V8.1 installation. The update preserves the project files, coupling configurations, and license keys. After installation:
- Open the project containing the OPC DA client coupling.
- Re-validate the coupling: open Couplings → OPC DA Client → Properties and confirm the server CLSID resolves to a DA 1.0/2.0/3.0 server.
- Start the project in RUN mode. The
OPC server cannot be reachedmessage should not appear; the coupling should transition toConnectedwithin 2-3 seconds.
Resolution B - Configure DCOM Properly
On the remote OPC server host (Windows machine hosting the OPC server):
- Open
Component Servicesviadcomcnfg.exeas Administrator. - Navigate to Component Services → Computers → My Computer. Right-click and select Properties.
- On the Default Properties tab: enable Enable Distributed COM on this computer, set the default authentication level to Connect (or Packet Privacy for production), and the default impersonation level to Identify.
- On the COM Security tab: under Access Permissions and Launch and Activation Permissions, add the user account under which the SIMIT client is running (typically a domain user or a local user mirrored on both machines with the same password). Grant both Local Access and Remote Access.
- Under DCOM Config, locate the OPC server's
AppID. Right-click and open Properties. On the Security tab, override the defaults to give the SIMIT user Launch and Activation rights. - On the Endpoints tab, ensure that at least one endpoint uses a static port and that the Windows Firewall allows inbound traffic on that port. For dynamic ports, add the OPC server to the Windows Firewall exception list.
- Confirm the
Remote Registryservice is running on the server (sc query RemoteRegistry). It is required for COM activation over the network.
On the SIMIT engineering workstation:
- Open
dcomcnfgand confirm Enable Distributed COM is on. - Under COM Security → Access Permissions, add the
ANONYMOUS LOGONandEVERYONE groups with Allow Local Access and Allow Remote Access. This is a diagnostic concession; tighten it for production. - Add the remote OPC server's hostname or IP to the Windows Firewall inbound rule set for
%SystemRoot%\System32\dllhost.exe.
Resolution C - Synchronize Clocks
Both the SIMIT workstation and the OPC server host must have a time offset of less than 5 seconds. Use the same NTP source for both:
- On both machines, set the Windows Time service to automatic:
sc config W32Time start= autoandnet start w32time. - Configure both to peer with the same authoritative time source:
w32tm /config /manualpeerlist:"PTB.DE" /syncfromflags:manual /reliable:YES /update(substitute the corporate NTP host as required). - Force an immediate resync:
w32tm /resync /force. - Verify:
w32tm /query /statusshould report Phase: Locked and a small offset (sub-second).
Resolution D - Migrate to OPC UA Client Coupling (V10 / V11.3)
From SIMIT V10 onward, the legacy OPC DA client coupling is replaced by the OPC UA client coupling as described in the official SIMIT V11.3 SP manual (Siemens ID 109996325). The migration path is:
- Open the SIMIT project. In the project navigation, right-click Couplings and select New coupling.
- From the coupling type list, select OPC UA client.
- Enter the OPC UA server endpoint URL:
opc.tcp://<remote-host>:4840(or the manufacturer's published port). - Configure security policy. For a non-production network, None is acceptable; for production, use Basic256Sha256 with a signed certificate.
- Browse the UA address space from the SIMIT coupling editor and import the desired nodes.
The OPC UA path removes DCOM entirely and is not subject to the DA 1.0/2.0/3.0 specification negotiation that causes the legacy OPC server cannot be reached error.
Verification
After applying the resolution, confirm the fix with the following checks:
- Open the SIMIT project and start it in RUN mode.
- In the coupling status panel, the OPC DA client (or OPC UA client) coupling should report
Connectedwithin 3 seconds of project start. - Force a tag read in the SIMIT signal monitor for a known point. The value should update within the configured update rate (default 1000 ms).
- Check the message log: the
OPC server cannot be reachedmessage must be absent. Acceptable log entries areOPC server connectedand per-tagSubscription createdentries. - Disconnect the remote server network cable (or stop the OPC server service) and confirm SIMIT reports a deterministic error such as
OPC server lostrather than the genericcannot be reached- this confirms the underlying COM/UA path is functioning.
Error Code Reference
| Symptom | Hex / HRESULT | Root Cause | Fix |
|---|---|---|---|
| OPC server cannot be reached (fast, no traffic) | 0x80010108 (RPC_E_DISCONNECTED) or proxy rejection | DA 1.0/2.0 server vs. SIMIT 8.0 DA 3.0-only client | Upgrade to V8.1u1 or later |
| OPC server cannot be reached (with bind traffic) | 0x80070005 (E_ACCESSDENIED) | DCOM launch/activation ACL | Reconfigure DCOM per Resolution B |
| OPC server cannot be reached (intermittent) | 0x8001011A (RPC_E_NO_CONNECTION) | Clock skew or callback blocked | NTP sync and reverse DCOM port |
| Coupling enters Faulted after 5 minutes | 0x80010114 (RPC_E_CONNECTION_LOST) | Server keep-alive timeout | Increase keep-alive, check network |
| OPC UA client returns BadCertificateUntrusted | 0x801A0000 / UA status 0x801A0000 | UA server certificate not in SIMIT trust store | Import server cert into %ProgramData%\Siemens\Automation\SIMIT\<version>\pki\trusted
|
Platform Compatibility Matrix
| SIMIT Build | OS Support | OPC DA Client | OPC UA Client | Notes |
|---|---|---|---|---|
| V8.0 / V8.0u1 | Windows 7 / Server 2008 R2 | DA 3.0 only | No | Upgrade to V8.1u1 minimum for DA 1.0/2.0 servers |
| V8.1 (base) | Windows 7 / Server 2008 R2 | DA 3.0 only | No | Apply Update 1 |
| V8.1 Update 1 | Windows 7 / Server 2008 R2 / Windows 10 | DA 1.0, 2.0, 3.0 | No | Recommended minimum for legacy DA environments |
| V9.0 | Windows 10 / Server 2016 | DA 1.0, 2.0, 3.0 | No | Same DA behavior as V8.1u1 |
| V10 | Windows 10 / Server 2019 | DA removed | Yes | OPC UA client required |
| V11 / V11.3 | Windows 10 / Server 2019 / 2022 | DA removed | Yes | Current release; see ID 109996325 |
Field-Proven Caveats
- The
OPC server cannot be reachedmessage text in the SIMIT log is generic. It is the same string for DCOM failure, DA version mismatch, clock skew, and outright network unreachability. Always begin with the diagnostic procedure above rather than treating the message as a definitive diagnosis. - Disabling DCOM security globally (COM Security → Edit Limits → All Anonymous Users, all permissions) is acceptable on a fully isolated engineering VLAN, but it should never be the final state on a machine connected to a production control network.
- The SIMIT OPC DA client uses the workstation's interactive logon identity for DCOM authentication. If SIMIT is run as a service (Windows Service, not interactive), the service account must be granted the same DCOM rights on the remote host.
- For SIMIT V10/V11.3 OPC UA client couplings, the server certificate must be added to the SIMIT trust store. SIMIT does not honor the Windows certificate store for UA trust - it maintains its own PKI directory at
%ProgramData%\Siemens\Automation\SIMIT\<version>\pki\trusted. - When migrating from a SIMIT V8.x OPC DA coupling to a V10/V11.3 OPC UA coupling, the tag names do not transfer automatically. The UA address space uses a different namespace; tags must be re-mapped in the SIMIT signal editor.
Related Diagnostics - Process Simulate 12 Integration
SIMIT is also deployed as an OPC server to upstream tools such as Tecnomatix Process Simulate 12. In that topology, Process Simulate subscribes to a SIMIT OPC server. The same DA version rules apply in reverse: if Process Simulate's OPC client supports only DA 1.0/2.0, the SIMIT V8.0 DA 3.0-only build is incompatible. The OPC UA path is the recommended forward direction for these integrations as well.
FAQ
Why does SIMIT v8.0 fail to connect to a remote OPC server when Matrikon OPC Explorer and Siemens OPC Scout V10 connect without issue?
SIMIT v8.0 (and v8.0u1 and v8.1 base) ships with an OPC DA 3.0-only client. Older OPC servers that negotiate DA 1.0 or DA 2.0 are rejected by SIMIT's strict typed proxy. Matrikon OPC Explorer and OPC Scout V10 are multi-version clients and accept the legacy handshake. Upgrade SIMIT to v8.1 Update 1 or later to restore compatibility with DA 1.0/2.0 servers.
What is the fastest way to confirm the OPC DA version mismatch is the cause of my 'OPC server cannot be reached' error?
Capture Wireshark traffic on the SIMIT workstation while activating the coupling. If the SIMIT client never opens a TCP session to the remote OPC server (no SYN to port 135, no DCOM bind), the failure is occurring at the COM proxy layer during OPC DA version negotiation, which confirms the version mismatch. Any other error path produces visible bind traffic before failing.
Does disabling DCOM security on both machines resolve the 'OPC server cannot be reached' error?
It can resolve DCOM permission-related failures (HRESULT 0x80070005), but it does not resolve an OPC DA 1.0/2.0 vs. 3.0 specification mismatch. On SIMIT v8.0 against a DA 1.0/2.0 server, the failure persists even with full DCOM relaxation. The upgrade is the only complete fix for that case.
How do clock-skew failures between the SIMIT client and the OPC server manifest?
OPC DA 3.0 keep-alive and bandwidth negotiation are clock-sensitive. A skew greater than 5 seconds causes the connection to drop during IConnectionPoint::Advise, which SIMIT logs as OPC server cannot be reached. Force NTP synchronization on both machines with w32tm /resync /force and verify with w32tm /query /status that the phase is Locked.
Can I migrate an existing SIMIT v8.x OPC DA client coupling to OPC UA without rebuilding the project?
The project structure and all signals are preserved, but the tag names must be re-mapped. SIMIT v10 and v11.3 do not auto-translate DA ItemIDs to UA NodeIDs. You must add a new OPC UA client coupling, browse the UA address space, and re-bind each imported point in the signal editor. The legacy OPC DA coupling is removed in v10 and later.
Where do I find the official SIMIT OPC client configuration documentation?
For legacy OPC DA, refer to the SIMIT V8.1 help system and the Siemens Industry Online Support entry referenced in the SIMIT V8.1 manual. For the current OPC UA client coupling in SIMIT V10/V11.3, refer to Siemens ID 109996325 - SIMATIC SIMIT Simulation Platform (V11.3 SP…).