Resolving PCS 7 V7 DM Variable Limit Error in WinCC OS Transfer

David Krause14 min read
SCADA ConfigurationSiemensTroubleshooting
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

Resolving PCS 7 V7 DM Variable Limit Error in WinCC OS Transfer

During the OS transfer phase of a Siemens PCS 7 V7 project, engineers frequently encounter the WinCC diagnostic message "The number of external DM variables in WinCC exceeds the permitted total number." This error originates from the WinCC license enforcement layer when the number of external tags (process tags derived from AS-OS communication) and DM (Display Message) variables exceeds the PO (Process Object) entitlement of the installed runtime license. The root cause is rarely the count itself; it is almost always a license selection mismatch between the configuration-mode and runtime-mode license states, compounded by incorrect parameter mapping on structured DM variable types.

This article documents the diagnosis, root cause analysis, and remediation steps using WinCC license diagnostics, the WinCC diagnostic log directory \\wincc\diagnose, and the CFC-to-OS transfer pathway in PCS 7 V7. Reference is made to the official Siemens support entry How can you clear the error message during OS compilation regarding DM variable parameter count mismatch.

1. Problem Description

In a PCS 7 V7 (V7.0/V7.1) multiproject, an engineer compiles a CFC (Continuous Function Chart) chart that contains self-made function block types (FBTs) using the standard blocks ALARM_8P and RD_SINFO. When the engineer triggers OS Transfer from SIMATIC Manager, WinCC Explorer receives the symbol table and the operator station is regenerated. The transfer aborts and the WinCC diagnostic log records:

*** Error(s) ***: The number of external DM variables in WinCC exceeds the permitted in total number.

The same error can also appear at runtime start rather than at transfer time, even when the transfer completes successfully:

23.07.2007 17:10:24 POs in the project: 2
23.07.2007 17:10:24 All Tags in the project: 153
23.07.2007 17:10:24 Limit POs in the Licence: 1 (Second criteria: Limit_Tags = Limit_POs * 50 (=50) > All tags (=153) !!!)
07/23/2007 17:10:24 NoLicense RT | Name of License = SISLA9WRP00602 | Text of License = WinCC RT PO Client | Exists = Yes | Limit Exceeded = Yes , 1 External Tags | Emergency License = No | EXT = 0000002 | TLG = 0000000 | POT = 0000153

Two symptoms are reported in the field:

  • The OS transfer fails immediately when more than one CFC instance is compiled with DM variables.
  • The transfer succeeds, but WinCC Runtime refuses to start because the in-memory tag count exceeds the license entitlement.

2. Root Cause Analysis

The WinCC license model in PCS 7 V7 uses Process Objects (POs) as the licensing unit. One PO corresponds to one operator-relevant process variable with display, control, and message attributes. The PO license model uses two secondary counters to prevent license bypass through tag count alone:

WinCC PO License Evaluation Criteria
Criterion Formula Purpose
PO count POT ≤ Limit_POs Primary limit. Limits the number of process objects that WinCC instantiates.
External tags EXT ≤ Limit_POs Limits the number of PLC-derived external tags (AS-OS link).
Derived tag limit Limit_Tags = Limit_POs × 50 Secondary cap. Limits total tag memory to 50 × POs.
Archive tags TLG ≤ Limit_POs Limits archived/process value tags.

If any of the three numeric thresholds is exceeded, WinCC rejects the runtime start. In the example log, EXT = 2 but Limit_POs = 1 (because the active license is RT PO Client with a 1-PO entitlement), so the limit is exceeded even though only 2 POs exist in the project.

The root cause in nearly every reported case is one of three conditions:

  1. Client RT license is active instead of the Server RT license. When WinCC is launched in Graphics Designer (configuration mode), it evaluates the Server/Configuration license (e.g., 2000 PO or 8000 PO). When the same workstation switches to WinCC Runtime, the license manager selects a different license from the License Key Plug if one is present. A 1-PO Client RT license (or the emergency/trial client license) overrides the server license and immediately drops the entitlement to 1 PO.
  2. DM variable parameters on the structured type do not match the number of operator-controlled connections. PCS 7 V7 generates one external tag per DM variable on the operator station. If the structured type has a parameter that is not wired to an operator faceplate (or vice-versa), the count of expected external tags is inconsistent with the type definition. WinCC rejects the import with the error documented in Siemens Support entry 28284406.
  3. Self-made function blocks call ALARM_8P and RD_SINFO and expose a message-level attribute that is wired into the OS. Each instance of the block contributes multiple DM variables (one per message class / value change). If the engineer inadvertently wires input parameters as visible OP-controlled attributes, the runtime tag count grows multiplicatively per instance.

3. WinCC License Diagnostic Workflow

Before modifying the project, verify which license is actually active on the workstation. WinCC evaluates licenses from the License Key Plug (or the software container in the case of the trial license) using a priority order: Server RT > Server CFG > Client RT > Emergency.

3.1 Identify the Active License via WinCC Explorer

  1. Open the WinCC Explorer of the OS server or single-station project.
  2. Click on the project node in the navigation tree.
  3. Read the status bar at the bottom of the window. The text reads e.g. "2000 POs (WinCC RT Server)" when the server license is active, or "1 PO (WinCC RT PO Client)" when the client license is active.
  4. Compare the text in Graphics Designer (open) versus when WinCC Runtime is started. If they differ, a license switch has occurred.

3.2 Read the License Trace

Open the WinCC license trace file:

C:\Program Files\Siemens\Automation\WinCC\bin\LicenseLog.txt
or
C:\Program Files (x86)\Siemens\Automation\WinCC\bin\LicenseLog.txt

Lines starting with NoLicense RT enumerate every license entry that the License Key Plug returns. Identify the entries marked Limit Exceeded = Yes and note the Limit and Used columns. The first license with the highest Limit that matches the runtime context (Server RT vs Client RT) is the license that should be used.

3.3 Read the OS Diagnostic Logs

OS-side diagnostic logs are written to:

<project_path>\wincc\diagnose\*.log
<project_path>\wincc\diagnose\LicenseLog.txt

For PCS 7 specifically, the OS_CompileLog.txt file (located in the project root) reports the OS compile/transfer step including which DM variable types were transferred and which were rejected. Filter the file for the string DM variable to find the exact type name(s) that exceed the limit.

4. Step-by-Step Resolution

Step 1 - Remove the Conflicting Client RT License

If the active runtime license is a Client RT license (WinCC RT PO Client, 1 PO) and the project requires a Server RT license:

  1. Close WinCC Explorer and WinCC Runtime on the affected workstation.
  2. Open the Automation License Manager (Start → Siemens Automation → Automation License Manager).
  3. Insert the License Key Plug (USB dongle) or open the software license container.
  4. Right-click the WinCC RT PO Client license and select Transfer License → move it to a different License Key Plug, or Remove from local drive.
  5. Ensure that only the WinCC RT Server license (e.g., 2000 PO, 8000 PO, 64 000 PO) remains accessible to this workstation.
  6. Re-launch WinCC Explorer and verify that the status bar shows the Server RT license count.
Note: On a multi-station project, the OS Server should hold only Server RT licenses. Client OS stations may hold Client RT licenses but the error described in this article is reported only on stations where the runtime expects Server RT (i.e., the OS Server or the Single Station).

Step 2 - Re-execute the OS Transfer

  1. In SIMATIC Manager, select the OS object (e.g., OS(1)).
  2. Right-click and select OS → Compile / Transfer.
  3. Confirm the target computer and the compile scope (Full / Changes only). Use Full compile if the DM variable count changed.
  4. Monitor the WinCC diagnostic window during the transfer. The error "The number of external DM variables in WinCC exceeds the permitted in total number" should no longer appear.

Step 3 - Verify Tag and PO Counts

Open the WinCC Configuration Studio (or Tag Management in the classic WinCC Explorer) and check the Statistics tab:

Expected Statistics After Resolution
Field Expected Value (Server RT 2000 PO)
External Tags (PLC-derived) ≤ 2000
Total Tags in Project ≤ 100,000 (50 × 2000)
Archive Tags ≤ 2000
DM Variables (structured types) Equal to the number of CFC instances

Step 4 - Repair Structured DM Variable Parameter Mapping

If the error persists with the message "The number of parameters for the structured DM variables <name> of type <type> does not match the number of operator-controlled connections", follow the procedure documented in Siemens Support entry 28284406:

  1. Open the master data library of the project (S7 Program → Charts → Master Data Library in PCS 7).
  2. Locate the structured DM variable type that appears in the error message.
  3. Compare the Inputs/Outputs tab of the type with the operator faceplate connection list of the corresponding picture in WinCC Graphics Designer.
  4. Remove unused type parameters or add the corresponding faceplate connection so that the counts match exactly.
  5. Recompile the CFC and re-execute the OS transfer.

5. Special Case - Self-Made Function Blocks with ALARM_8P and RD_SINFO

The reported case uses two custom function blocks that internally call:

  • ALARM_8P (FB 35) - generates 8 message events per instance. Each instance contributes 8 message numbers. When wired to the OS via a message configuration, each instance contributes 8 message variables which are externally visible in WinCC and count against the PO license.
  • RD_SINFO (FC 51) - reads current system information of an instance DB. Does not generate tags but is used inside the FBT to extract event state for visualization.

For an FBT that wraps both blocks and exposes OP-controlled attributes (e.g., SP_HMI, PV_HMI, OP_CMD), the per-instance tag cost in WinCC is:

External Tags per Instance = OP-visible I/Os + DM Variable Count
                       = 3 (I/Os) + 8 (ALARM_8P) = 11 tags per instance

Two instances therefore create 22 external tags. With a 1-PO Client RT license and the formula EXT ≤ Limit_POs = 1, the OS runtime refuses to start. The correct engineering action is one of the following:

  1. Install the appropriate Server RT license for the OS server/single-station that is intended to run the FBTs.
  2. Reduce the FBT footprint by combining ALARM_8P calls into fewer instances (use ALARM_8 or NOTIFY_8P when possible).
  3. Use AR_SEND / AR_SEND_2 for archiving rather than additional DM variables.

6. Verification Checklist

After applying the remediation, run the following verification:

Verification Matrix
Check How Expected
Status bar of WinCC Explorer shows Server RT license Open project, observe bottom bar e.g. "2000 POs (WinCC RT Server)"
LicenseLog.txt contains no Limit Exceeded = Yes Open wincc\diagnose\LicenseLog.txt All entries show Limit Exceeded = No
OS Transfer completes without DM error SIMATIC Manager → OS Compile/Transfer Transfer OK, no "*** Error(s) ***" line
WinCC Runtime starts WinCC Explorer → Activate Runtime starts without tag limit dialog
Faceplates operate Open process picture, click pump/valve Operator faceplate opens and updates
Message line receives ALARM_8P events Trigger a message in CFC test mode Message appears in WinCC alarm logging
PO count within license WinCC Explorer → Project → Properties → Statistics External Tags ≤ Limit_POs, Total Tags ≤ Limit_Tags

7. Common Failure Modes and Field-Proven Caveats

Engineers who follow the standard fix path encounter the following recurring pitfalls:

7.1 License Resides on a Plug Held by a Different User

The License Key Plug (USB) is physically attached to a different workstation than the one running WinCC Runtime. The license is invisible to the License Manager on the target station. Move the plug to the target or use a software license container that is bound to the OS server's hardware.

7.2 Trial / Emergency License Returns 1 PO

When the real license is missing, WinCC falls back to the Emergency RT license with 1 PO. The license trace shows Emergency License = Yes. Always check the Emergency column in LicenseLog.txt to distinguish a real license limit from a missing license.

7.3 PCS 7 V7.1 SP3 Changed the License Logic

With PCS 7 V7.1 SP3 (and later), the additional Limit_Tags check (50 × POs) is enforced strictly. Projects that worked under V7.0 may fail under V7.1 SP3 even when the PO count is unchanged, because the project now exceeds the derived tag limit.

7.4 The Master Data Library Contains Stale Type Versions

When a FBT is recompiled in the master data library, all instances in CFC charts pick up the new version. If an instance still has a parameter that no longer exists in the new type, the OS compile fails with the parameter-count mismatch described in Siemens Support entry 28284406. Use the CFC menu Options → Chart Check → Type Update to align every instance.

7.5 OS Server Holds Client License by Mistake

The reverse of the common fault: the OS Server is licensed only with WinCC RT PO Client. Verify the license type with the Automation License Manager and not by name alone; the suffix Server vs Client is the deciding field.

8. Configuration Reference - License Selection Logic

WinCC selects the active runtime license using the following decision order:

  1. If the project is opened on the OS Server and a Server RT license is present, use it (highest Limit matching RT Server).
  2. Else, if a Client RT license is present, use it.
  3. Else, if an Emergency license is present, use it (1 PO, no archive tags).
  4. Else, refuse to start runtime.

Graphics Designer (configuration mode) uses a separate CFG license track. Opening Graphics Designer does not consume the runtime license and does not switch the runtime license context; however, the License Key Plug may enumerate multiple entries, and a small Client RT entry may be selected automatically if the Server RT entry has been marked invalid by the license server.

9. Engineering Standards Reference

When designing structured DM variable types for PCS 7 V7, observe the following rules:

Structured DM Variable Type Design Rules
Rule Reason
OP-visible parameters must exactly match the faceplate connection list Prevents the mismatch error in Support entry 28284406.
Use ALARM_8P (8 messages) only when at least 4 distinct events are required Reduces per-instance tag cost.
Use RD_SINFO for read-only display of alarm state; do not expose its outputs as OP-controlled Avoids inadvertent external tag creation.
Document the PO consumption per FBT instance in the FBT description Allows PO budget planning across the project.
Allocate at least 30% headroom between POs in project and License Limit Compensates for runtime additions during commissioning.

10. Frequently Asked Questions

What does "The number of external DM variables in WinCC exceeds the permitted in total number" mean?

It means the WinCC runtime license on the workstation grants fewer Process Objects (POs) than the project requires. The limit is enforced on three counters: external tags (EXT), total tags (Limit_Tags = Limit_POs × 50), and archive tags (TLG). When any one of these exceeds the licensed threshold, WinCC refuses to start runtime or rejects the OS transfer.

How do I know which license is currently active on my OS station?

Open WinCC Explorer, click the project node, and read the status bar at the bottom of the window. It will display either "2000 POs (WinCC RT Server)" or "1 PO (WinCC RT PO Client)". For a definitive answer, open the file <project_path>\wincc\diagnose\LicenseLog.txt and look for the first line marked NoLicense RT with Limit Exceeded = No.

Why does my project work in Graphics Designer but fail at runtime?

Graphics Designer is licensed under the Configuration track (CFG), which is independent of the Runtime track (RT). A Server RT license of 2000 POs may be present for the CFG mode while a small Client RT license (1 PO) takes precedence at runtime. Remove or relocate the Client RT license from the License Key Plug of the OS server to keep the Server RT license active.

How do I fix the error "The number of parameters for the structured DM variables xxx of type yyy does not match the number of operator-controlled connections"?

This is described in Siemens Support entry 28284406. Open the master data library, locate the type named in the error message, and align the I/O parameter list of the type with the operator faceplate connection list. Recompile the CFC and re-run the OS transfer.

How many external tags does each ALARM_8P instance consume in the PO budget?

Each instance of ALARM_8P (FB 35) adds 8 message-related DM variables to the project, one per message slot. Combined with the OP-visible I/O parameters of the wrapping function block, typical consumption is 11-15 external tags per FBT instance. Plan the PO license headroom accordingly.

Can a project with 2 FBT instances really exceed a 2000 PO license?

Yes, if the active runtime license drops to the 1 PO Client RT license. The WinCC license selection logic chooses the Client RT license if present, regardless of project size. Two instances with 11 external tags each (22 total) exceed the 1-PO Client limit on the EXT counter immediately. The fix is license management, not FBT redesign.

Back to blog