Overview
A pop-up window in a Siemens WinCC HMI project is a screen object (Picture Window, MessageBox, or layered faceplate) that becomes visible the moment a Boolean tag, limit value, or alarm event asserts. A global pop-up extends that behavior across every picture in the runtime navigation tree, so the user is interrupted regardless of which process screen is currently active. This is required for plant-wide acknowledgements, safety notices, alarm priority 1 events, and end-of-batch confirmations.
WinCC delivers three production-ready mechanisms for global pop-ups:
- Picture Window on the global @Screen.pdl or local @1001.pdl template – the most flexible method, supports embedded faceplates, custom graphics, and operator input.
- MessageBox via ShowWindow / MsgBox in a triggered action – the lightest method, modal dialog only, no custom graphics.
- Layered faceplate on a permanent layer of the start picture – used in WinCC Professional / TIA Portal with multi-layer faceplates.
The remainder of this guide focuses on the Picture Window method, which is the field-proven approach for redundant OS servers and projects with more than 50 process pictures. The procedure below applies to WinCC V7.5 SP2, V7.4 SP1, and WinCC Runtime Professional V16 / V17 in TIA Portal; behavior on V6.x is similar but uses the older @1001.pdl path exclusively.
Prerequisites
Before you start the configuration, verify the following items in the engineering station and the target runtime.
- WinCC Explorer (V7.x) or TIA Portal with WinCC Professional installed and licensed. License key "WinCC RT" or "WinCC RC" must be active; pop-up functionality is included in the base runtime license.
- Graphics Designer running with administrator rights so the global template
@Screen.pdl(server) and@1001.pdl(client/local) can be edited. - A defined trigger tag of type
BOOLin the WinCC tag manager. Internal tags, PLC tags, or AS-OS connection tags all work. A typical naming convention isPopup_MainWindow_ShoworHMI_Popup_GlobalAck. - If a redundant OS server pair is in use, both servers must reference the same picture hierarchy and have matching project versions. Verify with the WinCC redundancy control center or the
Redundancy Stateinternal tag. - For the MessageBox fallback, VBScript or ANSI-C must be enabled under Project Properties > Options > Runtime > Scripting.
Architecture: @Screen.pdl vs. @1001.pdl
WinCC uses two distinct global pictures depending on the runtime topology. Understanding which one applies to your project is critical for a correctly scoped pop-up.
| Property | @Screen.pdl | @1001.pdl |
|---|---|---|
| Scope | Server (preferred picture, master) | Client / local OS |
| Project location | Server project directory \<Server>\<Project>\GraCS\
|
Local client picture cache \<Client>\GraCS\
|
| Edit location | WinCC Explorer on the server | WinCC Explorer on the client / WebNavigator client |
| Use case | Single-server projects, master of redundant pair | Redundant OS, distributed clients, WinCC WebUX |
| Reload on tag change | Yes, all clients re-render | Yes, local only |
For a global pop-up that must appear in front of any process picture, the standard recommendation from the Siemens WinCC FAQ 22906364 is to place a Picture Window on the @1001.pdl template. The Picture Window sits on the highest Z-order of the layer system, which is preserved across picture navigation. When the trigger tag asserts, the action sets the picture name property of the Picture Window to the pop-up PDL (e.g. Popup_AlarmHigh.pdl). When the operator acknowledges and the tag drops, the action sets the picture name to an empty string, which hides the Picture Window.
Picture Window Configuration
The Picture Window (German: Bildfenster) is a Smart Object in the WinCC Graphics Designer. It hosts another PDL as a child and can be moved, resized, and reparented at runtime through the VBScript interface.
- Open @1001.pdl (or @Screen.pdl for single-server projects) in the Graphics Designer.
- From the Smart Object palette, drag a Picture Window onto the work area. Set the following properties in the configuration dialog:
• Picture Name (current): leave blank.
• Window Mode:Standard(not "Maximize" – the pop-up must not steal the focus of the underlying screen).
• Independent Window:No, so the Picture Window inherits the parent layer and Z-order. - Resize the Picture Window to the required pop-up geometry, for example 600x400 px, and center it using Alignment > Center > Horizontal / Vertical.
- Disable the Window Border and Title Bar properties if a custom frame is used in the embedded PDL.
- Open the Properties tab and assign a constant or a tag-driven value to the Picture Name attribute. The runtime name binding is what the triggered action will manipulate.
To prevent the user from clicking through the pop-up to the underlying process picture, draw a semi-transparent rectangle (Alpha 30-40%) behind the Picture Window on the same template. The rectangle covers the full screen and absorbs mouse events while the pop-up is visible.
Triggered Action Setup
A Triggered Action in WinCC is a server-side scheduled task that polls one or more tags at a configurable cycle and runs a VBScript or ANSI-C procedure on change. This is the correct mechanism for global pop-ups because a polled action runs on the master OS regardless of which picture the client has open.
Create the action under WinCC Explorer > Global Script > Actions > Triggered Actions. The cycle time of 250 ms is a good default for alarm pop-ups; faster cycles (50-100 ms) are useful for safety-critical warnings but increase CPU load on the master.
VBScript implementation (WinCC V7.x):
' --- Triggered Action: GlobalPopUpControl ---
' Trigger tag: PopupTrigger (BOOL, 250 ms cycle)
Dim picName, trigger, ackTag
Set trigger = HMIRuntime.Tags("PopupTrigger")
trigger.Read
Set ackTag = HMIRuntime.Tags("PopupAck")
ackTag.Read
' Picture Window object name on @1001.pdl
Const PW_NAME = "PW_GlobalPopup"
If trigger.Value = True Then
' Build the picture name to load (could be tag-driven)
Dim srcTag
Set srcTag = HMIRuntime.Tags("PopupSource")
srcTag.Read
picName = srcTag.Value & ".pdl"
HMIRuntime.Screens.Item("@1001.pdl").ScreenItems(PW_NAME).PictureName = picName
HMIRuntime.Screens.Item("@1001.pdl").ScreenItems(PW_NAME).Visible = True
ElseIf ackTag.Value = True Then
HMIRuntime.Screens.Item("@1001.pdl").ScreenItems(PW_NAME).PictureName = ""
HMIRuntime.Screens.Item("@1001.pdl").ScreenItems(PW_NAME).Visible = False
ackTag.Write False
End If
ANSI-C implementation (legacy / performance-sensitive projects):
#include "apdefap.h"
void TriggeredAction_Popup(void)
{
DWORD dwTrigger = 0, dwAck = 0;
char szPicName[256] = {0};
dwTrigger = GetTagBit("PopupTrigger");
dwAck = GetTagBit("PopupAck");
if (dwTrigger == 1) {
GetTextTag(szPicName, "PopupSource", 256);
strcat(szPicName, ".pdl");
SetPictureName("@1001.pdl", "PW_GlobalPopup", szPicName);
SetVisible("@1001.pdl", "PW_GlobalPopup", 1);
} else if (dwAck == 1) {
SetPictureName("@1001.pdl", "PW_GlobalPopup", "");
SetVisible("@1001.pdl", "PW_GlobalPopup", 0);
SetTagBit("PopupAck", 0);
}
}
Configure the trigger list to include PopupTrigger, PopupAck, and PopupSource (String tag, 32 characters minimum) so the action only re-evaluates on tag change rather than every cycle.
Redundant OS Server Considerations
When a redundant OS server pair is configured, the preferred server is the only machine that runs triggered actions, holds the tag archive, and serves the active picture. After a failover, the standby takes over within the configured switchover time (typical 3-10 s). Global pop-ups must continue to display on the now-master server.
The following rules apply:
- Place the Picture Window and the triggered action on @1001.pdl on both servers. The picture file is part of the project download and is automatically synchronized.
- Use the system tag
@RM_MASTER(returns 1 on the active master) to gate any local-only logic. Do not toggle the Picture Window directly from the PLC; the master server arbitrates the failover. - Ensure the user acknowledgement tag is written to the preferred server. The WinCC redundancy driver duplicates writes from the master to the standby so the Picture Window state stays consistent after a switchover.
- Avoid running the same triggered action on both servers. The action scheduling system on the standby is automatically suspended when
@RM_MASTER == 0– confirm this with the redundancy log in the WinCC diagnostics view.
MessageBox Alternative
For a quick, text-only notification that does not need custom graphics, the VBScript MsgBox function (or the native WinCC function ShowMessageBox) is the lightest implementation. The dialog is modal at the Windows level, blocks the user from interacting with the underlying screen, and is dismissed with a single click.
If HMIRuntime.Tags("PopupTrigger").Read Then
HMIRuntime.ShowMessageBox "Alarm priority 1: Conveyor 7 emergency stop active", _
"Plant Notice", _
vbOKOnly + vbCritical, _
"MsgAck"
End If
The MessageBox is not appropriate for:
- Pop-ups that must remain visible while the user interacts with the underlying screen.
- Localized content that must be re-rendered on language change without restart.
- Pop-ups containing operator inputs (numeric entry, dropdowns, button rows) – use the Picture Window instead.
Layer and Z-Order Management
WinCC pictures are composed of 32 layers, numbered 0 (background) to 31 (topmost). The Picture Window placed on @1001.pdl is bound to the layer of the parent @1001.pdl. To guarantee that the pop-up always renders above any process picture, configure the Picture Window on layer 31 of @1001.pdl and ensure no other process picture contains a permanent layer-31 object.
Layer rules to follow:
| Layer | Recommended Use | Notes |
|---|---|---|
| 0 | Static background graphics | Never use for dynamic content |
| 1-15 | Process displays, primary controls | Most process pictures live here |
| 16-30 | Process-level overlays (faceplates, trends) | Reserved for picture-in-picture use cases |
| 31 | Global system overlays, pop-ups | Reserved exclusively for global UI |
Step-by-Step Implementation
-
Create the pop-up PDL. In the Graphics Designer, open a new picture named
Popup_AlarmHigh.pdl. Add the required controls (text, acknowledge button, tag display). Set the picture size to match the Picture Window geometry defined in step 2 of the configuration section. -
Configure internal tags. In the WinCC tag manager, create:
•PopupTrigger(BOOL, internal)
•PopupAck(BOOL, internal)
•PopupSource(Text tag, 8-bit, length 32) -
Edit the global template. Open
@1001.pdlin the Graphics Designer. Add a semi-transparent full-screen rectangle on layer 30 (the dim layer) and a Picture Window namedPW_GlobalPopupon layer 31. - Add the triggered action. In WinCC Explorer, navigate to Global Script > Triggered Actions, create a new VBScript action using the script shown in the previous section. Set the trigger list and the cycle time to 250 ms.
-
Wire the PLC side. In the PLC program, set
PopupTrigger = TRUEwhen the alarm condition is detected. On the HMI side, the acknowledge button on the pop-up PDL setsPopupAck = TRUE, which the action interprets to hide the Picture Window and reset the trigger. - Compile and download the project. In WinCC Explorer, use Compiler > Graphics to rebuild the runtime files, then RT > Download to push the project to all clients and the redundant server pair.
Verification
After downloading, perform the following verification sequence on the runtime HMI. Each step must pass before the system is released to operations.
- Open the runtime and navigate to at least three different process pictures (e.g. overview, detail, alarm).
- Force
PopupTrigger = 1in the WinCC tag simulator or by writing from the PLC. - Confirm the pop-up appears on top of every navigation target, with the dim layer correctly applied.
- Click the acknowledge button on the pop-up. Confirm
PopupTriggerdrops to 0, the Picture Window is hidden, and the user returns to the previous process picture without flicker. - Repeat the test on the standby server. If using redundancy, perform a controlled failover (stop the preferred server service) and re-verify steps 2-4 on the now-master.
- Open the WinCC diagnostics view and confirm no errors or warnings are reported for the global script action. Action execution time should remain below 50 ms per cycle on a typical IPC.
Troubleshooting Matrix
| Symptom | Likely Root Cause | Resolution |
|---|---|---|
| Pop-up does not appear on any screen | Picture Window placed on a process picture instead of @Screen.pdl / @1001.pdl | Move the Picture Window to the global template and re-download |
| Pop-up appears only on the active screen | The Picture Window object was added to a normal picture | Verify the object path: HMIRuntime.Screens("@1001.pdl") not HMIRuntime.Screens("Main.pdl")
|
| Pop-up does not appear on redundant server | Local @1001.pdl edited on the server share, not pushed to client | Use the local copy on each client; redistribute via WebUx or manual copy |
| Action runs but Picture Window stays hidden | Z-order conflict, Picture Window is on a lower layer than the active process picture | Move the Picture Window to layer 31 of @1001.pdl |
| Pop-up flickers or closes immediately | Triggered action cycle is too fast, PLC clears the trigger faster than HMI can render | Set cycle to 250-500 ms; debounce trigger with a one-shot logic in the action |
| Modal MessageBox blocks tag updates | Modal dialog stalls the HMI main thread | Replace with a modeless Picture Window for non-critical acknowledgements |
| Pop-up text in wrong language | Pop-up PDL has no text library entries | Configure multilingual texts under Project Properties > Language & Font and reference them with text IDs |
Cross-Platform Notes
The Picture Window approach described above is the WinCC V7.x standard. For projects on TIA Portal with WinCC Runtime Professional (V16 / V17 / V18), the recommended equivalent is a Global Screen with a permanent pop-up faceplate on layer 32 of the master template. The scripting interface uses the HMIRuntime object model with the same tag read/write methods; only the picture hierarchy differs (no @Screen.pdl – use Common > Global Screen in the project tree).
For non-Siemens platforms, similar behavior can be achieved with the AutomationDirect C-more Pop-up Window Frame object, which supports up to four concurrent pop-up frames and exposes bit-tag triggers on the system tag list. Reference projects and configuration walkthroughs are documented in the C-more EA9 series help under Object List > Pop-up Window Frame.
FAQ
Why does my pop-up not appear on every screen in WinCC?
The most common cause is that the Picture Window was added to a process picture (e.g. Overview.pdl) rather than to the global template @1001.pdl or @Screen.pdl. Move the object to the global template, recompile, and download.
Which global template should I use, @Screen.pdl or @1001.pdl?
Use @Screen.pdl for single-server WinCC V7.x projects. Use @1001.pdl for redundant OS pairs, distributed clients, and any WebNavigator / WebUX client. The local @1001.pdl is also the correct location in a redundant setup because it lives on the client and is not subject to server-share synchronization conflicts.
What cycle time should I use for the triggered action?
250 ms is the default for alarm pop-ups. For safety-critical warnings, 100 ms is acceptable on IPC-class hardware; below 50 ms the action CPU cost becomes significant and the runtime may starve other scheduled tasks. Always add the trigger tags to the action's trigger list to limit re-execution to real changes.
Can I use MessageBox instead of a Picture Window for the pop-up?
Yes, for text-only modal notifications use the VBScript HMIRuntime.ShowMessageBox function inside a triggered action. MessageBox is not appropriate for pop-ups that need custom graphics, multiple operator inputs, language switching, or non-modal behavior; in those cases use the Picture Window on @1001.pdl.
How do I keep the pop-up working after a redundant server failover?
Place the Picture Window and the triggered action on @1001.pdl on both servers, gate local logic with the @RM_MASTER system tag, and verify the user acknowledgement tag is written to the preferred server. The WinCC redundancy driver mirrors the write to the standby so the Picture Window state remains consistent after the switchover.