Resolving S7-1200 DASSIDirect Server Memory Bit Access Issues

David Krause11 min read
S7-1200SiemensTroubleshooting
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

Problem Overview

The Wonderware DASSIDirect server (now distributed as AVEVA SIDirect) reports no value or a fixed status code (commonly 0x0008 = OPC quality BAD_NO_COMMUNICATION with sub-status indicating subscription failure) when InTouch WWClient attempts to read S7-1200 memory-bit addresses such as M2.1, M0.0, MB90, MW10, or MD20. Discrete inputs (Ix.y), discrete outputs (Qx.y), and data-block words (DBw) often return correct values, while the entire Merker/Flag area remains unreadable. The same symptom appears whether the topic is browsed through OPCLink, I/O Server, or the WWClient tag dictionary.

The root cause is not InTouch, not the S7-1200 hardware, and not the physical Ethernet cable. The S7-1200 CPU is shipped with its data-access surface locked down by default as part of the know-how protection and integrated-access-control model introduced by Siemens SIMATIC Firmware V2.0 and tightened in V4.x. The DASSIDirect / SIDirect Legacy driver must be granted explicit permission to read Merker areas, and the data must be made reachable through a CPU-side protocol that the driver supports.

Affected Hardware and Firmware

CPU family Affected firmware range Symptom scope
S7-1200 CPU 1211C / 1212C / 1214C / 1215C / 1217C V2.0 through V4.6 All Merker areas inaccessible to DASSIDirect without PUT/GET enablement
ET 200S CPU All shipping versions Same — uses identical access model
S7-1500 CPU 1510–1518, 1504D, 1505D, 1507D V1.5 and newer Same root cause, additional "Optimized block access" constraint
WinAC RTX (F) 2010 and newer Same — see SIDirect Legacy pre-configuration note

DASSIDirect versions distributed with InTouch 10.0 through InTouch 2020 R2 are affected. AVEVA SIDirect Driver Pack 1.5 and later is the supported migration path. The driver communicates with the S7-1200 using S7 Communication (ISO-on-TCP, port 102, TPKT over RFC 1006), with the CPU acting as a passive partner and the PC driver acting as the active client.

Root Cause Analysis

Three independent Siemens-side gates must be opened simultaneously before DASSIDirect can read a Merker byte. The default S7-1200 project leaves all three closed:

  1. Permit access with PUT/GET communication flag in the CPU properties (TIA Portal). When this is disabled — and it is disabled by default — the CPU rejects any S7 read/write request whose source is not the HMI/engineering connection that owns the variable. The DASSIDirect server opens a separate S7 connection on port 102 that has no project-level binding, so it is rejected at the CPU's connection resource manager.
  2. Connection resource availability. The S7-1200 supports a maximum of 8 active S7 communication connections (PG/OP/HMI combined on the integrated PROFINET interface). The CPU must have at least one free OPC S7 connection slot for the DASSIDirect handle.
  3. Optimized block access on data blocks (S7-1500/1200 V4.x). When a DB uses optimized access, the symbolic names compile to a non-contiguous internal memory layout. The DASSIDirect driver uses absolute addressing (M2.1, DB1.DBD0) and cannot resolve symbolic handles on optimized blocks. Memory bits, however, live in the system Merker area — the problem there is not optimized access but the PUT/GET gate.

The 0x0008 status code reported in WWClient is the OPC DA quality bitmask. 0x0008 = OPC_QUALITY_BAD (0x00) with sub-status 0x08 = BAD_COMMUNICATION, indicating the subscription is open in the OPC server's tag table but the underlying S7 read PDU is being NAK'd by the CPU.

Solution 1: Enable PUT/GET Access in TIA Portal

This is the primary fix. It must be performed on the engineering station that owns the S7-1200 project, then downloaded to the CPU. DASSIDirect is a read-only client of this flag — it cannot be changed from the SCADA side.

  1. Open the S7-1200 project in TIA Portal V13 SP1 or later (V15.1, V16, V17, or V18 all carry the same dialog).
  2. Select the S7-1200 CPU in the device tree.
  3. Open Properties → General → Protection & Security → Connection mechanisms.
  4. Tick the box labeled Permit access with PUT/GET communication from remote partner (PLC, HMI, OPC, …).
  5. Compile the hardware configuration and download to the CPU. The CPU goes into STOP-RUN during download; verify the operating-mode switch is on RUN or RUN-P.
  6. Cycle power on the CPU if the new protection level does not take effect within 30 seconds. Some S7-1200 firmware revisions (V4.2, V4.4) require a power cycle to re-evaluate the protection settings.
Security note: Enabling PUT/GET opens the S7-1200 to any device on the routable network that can reach the CPU on TCP port 102. In OT environments, restrict the S7-1200 to a dedicated SCADA VLAN and apply Siemens SCALANCE firewall rules permitting only the DASSIDirect station's IP. See the Siemens Industrial Security guidelines for the recommended defense-in-depth posture.

Solution 2: Verify Connection Resource and IP Route

  1. Open the DASSIDirect server configuration tool (DASSIDirect Console or ArchestrA IDE → DASSIDirect object → Device Group).
  2. Confirm the PLC's IP address matches the S7-1200 PROFINET interface. The S7-1200's default address is 192.168.0.1; the subnet mask is 255.255.255.0.
  3. From the SCADA station command prompt, run ping <PLC_IP> and verify < 5 ms round-trip time on a dedicated VLAN. ICMP echo is permitted by the S7-1200 even with PUT/GET disabled — a successful ping only proves Layer 3 reachability, not S7 access.
  4. Run telnet <PLC_IP> 102 from an elevated command prompt. A blank terminal window indicates the TCP handshake to the S7 Communication port succeeded. Press Ctrl+] then quit to close.
  5. In TIA Portal, navigate to Properties → General → System and clock memory → Connection resources. Confirm the number of configured HMI/OPC connections plus existing PG/OP connections is < 8. If all 8 are consumed, the DASSIDirect connection is silently rejected.

Solution 3: DASSIDirect Topic and Item Definition

The DASSIDirect topic must point at the S7-1200 with the correct addressing dialect. DASSIDirect historically uses two address syntaxes; S7-1200 Merker must be expressed in the SIMATIC-style syntax below.

Data type Correct DASSIDirect item syntax Example
Boolean input I<byte>.<bit> I0.0
Boolean output Q<byte>.<bit> Q0.1
Boolean memory flag M<byte>.<bit> M2.1
Byte memory flag MB<byte> MB90
Word memory flag MW<byte> MW10
DWord memory flag MD<byte> MD20
DB boolean DB<n>.DBX<byte>.<bit> DB1.DBX0.0
DB real DB<n>.DBD<byte> DB1.DBD0
Process image input word IW<byte> IW0
Process image output word QW<byte> QW0

In the DASSIDirect Device Group definition, set:

  • Protocol: S7MPI/TCP (S7-1200 supports S7-TCP, not MPI — choose the TCP variant)
  • CPU Rack/Slot: 0 / 1 (S7-1200 always reports as rack 0, slot 1)
  • TSAP Local: 01.01 (the S7-1200 PROFINET interface)
  • TSAP Remote: 01.00 (your DASSIDirect station's default)
  • Poll interval: 250 ms minimum for Merker areas; DASSIDirect throttles faster polls to prevent S7-1200 connection-resource exhaustion

Solution 4: SIDirect Legacy Pre-Configuration (S7-1500 and S7-1200 V4.x)

Per the AVEVA driver documentation, the SIDirect Legacy object requires pre-configuration through the Siemens TIA Portal to allow access to data inside the S7-1500 PLC, and the same requirement applies to S7-1200 CPUs running V4.x firmware with security-level 3 or higher. See the official AVEVA documentation: SIDirect Legacy — S7-1500 / S7-1200 pre-configuration.

  1. In TIA Portal, open the S7-1200 device properties.
  2. Under Protection & Security, set the protection level to Full access (no protection) or Read/write access with password. The default "Complete protection" level blocks all OPC reads outside the engineering project.
  3. If using a password-protected level, record the password in the DASSIDirect Device Group under Connection → S7 Access Password.
  4. Confirm that data blocks containing the data you want to read have Optimized block access unchecked. In TIA Portal, right-click the DB → Properties → Attributes. Uncheck "Optimized block access" for any DB the SIDirect Legacy driver will reach by absolute address.

Solution 5: Alternative Path — TopServer

If DASSIDirect performance remains poor after the steps above, the AVEVA TopServer driver (or the legacy Software Toolbox TopServer) is a tested alternative that natively supports the S7-1200 Merker area without the TIA-side configuration quirks. TopServer exposes the S7-1200 as an OPC DA 2.05 / 3.0 server, and InTouch can use it directly as the "Access Name" application without an intermediate OPCLink topic.

Feature DASSIDirect / SIDirect Legacy TopServer
S7-1200 native Merker support Requires PUT/GET + non-optimized blocks Native, no pre-configuration beyond IP
Typical 1000-tag update rate 1–4 seconds (known throttling) 100–250 ms
Protocols S7-TCP, S7-MPI S7-TCP, S7-MPI, Modbus TCP, OPC UA
Cost Bundled with InTouch / AVEVA licenses Separate per-tag or per-server license
OPC UA support Yes (SIDirect Driver Pack 1.5+) Yes (native)
S7-1500 optimized-block support Limited (uses symbolic handles) Full (auto-discovery)

TopServer can be evaluated with a full-featured trial. The trial inserts a 2-hour runtime limit; the user must restart the TopServer service when the time expires. This is the same behavior reported by users on legacy S7-1200 integration projects and is by design, not a defect.

Verification

  1. Open the DASSIDirect console and force a Refresh All on the device group. The status column should report OK rather than Fault.
  2. Use the DASSIDirect Quick Client (right-click the topic → Quick Client) to browse the tag namespace. Locate MB90 and verify the value matches the actual S7-1200 memory content. Use TIA Portal's Monitor / Modify view to cross-check the Merker byte in the PLC.
  3. In InTouch WindowMaker, open WWClient, navigate to the Access Name bound to the DASSIDirect topic, and confirm the tag MB90 shows a numeric value (0–255) with a quality of Good. The quality column will read Good:NoError (OPC quality 0xC0) on success.
  4. Toggle a memory bit from the S7-1200 ladder or from TIA Portal's Monitor/Modify (set M0.0 = TRUE) and confirm the change is reflected in WWClient within one poll interval.
  5. Run a 24-hour soak test with the PLC disconnected mid-test. WWClient should report Comm Loss (quality 0x0008) within two poll intervals, and resume reading when the PLC is restored.

Troubleshooting Matrix

Symptom Most likely cause Fix
All tags read 0x0008 / Comm Loss PUT/GET disabled on CPU Enable PUT/GET in TIA Portal, download, power cycle
Inputs and outputs work, Merker fails Same as above, plus optimized-block DB on related tags Enable PUT/GET, uncheck "Optimized block access" on user DBs
DASSIDirect console shows "Fault: S7 resource exhausted" All 8 S7 connections used Reduce PG/HMI/OPC connections, free at least one slot
Tags browse fine but read returns 0x0008 instantly Protection level set to "Complete protection" with no password Lower to "Full access" or set read/write password
Tags work, then fail after firmware update New firmware reset protection defaults Re-apply PUT/GET and protection-level settings
Tags work on a direct LAN, fail across a router MTU / TCP MSS / S7 PDU fragmentation Set router MTU ≥ 1500; check SCALANCE for ISO-on-TCP filtering
DASSIDirect very slow (> 5 s) on Merker areas DASSIDirect throttling to protect S7-1200 resources Reduce tag count, increase poll interval, or migrate to TopServer / SIDirect
WWClient shows stale data after PLC stop S7 connection times out but subscription is not torn down Enable DASSIDirect "Auto-fail on connection loss" option

Operational Notes

When the S7-1200 is replaced (e.g., a CPU 1214C is swapped for a 1215C), TIA Portal's Device replacement wizard does not carry forward the Protection & Security settings. After every device replacement, the PUT/GET flag and the connection-mechanism configuration must be re-applied to the new CPU and re-downloaded. This is the single most common reason a previously working DASSIDirect connection suddenly reports 0x0008 after a hardware swap.

Firmware V4.4 of the S7-1200 introduced an additional security layer — the Security Event Log — that records each rejected PUT/GET access attempt with the source IP. Engineers diagnosing intermittent failures should retrieve this log via TIA Portal → Online → Diagnostics → Security Event Log to confirm the SCADA station is being explicitly denied.

For S7-1500 systems, Siemens has documented a known interaction between optimized block access and the SIDirect Legacy driver. The official recommendation is to either (a) disable optimized access on the affected DBs, or (b) use the symbolic addressing path of the SIDirect Driver Pack 1.5+ to access the data symbolically. See the AVEVA documentation page referenced in Solution 4 for the exact procedure.

Why does DASSIDirect read S7-1200 inputs and outputs but not memory bits (M2.1, MB90)?

The S7-1200 CPU is delivered with "Permit access with PUT/GET communication" disabled. Inputs and outputs are sometimes still read because the driver may be using a different S7 connection, but Merker addresses are blocked by the CPU's connection resource manager. Enable the PUT/GET flag in TIA Portal under CPU Properties → Protection & Security → Connection mechanisms, then download and power-cycle the CPU.

What does the 0x0008 status code from WWClient mean?

0x0008 is the OPC quality bitmask for OPC_QUALITY_BAD with sub-status BAD_COMMUNICATION. The OPC subscription is open in DASSIDirect, but the underlying S7 read PDU is being rejected by the CPU. After enabling PUT/GET, the quality should switch to 0xC0 (Good:NoError) within one poll interval.

Does TopServer work with the S7-1200 and InTouch without TIA Portal pre-configuration?

Yes. TopServer's S7-TCP driver handles the PUT/GET negotiation internally and only requires the CPU's IP address, rack 0, and slot 1. You must still enable PUT/GET on the CPU for any S7-TCP driver to read Merker areas — the difference is that TopServer's performance is not throttled the way DASSIDirect is, and the driver provides clearer error messages on configuration issues.

How many S7 connections can the S7-1200 support simultaneously?

The integrated PROFINET interface on every S7-1200 CPU supports a maximum of 8 concurrent S7 communication connections (PG/OP/HMI/OPC combined). The signal-board PROFINET interface supports an additional 4. If all slots are consumed, the DASSIDirect connection is silently rejected — open TIA Portal → CPU Properties → System and clock memory → Connection resources to verify how many are configured and how many are currently in use.

Do I need to repeat the PUT/GET configuration after a CPU firmware update?

Yes. Major firmware updates on the S7-1200 (for example, V3.0 to V4.2, or V4.2 to V4.4) reset the Protection & Security settings to the factory defaults. Re-enable PUT/GET, re-set the protection level, and re-download the project to the CPU after every firmware change. Use TIA Portal → Online → Diagnostics → Security Event Log to confirm that PUT/GET access is being granted to the SCADA station's IP address.

Back to blog