Troubleshooting OPC XML DA Error 0x85270206 with SIMATIC S7-300 and CP 343-1 Lean
Intermittent write failures between an OPC XML-DA client, the SIMATIC NET OPC Scout v13, and a SIMATIC S7-300 CPU 315-2 PN/DP behind a CP 343-1 Lean surface in the OPC trace log as HRESULT 0x85270206. The error is non-fatal: a subset of the subscribed values reaches the PLC, while a smaller subset does not, with no deterministic pattern in the failing tags. The root cause is rarely a single broken object; it is the interaction between an inherently best-effort SOAP transport, a tightly resourced CP 343-1 Lean, and an OPC XML-DA configuration that was not engineered for the round-trip latency it actually encounters. This reference decomposes the error code, walks the end-to-end architecture from the enterprise layer through to the S7-300 backplane, and provides a verified diagnostic and remediation procedure for plants that exchange a small set of process variables (typically 5 to 6 tags) through this stack.
1. Problem Definition and Observable Symptoms
The reported failure pattern has the following diagnostic fingerprint:
- Between 5 and 6 process variables are exposed; 1 to 2 occasionally return
E_FAIL/0x85270206on write. - The error is reported by SIMATIC NET OPC Scout v13 (the OPC XML-DA client) when the SOAP response from the XML-DA server carries an "Item write error" with the server-side error code
0x85270206. - Reads on the same items succeed, but the cached read value may diverge from the last successful write, giving the appearance of a "write that did not happen."
- Failures appear more frequently when multiple CP 343-1 Lean units are accessed in parallel from the same XML-DA server instance.
- The CP 343-1 Lean has been bench-tested directly (bypassing the OPC XML-DA stack) and successfully exchanges data with the S7-300, confirming the S7-300 / CP layer itself is healthy.
The error code 0x85270206 is logged in the SIMATIC NET PC station trace. It is documented in the Siemens Industry Online Support entry "Why is the SIMATIC NET OPC server logging error 0x85270206?" as a server-side write error condition originating in the SIMATIC NET OPC XML-DA / S7 channel stack. The exact mapping between the binary code and the underlying fault must be confirmed against that support entry because the high word (facility) identifies the SIMATIC NET OPC XML-DA component while the low word (reason) identifies the specific S7 write-back failure.
2. Reference System Architecture
The failing topology has four logical layers, each with its own boundary that can introduce a SOAP or S7 fault. Engineer the diagnosis by treating each boundary independently.
Key components and catalog numbers used in the reference architecture:
| Layer | Component | Article / Order Number | Role in Error Path |
|---|---|---|---|
| Enterprise | Microsoft BizTalk Server | (customer-licensed) | Source of SOAP requests; rate at which it polls the XML-DA server drives write pressure. |
| XML-DA Server | IIS-hosted OPC XML-DA 1.01 web service | SIMATIC NET OPC XML-DA Server (part of SIMATIC NET PC Software) | Translates SOAP envelopes into S7 writes; can drop a request under load. |
| Client / Bridge | SIMATIC NET OPC Scout v13 | Included with SIMATIC NET V13 (PC software DVD) | Inspects writes, exposes items, logs HRESULTs. |
| Bridge to PLC | SIMATIC NET OPC Server (S7 channel) | Same SIMATIC NET V13 install | Performs S7 PUT/GET to CP 343-1 Lean. |
| Communications | CP 343-1 Lean | 6GK7 343-1CX10-0XE0 | Forwards S7 messages to the CPU; only a fixed number of S7 connections are available. |
| Controller | SIMATIC S7-300 CPU 315-2 PN/DP | 6ES7 315-2EH14-0AB0 | Receives writes; rejects them with a job error if the addressed area is wrong or busy. |
3. Error Code 0x85270206 Decomposition
The HRESULT is a 32-bit value with facility and reason components:
| Field | Bits | Value | Meaning |
|---|---|---|---|
| Severity | 31 | 1 (error) | Hard failure, not a warning. |
| Reserved | 30 | 0 | — |
| Facility | 29–16 | 0x8527 |
SIMATIC NET OPC XML-DA / S7 channel component. Identifies the failing subsystem in the SIMATIC NET stack. |
| Code | 15–0 | 0x0206 |
Server-side write completion error returned by the S7 channel when the CP rejected or timed out the underlying PUT request. |
Combined, 0x85270206 is the SIMATIC NET signature for "an XML-DA Write call did not complete successfully because the S7 write request to the CP 343-1 Lean / S7-300 failed or timed out at the controller level." The exact operational meaning for a given SIMATIC NET version (V12, V13, V14, V15, V15.1, V16) is documented in the Siemens Industry Online Support article ID 63098071; consult that entry against the installed SIMATIC NET build for the definitive textual description.
Cross-reference the HRESULT against the OPC XML-DA 1.01 specification error space:
- Server-side write failures are reported by the XML-DA server inside a
WriteResponseenvelope as an item-levelResultIDthat is a stringified HRESULT. The XML-DA server may also return a SOAP Fault when it cannot parse the request body, per the OPC UA / OPC XML-DA mapping rules (OPC UA Part 6, §7.4.3 XML Encoding). - The classic XML-DA "E_NO_WRITE_RIGHT" result corresponds to client permissions, not to an S7 reject, so it is not the same root cause as 0x85270206.
4. Root Cause Categories
Across the reported deployments, the error always falls into one of six categories. Use this matrix to triage before opening a live trace.
| # | Category | Typical Trigger | Affected Boundary | Distinguishing Symptom |
|---|---|---|---|---|
| 1 | CP 343-1 Lean connection exhaustion | >4 S7 connections in parallel (HMI, PG, OPC, SOAP) | CP ↔ S7-300 | All 6 cells in the OPC Scout server browser eventually return 0x85270206, not just writes. |
| 2 | S7 write rejection at the CPU | Addressed DB does not exist, is compressed, or is read-only; wrong access type on optimized blocks | CPU ↔ CP | Same tag fails every time; tag address validation in STEP 7 (TIA Portal / V5.5) shows the same. |
| 3 | SOAP timeout shorter than the SIMATIC NET write cycle | HTTP timeout = 2 s, SIMATIC NET update rate = 5 s | IIS / XML-DA server ↔ SIMATIC NET | Failures correlate with high write load or slow CPU scan. |
| 4 | Subscription / deadband mismatch | XML-DA Subscribe called with no RequestedSamplingRate and a 0 ms Deadband
|
XML-DA client ↔ server | Reads look fine; only writes issued from outside the subscription show the error. |
| 5 | IIS / WSDL endpoint misconfiguration | Anonymous access disabled, request filtering rejecting large bodies, application pool identity lacking DCOM launch permission | BizTalk ↔ XML-DA server | WSDL retrieval returns HTTP 500, application log shows SOAP extension errors. |
| 6 | Network and switch buffering | Industrial Ethernet switch drops frames on broadcast storms; CP cannot complete the TCP 102 handshake | Physical layer | Errors correlate with multicast/broadcast peaks; intermittent LAN-side port flap on the CP. |
5. Step-by-Step Diagnostic Procedure
Run the procedure in order. Each step is non-destructive; stop when the cause is identified.
-
Capture the SIMATIC NET trace. Open "SIMATIC NET Configuration Console" → "OPC Settings" → enable "Verbose tracing" on the S7 channel. Restart the SIMATIC NET PC station service. Reproduce the failure. The trace writes
0x85270206with the failing item name, the S7 connection handle, and the S7 error code returned by the CPU. - Decouple BizTalk. Use OPC Scout v13 directly to issue the same Write against the failing tag. If OPC Scout succeeds while BizTalk fails, the SOAP boundary (IIS, application pool, HTTP timeout) is the fault. If OPC Scout also fails, the S7 boundary is the fault.
- Validate the CP 343-1 Lean connection budget. In STEP 7 / TIA Portal, open the hardware configuration of the CP 343-1 Lean and inspect "Connection resources." The Lean variant has 4 S7 connections maximum. If the OPC channel and an HMI together already consume 3, only 1 remains for everything else. Move one consumer to a different CP or upgrade to a CP 343-1 (non-Lean) such as 6GK7 343-1EX30-0XE0 with 16 connections.
- Validate the tag addresses in STEP 7. Open the S7 project, online-connect to the CPU, and use "Monitor/Modify" on the same DB / bit memory offset used by the OPC tag. If the CPU returns SF (system fault) for that address, fix the address in the OPC item definition rather than in the CP.
-
Capture the SOAP envelope. Enable failed-request tracing in IIS for the XML-DA virtual directory, or run a packet capture (Wireshark on port 80/443, decode as HTTP). Confirm that the
WriteRequestbody contains a validItemPathand that theValuedata type matches the S7 data type (BOOL ↔ BOOL, INT ↔ INT, REAL ↔ REAL). A 1-byte type mismatch produces a server-side write error that the OPC stack reports as 0x85270206. - Check IIS application pool identity. The pool identity must be a domain user (or local user trusted on the PC station) that is a member of "SIMATIC NET" and has DCOM "Local Launch" / "Local Activation" rights on the SIMATIC NET OPC Server. If anonymous authentication is used and the IUSR account has no SIMATIC NET role, the XML-DA server returns 0x85270206 for every write.
- Stress-test with one CP only. Disconnect 5 of the 6 CP 343-1 Lean units and run BizTalk against the remaining one. If the error disappears, the issue is the aggregate load on the shared S7 connection resources of the PC station, not on any single CP. Solution is to split the PC station into one S7 channel per CP and to apply connection-pool sizing in the SIMATIC NET configuration.
6. SOAP Endpoint and Network Configuration
The XML-DA web service is bound to IIS. The endpoint URL and the HTTP runtime knobs control the upper boundary of the stack.
| Parameter | Recommended Value | Rationale |
|---|---|---|
| WSDL URL | http://<pc-station>/simaticnet/opcxml/opcxmlservices.wsdl |
Default SIMATIC NET install path. Verify the URL resolves from BizTalk; a 404 here is the single most common "nothing works" failure. |
| SOAP action | http://opcfoundation.org/webservices/XMLDA/1.0/ |
Per OPC XML-DA 1.01 specification. |
| HTTP request timeout | 30 s (BizTalk send port) | Higher than the SIMATIC NET update rate; otherwise the SOAP call is cancelled before the S7 write completes. |
| HTTP body size limit | 4 MB (IIS request filtering) | Default 30 KB rejects multi-item Write batches. |
| Anonymous authentication | Enabled for the XML-DA vdir; pool identity has SIMATIC NET role | XML-DA 1.01 has no SPNEGO/Kerberos; basic auth or anonymous is required. |
| TLS | Optional; if used, pin the certificate and disable client renegotiation | TLS handshake failures appear in the IIS log as 0x80072f06 / connection_reset. |
| SOAP endpoint reachability check | Use the "Server Is Alive" request (OPC XML-DA Client Driver Help, Server Is Alive) before each Write | Per OPC XML-DA Client Driver help, a non-responding endpoint produces the SOAP TCP communication error described at PTC/Kepware OPC XMLDA Client SOAP TCP communication error. |
7. CP 343-1 Lean S7 Connection Tuning
The Lean variant is the most common reason an otherwise-correct OPC stack starts returning 0x85270206. Its resource budget is small, and every consumer is observable.
| Resource | CP 343-1 Lean Limit | CP 343-1 Standard Limit | Notes |
|---|---|---|---|
| S7 connections (total) | 4 | 16 | Includes OP, PG, S7, HTTP, and SOAP-induced connections. |
| Simultaneous S7 PUT/GET jobs | 8 | 32 | Per connection, a single job is in flight; 8 jobs is the absolute maximum across the 4 connections. |
| PD/PG/OP/HTTP coexistence | Mutually exclusive on the same connection | Independent connections | If HMI is on the same CP, ensure it does not hold a connection open in test mode. |
| TCP keep-alive | Default 30 s | Configurable down to 5 s | Long keep-alive masks half-open connections; half-open connections show up as 0x85270206 on the next write attempt. |
| Max PDU length | 480 bytes | 960 bytes | Lean limits the PDU; bulk writes are split into more, smaller S7 frames, which amplifies the chance of a partial failure. |
Configuration knobs to apply on the CP in STEP 7 / TIA Portal:
- Reduce the S7 connection "Establishment" timeout from 30 s to 10 s. A timeout leaves the slot occupied until it expires, blocking new writes.
- Enable "Active connection establishment" only for the OPC connection, so other clients (PG, HMI) cannot pre-empt it.
- Disable "Keep-alive for FETCH/WRIT" if you do not use the partner-side PUT/GET; otherwise an idle partner holds a connection slot.
- On the OPC channel in the SIMATIC NET Configuration Console, set "Connection resumption" to "Auto-reconnect with 2 s delay, max 3 retries". This converts a transient 0x85270206 into a retry that succeeds.
8. SIMATIC NET OPC Server Configuration
The SIMATIC NET OPC Server is the component that turns an XML-DA Write into an S7 PUT. Misalignment between the XML-DA item definition and the S7 channel item definition is the second most common source of 0x85270206.
| Item Property | XML-DA View | S7 Channel View | Required Match |
|---|---|---|---|
| ItemPath | URI inside WSDL | Connection name in S7 channel | Must be reachable, no duplicate trailing slash. |
| ItemName | Tag name (e.g. DB1.WORD0) |
Address string in S7 channel (e.g. DB1,W0) |
Data type, byte order, and length must agree. |
| AccessPath | Optional; default /
|
Mandatory for S7 channel; "S7:[CP_Lean]" or similar | AccessPath must resolve to a configured S7 connection. |
| MaxAge | 0 (force fresh) | 0 (force fresh on the S7 channel) | Both sides must be 0; a positive MaxAge returns cached data and the write is not visible until the cache is invalidated. |
| RequestedSamplingRate | XML-DA Subscribe parameter, 100…10000 ms | Update rate in the S7 channel, typically 500 ms…10 s | XML-DA sampling should be ≥ S7 channel update rate; if smaller, the server drops samples and may drop writes. |
Configuration in SIMATIC NET Configuration Console:
- Open the S7 channel → Properties → "Operating Mode." Set it to "Optimized." Optimized mode reuses a single S7 connection across all items instead of opening one connection per item, which is mandatory on a CP 343-1 Lean.
- Open the OPC item group → Properties → "Update rate." Set the rate to 1000 ms. Going below 500 ms on a CP 343-1 Lean increases the S7 job rate and the probability of a write collision.
- In the OPC server, enable "Write access without subscription" only if the BizTalk application expects synchronous writes. With it disabled, writes outside an active subscription are queued and may be silently dropped after the SOAP timeout, surfacing as 0x85270206.
- Set the S7 protocol "Maximum number of retries" to 3, with a 200 ms back-off. A transient error is then converted to a successful write and 0x85270206 disappears from the trace.
9. OPC Scout v13 Client Behavior
OPC Scout v13 is a generic XML-DA / COM DA client included with SIMATIC NET V13. It is useful for testing but it does not behave like a production client.
- DA 2.05a vs DA 3.0: OPC Scout v13 speaks OPC DA 2.05a against the SIMATIC NET COM DA server and OPC XML-DA 1.01 against the XML-DA server. The two stacks share the underlying S7 channel, so a fault seen in XML-DA is also seen in DA, and vice versa. The COM DA "SyncIO2" interface performs blocking writes; the XML-DA "Write" call is non-blocking. The non-blocking nature is why the same item can show "OK" on the read but "0x85270206" on the write: the read is sampled from the S7 cache, the write is dispatched and the error is delivered asynchronously.
- Group-level deadband: OPC Scout v13 defaults a group deadband of 0%. For BOOL tags this is fine; for analog tags, set the deadband to 1% so the server does not push a Write for every zero-crossing, which can saturate the CP's job rate.
- Item-level MaxAge: In OPC Scout v13 the default is 0 (force fresh). The XML-DA server interprets this as "do not honor any cache." If the BizTalk layer polls the same tag every 200 ms with MaxAge=0, the load on the CP 343-1 Lean increases by a factor of 25 compared to a 5 s update rate.
-
Subscription behavior: OPC XML-DA Subscribe returns a subscription handle (
ServerSubHandle). OPC Scout v13 issues Subscribe once at connect time and uses it for the entire session. If the subscription expires due to a SOAP-level keep-alive failure, the next write appears to succeed on the client (it is sent) but the server-side subscription has been torn down, and the S7 PUT is not issued. The HRESULT in the trace is 0x85270206.
When the same items succeed in OPC Scout v13 but fail in BizTalk, the BisTalk side is typically issuing a Write outside any active Subscribe and outside the group MaxAge that OPC Scout configured. Lift the BizTalk client to OPC DA 3.0 (or to OPC UA via the SIMATIC NET UA server if licensed) for synchronous write semantics, or use a small wrapper that issues Write inside a Subscribe/Unsubscribe pair.
10. Workarounds and Architectural Alternatives
If 0x85270206 cannot be eliminated with configuration alone, the next options should be evaluated in the order listed. Each is independent of the others.
- Application-level retry. Wrap every XML-DA Write in a do-while loop with exponential back-off (200 ms, 400 ms, 800 ms) and a maximum of 3 attempts. Drop the result to a side log only after the third failure. This is the simplest fix and is sufficient when the failure rate is below 1%.
- Reduce write pressure. Coalesce multiple BizTalk messages into a single XML-DA batched Write per cycle. With 5–6 tags this is trivial; with hundreds it is the difference between a healthy and an unstable system on a CP 343-1 Lean.
- Increase S7 connection budget. Replace the CP 343-1 Lean (6GK7 343-1CX10-0XE0) with a CP 343-1 standard (6GK7 343-1EX30-0XE0) or a CP 343-1 Advanced (6GK7 343-1GX30-0XE0). The standard variant lifts the S7 connection count from 4 to 16, and the Advanced variant adds IT functions and security that the XML-DA stack benefits from indirectly.
- Move off XML-DA to OPC UA. OPC UA over binary TCP is a session-oriented, acknowledged protocol. The SIMATIC NET OPC UA Server (V14 and later) is delivered with the same SIMATIC NET PC software and exposes the same S7 items as UA nodes. The UA client receives an explicit service-fault for a failed write, which is far easier to diagnose than a SOAP-level item ResultID.
- Insert a buffering layer. Place a store-and-forward node (for example, an Industrial Edge connector or a WinCC Unified script) between BizTalk and the S7-300. BizTalk writes to a high-availability queue, the buffering node drains the queue against the OPC stack, and a 0x85270206 on the drain side is handled by the node without surfacing to BizTalk.
11. Verification and Long-Term Monitoring
Acceptance test after remediation. All steps must pass before the system is returned to production.
- Single-tag write burst. Issue 1000 sequential writes of the value 0xAA to the same BOOL tag from BizTalk. Expect 0 failures and 0 occurrences of 0x85270206 in the SIMATIC NET trace.
- Multi-tag write burst. Issue 1000 sequential writes alternating values across all 5–6 tags. Expect 0 failures.
- Concurrent write to all 6 CP 343-1 Lean units. Trigger a simultaneous write to every CP from the same BizTalk orchestration. Expect 0 failures and a peak S7 connection usage no greater than the connection budget per CP.
-
Subscription continuity. Run a Subscribe with
RequestedSamplingRate=1000for 24 hours. Expect 0 subscription expirations in the IIS log and 0 SOAP faults. - Network fail-over. Pull the LAN cable on the CP 343-1 Lean for 5 seconds, then re-insert. Expect the S7 channel to auto-reconnect within 10 seconds, and a maximum of 1 transient 0x85270206 in the trace corresponding to the outage window.
For long-term monitoring, configure the SIMATIC NET PC station to write the OPC trace to a rotating file with a maximum of 5 x 200 MB files. Build a small script (PowerShell, Python) that greps the file for 0x85270206 and emails a daily count. A count above zero per day is a leading indicator of CP exhaustion or SOAP endpoint degradation.
12. Frequently Asked Questions
What does OPC XML DA error 0x85270206 mean on a SIMATIC S7-300 with CP 343-1 Lean?
It is the SIMATIC NET server-side error for a failed XML-DA Write. The high word 0x8527 identifies the SIMATIC NET OPC XML-DA / S7 channel component; the low word 0x0206 is the S7 write completion reason. The definitive textual description is in the Siemens Industry Online Support article ID 63098071 for the installed SIMATIC NET version.
How many S7 connections can a CP 343-1 Lean hold?
Four S7 connections in total, shared across OP, PG, S7, and any OPC or SOAP client. Each connection in use by the SIMATIC NET OPC Server consumes one slot. If 3 are already used by an HMI and a PG, only 1 remains for the XML-DA server; any further connection request returns 0x85270206. Upgrade to a CP 343-1 standard (16 connections) or split the load across two Lean CPs.
Can OPC XML-DA deliver deterministic, guaranteed writes?
No. OPC XML-DA is an HTTP/SOAP, stateless, request/response protocol. It is best-effort by design and has no real-time semantics. For guaranteed delivery, add an application-level retry with back-off, or migrate to OPC UA over binary TCP, which is session-oriented and reports write faults explicitly per OPC UA Part 6.
Why do the reads succeed while only the writes fail with 0x85270206?
Reads are typically served from the SIMATIC NET cache (item-level MaxAge or channel update rate) and do not need a fresh S7 PUT. Writes must be dispatched to the S7-300, and that PUT can be rejected by the CP if no S7 connection slot is free or by the CPU if the addressed area is invalid. The cache makes reads look healthy while the underlying S7 channel is exhausted, masking the real fault until a write is attempted.
Is OPC XML-DA still supported in current SIMATIC NET versions?
Yes, through SIMATIC NET V18. SIMATIC NET V19 and later no longer include the OPC XML-DA server. New designs should target OPC UA. The XML transport used by XML-DA is mapped in OPC UA Part 6, §7.4.3, which remains the reference for fault encoding on both legacy XML-DA and modern UA servers.