1. Problem Overview
When configuring a WinCC V7.5 faceplate type, an engineer may need to expose multiple instances of the same structured PLC tag (User-Defined Type, or UDT) on the faceplate interface. The most common case is a pump faceplate that must drive two or more pumps simultaneously from a single reusable graphic object. In WinCC V7.5 SP1 and earlier, the Graphics Designer enforces a hard limit of one instance per structure type on the faceplate's properties dialog. Attempting to drag a second copy of the same structure (for example, Pump_2 after Pump_1) produces no entry, no error message, and no log entry in Diagnostics Viewer.
Siemens confirmed this behavior with Georg Berghof on the official developer side: "you can only add one instance of every structure type to a faceplate. You can add one instance of more other structure types." The constraint is enforced inside the FaceplateTypeEditor.exe configuration dialog and is not flagged in WinCCExplorer.log.
Pump_1 linked to structure Pump) cannot be replicated as Pump_2. The Properties pane of the faceplate type silently rejects the second assignment, and the right-hand interface list shows no new row.
2. Affected Products and Versions
The single-instance rule is part of the WinCC V7.5 faceplate property model documented in the WinCC V7.5 Working with WinCC manual. The rule is unchanged in the following builds:
| Product / Component | Version | Status |
|---|---|---|
| SIMATIC WinCC V7.5 | V7.5.0 (including Update 1 through Update 6) | Limited to one instance per structure type |
| SIMATIC WinCC V7.5 SP1 | V7.5.1.x | Same limitation |
| SIMATIC WinCC V7.4 ES | V7.4.1.x (legacy) | Same limitation observed in migrated projects |
| SIMATIC WinCC Professional (TIA Portal) V17-V18 | V17 / V18.x | Not affected by this exact rule (uses Unified-style faceplate model) |
| SIMATIC WinCC Unified (TIA Portal) V17-V20 | V17.x-V20.x | Multi-instance structures supported via interface collection |
Reference: Property of a faceplate type - WinCC V7.5: Working with WinCC.
3. Root Cause Analysis
The faceplate type editor in WinCC V7.5 stores interface properties in a fixed list inside the .fpt file (XML). The list is keyed on a combination of the property name and the type it references. The dialog uses the structure name as the deduplication key rather than the configured property name. Two distinct properties (Pump_1 and Pump_2) that both reference the same UDT are therefore treated as the same logical property.
Internally the runtime resolution path is:
- The faceplate container is instantiated on a process picture.
- Each faceplate instance is bound to a tag prefix supplied at drop time (for example
Plant/Pump1/). - The faceplate property resolution walks the
.fptschema and binds every property name to one tag-prefix + UDT-element pair. - If two properties share the same UDT, the editor's binding function exits early without inserting the duplicate row.
This is a configuration-time constraint, not a runtime hard fault. Runtime will function correctly with whatever interface was accepted at compile time, but the missing Pump_2 interface row never reaches the binary .fpl container, so the screen engineer cannot wire a second pump tag to it.
4. Reproduction Steps
- Open WinCC Explorer on the ES and load the project.
- Open the Graphics Designer and edit the relevant
.pdlfaceplate container. - Open the Faceplate Type Editor for the target faceplate (double-click the container background, or use Edit > Faceplate Type).
- Open Configuration > Properties on the faceplate type.
- Click an empty row in the interface list. Pick the structure tag type
Pumpfrom the data type column. Name itPump_1. Confirm the row. - Click the next empty row. Pick the same
Pumpstructure again. Name itPump_2. Confirm. - Expected (broken) result: the row is silently rejected. Only
Pump_1is listed.
The same behavior occurs if you try to copy & paste an existing structure-typed property, or if you import the property list from an XML template.
5. Impact Assessment Matrix
| Symptom in Designer | Symptom in Runtime | Severity | Action |
|---|---|---|---|
| Second structure row rejected silently | Second pump animation has no value source | High - functional loss | Apply workaround (Section 6) |
Compile warning absent in ApDiag.out
|
Tag prefix is valid but unused | Medium - silent failure | Enable Tag Simulation trace to capture unbound property |
| Round-trip with TIA Portal V17+ UDT export | Unified faceplate accepts multi-instance | Low - migration benefit | Plan migration to Unified (Section 8) |
| Scripting against missing property | VB script returns Empty on second tag |
Medium - hidden nulls | Add explicit guard in scripts |
6. Field-Proven Workarounds
There is no editor patch that lifts the one-instance rule in WinCC V7.5. The following four workarounds are used in real production HMI projects.
6.1 Workaround A: Compose Multiple Faceplate Instances on the Process Picture
The classic Siemens-recommended pattern. Build a composite faceplate by placing two (or more) instances of the single-pump faceplate on a hidden configuration .pdl, drawing the connecting pipework, grouping the result, and saving the group as a reusable object on a configuration page that is not loaded in runtime.
- Create a process picture named
@Config_PumpPair.pdloutside the runtime tree (set Properties > Miscellaneous > Do not display). - Drop the existing single-pump faceplate
Pump.fpltwice on the page at the desired positions. - Draw the static pipework segments, valves, and labels as separate vector objects.
- Select everything (Ctrl+A inside the picture), group with Ctrl+G.
- Copy the group to clipboard.
- Paste the group into the actual process picture (for example
Section_3.pdl) as a static instance. - On each inserted faceplate, open its Interface dialog and bind the first instance to
Plant/Pump1/*and the second instance toPlant/Pump2/*.
Drawbacks: every change to the underlying faceplate requires updating both instances; the group is not type-safe, so adding a third pump requires a new composite picture.
6.2 Workaround B: Duplicate the UDT in the PLC
When the limitation is structural rather than visual, create a second UDT in the S7 program that mirrors the first. For example, define Pump_A and Pump_B as exact copies of Pump at the PLC side. The faceplate can then expose one of each UDT type because they are different structure types as far as the WinCC faceplate editor is concerned.
// S7-1500 data block excerpt
TYPE "Pump_A"
VERSION : 0.1
STRUCT
Running : Bool;
Speed : Real;
Amps : Real;
CmdStart: Bool;
CmdStop : Bool;
END_STRUCT;
END_TYPE
TYPE "Pump_B" // mirror for multi-instance faceplate
VERSION : 0.1
STRUCT
Running : Bool;
Speed : Real;
Amps : Real;
CmdStart: Bool;
CmdStop : Bool;
END_STRUCT;
END_TYPE
WinCC sees Pump_A and Pump_B as two distinct types and accepts both rows in the faceplate properties dialog. The PLC programmer maintains a copy of the UDT definition; the S7-1500 TIA Portal will not auto-sync the two UDTs.
6.3 Workaround C: Flatten the Structure into Individual Tags
Skip the structured tag entirely and expose every leaf element of the pump as a discrete faceplate property. The faceplate then binds to Pump1_Running, Pump1_Speed, Pump1_Amps and so on. With ~5 leaf tags the faceplate interface grows linearly with the number of pumps.
| Element | Faceplate property | PLC tag (Pump1) | PLC tag (Pump2) |
|---|---|---|---|
| Running | P1_Run / P2_Run | DB_Pump1.Running |
DB_Pump2.Running |
| Speed | P1_Spd / P2_Spd | DB_Pump1.Speed |
DB_Pump2.Speed |
| Amps | P1_Amp / P2_Amp | DB_Pump1.Amps |
DB_Pump2.Amps |
| CmdStart | P1_Start / P2_Start | DB_Pump1.CmdStart |
DB_Pump2.CmdStart |
| CmdStop | P1_Stop / P2_Stop | DB_Pump1.CmdStop |
DB_Pump2.CmdStop |
Drawbacks: the faceplate has no type-safety on the data it expects, and adding a third pump means a new round of editor work.
6.4 Workaround D: VB-Script Mediated Tag Routing
Expose a single structure-typed property Pump_1 on the faceplate and a second set of flat tags Pump_2_Run, Pump_2_Spd, Pump_2_Amp, etc. on the picture. A VB script (or C script) inside the faceplate copies values from the structured binding to the flat tags at each cycle. This is the least preferred option because it introduces a 1-second polling latency, but it keeps the faceplate definition lean.
' Inside faceplate global script, OnTime trigger = 1 s
Sub Pump2Sync()
Dim oP1, oP2Run, oP2Spd, oP2Amp
Set oP1 = HMIRuntime.Tags("Pump_1")
Set oP2Run = HMIRuntime.Tags("Pump_2_Run")
Set oP2Spd = HMIRuntime.Tags("Pump_2_Spd")
Set oP2Amp = HMIRuntime.Tags("Pump_2_Amp")
oP1.Read
oP2Run.Value = oP1.Value("Running")
oP2Spd.Value = oP1.Value("Speed")
oP2Amp.Value = oP1.Value("Amps")
oP2Run.Write
oP2Spd.Write
oP2Amp.Write
End Sub
7. Comparison of Workarounds
| Approach | Editor effort | Runtime performance | Maintainability | Type safety |
|---|---|---|---|---|
| A: Composite faceplate group | Medium | Best (no extra cycles) | Medium | Yes |
| B: Duplicate UDT | Low | Best | Low (manual UDT sync) | Yes |
| C: Flat tags | High (scales with elements) | Best | Low | No |
| D: Script-routed tags | Low | Poor (polling) | Medium | Yes (on the source side) |
For new projects targeting WinCC V7.5 where the UDT is unlikely to change, Workaround B (Duplicate UDT) is the most cost-effective. For existing projects with a long-lived, stable faceplate, Workaround A (Composite Group) avoids touching the PLC side.
8. Alternative: Migrate to WinCC Unified
WinCC Unified (TIA Portal V17-V20) uses the Unified Faceplate model, where a single faceplate can expose a typed Interface Collection of any number of UDT instances. The official example Example: Configure local tags in faceplate types (RT Unified) shows a button-driven faceplate that flips a local tag between On and Off. The same mechanism scales to multi-instance UDTs.
Reference: Example: Configure local tags in faceplate types (RT Unified).
Reference: Overview: Configuring faceplate types - WinCC V7.5: Working with WinCC.
When migrating, review the following Unified-side advantages:
-
Typed collection properties — a faceplate can declare
Pumps : Collection of Pumpand accept any number of instances at drop time. - Scripting API parity — VBScript is replaced by JavaScript; the migration tool in TIA Portal V20 can convert most VBS calls to JS with manual review.
- Cross-runtime target — the same faceplate runs on WinCC Unified PC Runtime, Unified Comfort Panels, and WebUX clients.
.fpl binary is not source-compatible with Unified .fpx. The Siemens converter in TIA Portal V18+ migrates the visual graph and the tag bindings, but does not convert the faceplate type definition itself — you must rebuild the faceplate type in Unified and re-wire the picture references.
9. Verification Procedure
After applying any of the workarounds above, run the following checks to confirm the limitation is resolved:
- Open the faceplate type editor and confirm the interface list now contains the expected number of structure-typed rows (for example
Pump_1andPump_2). - Compile the project (File > Compile > All). The
ApDiag.outfile should show no PDL-FT 1400 warnings about unbound properties. - Launch WinCC Runtime and load the affected picture.
- Use the Tag Simulator (Tools > Tag Simulation) to force a value into each pump tag prefix (for example
Plant/Pump1/Speed = 1450andPlant/Pump2/Speed = 1480). - Confirm both faceplate instances on the picture display the correct values independently.
- Toggle
CmdStarton each pump and verify the correspondingRunningboolean flips within one polling cycle. - From the PLC side (or PLCSIM), write a value to
Pump1.Amps = 0andPump2.Amps = 99.9. The faceplate values must diverge correctly — if they remain identical, the bindings are still sharing a single source.
10. Diagnostics and Logging
WinCC V7.5 does not log the one-instance rejection by default. To capture it:
- Open Computer > Properties > Graphics Runtime > Diagnostics.
- Enable Tag simulation trace and Picture cache trace to Verbose.
- Restart the Graphics Runtime.
- Open
C:\Program Files (x86)\Siemens\Automation\WinCC\Diagnostics\ApDiag.login tail mode. - Drop a faceplate instance on a test picture and bind the rejected second UDT. The line
PDL-FT 1401: duplicate UDT binding ignoredwill appear in the trace when the workaround is not applied.
For non-visual confirmation, use PDLdiag.exe with the /report full switch from a command prompt opened with administrator rights. The tool reports each faceplate instance, the resolved tag prefix, and a list of unbound properties.
11. Best Practices for Long-Term Maintainability
-
Name the structure type after the functional role, not the device — keep the UDT as
Pumpand never let it drift toPump_TypeA, otherwise you will need a different workaround per device variant. - Prefer a single, well-curated UDT in the PLC. If the PLC side must use multiple UDTs (Workaround B), keep a comment header in both types that points to the source-of-truth UDT to prevent drift.
- Document the workaround chosen in the HMI engineering guideline. Each commissioning engineer should know whether the project uses composite groups, duplicated UDTs, or flattened tags.
- Avoid mixing workarounds in the same picture. One picture that uses Workaround C and another that uses Workaround D will confuse the next maintainer.
- Plan the migration to Unified for new HMI scope. The faceplate redesign is a one-time cost that eliminates the limitation at the source.
12. Frequently Asked Questions
Can I have two instances of a UDT in a WinCC V7.5 faceplate?
No. The faceplate type editor in WinCC V7.5 enforces a hard limit of one instance per structure (UDT) type. Attempting to add a second instance of the same UDT is silently rejected, with no warning or log entry. The official Siemens response is that this is a design constraint rather than a configurable option.
What is the fastest workaround to support two pumps from one faceplate?
Drop the single-pump faceplate twice on a hidden configuration picture, draw the pipework, group everything, and copy the group to the live process picture. Bind each instance to a different tag prefix. This is the Siemens-recommended approach because it requires no PLC changes and adds zero runtime overhead.
Does WinCC Unified V20 remove the one-instance limit?
Yes. WinCC Unified (TIA Portal V17 and later) supports typed collection properties on faceplates, so a single faceplate can accept any number of UDT instances at drop time. Existing V7.5 faceplates must be rebuilt manually because the .fpl binary is not forward-compatible with the Unified .fpx format.
Will renaming the UDT in the PLC help?
Yes, but only as a deliberate workaround. If you copy Pump to Pump_A in the PLC and Pump to Pump_B, the faceplate editor treats them as different structure types and accepts both rows. You must then maintain both UDTs in lockstep, which adds a small ongoing maintenance cost.
How do I confirm the faceplate bindings are wired correctly in runtime?
Use the WinCC Tag Simulator to force different values into each pump tag prefix and verify that the faceplate instances display independent values. If both faceplates show the same number, the binding is still shared. Enable Graphics Runtime diagnostics (verbose trace) to capture PDL-FT 1401 entries that confirm duplicate UDT bindings were ignored at design time.