Resolving SIMATIC NET OPC Server Remote Access from Excel
Overview of the SIMATIC NET OPC Architecture
Siemens SIMATIC NET provides an OPC DA (Data Access) server that is registered under the programmatic identifier OPC.SimaticNET. When SIMATIC NET PC Software is installed on an industrial PC or a Field PG, the OPC service runs as a local DCOM (Distributed Component Object Model) object that can be consumed by any OPC DA 2.0/3.0 client, including the bundled OPC Scout V10 utility, third-party SCADA packages, and Microsoft Excel through the OPC Automation 2.0 wrapper.
The deployment in the original failure case is typical of a commissioning engineer setup:
-
Field PG 1 (Siemens-lapp1): engineering station that successfully consumes
OPC.SimaticNETon Field PG 2. - Field PG 2 (Siemens-lapp2): the OPC server host, runs the full SIMATIC NET PC Software with an active S7 channel.
- Desktop PC: a plain Windows workstation that has SIMATIC NET "Networking for Industry PC / Software Edition 2005 + HF1" installed (the editor/client role, not a server role).
The reported symptom is that when OPC Scout on the desktop PC browses the network and expands the Siemens-lapp2 node, the OPC.SimaticNET entry never appears. The node shows the sand-clock (waiting cursor) for 10–15 seconds and then collapses. Only the local entry OPC.SIMATICNET (note the case difference) is visible on the desktop PC, which is the registered ProgID read from the local registry rather than the remote class factory.
OPC.SimaticNET (remote) and OPC.SIMATICNET (local) is intentional in OPC Scout. Selecting the local ProgID on a machine that has SIMATIC NET installed routes the request through the local channel subsystem instead of through DCOM. This is the recommended client path on a workgroup network and is the first technique to try before touching DCOM.Problem Details
Observed symptoms
- Ping between desktop and Field PG 2 succeeds, all three PCs are members of the same Windows workgroup.
- Windows Firewall is reported as disabled on all three machines.
- Browsing from the desktop PC with OPC Scout: expanding the
Siemens-lapp2network node shows the sand-clock for 10–15 seconds, then collapses without displaying any server. - Expanding the
Siemens-lapp1node (which has SIMATIC NET installed identically) shows the same sand-clock, but theOPC.SimaticNETnode becomes visible after the delay because the PC has a local SIMATIC NET installation that the local ProgID lookup reaches. - Following the procedure in Siemens Application Note C79000-G8976-C156-14, chapter 4.7 (Configuring OPC Server Access) does not resolve the issue.
- OPC Scout on the desktop PC can read and write tag values against the local ProgID without problem.
Software configuration
| Station | Role | Software |
|---|---|---|
| Siemens-lapp1 (Field PG 1) | OPC client / engineering | Full SIMATIC NET PC Software, STEP 7 / TIA Portal, OPC Scout V10 |
| Siemens-lapp2 (Field PG 2) | OPC server | Full SIMATIC NET PC Software, S7 channel active, OPC Scout V10 |
| Desktop PC | OPC client / Excel host | SIMATIC NET "Networking for Industry PC / Software Edition 2005 + HF1", OPC Scout V10, Microsoft Excel |
Reference configuration from the Siemens Industry Online Support entry id 23829402, "SIMATIC NET – Commissioning PC Stations", and the OPC server commissioning section of manual C79000-G8976-C156-14 chapter 4.7: see Siemens Industry Online Support.
Root Cause Analysis
There are three layered causes that produce the exact symptom described. They must be addressed in order, because the slowest link in the chain is the one the client experiences first.
1. Local versus remote ProgID resolution
OPC Scout presents servers in two forms:
-
Local – the registered ProgID is read from the registry of the client machine. Displayed as
OPC.SIMATICNET(uppercase as registered by the SIMATIC NET installer). Lookup is in-process and immediate. - Remote – the ProgID must be resolved on the server machine through DCOM, which means the COM subsystem on the server has to enumerate the running class factory, authenticate the call, and launch the object under the configured identity. The slow sand-clock and the collapse of the node are the typical fingerprint of DCOM authentication timing out or being denied.
If a user does not have the right to enumerate the class factory on the remote machine, the client waits for the DCOM default timeout (typically 8–15 seconds, depending on Windows version) and then abandons the call. This is exactly the 10–15 second sand-clock observed in the original case.
2. Default DCOM user identity is the interactive user
On a fresh Windows installation, DCOM objects are launched under the identity of the currently logged-on interactive user. If the desktop user logs in as DESKTOP\Engineer and tries to launch a DCOM object on Field PG 2 where the logged-on user is FIELDPG2\Admin, the launch will fail unless:
- Both accounts are domain accounts (the Kerberos/NTLM delegation path), or
- Matching local accounts exist on both PCs with the same username and password, or
- The COM Security "Launch and Activation Permissions" have been explicitly configured to grant anonymous launch and the server identity is set to The launching user.
3. Anonymous or "Everyone" removal after Windows XP SP2
Starting with Windows XP SP2 and carried forward into every later Windows version, the default COM Security policy on a workstation is to remove Everyone from the launch and access lists. The installer of SIMATIC NET adjusts the local DCOM policy to grant the local SIMATIC NET group, but it cannot do this on a remote machine. The remote launch is denied because the default access list is empty or does not include the desktop user.
Solution Strategy
The resolution requires three coordinated changes on Field PG 2 (the OPC server host) and one verification on the desktop client. The exact sequence is important – changing only the COM Security default is not sufficient, the class-specific identity must also be set.
- Define explicit DCOM access and launch permissions for the user or group that the desktop PC will log in as.
- Configure the COM Security default identity for
OPC.SimaticNETto a known system account (typically The launching user for workgroup scenarios or The interactive user for single-user consoles). - On the desktop client, change the connection from Remote OPC.SimaticNET to Local OPC.SIMATICNET and let the SIMATIC NET channel subsystem forward the call to Field PG 2 through the configured S7 channel. This bypasses DCOM entirely.
- Confirm with OPC Scout V10 from the desktop that tags are browsable and writable.
Prerequisites
Before changing the configuration, confirm each of the following on Field PG 2 and on the desktop PC. Each prerequisite is independently a failure point.
| # | Check | Tool | Expected result |
|---|---|---|---|
| 1 | Network reachability |
ping Siemens-lapp2 from desktop |
Reply < 1 ms with TTL intact |
| 2 | RPC endpoint reachable | telnet Siemens-lapp2 135 |
Connection opens |
| 3 | DNS name resolution | nslookup Siemens-lapp2 |
Resolves to a single IP |
| 4 | User account | Computer Management > Local Users and Groups | Desktop user exists on Field PG 2 with identical password (or domain account) |
| 5 | Services |
sc query "S7DOS" and sc query "RPCSS"
|
STATE: 4 RUNNING |
| 6 | SIMATIC NET version parity | Help > About in SIMATIC NET Configuration Console | Hotfix level identical (e.g. both 2005 + HF1) |
Step-by-Step DCOM Configuration on Field PG 2
Step 1 – Open Component Services
On Field PG 2, run dcomcnfg from the Start > Run dialog. This opens the Component Services MMC snap-in.
Step 2 – Set default COM Security
In the console tree, navigate to Component Services > Computers > My Computer. Right-click My Computer and select Properties. On the Default Properties tab:
- Enable Distributed COM on this computer: checked
- Default Authentication Level: Connect (acceptable for workgroup; use Packet Integrity for higher security)
- Default Impersonation Level: Identify
Switch to the COM Security tab. This tab has three sub-panels: Access Permissions, Launch and Activation Permissions, and Configuration Permissions. Edit each one as follows:
| Permission set | Recommended entry | Access |
|---|---|---|
| Access Permissions |
Everyone (workgroup) or Authenticated Users (domain) |
Allow Local + Remote Access |
| Launch and Activation Permissions |
Everyone or Authenticated Users
|
Allow Local + Remote Launch, Local + Remote Activation |
| Configuration Permissions | Administrators |
Full Control |
Click Apply then OK.
Step 3 – Tune the OPC.SimaticNET class identity
In the console tree, navigate to Component Services > Computers > My Computer > DCOM Config. Scroll to the application named OPC.SimaticNET (or SIMATIC NET OPC Server in the German localisation). Right-click and select Properties:
- General tab: confirm the Application ID matches the one shipped by SIMATIC NET.
- Location tab: Run application on the computer where the data is located must be checked; for an OPC server this is the same PC.
-
Security tab: replace the default "Use default" with Customize, then:
- Launch and Activation Permissions → Edit → add the desktop user or group with full rights.
- Access Permissions → Edit → add the same user or group.
- Configuration Permissions → leave at default or grant Administrators only.
-
Identity tab:
- Select The launching user if the desktop user account exists on Field PG 2.
- Select The interactive user if a single interactive session is always running on Field PG 2.
- Select This user with a dedicated service account for production deployments.
- Endpoints tab: leave defaults unless you have a specific RPC port restriction.
Click Apply then OK.
Step 4 – Confirm the SIMATIC NET service
Confirm the SIMATIC NET service is started and set to Automatic startup. With SIMATIC NET 2005 the service is typically S7DOS; in later editions it may be SIMATIC NET Configuration or a generic SIMATIC NET OPC service. Verify with:
sc query "S7DOS"
sc query "SIMATIC NET Configuration"
Open the SIMATIC NET Configuration Console and verify the OPC server slot is started. If the slot is stopped, the OPC.SimaticNET class is registered but its class factory is not running, which produces a similar collapse with a much shorter delay (sub-second).
Step 5 – Adjust the Windows Firewall
Even with the firewall reported as disabled, the deprecated DCOM ports (TCP 135 plus an ephemeral range allocated by the RPC endpoint mapper) may still be filtered by the Windows Firewall service if it is running. Two options:
- Stop and disable the
MpsSvc(Windows Firewall) andbfe(Base Filtering Engine) services. - Or create an inbound rule allowing TCP 135 and the application
C:\Windows\System32\svchost.exefor the RPCSS service.
Step 6 – Re-test from the desktop
On the desktop PC, run OPC Scout V10 (bundled with SIMATIC NET 2005+). In the OPC Navigator, double-click Local. If the local entry shows OPC.SIMATICNET, click Connect. Confirm tags are browsable. Then create a new server connection and select Remote. Browse the network; expand Siemens-lapp2; the OPC.SimaticNET entry should now expand with the full tag tree.
Configuring the Excel Client
The desktop client in this scenario is Microsoft Excel. There are two supported paths to read and write SIMATIC NET tags from Excel.
Path A – OPC Automation wrapper (Excel VBA)
The SIMATIC NET installation provides the opcdaauto.dll and opcdaae.dll files. In Excel, open the VBA editor with Alt+F11, then Tools > References, and add:
-
OPC Automation 2.0 (
opcdaauto.dll) -
OPC DA Auto 2.0 (
opcdaae.dll) – required for historical access
A minimum working snippet that connects to the local OPC.SIMATICNET and reads one tag every second:
Option Explicit
Dim WithEvents OPCServer As OPCAutomation.OPCServer
Dim WithEvents OPCGroup As OPCAutomation.OPCGroup
Dim OPCItem As OPCAutomation.OPCItem
Sub ConnectToServer()
Set OPCServer = New OPCAutomation.OPCServer
' Local ProgID: works for both local and SIMATIC NET remote channels
OPCServer.Connect "OPC.SIMATICNET"
Set OPCGroup = OPCServer.OPCGroups.Add("ExcelGroup")
OPCGroup.IsActive = True
OPCGroup.IsSubscribed = True
OPCGroup.UpdateRate = 1000
Dim ItemIDs(0) As String
' Symbolic SIMATIC NET item syntax (legacy S7 tag notation)
ItemIDs(0) = "S7:[S7_Connection_1]DB1,W0"
Set OPCItem = OPCGroup.OPCItems.AddItem(ItemIDs(0), 1)
Range("A1").Value = OPCItem.Value
' To write back, use: OPCItem.Write 42
End Sub
For the channel S7_Connection_1 to be visible, the SIMATIC NET Configuration Console on the OPC server (Field PG 2) must contain an S7 channel named S7_Connection_1 with at least one configured connection to the target PLC, and the channel must be active. The S7:[connection]area,offset item syntax is the legacy S7 tag notation; in newer SIMATIC NET editions the symbolic SYM: syntax is preferred.
Path B – OPC Scout copy and paste
The simplest end-user path is the one most often used by engineers commissioning a panel and is the one referred to in Siemens Application Note 23829402 on the Siemens Industry Online Support portal:
- Open OPC Scout V10 on the desktop PC.
- Connect to
OPC.SIMATICNET(local) or browse the network and connect to the remote server. - In the tag tree, drag a tag into the DaVinci watch window.
- Right-click the watch value and select Copy.
- In Excel, paste into a cell. To refresh, copy again or use a macro that re-reads.
Path C – Modern OPC UA alternative (planning only)
For new deployments, consider migrating from DCOM-based OPC DA to OPC UA. The SIMATIC NET OPC UA server is exposed at opc.tcp://<server>:4840 and does not require any of the DCOM configuration described above. OPC UA is the recommended long-term direction for any project commissioning after 2020, because Microsoft has officially deprecated DCOM configuration for OPC. Plan a parallel OPC UA channel alongside the existing DCOM channel during the transition period, then decommission the DCOM path once the UA clients are validated.
Verification Checklist
Use this checklist on both Field PG 2 and the desktop PC before declaring the issue resolved.
| # | Check | Tool | Expected result |
|---|---|---|---|
| 1 | Network reachability |
ping Siemens-lapp2 from desktop |
Reply < 1 ms with TTL intact |
| 2 | RPC endpoint reachable | telnet Siemens-lapp2 135 |
Connection opens |
| 3 | Local server visible | OPC Scout on desktop → Local |
OPC.SIMATICNET present |
| 4 | Remote server visible | OPC Scout on desktop → Remote → Siemens-lapp2 |
OPC.SimaticNET expands without sand-clock collapse |
| 5 | Read a known tag | OPC Scout watch window | Value updates at configured UpdateRate |
| 6 | Write a known tag | OPC Scout write dialog | Value changes in the connected PLC |
| 7 | Excel reads | Excel VBA OPCItem.Value
|
Numeric value appears in cell |
| 8 | Excel writes | OPCItem.Write 42 |
PLC tag updates in STEP 7 / TIA Portal watch table |
| 9 | DCOM errors | Event Viewer > System/Application | No DCOM event ID 10016 errors |
| 10 | Service running |
sc query S7DOS on Field PG 2 |
STATE: 4 RUNNING |
| 11 | Firewall effective state | netsh advfirewall show allprofiles |
All three profiles show State OFF (or RPC rule present) |
| 12 | DCOM launch test | Component Services > DCOM Config > OPC.SimaticNET → right-click → Start | Launches without "Access is denied" |
Troubleshooting Matrix
| Symptom | Probable cause | Corrective action |
|---|---|---|
| Sand-clock 10–15 s, then collapse | DCOM launch denied due to user identity mismatch | Add matching local account on server, or set DCOM identity to The launching user with a domain account |
| Sand-clock < 1 s, then collapse | SIMATIC NET service stopped | Start S7DOS / SIMATIC NET OPC slot from Configuration Console |
| Server not listed at all | RPC ports blocked even with "firewall off" | Stop bfe and MpsSvc, or add firewall rule for TCP 135 + RPC dynamic range |
| Server visible but no tags | S7 channel not configured or not running | Open SIMATIC NET Configuration Console on server, start the channel and connection |
| Server visible, tag read OK, write fails | Item access rights | On server, set DCOM access permission to Everyone and verify tag-level ACL |
| Excel VBA error "Access is denied" | User has not been added to COM Security | Repeat Step 2 above with Authenticated Users
|
| Slow updates > 5 s |
UpdateRate set too low, or default Dataflow Type async |
Increase UpdateRate to 1000 ms; set DataflowType to OPCDataCallback only if needed |
| OPC Scout crash on close | Mixed-version COM components | Install matching SIMATIC NET Hotfix level on both machines |
| "Remote automation" error in Excel | DCOM 135 port blocked at switch/router | Confirm with netstat -an on server, port 135 LISTENING |
| Event ID 10016 in System log | DCOM permission not propagated to class | Use dcomcnfg → My Computer → DCOM Config → OPC.SimaticNET → Security tab and grant explicit access |
| Tag value always 0 / quality Bad | S7 connection in down state | Open Configuration Console, check S7 connection diagnostics, ping the PLC, verify MPI/Profibus/TCP address |
| Local ProgID works, remote ProgID not even after DCOM fix | Firewall silently filtering DCOM even when reported as off | Disable MpsSvc and bfe or add a permanent inbound rule for TCP 135 + RPC dynamic range |
Security and Best-Practice Considerations
-
Avoid
Everyonein production. The default above is acceptable for commissioning in a workgroup, but for a production line restrict the access list to a dedicatedOPC-Operatorsgroup that is replicated on the server. - Use a domain. A Windows workgroup of more than two PCs that all consume the same OPC server is a maintenance hazard; migrate to a domain with Group Policy-driven DCOM settings.
-
Tie update rate to Excel refresh. Setting
UpdateRate = 100with 50 tags at 1 Hz produces 5 000 data-change events per second; this is enough to saturate the DCOM channel. For Excel dashboards, prefer polling the value from the cache on demand rather than using the subscription callback. - Use the SIMATIC NET Local ProgID whenever possible. It bypasses the DCOM launch sequence and uses the SIMATIC NET internal channel forwarding, which is faster and survives workgroup password changes. This is the technique recommended in the original case discussion and is also the default behaviour of OPC Scout when the connection is started by double-clicking a station that has a local SIMATIC NET installation.
- Apply the latest Hotfix. SIMATIC NET 2005 + HF1 is no longer current; later cumulative hotfixes for SIMATIC NET 2008 and 2010+ resolve several DCOM-related issues that match the symptom described. Plan an upgrade during the next plant shutdown and confirm the Hotfix level on Field PG 1, Field PG 2, and the desktop PC are identical.
- Plan the OPC UA migration. Microsoft has officially deprecated DCOM for cross-machine scenarios and recommends OPC UA for new deployments. Keep the DCOM path live during the transition but commission OPC UA in parallel.
Notes on the C79000-G8976-C156-14 Manual
Manual C79000-G8976-C156-14 is the "SIMATIC NET PC Software – S7 OPC Server – Configuration and Diagnostics" edition referenced in the original case. Chapter 4.7 covers the COM Security setup steps that were performed in the original attempt. The manual confirms that the local ProgID on a machine with SIMATIC NET installed is the recommended connection method for engineering clients, and the remote ProgID requires the DCOM configuration sequence shown in Steps 1–6 above. When following the manual on a non-domain workgroup, always replace "domain users" with a local group of identical name and identical password on both machines.
FAQ
Why does the sand-clock appear for 10–15 seconds only on the remote server?
The 10–15 second delay is the default DCOM call timeout on Windows when the server is reachable on the network but the launch is denied by COM Security. The local ProgID lookup is in-registry and immediate, so no delay appears there. Reducing the DCOM timeout in dcomcnfg makes the failure appear faster but does not fix the underlying access denial. The correct fix is to add the desktop user to the COM Security Access and Launch lists on Field PG 2, not to shorten the timeout.
Can I browse the remote OPC.SimaticNET without DCOM configuration?
No. Every cross-machine OPC DA call in SIMATIC NET is a DCOM call. The only way to avoid DCOM configuration is to consume the local ProgID on a machine that itself has SIMATIC NET installed, and let the SIMATIC NET channel subsystem forward the call to the remote S7 or PROFINET device. This is the recommended approach for desktop clients that only need the channel forwarding capability. The local ProgID is uppercase OPC.SIMATICNET, the remote ProgID is mixed case OPC.SimaticNET.
Do I need a full SIMATIC NET PC Software license on the desktop PC to use OPC Scout against a remote server?
OPC Scout V10 ships with both the full SIMATIC NET PC Software and with the "Networking for Industry PC" reduced edition. The reduced edition is sufficient to act as an OPC DA client against a remote server when using the local ProgID and the SIMATIC NET channel forwarding. The full server license is only required on the host that exposes the S7 connection. Confirm the exact license model on the SIMATIC NET price list entry relevant to your edition (2005 + HF1 in this case) before commissioning.
What is the difference between OPC.SimaticNET and OPC.SIMATICNET in the OPC Scout tree?
The case difference is intentional and is set by the SIMATIC NET installer. Uppercase OPC.SIMATICNET denotes the local server registered on the same PC. Mixed-case OPC.SimaticNET denotes the remote server enumeration reached over the network. Selecting the local one on a machine that has SIMATIC NET installed routes the call through the local channel, not through DCOM, which avoids the entire class of authentication problems described in this article.
How do I confirm that DCOM is the failure point and not the SIMATIC NET service?
On the desktop PC, open a command prompt and run dcomcnfg, then navigate to My Computer > DCOM Config and try to launch OPC.SimaticNET from there. If the launch fails with "Access is denied" or "The RPC server is unavailable", DCOM is the cause and the steps in this article apply. If the launch succeeds, the issue is in the SIMATIC NET service or S7 channel and you should inspect the S7DOS state and the Configuration Console log for connection errors.
Does upgrading from SIMATIC NET 2005 + HF1 to a current edition fix the remote access issue?
In many cases, yes. Later SIMATIC NET editions ship a more permissive COM Security default and a Hotfix-level class registration that survives the default Everyone removal introduced after Windows XP SP2. The upgrade should be applied to all three PCs at the same Hotfix level to avoid mixed-version COM registration errors that manifest as OPC Scout crashes on close.