Resolving TIA Unified Faceplate WString Text Property Binding

David Krause11 min read
SiemensTIA PortalTutorial / How-to
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

Resolving TIA Unified Faceplate WString Text Property Binding

Binding a dynamic string label to a WinCC Unified Faceplate instance in TIA Portal is one of the most common integration pain points reported by engineers building reusable HMI objects (e.g., a four-valve faceplate where each instance needs a unique label). The Property Interface catalog exposes numeric, boolean, and color types, but Text objects do not consume WString or MultilingualText property values directly until TIA Portal V19. This article documents the root cause, three verified binding methods, and the commissioning verification used to confirm the label is updating on the Unified Runtime.

1. Problem Context

When a faceplate is created in TIA Portal (tested on V17.0.0.1, V19.0.0.2, and V20 Update 3), the Properties Interface dialog allows the engineer to add a new property of the following types:

  • Boolean, Integer, Real, WString, Date / Time, Color
  • UDT (User Data Type) instances
  • Multilingual Text (added as a native Property Interface type in V19)

Adding a WString property such as NegativeText and exposing it on the Properties pane works, but the Text object on the faceplate canvas cannot consume that property through the standard Text > Dynamization > Property Interface menu because the "Text" property of a static Text object is not exposed as a dynamization target in the same way numeric properties are.

Symptoms reported across versions:

  • Property Interface of type WString is selectable in the catalog but no text appears in the Text object.
  • Multilingual Text property shows in the Text object dynamization in V19, but the displayed text does not update when the property is changed at the instance.
  • Scripted assignment runs, but the HMI shows the default text (e.g., temp / tmp) until the runtime is recompiled or simulated.
  • Faceplate container name and label are not synchronized when the Parent property is read.
Affected Versions: TIA Portal V17 through V20. Native Text object consumption of WString and Multilingual Text properties is partial in V19 and is fully covered in V20 Update 3 according to the official TIA Portal Updates Readme (see references).

2. Root Cause Analysis

There are two distinct issues, and they must be identified separately to choose the correct fix:

2.1 Text Object vs. IO Field Consumption

A static Text object in WinCC Unified exposes only the property Text for dynamization, and in versions prior to V19, that property does not accept a WString or Multilingual Text Property Interface as a binding source. The catalog lists the property, but the binding editor refuses to attach it. The IO Field object, in contrast, exposes Process value, Output value, and Display properties that fully support WString tag dynamization and, by extension, a WString Property Interface.

2.2 Script Execution and Runtime Refresh

A scripted dynamization of the text only updates the runtime after the script is executed. The script must be configured as synchronous, attached to a recurring trigger (e.g., a 10-second clock tag T10S) or to a value-change trigger on a property, and the Unified Runtime must be in simulation or live mode. Editing the property in the engineering view alone does not push the new value into the compiled RT image until the next trigger fires or a full RT download is performed.

2.3 Container Property Access

Reading or writing a property that belongs to the container (the screen that hosts the faceplate instance) requires the Parent property of the Faceplate object. The internal property of the faceplate type itself is exposed as Faceplate.Properties.<PropertyName>. Misnaming either path is the most common silent failure.

3. Prerequisites

  1. TIA Portal V17 or later (V19+ recommended for Multilingual Text support).
  2. WinCC Unified PC RT or Unified Comfort Panel runtime image installed.
  3. A compiled faceplate type with at least one Text or IO Field object on the canvas.
  4. For scripted dynamization: a clock tag (e.g., T10S, BOOL, 10-second period) defined in the HMI tags.
  5. For container property access: at least one property exposed on the container screen level, not just the faceplate type.

4. Solution A: IO Field Workaround (V17 and V18)

This is the most reliable, non-script method and works in every TIA Unified version from V17 upward. It is the technique most field engineers adopt when multilingual text is not required.

Step 1 — Create the WString Property Interface

  1. Open the faceplate type in the TIA Portal editor.
  2. In the Properties pane, click the Properties tab and select Add new.
  3. Set Name = MyTextVar, Data type = WString, Configuration string.
  4. Confirm the property is visible on every faceplate instance.

Step 2 — Replace the Text Object with an IO Field

  1. Delete the static Text object on the faceplate canvas.
  2. Drag an IO Field from the toolbox onto the same coordinates.
  3. In the IO Field properties, set Mode = Output (read-only) and Display = String.
  4. Open Process value > Dynamization, select Property Interface, then bind it to MyTextVar.

Step 3 — Bind at the Instance

  1. Place four instances of the faceplate on the screen.
  2. On each instance, expand the Properties pane and enter the static WString in the MyTextVar field (e.g., Valve 1, Valve 2).
  3. Compile and download. The IO Field will show the label, and the string can also be driven from a PLC tag if a Tag is wired into the property.
Why this works: The IO Field exposes a Process value dynamization slot that fully supports the WString Property Interface. The Text object lacks that slot in V17 and V18.

5. Solution B: Script-Based Text Update (V17 through V20)

Use this when the design requires a Text object (e.g., to preserve font, outline, or shadow formatting) and a WString Property Interface must drive it. The script must be synchronous and triggered on a clock or on a value change of the property.

Step 1 — Add the Property

  1. Add a property of type WString named NegativeText (or any descriptive name) to the faceplate type.

Step 2 — Create the Synchronous Script

  1. Right-click the faceplate canvas > Add new script.
  2. Set the script execution mode to Synchronous (mandatory for property writes that must be visible in the same RT frame).
  3. Bind the trigger to a clock tag, e.g., T10S, or to the NegativeText value-change event.

Step 3 — Write the Body

The following VBScript-style snippet writes the property value into the Text property of a Text object named lblLabel on the faceplate canvas:

' Synchronous script: Faceplate level
Dim sValue
sValue = Faceplate.Properties.NegativeText

' Reference the Text object on the faceplate canvas
Dim oText
Set oText = Faceplate.Items("lblLabel")

' Assign the string into the Text property of the object
oText.Text = sValue

For Unified JavaScript (V18+):

// Synchronous script (JavaScript) - faceplate scope
export function SetLabel_NegativeText() {
    let sValue = Faceplate.Properties.NegativeText;
    Faceplate.Items("lblLabel").Text = sValue;
}

Step 4 — Trigger Selection

Trigger Type Use Case Cycle / Latency
Clock tag T10S Slow labels that change occasionally 10 s, easy to debug
Value change on NegativeText Event-driven update on first change only Sub-second
Tag change on a hidden "refresh" BOOL Forces a re-evaluation when PLC pushes new value Network dependent

Step 5 — Verify in Simulation

  1. Start the Unified Runtime simulator.
  2. On a faceplate instance, change the NegativeText property string to test.
  3. Wait for the next trigger cycle. The Text object must update from temp to test.
Common mistake: Engineers edit the property in the engineering view and expect the simulator to reflect the change immediately. The script only runs when the runtime is started, the trigger fires, and the script is marked synchronous. Recompile after every change to the script body.

6. Solution C: Multilingual Text Property Interface (V19 and Later)

From TIA Portal V19, the Multilingual Text type is selectable as a Property Interface and is exposed on the Text object's Dynamization > Property Interface list. This is the recommended approach for any project that ships in more than one language.

Step 1 — Create a Multilingual Text Property

  1. Open the faceplate type.
  2. Add a property: Name = LabelText, Data type = Multilingual Text.
  3. In the property editor, enter the translations for every active runtime language (e.g., English Valve Open, German Ventil Offen).

Step 2 — Bind to the Text Object

  1. Select the Text object on the faceplate canvas.
  2. Open Properties > Text > Dynamization.
  3. Choose Property Interface > LabelText.

Step 3 — Drive from PLC or Static Value

  1. On the faceplate instance, set the property to a static value or wire it to an HMI tag of type WString (driver text) or MultilingualText (driver dictionary).
  2. Compile and start the runtime. Changing the property or the tag must update the displayed text in the active runtime language.
Engineering note: V19 introduced support but V20 Update 3 formalized the dynamization pattern, including property bindings through formulas and evaluation types. If the text does not update, confirm you are on V19.0.0.2 or later and that the Faceplate device version is regenerated.

7. Accessing Container Properties from a Faceplate Script

When the label must be read from the container screen (for example, the screen header that wraps a four-valve faceplate) use the Parent property of the Faceplate object. According to the TIA Portal V20 documentation, the following container properties are reachable:

Property on Container Script Path (RT Unified)
Screen name Faceplate.Parent.Screen
Screen-level tag Faceplate.Parent.Items("TagName")
Screen-level property interface Faceplate.Parent.Properties.<PropertyName>
Faceplate instance position Faceplate.Parent.Items("InstanceName")

Sample JavaScript (V18+, synchronous):

// Read a property defined on the container screen
export function PullContainerLabel() {
    let containerProp = Faceplate.Parent.Properties.HeaderLabel;
    Faceplate.Items("lblHeader").Text = containerProp;
}
Reference: See the official TIA Portal V20 Unified Engineering documentation for the full Parent property list and a complete enumeration of container-readable properties.

8. Verification Checklist

# Check Expected Result
1 Property appears in instance Properties pane MyTextVar / NegativeText / LabelText visible
2 Static value or tag wired Inspector shows non-empty string
3 Unified RT compiled without warnings Build status: Success, 0 errors
4 Simulator started RT image loaded, faceplate visible
5 Initial label on screen Default text or first-instance value visible
6 Property changed at instance Label updates after trigger cycle (script) or immediately (V19+ Multilingual Text)
7 Language switch on RT Multilingual Text property switches to active language
8 Container label read via Parent Header or screen-level text visible on faceplate

9. Troubleshooting Matrix

Symptom Likely Cause Corrective Action
Default text persists, no update Script is asynchronous or trigger not firing Set script to Synchronous and verify clock tag is true in RT
WString property not listed on Text dynamization Version prior to V19, or Text object used instead of IO Field Upgrade to V19+ or switch to IO Field workaround
Multilingual Text visible but no update on RT Property is bound but script overrides it Remove competing script and rely on the binding only
Faceplate.Properties returns empty Property name typo or property defined on container, not faceplate Use Faceplate.Parent.Properties for container-side
Script error: Object required Items name mismatch on canvas Match the exact object name in Faceplate.Items(...)
Updates visible in editor but not RT RT not recompiled after change Recompile > Download to RT > Restart simulation
Only first character / only first instance updates Triggers attached to wrong faceplate reference Reference Faceplate object inside the script scope, not a global HMIRuntime path

10. Version Compatibility Reference

TIA Portal Version WString Property → Text Object Multilingual Text Property → Text Object Recommended Solution
V17.0.0.1 Not native Not available IO Field workaround or synchronous script
V18 Not native Not available IO Field or synchronous script (JS supported)
V19.0.0.2 Partial (script required) Native Multilingual Text Property Interface
V20 (Update 3) Full Full Direct dynamization, no script

11. Field-Commissioning Tips

  • Use a clock tag for the first commissioning pass to confirm the binding works; switch to a value-change trigger only after the update path is verified.
  • Keep property names in a naming convention (e.g., Label_, Cap_) so they can be enumerated and bulk-bound.
  • For multilingual projects, always define both languages in the Multilingual Text property editor at the faceplate level, not at the instance level. Instances should override the dictionary only when the label is asset-specific.
  • After every faceplate change, perform a full compile (not incremental) before testing on the panel; incremental compiles sometimes preserve stale faceplate cache.
  • If the panel is on a slow network, increase the T10S period to 30 s to avoid RT CPU spikes when many faceplate instances update.

12. Frequently Asked Questions

Why can I select a WString Property Interface on a Text object, but the value does not appear in TIA V17?

The Text object in V17 and V18 does not expose its Text property as a Property Interface dynamization target for the WString type. Replace the Text object with an IO Field (Mode = Output, Display = String) and bind the WString Property Interface to its Process value, or upgrade to V19+ to use Multilingual Text natively.

What is the minimum TIA Portal version that supports Multilingual Text as a Property Interface?

TIA Portal V19.0.0.2 introduces native support for Multilingual Text on the Text object's Property Interface dynamization. The feature is formalized in the V20 Update 3 release notes, which document formula-based and evaluation-type bindings.

My synchronous script runs but the Text object still shows the default string. What is wrong?

Three checks: confirm the script is set to Synchronous (not asynchronous), confirm the trigger (clock tag or value-change) actually fires in the running RT, and confirm the Faceplate.Items("ObjectName") string matches the exact name of the Text object on the canvas. Finally, ensure the Unified Runtime is in simulation or live mode and has been recompiled after the script edit.

How do I read a property from the screen that contains the faceplate instance?

Use the Parent property of the Faceplate object inside a synchronous script, for example Faceplate.Parent.Properties.HeaderLabel. The Parent object exposes screen-level properties, tags, and the faceplate instance reference as documented in the TIA Portal V20 Unified Engineering manual.

Can I bind a WString PLC tag to the WString Property Interface of a faceplate?

Yes. At the faceplate instance, expand the Properties pane, click the WString property, and select the HMI tag of type WString as the source. The value is read on every RT cycle; no script is required when the property is consumed by an IO Field on the faceplate canvas.

Back to blog