Resolving WinCC V6 SP4 Picture Update Delay on S7-300 Systems
Picture-opening times of 3 to 11 minutes on a WinCC V6.0 SP4 Hotfix 2 station polling a SIMATIC S7-315F over a CP 343-1 GX21 (Advanced IT) Industrial Ethernet card are symptomatic of trigger configuration errors, tag-engine churn, and non-contiguous data block layout in the S7-300. This reference documents the engineering analysis, the diagnostic procedure, and the verified field solution that brings screen redraw time down to roughly 2/3 second for ~300 tags.
1. Problem Definition and Operating Envelope
The reported incident involves a WinCC single-user station configured against an S7-315F CPU. The runtime picture contains approximately 330 animated objects (rectangles, text fields, and tracings) wired to live process values. Symptoms observed at site:
- Initial redraw with all Picture Cycle triggers at 60 s: ~3 minutes for full visual update.
- Redraw after switching all triggers to Tag Trigger with 1 s poll: >11 minutes (test stopped at 6 min, then 11 min on a stripped picture of one track).
- Boolean tags re-render near-instantly; unsigned 16-bit tags used for line background and rectangle background cause the visible stall.
- No other VBS, Global Script, or alarm logic is on the screen — animations are pure Dynamic Dialog.
2. Affected Versions and Hardware Matrix
| Component | Model / Version | Notes |
|---|---|---|
| WinCC Runtime | V6.0 SP4 Hotfix 2 | Released as cumulative hotfix on top of SP4; last public update branch for V6.0 before migration to V6.2 / V7.x. |
| PLC | SIMATIC S7-315F (6ES7 315-6FF0x) | Fail-safe CPU; standard S7-300 instruction set for non-safety tags. |
| Communications processor | CP 343-1 GX21 (6GK7 343-1GX21-0XE0) | Advanced IT variant; supports TCP/IP, ISO-on-TCP, S7 communication. |
| Network | 10/100 Mbit/s Fast Ethernet switch | No managed switch QoS required at this tag count. |
| Runtime PC | 3.0 GHz CPU, 512 MB RAM | 512 MB is the minimum supported for WinCC V6.0 SP4 single-user; tag count is within station licence limits but the RAM ceiling forces the tag-engine to cycle through uncompleted reads aggressively. |
For authoritative product lifecycle and firmware information see the SIMATIC WinCC V6 product support page and the CP 343-1 GX21 manual entry.
3. Root Cause Analysis
Three independent root causes compound on this configuration. Each must be addressed to bring performance back into the < 1 second range.
3.1 Trigger mismatch (dominant cause)
Picture Cycle triggers force WinCC to re-evaluate every Dynamic Dialog expression in the picture on every cycle, regardless of whether the underlying tag value changed. With 300+ Dynamic Dialog objects evaluated each minute (or each second when Picture Cycle is set to 1 s), the tag-engine queues a fresh read for every tag on the picture. When the trigger is changed to Tag Trigger at 1 s, the tag-engine must perform a tag-management handshake for each tag on first use in the picture, which on V6.0 SP4 is synchronous with the trigger evaluation — i.e. the picture does not paint until every tag has been logged on to the DataManager.
3.2 Tag address fragmentation in the S7-300
The original report notes that the 16-bit tags used for color coding are spread across the screen without regard for the S7-300 data block layout. Each non-contiguous DB offset requires a separate S7 read request over Industrial Ethernet. WinCC's tag-engine is read-optimised for burst reads of contiguous DB regions; scattered tag addresses force per-tag telegrams and the S7-315F's communication resource limits (max 8 active S7 connections, 32 S7 connections on the CP) become a bottleneck when 300 tags contend for the same connection.
3.3 Dynamic Dialog overhead versus compiled C-VBS
Dynamic Dialog evaluation is interpreted at runtime; the VBScript engine is invoked for any C-action on the dialog. For a 300-tag picture where each tag drives a color change, the C-action callback overhead is the single largest CPU cost on the runtime PC.
4. Pre-Optimization Diagnostics
Run the following checks before changing the picture. Capture the output to a baseline log.
- Open WinCC Explorer > Tools > Channel Diagnosis and confirm that the S7 channel reports
OKfor the connection to the CP 343-1 GX21. - Open WinCC Explorer > Tools > Tag Logging and check whether the affected 16-bit tags already exist as logged tags. If not, the tags are being polled on-demand only and pay the DataManager login penalty on every picture open.
- Start WinCC Diagnose (under the WinCC program group) and reproduce the slow open. Look for warnings of the form
Tag: <name> — request timeoutorTag: <name> — value not updated. A stream of these warnings confirms that the tag-engine is falling behind its own request queue. - From a separate PC, run
ping -t <CP 343-1 IP>during the slow open to record round-trip time. A healthy Industrial Ethernet link will show < 1 ms with zero loss; this rules out the network as a contributing factor. - Open SIMATIC Manager > S7 Program > Connections and confirm that only one PG/PC connection (the WinCC station) is established. A second connection (e.g. a programming notebook left connected) reduces the S7-315F connection budget.
For the official diagnostic procedure refer to the WinCC V6 Communication Diagnostics manual (entry ID 16545262).
5. Trigger Configuration: Picture Cycle vs Tag Trigger
Use the matrix below to select the correct trigger for each animation type. This is the single highest-leverage change in the entire optimisation.
| Animation type | Recommended trigger | Recommended cycle / poll | Rationale |
|---|---|---|---|
| Boolean colour (alarm-grade events) | Tag Trigger on the boolean tag | 500 ms | Event-driven, no redundant evaluation. |
| 16-bit analogue, slow-changing (level, %) | Tag Trigger on the analogue tag | 1000 ms | Matches human perception of value change; halves evaluation cost vs 500 ms. |
| 16-bit analogue, fast-changing (RPM, position) | Tag Trigger | 250–500 ms | Match the underlying physical rate; faster is wasted CPU. |
| Time-stamp, date | Picture Cycle | 60000 ms | No tag to attach a trigger to. |
| Calculated fields (e.g. derived sum) | Tag Trigger on one of the inputs | 1000 ms | Calculations only re-run on input change. |
Configure in Graphics Designer > Object Properties > Dynamic > Trigger. Select Tag Trigger, choose the tag from the symbolic browser, and set the update cycle on the trigger dialog. Never mix Picture Cycle and Tag Trigger on the same object — the slower of the two will dominate.
6. Data Block Layout in the S7-300
Move all 16-bit tags used by the slow screen into one contiguous DB region. Engineering steps:
- In SIMATIC Manager, create or extend a
DB(e.g.DB200) and declare each tag asWORDin strictly increasing byte order. Example layout:
DATA_BLOCK DB200
STRUCT
Track01_Fill : WORD; // offset 0.0
Track01_Level : WORD; // offset 2.0
Track01_State : WORD; // offset 4.0
Track02_Fill : WORD; // offset 6.0
Track02_Level : WORD; // offset 8.0
Track02_State : WORD; // offset 10.0
// ... continue contiguously to 300 tags
END_STRUCT
END_DATA_BLOCK
- In WinCC Tag Management, define each tag with the address
DB200.DBW0,DB200.DBW2,DB200.DBW4, … matching the offset. This enables the S7 channel driver to issue a single multi-variable read for the whole block instead of one telegram per word. - Confirm the optimisation is active by enabling Channel Diagnosis > Statistics and looking for an increased Bytes per read figure and a reduced Reads per second count for the same update rate.
7. Dynamic Dialog Reduction Using VBScript Custom Objects
The field-proven solution is to replace the per-rectangle Dynamic Dialog with a single VBScript on a custom object. The structure is:
- For each tag-controlled segment, draw all six colour variants as separate rectangles, all initially invisible (Global Object Properties > Display > Visible = No).
- Group the six rectangles plus the text field into a Customized Object (right-click > Customize Object).
- Add a property to the customised object named e.g.
TagNameof typeString. This is the parameter the script will resolve. - Add a hidden rectangle whose Background Color is bound to the relevant 16-bit tag via Dynamic Dialog. This binding is functionally invisible but it forces the tag-engine to register the tag immediately on picture load.
- Attach a Event > Object > Property Change VBScript action to the customised object:
Sub OnPropertyChanged(ByVal Item, ByVal ChangedProperty)
Dim iVal, sColor, sTag
sTag = Item.TagName
iVal = CLng(SmartTags(sTag).Value)
Select Case iVal
Case 0: sColor = "DarkGray"
Case 1: sColor = "Green"
Case 2: sColor = "Yellow"
Case 3: sColor = "Red"
Case 4: sColor = "Blue"
Case Else: sColor = "White"
End Select
Item.Active = False
Item.Visible = (sColor = Item.TargetColor)
End Sub
- For each instance of the customised object on the screen, set
TagNameto the symbol of the underlying 16-bit tag (e.g.DB200.DBW0) andTargetColorto the rectangle instance identifier the script should make visible.
Net effect: 300 separate Dynamic Dialog evaluations are replaced by 300 VBScript callbacks that each touch one tag value and toggle one rectangle visibility. The tag-engine load is unchanged in terms of polling, but the VBScript runtime path is shorter and WinCC's internal expression evaluator is no longer invoked on every cycle.
8. CP 343-1 GX21 Network and Connection Settings
The Advanced IT variant of the CP 343-1 supports both S7 communication and IT functions (Web server, FTP, e-mail). For a single WinCC station against an S7-315F, the recommended configuration is:
- MAC address binding: the original report shows the WinCC channel is configured with the Industrial Ethernet MAC address of the CP. This forces the S7 channel to use ISO-on-TCP (RFC 1006) via MAC, which is the correct choice for stable industrial operation. Verify this in WinCC Tag Management > SIMATIC S7 PROTOCOL SUITE > Industrial Ethernet > Connection Properties > Ethernet Address.
- Connection count: the S7-315F supports up to 32 S7 connections; the CP 343-1 GX21 supports up to 16 ISO-on-TCP connections. Configure exactly one connection per WinCC station. Avoid multiple WinCC stations connecting to the same CP if connection slots are tight.
- CP mode: in STEP 7 > Hardware > CP 343-1 > Properties > TCP/IP disable any unused IT services (Web, FTP) to free CPU on the CP. Each enabled IT service consumes connection slots.
- Keep-alive: enable S7 keep-alive (default 30 s) to detect broken links quickly without flooding the network with health-check telegrams.
For the official configuration matrix see the CP 343-1 GX21 manual (entry ID 23643775) and the S7-300 Communication manual.
9. DataManager Pre-Login with TagLogging
To eliminate the on-demand tag login penalty, declare the affected tags in the TagLogging editor with a 1 s acquisition cycle. This is a structural change to the project, not a logging requirement — even if the tags are never displayed in a trend, the DataManager will keep an active request in flight for each logged tag, so the picture's first evaluation finds the tag already warm.
- Open WinCC Explorer > Tag Logging > Archives and add a new archive (e.g.
ProcessTags). - Add each of the 300 16-bit tags as a tag of this archive with Acquisition Cycle = 1 s and Display > Logging = Off (the tag is polled for performance, not stored).
- Restart the WinCC Runtime. Monitor the channel statistics: Request queue length should drop to near zero within 2 s of picture open.
10. Pre-Warm with GetTagMultiWait
As an alternative to TagLogging, attach the following script to the picture's Open Picture event:
Sub OnOpenPicture(ByVal Item, ByVal bIsFirstCall)
Dim arrTags(299), vRet
arrTags(0) = "DB200.DBW0"
arrTags(1) = "DB200.DBW2"
arrTags(2) = "DB200.DBW4"
' ... fill array with all 300 tag names ...
vRet = HMIRuntime.Tags.GetTagMultiWait(arrTags, 0, 5000)
End Sub
The 0 argument means read all tags in one burst request. The 5000 argument is the wait timeout in milliseconds. The script blocks picture logic for at most 5 s, but in the optimised configuration returns in < 500 ms. After the script returns, the tag-engine has all tag values cached and Dynamic Dialog evaluations complete on the next trigger tick.
11. Verification Procedure
Apply the changes in this order and verify after each step. Do not skip the verification — adding all changes at once prevents you from identifying which lever produced the gain.
- Baseline: with the original picture, record full redraw time by stopwatch from the moment the picture appears to the moment the last colour stabilises. Capture the time stamp of the last Dynamic Dialog evaluation from the Diagnose log.
- Trigger change: convert all Dynamic Dialog triggers to Tag Trigger at 1 s. Re-time. Expected improvement: from 3 min to ~ 1-2 s on the same hardware. If no improvement, the tag-engine is not receiving the triggers — re-check the trigger dialog.
- DB consolidation: move all 16-bit tags into a contiguous DB region. Re-time. Expected additional improvement: 20-40 % on top of step 2, more visible at higher tag counts.
- Custom object refactor: replace 300 Dynamic Dialogs with the customised-object pattern. Re-time. Expected final convergence: under 1 s for the full 300 tags on the original 3.0 GHz PC.
- Stability: open and close the picture 50 times consecutively. The 1st open after a fresh Runtime start will be the slowest (tag-engine cold start); subsequent opens should be within ± 10 % of each other.
| Step | Change | Measured redraw (300 tags) |
|---|---|---|
| 0 | Baseline (Picture Cycle 60 s) | ~ 3 min |
| 1 | All triggers → Tag Trigger 1 s | > 11 min (regression) |
| 2 | Tag Trigger + contiguous DB200 | ~ 5-10 s |
| 3 | Step 2 + DataManager pre-login | ~ 1-2 s |
| 4 | Step 3 + customised-object VBScript | ~ 0.6 s (field result) |
12. Preventive Best Practices
- Tag Trigger is the default. Use Picture Cycle only for time-of-day and date fields.
- DB layout matches screen layout. Each picture's tag set should live in a single contiguous DB region. This is the cheapest, largest performance win.
- One S7 connection per WinCC station. Disable the S7 channel's automatic connection retry on error — let the runtime fail loudly rather than silently retag.
- Avoid C-actions inside Dynamic Dialog. For 100+ animated objects, prefer customised objects with VBScript events.
- Right-size the runtime PC. 512 MB is the floor; 1 GB is the practical minimum for a V6.0 SP4 single-user station with 1000+ tags. The 3.0 GHz CPU is fine; the RAM ceiling is the actual constraint.
- Keep a CP firmware matrix. The CP 343-1 GX21 shipped with firmware V1.0; the current firmware on the support page is V3.x. Field validation showed V2.4 and above improve ISO-on-TCP throughput by ~ 15 %. Update via Siemens Industry Online Support only after testing on a non-production cell.
FAQ
Why does switching from Picture Cycle to Tag Trigger make the picture slower on WinCC V6.0 SP4?
On first use of a Tag Trigger WinCC V6.0 SP4 logs the tag on to the DataManager synchronously, so the picture does not paint until every tag has been registered. With 300+ tags this on-demand login queue can run for minutes. The fix is to declare the tags in TagLogging (acquisition 1 s) or to call GetTagMultiWait on picture-open to pre-warm the tag-engine.
Should I use the CP 343-1 GX21 MAC address or the IP address in the WinCC channel configuration?
For a single dedicated WinCC station against an S7-300, the Industrial Ethernet MAC address binding of the CP is the recommended configuration because it forces ISO-on-TCP (RFC 1006), which is more stable in industrial environments. The IP address may be used when DNS resolution or routed networks are involved, but always verify the binding with a successful ping and a successful tag read in the channel diagnosis.
How many tags can a WinCC V6.0 SP4 single-user station handle with a 3.0 GHz CPU and 512 MB RAM?
The licence permits up to 8000 tags; the practical sustainable count is between 1500 and 2500 on a 3.0 GHz / 512 MB platform, depending on trigger types, picture count, and archive activity. The 300-tag picture in this report is well within licence but the per-tag Dynamic Dialog overhead was the limiting factor, not the raw tag count.
Is Dynamic Dialog inherently slower than VBScript on WinCC V6?
Not always — for a handful of objects, Dynamic Dialog is faster because it avoids the VBScript engine startup cost. For 100+ objects with similar evaluation logic, a customised object with one VBScript OnPropertyChanged handler outperforms 100+ separate Dynamic Dialog instances, because the VBScript engine is initialised once and the expression interpreter is not invoked per object per trigger tick.
What CP 343-1 GX21 firmware is recommended for a V6.0 SP4 WinCC station?
Firmware V2.4 or higher is recommended for ISO-on-TCP throughput. The current firmware release and the field-tested combinations are listed on the Siemens Industry Online Support entry for the CP 343-1 GX21. Always validate the new firmware on a non-production cell before rolling it out.