Resolving WinCC Faceplate Open Failures Across Screen Changes
Faceplate visibility failures in WinCC Unified and WinCC Comfort/Advanced are among the most common runtime defects reported after an S7-400 to S7-1500 (or S7-400 to S7-400) migration. The defect pattern is highly consistent: an operator opens a faceplate from screen A, navigates to screen B without closing the faceplate, and the "open faceplate" command on screen B is silently ignored. The faceplate only becomes operable after the operator cycles through a third screen and returns. This article documents the three engineering root causes of that pattern, the diagnostic workflow to isolate them, and the corrective actions for each case, with explicit attention to faceplate version consistency in TIA Portal V20 and to the binary-tag latch pattern that is the single most common cause.
1. Problem Definition and Observable Symptoms
Symptom bundle as reported in the field and reproducible in any TIA Portal project that follows the standard "open faceplate from process screen" design pattern:
- Operator presses a configured button on screen A. Faceplate instance opens and displays the correct tag values.
- Operator triggers a screen change (button, area pointer, or job mailbox) to screen B. The base screen B is rendered correctly.
- Operator presses the equivalent faceplate-invoke button on screen B. No faceplate is rendered, no error is logged in the diagnostic viewer, and no alarm/event is raised.
- Operator navigates to a third, unrelated screen and back to screen B. The faceplate-invoke button now functions as expected.
- Conversely, if the operator closes the faceplate from screen A (using the configured close button or the X button on the faceplate window) before navigating to screen B, the faceplate opens immediately and correctly on screen B.
This pattern is consistent across WinCC Comfort/Advanced V15.1 through V18 (TIA Portal) and across WinCC Unified V16 through V20. The defect is most often introduced during a controller migration, when a previously correctly behaving faceplate population is ported to new HMIs with new PC-RT stations, but it can appear in greenfield projects as well.
2. Root Cause Architecture
Three independent defects produce the same observable symptom. Each must be ruled out in sequence before the next is examined.
| Root Cause | Mechanism | Detection Signal | Affected Products |
|---|---|---|---|
| Binary tag latch (latching visibility bit) | Faceplate visibility is bound to a single shared Boolean tag. The "open" button SETs the tag; the faceplate's internal "close" button RESETS it. While the tag is SET, all subsequent open requests evaluate as no-ops. | Tag value remains "1" after the first faceplate is opened. No reset event is generated by screen change. | WinCC Comfort/Advanced, WinCC Unified, WinCC Professional (RT) |
| Single shared picture window | Multiple faceplate-invoke objects on different screens are wired to the same picture window number. The first invocation occupies the picture window; subsequent invocations are discarded because the picture window is already populated. | Picture window "Occupied" property reports TRUE for the second screen's request. Same PictureWindow tag used in multiple faceplate-invoke configurations. | WinCC Comfort/Advanced (Picture Window object), WinCC Professional |
| Faceplate version mismatch | The faceplate type has been edited and the HMI instance references a non-released version, or a referenced tag/UDT has been renamed since the last faceplate release. The HMI evaluates the launch condition against a stale interface and aborts. | TIA Portal compiler warning during HMI build: "Faceplate version is inconsistent." Faceplate type marker yellow/red in the project tree. | WinCC Unified V17+ (TiaPortal faceplate versioning) |
3. Root Cause 1: Binary Tag Latch (Most Common)
The binary tag latch pattern is the cause in roughly 70% of field reports. It is the most common because it is the most concise configuration: a single HMI tag, a SET on open, a RESET on close. It is also the most fragile, because it has no awareness of which screen the launch originated from.
3.1 Mechanism in Detail
The faceplate is configured with an "Appearance / Visibility" animation bound to an internal HMI Boolean tag (conventionally named Faceplate_Visible, ShowFaceplate, or similar). The invoke button on every process screen is configured with the event "Click" → "SetBit" → Faceplate_Visible = 1. The faceplate's own close button is configured with the event "Click" → "ResetBit" → Faceplate_Visible = 0.
Step trace on a single shared HMI tag across two screens:
- t=0 ms: Operator on screen A clicks invoke button.
Faceplate_Visibleis SET to 1 by the SET event. - t=50 ms: Visibility animation evaluates to TRUE. Faceplate instance A is rendered in the picture window.
- t=2000 ms: Operator triggers screen change to screen B. The visibility animation for faceplate A is no longer evaluated (the picture window is unmounted or the screen B body replaces screen A's body). The tag
Faceplate_Visibleis still 1 because nothing has reset it. - t=2050 ms: Operator on screen B clicks invoke button. The SET event is evaluated against
Faceplate_Visiblebut the tag is already 1. The HMI engine does not re-fire the event because the tag state is unchanged (no 0→1 edge). - t=2100 ms: No faceplate is rendered on screen B. The diagnostic viewer reports nothing because no fault occurred.
- t=15000 ms: Operator navigates to screen C, then back to screen B. The visibility animation may re-evaluate, or the tag may be reset by an unrelated animation. The launch condition re-evaluates cleanly and the faceplate appears.
3.2 Diagnostic Procedure
To confirm the binary tag latch pattern, perform the following in Runtime on the target HMI:
- Open the HMI tag table view (or WinCC tag browser for Unified) and add a watch on
Faceplate_Visible. - Click the invoke button on screen A. Confirm the tag transitions 0 → 1.
- Trigger a screen change to screen B. Do not click any button. Read the tag. It must still read 1.
- Click the invoke button on screen B. Read the tag. If the value remains 1 with no transition (and no second faceplate is rendered), the binary tag latch is confirmed.
- As a final confirmation, manually force
Faceplate_Visible = 0from the tag browser. Click the invoke button on screen B. The faceplate now opens.
3.3 Corrective Solutions
Five corrective patterns are in field use. Each has a different trade-off between engineering complexity, scan time, and screen-change resilience.
Solution 1A: Toggle the tag on the invoke event
Configure the invoke button with "InvertBit" instead of "SetBit." The faceplate's close button uses "InvertBit" as well. The tag now toggles on every press, so a second press on a different screen will toggle the visibility OFF, then OFF (or ON, then ON) with edge detection handled correctly. Code fragment for the button event in the Comfort/Advanced configuration dialog:
Event: Click
Function: InvertBit
Tag: Faceplate_Visible
Solution 1B: Use a screen-index tag as a per-screen latch
Replace the single Boolean with a 16-bit integer (INT) tag that encodes both visibility and the originating screen. The invoke button writes (CurrentScreen * 10) + 1. The faceplate's close button writes 0. The visibility animation is bound to a script that returns TRUE only when the tag is non-zero AND the current screen matches the screen stored in the upper bits. This pattern is uncommon in the field because it requires script work, but it scales to N faceplate types without tag multiplication.
Solution 1C: Reset the tag on the screen-change event
Add a "Change picture" event to the source screen that executes ResetBit Faceplate_Visible prior to the picture-change function. This guarantees the tag is cleared on every screen transition, at the cost of one extra PLC scan per transition. The PLC scan load is negligible for a single bit; the engineering cost is a per-screen configuration change.
Solution 1D: Edge-triggered tag (WinCC Unified only)
WinCC Unified V17 and later supports a tag trigger configuration that fires on the 0→1 edge of the tag rather than the steady-state value. Configure the invoke button to SET the tag, but bind the visibility animation to "OnChangeOfTag.Faceplate_Visible" with a script that sets a second internal visibility bit only on the edge. This decouples the trigger from the state and matches modern event-driven SCADA paradigms.
Solution 1E: Scripted faceplate invocation
For Unified projects, write a VBScript or C# script on the invoke button that:
- Checks
HMIRuntime.Tags("Faceplate_Visible").Read(). - If TRUE, calls
HMIRuntime.UI.Screens.Item(ScreenName).ScreenItems("PictureWindow_1").ScreenItems("Faceplate").Close()first, then opens the new instance. This pattern is the most robust but requires scripting discipline and a consistent faceplate container name.
Sub OnClick(ByVal item)
Dim pw
Set pw = HMIRuntime.ActiveScreen.ScreenItems("PictureWindow_1")
If pw.Visible = True Then
pw.Visible = False
End If
pw.Visible = True
pw.ScreenName = "Faceplate_Motor"
End Sub
4. Root Cause 2: Single Shared Picture Window
The picture window object in WinCC Comfort/Advanced (and the equivalent in WinCC Professional) is a single embedded container that can host one child screen at a time. When multiple faceplate-invoke objects on different process screens all reference picture window number 1, the runtime allocates the first invocation to that window and discards the second.
4.1 Mechanism in Detail
The picture window object is configured on every process screen with a fixed window number (Window 1, Window 2, ... Window 32 in the 16:9 panels; up to 32 windows on a Comfort Panel). Each faceplate type is mapped to a specific window number. If faceplate type "Motor" is mapped to window 1, and the invoke buttons on screens A and B both reference "Window 1 - Motor," then:
- Screen A is loaded. The invoke button sets the picture window's
PictureNameto "Faceplate_Motor" andVisible = TRUE. - Screen change to screen B. The picture window state is preserved across screen changes in Comfort/Advanced (this is by design; picture windows are global to the runtime).
- Invoke button on screen B attempts to set the picture window's
PictureNameto the same value andVisible = TRUE. The runtime sees no state change and does not re-render.
4.2 Diagnostic Procedure
- Open the screen A configuration. Note the picture window name and number used for each faceplate-invoke object.
- Open the screen B configuration. Compare the picture window assignment.
- If both screens use the same picture window number for the same faceplate type, this root cause is confirmed.
- Alternative confirmation: temporarily configure the invoke button on screen B to open faceplate type "Valve" instead of "Motor." If the valve faceplate opens correctly, the picture window assignment for the motor faceplate is the problem.
4.3 Corrective Solution
Assign a unique picture window number per faceplate type. The standard allocation for a typical process plant project is:
| Picture Window Number | Faceplate Type | Typical Equipment |
|---|---|---|
| 1 | Motor_Faceplate | LV motors, VFD-driven motors |
| 2 | Valve_Faceplate | On/off and modulating valves |
| 3 | AnalogTag_Faceplate | Analog measurements (PI tags) |
| 4 | MotorVFD_Faceplate | VFD-specific parameters |
| 5 | Tank_Faceplate | Level, volume, batch state |
| 6-32 | Reserved | Spare for expansion |
After changing the picture window number on screen B, recompile the HMI and download the full runtime (not a delta). The picture window assignment is part of the runtime image, not a runtime-modifiable property.
5. Root Cause 3: Faceplate Version Inconsistency (TIA Portal V20)
Faceplate versioning was introduced in TIA Portal V16 and extended in subsequent releases to support faceplate version consistency checks. The intent is to allow a faceplate type to be revised without forcing a full re-download of every HMI that uses it. The unintended side effect is that a faceplate instance that was generated against version 1.0 of a faceplate type may be silently desynchronized from version 1.1 if the version was not explicitly released.
5.1 Mechanism in Detail
When a faceplate type is edited in the TIA Portal faceplate editor, the change is recorded as an unreleased version. The instances on every HMI screen continue to reference the prior released version. If the HMI is compiled and downloaded while the faceplate is in an "in edit" state, the following can occur:
- The faceplate type is marked as version-inconsistent in the project tree.
- The HMI compiler emits a warning or, in strict mode, an error.
- The runtime loads the faceplate type with the prior interface signature, but the instance's bound tags may have been renamed or retyped in the meantime.
- The faceplate's launch condition (visibility animation) evaluates against the stale interface and aborts cleanly, producing the same observable symptom as the binary tag latch.
5.2 Diagnostic Procedure
From the TIA Portal project tree:
- Expand
PLC > HMI > [HMI station] > Screens > Faceplates. - Look for faceplate types marked with a yellow or red icon. The yellow icon indicates "in edit, not released." The red icon indicates "version inconsistent with at least one instance."
- Right-click the faceplate type and select "Manage versions." The version manager dialog lists all released versions and the working copy.
- Compare the working-copy interface to the released version. Pay particular attention to renamed, removed, or re-typed tags.
- Right-click the faceplate type and select "Check version consistency." TIA Portal reports each instance that is out of sync with the released version.
5.3 Corrective Solution
Per the official TIA Portal V20 documentation on checking and fixing version inconsistencies:
- Open the faceplate type in the faceplate editor.
- Reconcile the working copy with the released version: either accept the working copy as the new released version (release it), or revert the working copy to the last released version.
- If a new release is required, click "Release version" and provide a version comment that documents the interface change.
- Right-click each inconsistent faceplate instance and select "Update to current faceplate version." The instance is regenerated with the new interface.
- Recompile the HMI and download the full runtime. Verify that all faceplate types in the project tree are marked with the green (consistent) icon.
6. Diagnostic Workflow Summary
Run the following sequence to isolate the root cause in under 10 minutes for most projects:
| Step | Action | Expected Time | Go/No-Go Signal |
|---|---|---|---|
| 1 | Watch Faceplate_Visible in the tag browser before, during, and after the first invoke. |
1 minute | If tag is already 1, root cause 1 confirmed. |
| 2 | Compare picture window numbers used for the same faceplate type across all screens. | 3 minutes | If two screens share the same picture window for the same faceplate type, root cause 2 confirmed. |
| 3 | Inspect the faceplate type in the project tree for version-consistency markers. | 2 minutes | If yellow or red icon, root cause 3 confirmed. |
| 4 | Recompile HMI with full project tree, full download, observe diagnostic viewer on first faceplate invocation. | 5 minutes | If a "Faceplate version inconsistent" warning is emitted, root cause 3 confirmed. |
| 5 | Temporarily bind the faceplate visibility animation to a script that hard-codes TRUE. Re-test the cross-screen behavior. |
5 minutes | If the faceplate now opens correctly across screens, the original visibility binding was the problem (root cause 1 or a misconfigured animation). |
7. HMI Tag Configuration Reference
The following HMI tag configuration is the recommended baseline for new WinCC Unified and Comfort/Advanced projects that need to support cross-screen faceplate invocation.
| Tag Name | Data Type | Connection | Acquisition Cycle | Length | Use |
|---|---|---|---|---|---|
| Faceplate_Visible | Bool | Internal (no PLC link) | 100 ms | 1 bit | Master visibility latch (Solution 1A pattern) |
| Faceplate_Type | USInt | Internal | 100 ms | 1 byte | Index of the faceplate type to render (0=none, 1=motor, 2=valve, ...) |
| Faceplate_TagPrefix | WString[64] | Internal | On demand | 64 char | DB block / UDT instance name to bind to the faceplate |
| Faceplate_OpenCount | UInt | Internal | 100 ms | 2 bytes | Diagnostic counter: increments on every successful open. Non-zero at end of shift indicates operator activity. |
| Faceplate_OpenFailCount | UInt | Internal | 100 ms | 2 bytes | Diagnostic counter: increments on every cross-screen open attempt that was discarded. Sustained growth indicates unresolved root cause 1 or 2. |
The 250 ms cycle time referenced in the source report is well within the recommended range for a faceplate visibility tag. Acquisition cycle should not exceed 500 ms; faster than 100 ms is unnecessary because human operator response time is on the order of 200 ms minimum.
8. Picture Window Configuration Reference
For WinCC Comfort/Advanced, the picture window object is configured per screen with these mandatory properties:
- Window number: unique per faceplate type. Range 1-32 on Comfort Panels.
-
Picture Name: the faceplate screen name. Convention: prefix with
FP_to distinguish from process screens (e.g.,FP_Motor,FP_Valve). -
Tag prefix: the HMI tag or PLC DB block prefix that supplies the faceplate's instance data. Conventionally the equipment P&ID tag (e.g.,
DB100.Motor_01A). - Adapt to picture: TRUE. The picture window resizes to fit the faceplate screen content.
- Border: TRUE for a modal-style faceplate, FALSE for a sidebar faceplate.
-
Close button: configure the faceplate's close button to set
Visible = FALSEon the picture window. Do NOT close the picture window; hiding it preserves the tag prefix binding for the next invocation.
9. Cycle Time and Performance Considerations
Increasing the HMI update cycle to 250 ms (as the source report indicates) reduces PLC scan load and reduces HMI-RT CPU utilization, but it has a side effect: the visibility animation re-evaluates at most 4 times per second. If the operator presses the invoke button on screen B within 250 ms of the screen change, the visibility evaluation may not have run yet, and the second SET event may be missed.
Recommended configuration for projects that need to support fast cross-screen faceplate invocation:
| Tag Class | Recommended Acquisition Cycle | Rationale |
|---|---|---|
| Faceplate visibility (Bool) | 100 ms | Operator response time is ~200 ms; 100 ms gives two evaluations per typical click. |
| Process tags inside the faceplate | 250-500 ms | Process tags change slowly relative to operator actions. |
| Alarm tags | 500-1000 ms | Alarm acknowledgements are operator-driven; cycle time governs display latency. |
| Diagnostic counters | 1000 ms | Diagnostic values are not real-time critical. |
10. Verification Procedure
After applying any of the corrective solutions, perform the following verification sequence on the engineering station and on the production HMI:
- Recompile the HMI project. Confirm zero warnings and zero errors in the HMI compiler output. A persistent warning about faceplate version inconsistency indicates Solution 5 was not completed.
- Download the full runtime (not delta) to the HMI or to the PC-RT station. The full download is required because the picture window configuration is not a runtime-modifiable property.
- On the engineering station, open the HMI runtime simulation. Click the invoke button on screen A. Verify the faceplate opens.
- Without clicking the close button, trigger a screen change to screen B. Click the invoke button on screen B. Verify the faceplate opens immediately.
- Trigger a screen change to screen C, then back to screen B. Click the invoke button on screen B. Verify the faceplate opens immediately.
- Close the faceplate on screen B. Verify that the
Faceplate_Visibletag has returned to 0 (or that the equivalent state has been cleared) by checking the tag browser. - Repeat steps 3-6 for every faceplate type configured in the project. The test must cover every faceplate type because the picture window allocation is per-type.
11. Edge Cases and Field-Reported Anomalies
Edge case 1: Faceplate opens but with stale data. The visibility animation fires correctly but the tag prefix binding is preserved from the prior invocation. Symptom: operator on screen B opens the motor faceplate for motor 02A, but the faceplate displays motor 01A's data. Root cause: the picture window's Tag prefix property was not updated by the invoke button. Corrective: configure the invoke button to set the picture window's Tag prefix property in addition to the visibility property, or use a script to do both atomically.
Edge case 2: Faceplate renders but is positioned off-screen. The picture window is anchored to the upper-left of the process screen. On screens with a different layout origin, the faceplate is rendered outside the visible area. Root cause: picture window position is absolute, not anchored. Corrective: use a screen-relative coordinate system and verify the picture window position on every screen variant.
Edge case 3: Faceplate opens correctly in RT simulation but not on the physical panel. The HMI runtime version on the physical panel is older than the engineering station's compiled runtime. Root cause: full download not performed. Corrective: perform a full download, including the operating system image if the panel firmware is older than the engineering project expects.
Edge case 4: Faceplate works on Monday but fails on Tuesday. The HMI was restarted overnight and a backup configuration was loaded. Root cause: a scheduled restore job is reverting the runtime to a prior backup. Corrective: inspect the HMI's auto-restore and backup configuration. Disable scheduled restore during commissioning. TIA Portal supports scheduled backups via the HMI's "Backup/Restore" settings; these should be coordinated with the runtime deployment schedule.
12. Migration-Specific Notes: S7-400 to S7-1500 (or S7-400 to S7-400)
The source report explicitly references a scenario where an existing S7-400 was replaced. Migration is a high-risk event for faceplate defects for three reasons:
- DB block number changes: The S7-1500 typically uses different DB block numbers than the S7-400, even if the data layout is identical. The faceplate's tag prefix binding is by DB number and offset; a DB number change is invisible to the faceplate type but fatal to the instance.
- UDT instance name changes: The S7-1500 supports symbolic UDT instance names. If the faceplate was originally bound by absolute address, the migration to symbolic addressing may break the binding silently.
- HMI station firmware and configuration: A new PC-RT station is typically deployed alongside the new PLC, with new IP addresses, new HMI connections, and a fresh image. The faceplate population is regenerated from the new project's screen objects. If the faceplate type was edited between the original and the new project, the version-consistency check (per TIA Portal V20 faceplate version management) will flag the inconsistency.
Recommended post-migration verification sequence: repeat the full verification procedure in Section 10 on the new HMI, with a specific focus on the faceplate instances that bound to DB blocks whose numbers were renumbered. A DB block number change must be reflected in the faceplate's tag prefix binding on every screen that uses the faceplate.
13. Frequently Asked Questions
Why does the faceplate only fail on the second screen, not the first?
The binary tag latch pattern only manifests on the second invocation because the first SET event transitions the tag from 0 to 1, which is a state change. The second SET event on a different screen finds the tag already at 1, which is not a state change, so the HMI engine does not re-fire the launch event. The faceplate on the first screen rendered correctly because the tag transition triggered the animation.
Can a single shared Boolean tag be used for multiple faceplate types?
Yes, but only with the per-faceplate-type scripting pattern (Solution 1E) or the per-screen index pattern (Solution 1B). The naive single-tag pattern (Solution 1A) does not scale beyond a single faceplate type because every invoke button writes to the same tag, and only the most recently requested faceplate type will be rendered.
Is the 250 ms cycle time the cause of the failure?
No. The 250 ms cycle time is the acquisition cycle for the HMI tag, which governs how often the runtime polls the PLC. The failure is a logic issue, not a timing issue. However, reducing the cycle time to 100 ms for the visibility tag is recommended to ensure the visibility animation evaluates at least once between successive operator actions.
How do I find every shared picture window conflict in a large project?
TIA Portal does not provide a built-in conflict report for picture window assignments. The fastest method is to export the project to a CSV or XML via the TIA Portal Openness API, parse the picture window number for every faceplate-invoke object, and identify duplicates. A manual alternative is to right-click each process screen in the project tree, select "Properties," and record the picture window assignments; conflicts become visible after a few screens.
What is the difference between a faceplate version inconsistency and a faceplate type revision?
A faceplate version is a release marker on a faceplate type. When a faceplate type is edited, the changes are held in a working copy. The released version remains the version used by all faceplate instances until the working copy is released and instances are updated. A version inconsistency occurs when the working copy and the released version diverge AND at least one faceplate instance is bound to a tag that no longer exists in the working copy. The TIA Portal V20 documentation on faceplate version consistency documents the full workflow for resolving inconsistencies.
Does the faceplate problem also occur on Comfort Panels, or only PC-RT stations?
The problem occurs on all WinCC Comfort/Advanced targets, including Comfort Panels (TP700, TP900, TP1200, TP1500, TP1900, TP2200), WinCC Runtime Advanced, and WinCC Runtime Professional. The picture window count limit (32) applies to Comfort Panels; the PC-RT stations support up to 32 picture windows per screen but with a different memory profile. WinCC Unified has a different faceplate model that does not use picture windows, but the binary tag latch pattern (Root Cause 1) and the version inconsistency pattern (Root Cause 3) still apply.