Resolving WinCC 7.5 Faceplate Single Structure Instance

David Krause11 min read
SiemensTroubleshootingWinCC
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

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.

Symptom summary: A previously configured interface tag (for example 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:

  1. The faceplate container is instantiated on a process picture.
  2. Each faceplate instance is bound to a tag prefix supplied at drop time (for example Plant/Pump1/).
  3. The faceplate property resolution walks the .fpt schema and binds every property name to one tag-prefix + UDT-element pair.
  4. 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

  1. Open WinCC Explorer on the ES and load the project.
  2. Open the Graphics Designer and edit the relevant .pdl faceplate container.
  3. Open the Faceplate Type Editor for the target faceplate (double-click the container background, or use Edit > Faceplate Type).
  4. Open Configuration > Properties on the faceplate type.
  5. Click an empty row in the interface list. Pick the structure tag type Pump from the data type column. Name it Pump_1. Confirm the row.
  6. Click the next empty row. Pick the same Pump structure again. Name it Pump_2. Confirm.
  7. Expected (broken) result: the row is silently rejected. Only Pump_1 is 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.

  1. Create a process picture named @Config_PumpPair.pdl outside the runtime tree (set Properties > Miscellaneous > Do not display).
  2. Drop the existing single-pump faceplate Pump.fpl twice on the page at the desired positions.
  3. Draw the static pipework segments, valves, and labels as separate vector objects.
  4. Select everything (Ctrl+A inside the picture), group with Ctrl+G.
  5. Copy the group to clipboard.
  6. Paste the group into the actual process picture (for example Section_3.pdl) as a static instance.
  7. On each inserted faceplate, open its Interface dialog and bind the first instance to Plant/Pump1/* and the second instance to Plant/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 Pump and 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.
Migration caveat: The WinCC V7.5 .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:

  1. Open the faceplate type editor and confirm the interface list now contains the expected number of structure-typed rows (for example Pump_1 and Pump_2).
  2. Compile the project (File > Compile > All). The ApDiag.out file should show no PDL-FT 1400 warnings about unbound properties.
  3. Launch WinCC Runtime and load the affected picture.
  4. Use the Tag Simulator (Tools > Tag Simulation) to force a value into each pump tag prefix (for example Plant/Pump1/Speed = 1450 and Plant/Pump2/Speed = 1480).
  5. Confirm both faceplate instances on the picture display the correct values independently.
  6. Toggle CmdStart on each pump and verify the corresponding Running boolean flips within one polling cycle.
  7. From the PLC side (or PLCSIM), write a value to Pump1.Amps = 0 and Pump2.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:

  1. Open Computer > Properties > Graphics Runtime > Diagnostics.
  2. Enable Tag simulation trace and Picture cache trace to Verbose.
  3. Restart the Graphics Runtime.
  4. Open C:\Program Files (x86)\Siemens\Automation\WinCC\Diagnostics\ApDiag.log in tail mode.
  5. Drop a faceplate instance on a test picture and bind the rejected second UDT. The line PDL-FT 1401: duplicate UDT binding ignored will 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 Pump and never let it drift to Pump_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.

Back to blog