Overview
Reusable pop-up faceplates are the standard pattern in SIMATIC WinCC V7.4 for displaying and editing process data that has the same shape across many plant objects (motors, valves, tanks, drives, dosing units, etc.). Instead of duplicating a picture per instance, you build one picture that uses structure tags (UDT-style compound tags) plus the Tag Prefix property of the Picture Window object. The prefix acts as a runtime pointer to the active structure instance, so the same I/O fields, status symbols, and scripts inside the faceplate automatically read/write the correct element of the correct motor.
This reference walks through the complete configuration: defining the structure type, instantiating structure tags for each motor, binding the elements to absolute S7 addresses, building the faceplate picture, configuring the picture window with a tag prefix, and calling the pop-up dynamically. The pattern is documented in Siemens FAQ 23690358 and is the foundation of the WinCC Faceplate Designer approach.
Prerequisites
- SIMATIC WinCC V7.4 SP1 or later (Update 7+ recommended for stability of the tag prefix engine). Earlier V7.3/V7.2 projects can be migrated, but always retest faceplates after migration.
- WinCC Explorer project with a working Tag Management and an active channel (e.g., SIMATIC S7 PROTOSUITE or SIMATIC S7-1200/S7-1500 Channel).
- Established S7 connection to the AS (PLC) — verify with the Channel Diagnosis tool before binding addresses.
- A defined S7 data block (DB) or UDT on the PLC that mirrors the structure you plan to build in WinCC. Mismatched data types are the #1 cause of "quality bad" I/O fields.
- Authoring rights on the WinCC project (the Structure tag editor is disabled in runtime-only client configurations).
Step 1 — Define the Structure Type
In WinCC Explorer, right-click Tag Management → Add New Structure Type. The structure type is a template; it does not contain values, only element definitions. Use a naming convention such as MOTOR_Type, VALVE_Type, or TANK_Type to keep the tag browser readable.
| Element name | Data type (WinCC) | Maps to S7 | Length (bytes) | Notes |
|---|---|---|---|---|
.on |
Binary tag | BOOL | 1 bit | Start command (write from HMI) |
.off |
Binary tag | BOOL | 1 bit | Stop command (write from HMI) |
.running |
Binary tag | BOOL | 1 bit | Run feedback (read only) |
.fault |
Binary tag | BOOL | 1 bit | Fault feedback (read only) |
.rpm |
Signed 32-bit | DINT | 4 | Speed actual |
.setpoint |
Signed 16-bit | INT | 2 | Speed setpoint |
.name |
Text tag, 16 chars | STRING[16] | 18 | Label (header on faceplate) |
Reserve 4-byte alignment for any 32-bit elements placed next to a 16-bit element to avoid padding issues; WinCC V7.4 will not auto-align elements and the S7 will. A Pack bits option exists for internal structures — leave it off when the structure is bound to an S7 DB.
Step 2 — Create Structure Tag Instances
Right-click the new Structure Type in the tag browser and choose Add New Structure Tag. Create one instance per physical object:
-
motor1→ DB100 -
motor2→ DB101 -
motor3→ DB102 - …
A structure instance is a single WinCC tag whose address points to the start of the corresponding S7 DB. All elements (.on, .off, .rpm, …) are accessed as motor1.on, motor1.rpm, etc. The instance itself can be referenced by its short name (motor1), which is what gets fed into the picture window's Tag Prefix property at runtime.
Step 3 — Bind Structure Elements to S7 Addresses
Select the structure instance (e.g., motor1) and open its Properties dialog. The dialog exposes every element defined by the structure type. Each element has its own address field.
For an S7-300/400 channel, the address takes the form DB<n>,DBX<byte>.<bit> for BOOL, DB<n>,DBB<byte> for byte, DB<n>,DBW<word> for INT/WORD, and DB<n>,DBD<dword> for DINT/DWORD. For an S7-1200/1500 optimized DB, use the symbolic form: "Motor_1".on.
| Element | S7-400 DB100 address | S7-1500 symbolic |
|---|---|---|
motor1.on |
DB100,DBX0.0 |
"MotorDB".on |
motor1.off |
DB100,DBX0.1 |
"MotorDB".off |
motor1.running |
DB100,DBX0.2 |
"MotorDB".running |
motor1.rpm |
DB100,DBD4 |
"MotorDB".rpm |
motor1.setpoint |
DB100,DBW8 |
"MotorDB".setpoint |
motor1.name |
DB100,DBB10.0 (STRING[16] = 18 bytes) |
"MotorDB".name |
When the structure type is changed (a new element added or one removed), WinCC will reapply the template to all instances and clear any address that is no longer valid. The instance will be flagged in the tag browser with a warning icon — re-enter the affected addresses before going live.
Step 4 — Build the Pop-up Faceplate Picture
Open the Graphics Designer and create a new picture (e.g., motor_faceplate.pdl). Lay out the controls exactly the way you want them to appear for any motor instance:
- Header field (text I/O) bound to
name - Start button (button with set tag action writing to
on) - Stop button (button writing to
off) - Status lamp for
running - Status lamp for
fault - I/O field for
setpoint(output + input) - I/O field for
rpm(output only)
Critically, when wiring an I/O field you reference the structure element without the instance prefix:
- Tag for the speed I/O field:
rpm - Tag for the start button:
on - Tag for the name header:
name
These bare element names will be resolved at runtime against the picture window's tag prefix. If you accidentally type motor1.rpm in the faceplate, the picture is no longer reusable — it is hard-bound to a single instance.
Step 5 — Configure the Picture Window with a Tag Prefix
Add a Picture Window object to your main process picture. In its configuration dialog set:
-
Picture Name: the picture to display —
motor_faceplate.pdl -
Tag Prefix: the runtime structure instance — e.g.,
motor1 - Display: True / False or a tag that toggles visibility
- Size, position, border style: cosmetic only
The picture window now behaves like a function call: it opens the faceplate, points it at motor1, and the picture internally reads rpm → resolves to motor1.rpm, writes on → resolves to motor1.on, and so on. Add a separate picture window per simultaneous instance (or reuse one window and dynamically change the prefix — see Step 6).
Step 6 — Calling the Pop-up with Different Instances
To call the same faceplate for a different motor, set the picture window's Tag Prefix property dynamically using a C/VBScript or a tag trigger:
VBScript example (button click → open faceplate for motor3):
Dim objWnd
Set objWnd = ScreenItems("PopupWindow")
objWnd.PictureName = "motor_faceplate.pdl"
objWnd.TagPrefix = "motor3"
objWnd.Visible = True
Alternative — direct tag property on the button:
- In the button's Mouse Click event, use a Set Property action targeting
PopupWindow.TagPrefix. - Source value: a WinCC string tag (e.g.,
sel_motor_prefix) that the screen itself sets with the clicked motor's name. - Triggering expression:
sel_motor_prefix <> ""
This is the mechanism used in the Siemens faceplate technology documented in FAQ 23690358.
Verification
Run the project in WinCC Runtime and validate the chain end-to-end:
-
Tag prefix resolution — open the faceplate for motor1; in Tag Diagnosis confirm
motor1.rpmupdates when the S7 value changes. Repeat for motor2; the same I/O field should now display motor2's value without any change to the faceplate picture. - Write path — type a new setpoint in the I/O field and verify the S7 DB changes (monitor the variable in STEP 7 or via the S7 diagnostic buffer).
- Switch instances — fire the VBScript above; the picture window content should refresh to the new motor within the configured update cycle (default 250 ms; reduce to 100 ms for fast processes, 1000 ms for slow).
- Compile and consistency check — compile the OS (Operator Station) project. Any unresolved tag prefix will be listed in the compiler output as "Tag prefix refers to a non-existent structure instance".
- Redundancy / multi-client — in a redundant server pair, replicate the structure tags identically; the tag prefix is a runtime property and is not stored in the tag database.
Troubleshooting Matrix
| Symptom | Likely cause | Fix |
|---|---|---|
| I/O field shows red X | Tag prefix points to a structure instance that does not exist, or element name does not match structure type | Confirm instance exists in Tag Management; confirm element is spelled identically to the structure type definition |
| Value frozen at 0 | Element address points to wrong byte/bit in the S7 DB | Compare the DB layout with the structure element offsets; check bit order on S7-1500 optimized DBs (LSB first) |
| Runtime error 130001 "Tag not found" | Tag prefix is empty or contains a typo | Trace the script that sets the prefix; ensure it is called before the picture window is set visible |
| Faceplate updates one motor but not the other | One structure instance not created or not bound to an address | Open Tag Management, verify both motor1 and motor2 exist and have valid addresses (no yellow warning triangle) |
| Value flashes between two instances when navigating | Two picture windows share the same name | Rename to unique names (PWMotor1, PWMotor2) — the tag prefix is per object, not per picture |
| String element shows garbage | S7 STRING length mismatch with WinCC text tag length | Match the WinCC text tag length to the S7 STRING[n] maximum length plus 2 header bytes |
Advanced Patterns
Nested structures: WinCC V7.4 supports one level of structure element nesting. If you need motor1.drive.speed, define drive as a sub-structure of MOTOR_Type with its own elements. The tag prefix in the picture window still resolves to the outer instance.
Array-style access: For loops over 10..20 motors, create structure instances named motor[1]…motor[N] and build the prefix dynamically. The Index property of a C-action can drive a script that concatenates "motor" + IndexVar.
User-defined buttons per faceplate: Add a child picture window inside the faceplate for secondary dialogs (e.g., a curve display for the motor's vibration). The child picture window inherits the parent's tag prefix only if you explicitly copy it via a script.
WinCC Faceplate Designer: As of WinCC V7.4 SP1, the Faceplate Designer add-in automates the tag prefix plumbing and generates a VB function library. The underlying mechanism is the same; the add-in just hides the manual steps above.
Field-Proven Caveats
- Structure tag instance rename in the tag browser does not propagate to faceplate scripts. Search the project for the old name before renaming.
- Do not delete a structure type while instances exist. WinCC will orphan the instances and the compiler will not catch it until the next full rebuild.
- The picture window Tag Prefix field accepts only the instance short name. It does not accept a fully qualified
StructureName.InstanceNamepath — the structure type is implicit from the faceplate's I/O field bindings. - On slow networks (≥ 500 ms RTT), increase the picture window's Update property above the default 250 ms; otherwise the prefix change may commit before the new instance's first value is fetched, producing a brief flicker of the previous motor's data.
FAQ
How do I bind a structure tag element to a specific S7 DB address?
Open the structure instance in Tag Management, select the element (e.g., on), and enter the S7 address in the element's Properties → Address field. For S7-300/400 use DB100,DBX0.0 (BOOL) or DB100,DBD4 (DINT); for S7-1200/1500 optimized DBs use the symbolic form "MotorDB".on. See the WinCC V7.4 Communication Manual for the full address syntax per channel.
Can a single pop-up faceplate show different motor instances at runtime?
Yes. Use one Picture Window object and change its Tag Prefix property dynamically (e.g., from motor1 to motor2) via a VBScript on a button click or on a tag trigger. The faceplate picture itself is built once and contains only bare element names such as on, rpm, fault — they resolve against the active prefix at runtime. Siemens documents this in FAQ 23690358.
What is the difference between an internal tag and an external tag in WinCC V7.4?
Internal tags exist only in WinCC — they have no address and no connection to the PLC — and are typically used for screen-local logic (e.g., a toggle for a maintenance override). External tags have an address pointing to a memory location in the connected AS (PLC); WinCC reads/writes them on the configured update cycle. A structure element bound to a faceplate must be an external tag, otherwise the picture window tag prefix has no AS endpoint to resolve to.
Does the tag prefix mechanism support nested structures (e.g., motor1.drive.speed)?
Yes, WinCC V7.4 supports one level of structure element nesting. Define a sub-structure inside the parent structure type and reference its elements with a dot inside the faceplate (e.g., drive.speed). The tag prefix in the picture window still resolves to the parent instance only; the sub-element is resolved relative to the prefix.
Why does my picture window show a red X for every I/O field after I configure the tag prefix?
The most common cause is that the prefix value does not match any structure instance name in the project, or the faceplate's I/O fields reference element names that do not exist on the structure type. Open the tag browser and confirm the instance (e.g., motor1) is present and has no warning icon. Then re-open the faceplate and confirm each I/O field's tag is spelled identically to the structure type's element list (case-sensitive, no prefix such as motor1. inside the faceplate picture).