Problem Overview
SIMATIC WinCC V7 is a PC-based SCADA system widely deployed in process and factory automation. Field reports describe a recurring symptom profile: runtime starts at acceptable response speed, screen changes are initially sub-second, and C/VB scripts execute without noticeable delay. Over hours, days, or weeks, the same screens take 4 to 15 seconds to open, internal tags stop updating reliably, and global actions fire late. A restart of WinCC Explorer / WinCC Runtime temporarily restores performance, but the degradation returns. This article consolidates Siemens support documentation, field diagnostics, and configuration best practices into a structured troubleshooting procedure.
The performance decay is rarely caused by a single fault. Typical contributing factors include corrupted runtime databases, oversized update cycles on screen objects, excessive alarm subscriptions, script loops that scale with screen count, undersized PC hardware, and inefficient S7 communication paths. Each factor is addressed below with a diagnostic step and a corrective action.
Root Cause Categories
Performance regressions in WinCC V7 fall into six primary categories, ordered by frequency of field reports:
- Corrupted DCF (Data Center File) runtime database
- Misconfigured tag acquisition and update cycles on screen objects
- Excessive alarm logging and unfiltered alarm tags
- Global script and picture-internal C-script inefficiencies
- Undersized PC hardware (CPU, RAM, disk) for the configured server role
- Inefficient S7 channel configuration (external Ethernet CP, redundant paths, large PDU sizes)
Hardware Baseline Validation
Before tuning software parameters, verify the runtime station meets the recommended hardware envelope for the WinCC V7 release in use. The release notes for V7.0 specify minimum and recommended hardware, and these thresholds scale with the number of tags, screens, and connected automation systems.
| Component | Minimum | Recommended (V7.0+) | Notes |
|---|---|---|---|
| CPU | Pentium 4 / 1.6 GHz | Multi-core x64, 2 GHz+ | SQL Server Express packaged with WinCC benefits from multi-core |
| RAM | 1 GB | 4 GB or higher | RAM use scales with archive count and online trend count |
| Free disk (NTFS) | 5 GB project + system | 20 GB+ free on system drive | Archive databases grow continuously |
| Network | 10 Mbps | GbE for multi-client | Project data rate scales with picture count |
| Display | SVGA 800x600 | Full HD 1920x1080 | Touch driver overhead scales with resolution |
Run Windows Performance Monitor (perfmon) with the following counters for at least one hour of normal operation:
-
\Processor(_Total)\% Processor Time— sustained above 80% indicates CPU starvation -
\Memory\Available MBytes— drop below 200 MB triggers heavy paging -
\PhysicalDisk(_Total)\% Idle Time— sustained below 10% indicates disk bottleneck -
\SQLServer:Databases(_Total)\Active Transactions— high values indicate MSDE/SQL Express pressure
Capture the trace using Data Collector Set and save to C:\PerfLogs for later correlation with the WinCC diagnostic files.
DCF File Corruption (Siemens KB 109783726)
Siemens Industry Online Support documents a specific failure mode: a faulty DCF file can cause the screen change in a WinCC V7 project to run at a significantly reduced speed, with degradation accumulating over the runtime session. The DCF file is the WinCC Data Center File that holds the runtime tag and alarm database in compressed form; corruption typically arises from abrupt power loss, disk full conditions, or third-party AV scanners that lock the file mid-write.
Reference: Why does the screen change in WinCC V7 projects suddenly slow down by up to several seconds?
Symptoms
- Screen change time degrades from sub-second to multiple seconds after a few hours or days of runtime
- Tag values appear to update late or in bursts
- Restart of WinCC Runtime restores performance temporarily
- WinCC Explorer may report warnings about database consistency on next activation
Diagnostic Procedure
- Close WinCC Runtime and WinCC Explorer completely. Confirm
CCExplorer.exeandCCRtLoader.exeare not present in Task Manager. - Open the project path, for example
C:\WinCCProjects\<ProjectName>\<ServerName>\(single-user) or the equivalent on a multi-user server. - Look for the file pair:
<ServerName>.DCF<ServerName>.RT
- Note the file size, modification time, and any presence in the recycle bin or a
.bakcompanion file. - Compare file size against the last known good backup. A DCF that has ballooned past 2x the original size or that is locked by another process is a strong indicator.
- Open
WinCC Diagnosisfrom the Windows Start menu (Siemens Automation → WinCC → Tools). Check the System Information tab and the Project tab for warnings referencing the DCF.
Remediation
- Make a full backup of the project directory before any corrective action.
- Delete the corrupted
.DCFfile while the project is closed. - Restart WinCC Runtime. The system will rebuild the DCF from the configuration database on activation. This rebuild may take several minutes on large projects.
- Verify screen change time is restored to expected baseline.
- Schedule a recurring backup of the project path so a clean DCF is always available.
Tag Acquisition and Update Cycle Tuning
Every screen object bound to a tag has an update cycle that determines how often the value is re-requested from the tag management. A default of 250 ms multiplied across thousands of objects overwhelms the internal tag manager and the S7 channel driver. The visible symptom is identical to a DCF problem: lag accumulates with runtime duration.
Diagnostic Procedure
- Open WinCC Explorer and load the project.
- Right-click Tag Management → Properties. Inspect Update for each connection. Values lower than 1 s for non-critical process values are a frequent misconfiguration.
- In the Graphics Designer, select a screen with the reported lag. Use Tools → Cross Reference to enumerate tag usage per picture.
- Open the project-wide Properties dialog (Options → Settings in some releases; otherwise via Tag Management) and read the aggregate Tags/s load.
Remediation Pattern
| Tag Class | Recommended Cycle | Reasoning |
|---|---|---|
| Fast process interlocks | 250 to 500 ms | Sub-second response is operator-expected |
| Process variables (level, pressure, temp) | 1 s | Matches typical PID loop scan |
| Setpoints and operator entries | 2 s | Updated on demand by the operator |
| Status, mode, diagnostic | 5 s | Human-perceivable change is slow |
| Slow counters and energy totals | 10 s or longer | Aggregate at minute/hour interval is sufficient |
Audit script-driven tag updates. A common anti-pattern is a C action that runs on every cycle and writes to a derived tag, which in turn re-triggers the update cycle. Use On Change triggers in the I/O field configuration to avoid this feedback loop.
Alarm System Tuning
The alarm subsystem is the largest consumer of CPU and database I/O on a WinCC server. Each alarm tag is a persistent subscription, and the alarm logging service writes every state change to the SQL/MSDE database.
Diagnostic Procedure
- Open Alarm Logging editor and count the configured message classes, message types, and total single messages. Projects above 5,000 configured messages are at high risk regardless of hardware.
- Sort the message configuration by trigger tag. Identify tags that fire more than 1 alarm per second on average — these dominate the cost.
- Open the alarm runtime window and check the Hit List tab. Tags appearing in the top 20 of the hit list are the prime suspects.
Remediation
- Disable alarm acknowledgment requests on informational classes. Force operator acknowledgment only on safety-relevant message classes.
- Apply debounce / hysteresis on noisy analog alarms. A level that oscillates around a setpoint produces dozens of alarms per hour; a 1% hysteresis collapses this to one.
- Reduce the number of configured message priorities. Each priority creates an additional sortable index in the database.
- Move long-term alarm history to a separate archive so the live alarm table stays small.
For a quick isolation test, temporarily disable alarm logging (right-click Alarm Logging in WinCC Explorer → Deactivate) and observe runtime response. If performance recovers, the alarm subsystem is the dominant factor.
C / VB Script Optimization
Scripts that run on every picture change, every cycle, or on global triggers are a frequent source of cumulative slowdown. The most common offenders are listed in the order they are encountered in field projects.
Global Action Hot Spots
Open the Global Script editor and inspect actions with a 250 ms or 1 s trigger. A 250 ms trigger that performs a database query, a file read, or a GetTagMulti call across hundreds of tags will saturate the script engine within minutes of opening the first screen.
Recommended mitigations:
- Use
GetTagMultiStateWaitorGetTagMultiWaitwith explicit timeouts to batch requests, instead of many individualGetTagFloatcalls. - Replace per-cycle polling with event-driven actions where the PLC confirms a value change.
- Cache the result of expensive operations (database reads, file I/O) in an internal tag and refresh on a 5 s or longer timer.
Picture-Internal C Actions
Picture-internal C actions are recompiled at runtime load and are frequently copied across multiple screens without optimization. Audit each picture with Tools → Cross Reference in the Graphics Designer.
Common patterns to remove:
- SetProperty calls inside a cycle action that change object geometry, visibility, or color on every cycle. Gate these behind a change-detection check on the source tag.
- Loops that iterate over hundreds of picture objects. A linear search over 500 IOFields on every cycle is 500 GetObject calls per second.
- Direct DDL / DLL calls from C actions. These break the script sandbox and frequently block the script thread.
Visual Basic Script Pitfalls
VB scripts in WinCC share the same global script engine. Inspect VB actions for late binding to Excel, Word, or custom COM objects — these are slow and prone to memory leaks. If a report must be generated, call a separate process via Shell rather than embedding the Office automation inside the runtime.
S7 Channel and PLC Communication Tuning
Communication performance between WinCC and the SIMATIC S7 CPU has a direct, measurable effect on screen response. When a tag is requested faster than the channel can deliver it, the internal queue grows, the screen change thread waits, and the user sees a slow screen. Issues that affect channel performance include the Ethernet interface used, the configuration of the S7 connection, and the PDU size negotiated with the CPU.
Connection Configuration
- Open Tag Management → select the S7 connection → Properties.
- Verify the connection uses the integrated PROFINET interface of the CPU where one is available. When the connection is routed through an external Ethernet CP (such as the CP 343-1 / CP 443-1 family), the throughput is lower because the CP must serialize traffic with the backplane. This is a documented performance characteristic of external Ethernet CPs in S7-300 and S7-400 systems.
- Confirm the slot / rack address matches the physical position of the CPU, not the CP. Misaddressed slots are a common commissioning error and force the channel driver to retry continuously.
- If redundant paths are configured, validate that only one is active and the standby path does not silently consume slots in the OPC tag queue.
PDU Size and Read Cycle
The S7 channel requests data in blocks. A small block size forces many round trips; an oversized block size can stall on a single slow variable. For S7-300/400, the default PDU size is usually adequate, but projects that aggregate thousands of tags in a single connection should be split across multiple S7 connections to parallelize the requests.
Diagnostic Procedure
- Open Channel Diagnosis from the Start menu. Capture a trace of the active connection for 60 s.
- Look for retry counts, error counters, and average response times per tag group.
- Compare the channel trace against the perfmon capture from the hardware baseline step. A correlation between channel retry spikes and disk or CPU pressure confirms the bottleneck is local, not network.
SQL Database and Archive Maintenance
WinCC V7 uses Microsoft SQL Server (Express by default) for alarms, tags, and reports. The packaged MSDE / SQL Server Express is capped at 4 GB per database and benefits from routine maintenance.
Maintenance Procedure
- Schedule a nightly maintenance window.
- Open SQL Server Management Studio Express and connect to
\.\WinCC. - For each archive database, run
DBCC SHRINKFILEon the data and log files. Wrap withBACKUP DATABASEtoDISK = N'<path>\<name>.bak'for safety. - Confirm the database file size is below 80% of the disk free space on the archive volume. A full disk is the most common root cause of a corrupted DCF file.
- Reindex the alarm and tag tables with
DBCC DBREINDEXor, on SQL 2008 and later, an explicitALTER INDEX REBUILDplan.
Power Management and Windows Tuning
A frequently overlooked cause of cumulative slowdown is Windows power management. The default Windows power plan throttles CPU and disk after short idle periods. On a runtime station, this is incorrect.
- Open Control Panel → Power Options.
- Select High Performance. Disable USB selective suspend, disk turn-off, and processor power management.
- Disable Windows Search indexing on the project path and on the SQL data path.
- Exclude the project directory and the SQL data directory from real-time virus scanning. Schedule a daily scan during the maintenance window.
- Disable screen saver and sleep on the operator console. The runtime must remain at full clock continuously.
Step-by-Step Diagnostic Workflow
- Capture baseline. Run perfmon for 30 minutes. Note CPU, RAM, disk, and SQL counters.
- Isolate the alarm subsystem. Disable Alarm Logging. Restart runtime. Measure screen change time.
- Isolate the script engine. Comment out all global actions triggered at 250 ms or 1 s. Measure again.
- Validate the DCF file. Check file size, modification time, and locks. Rebuild as needed per Siemens KB 109783726.
- Inspect tag cycles. Open Tag Management and locate tags with cycles below 1 s. Restrict cycles to the table above.
- Inspect S7 channel. Capture a Channel Diagnosis trace. Verify CPU addressing, PDU size, and route the connection through the integrated PROFINET interface where possible.
- Validate hardware. Compare perfmon capture against the recommended hardware table. Upgrade RAM or disk if any counter is sustained near saturation.
- Restore components one at a time. After each subsystem is repaired, restart runtime and measure. The factor that produces the largest screen-change time delta is the dominant cause.
Verification Checklist
| Item | Target | Measurement |
|---|---|---|
| Screen change time (P95) | < 1 s for typical picture, < 3 s for complex picture | Manual stopwatch over 10 consecutive picture changes |
| Tag update latency | Within 1 cycle of configured update | Trigger a known PLC value change and observe a logged timestamp on the faceplate |
| Alarm acknowledgment round trip | < 500 ms | Trigger a test alarm and time the acknowledgment |
| CPU utilization (steady state) | < 60% on the runtime host | perfmon over 4 hours of normal operation |
| DCF file size stability | Within ±10% of initial post-rebuild size over 7 days | Daily file size check via scheduled task |
| Archive database free space | > 20% of disk free on archive volume | SQL query against sys.database_files
|
Troubleshooting Matrix
| Symptom | Most Likely Cause | First Action |
|---|---|---|
| Screen change 4 to 15 s after several hours runtime, restored by restart | Corrupted DCF or script cycle saturation | Validate DCF per Siemens KB 109783726; audit 250 ms actions |
| Tags update in bursts, never reaching steady state | Update cycle too short across many objects | Raise cycle to 1 s minimum for non-critical tags |
| Alarm window takes 5+ s to open | Excess alarm count, no debounce, no archive split | Disable Alarm Logging and re-test; apply hysteresis |
| SQL Server Express CPU at 100% | Archive growth, missing indexes, full-text search | Shrink database, reindex, exclude from AV scan |
| Channel Diagnosis shows retries | Misaddressed slot, external CP bottleneck, network duplex mismatch | Verify slot/rack, switch to integrated PROFINET port, set switch to 100 Mbps full duplex |
| Performance degrades overnight only | Windows Update or AV scan at night | Schedule scan during maintenance window; defer updates |
Field-Proven Caveats
- A
.DCFfile that is locked by the Windows Search indexer is a known corruption vector. Disable indexing on the project path. - SQL Server Express caps at 4 GB per database. When the alarm archive approaches this limit, every write becomes a reallocation. Move old data out before reaching the cap.
- The V7.0 release predates wide support for 64-bit Office. Mixing 32-bit Office automation and 64-bit WinCC runtime on the same host is a frequent cause of COM exceptions and slow VB scripts.
- Touch drivers can consume 5 to 15% CPU on full HD displays. Switch to a hardware-accelerated driver if the runtime host has an integrated GPU bottleneck.
- Each redundant S7 connection doubles the channel load. Use redundancy only when the application requires it.
FAQ
What is the most common cause of cumulative slowdown in WinCC V7?
Corruption of the DCF (Data Center File) is documented in Siemens KB 109783726 and produces exactly this pattern: screen changes become progressively slower and a runtime restart temporarily restores speed. The DCF is rebuilt on next activation after deletion.
How do I check whether Alarm Logging is the bottleneck?
Disable Alarm Logging from WinCC Explorer, restart the runtime, and measure the screen change time on a representative picture. If the response improves, the alarm subsystem is the dominant factor and you should apply debounce, hysteresis, and message class reduction.
What is the recommended update cycle for a typical process tag?
1 second is the practical default for process variables such as level, pressure, and temperature. Faster cycles (250 to 500 ms) should be reserved for interlocks and safety-related variables. Status and mode tags can use 5 seconds or longer.
Why is performance worse when WinCC talks to the S7 CPU through an external Ethernet CP?
External CPs in the S7-300 / S7-400 family serialize traffic with the CPU backplane, which limits sustained throughput. When the channel must aggregate many tags, this adds visible latency. Routing the connection through the integrated PROFINET interface of the CPU, where available, removes the bottleneck.
How do I prevent the DCF file from corrupting again?
Stabilize the runtime host: use a UPS, keep more than 20% disk free, exclude the project and SQL data paths from real-time virus scanning, disable Windows Search indexing on the project path, and schedule a recurring image-level backup of the project directory so a clean DCF is always available.