Problem Overview
Engineers migrating faceplate libraries from SIMATIC Comfort Panels (WinCC Comfort/Advanced) to WinCC Unified V19 frequently encounter a documented gap in the TIA Portal V19 Update 3 property interface: a WString or String configuration parameter declared on the faceplate does not surface in the dynamization drop-down of a Text, Text Box, or Symbolic IO Field inside the faceplate body. The parameter shows correctly in the Interface editor, but selecting Property interface → Choose parameter returns an empty selection list for these screen objects.
The root cause is by design: WString/String tags are not directly bindable as text values of standard Unified screen objects the same way Boolean, Int, Real, or LReal values can be wired through containerized interface tags. Unified expects either Multilingual Text properties (which are list-typed and not raw strings) or a Configuration String surfaced through script logic. This article documents both routes and gives a reproducible commissioning procedure for TIA Portal V19 Update 3 (and the equivalent V20 configuration) on Unified Comfort Panels, Unified Panels, and PC RT Unified stations.
Affected Software and Hardware
| Component | Required Version |
|---|---|
| TIA Portal | V19 Update 3 or later (V20 also tested) |
| WinCC Unified | V19 Update 3 (ES part of TIA Portal) / Runtime V19 Update 3 |
| Target Devices | SIMATIC Unified Comfort Panels (MTP700/1000/1200/1500/1900/2200), IPCs with WinCC Unified PC RT, Unified Panel PCs |
| Faceplate Context | Faceplate Container on a Unified screen with Property Interface usage |
Property Interface Data Types — What Unified Exposes
The faceplate Property Interface editor allows the following value-bearing data types for new properties. These are listed in the order they appear in the TIA Portal V19 property interface dialog:
| Property Type | Internal ES Data Type | Bindable to Screen Object Text? | Notes |
|---|---|---|---|
| Configuration String | WString (1‑byte tag-count prefix per Siemens TIA documentation) | No — indirect via Loaded-event script or hand-off to WString tag | Single-language, ~8 KB payload, used for free-form configuration text |
| Multilingual Text | Resource list (internal type) | Yes (Text and Text Box) | Runs against the project's text library; multiple locales |
| Resource List | Internal list reference | Yes (Symbolic IO Field, Combo Box, List Box) | Point to a text list in the screen or library |
| WString Tag | WString | Limited — see Script-Based Workaround | Adaptable only via dynamization scripts |
| Color | UInt32 (ARGB) | Yes (background, foreground, border) | — |
| Geometry | Struct (Pos/Size) | Yes (via property interface grouping) | Used for layout adaptation |
| Boolean / Int / Real / LReal | As named | Yes | Direct binding via Property interface |
LReal data type can be linked at the faceplate container to a tag of any simple data type. The reverse does not hold: a WString interface tag can only be wired to a similarly-typed HMI tag, and screen-object text properties remain incompatible unless the screen object type itself accepts a list.Root Cause: Why WString Does Not Appear in the Text Dynamization List
Unified faceplate container screening follows the same architectural rule as the screen editor: a screen object's text-typed property expects either a static literal, a tag of compatible type, or a Property Interface reference of a type that the screen object understands. The Text object and Text Box are designed to receive resource references (the multilingual text list entry), not raw C-style character buffers. The same restriction applies to the legacy Symbolic IO Field — its display branch is built around text-list ranges, never single strings.
When you add a property of type Configuration String or Multilingual Text, the TIA editor internally generates a wrapper type that the screen object's drop-down can interpret. A plain WString tag is not wrapped and therefore remains invisible. This is consistent with the engineer report in the field and matches Siemens documentation: only the wrapper types declared above survive the drop-down filtering.
Solution Path by Screen Object
Select the appropriate path below before the faceplate's interface properties are wired up. Each path is reversible without rebuilding the faceplate — properties can be deleted and re-added.
Text and Text Box — Use Multilingual Text Property
- In the faceplate editor, open Properties → Interface.
- Add a new property of type Multilingual Text. Give it a logical name such as
MeasurementUnit. - On the faceplate body, drop a Text (or Text Box) object and select it.
- In Properties → Text → Dynamization, choose Property interface; the picker will now show only the multilingual-text properties.
- Select the property you created (e.g.,
MeasurementUnit). - At the faceplate instance in the process screen, drag a multilingual-text HMI tag, a constant, or an expression onto the property slot. The instance picker surfaces all multilingual-text entries of the project text library.
This same path supports Text List entries: although Text objects only show selected entry content, you can wire a multilingual resource if the language scope matches the user interface language.
Symbolic IO Field — Resource List or Library Text List
Symbolic IO Fields in Unified cannot be dynamized with a raw string. Choose one of two validated paths:
- Property interface → Resource list: Add a property of type Resource list to the interface. In the Symbolic IO Field, open Properties → Texts → Resource list, set dynamization to Property interface, and pick the resource-list property.
- Library text-list type: Inside the same library that contains the faceplate, create a Text list (right-click the library node → Add new text list). On the Symbolic IO Field, leave resource-list dynamization at None and select the library text list directly. The faceplate instance inherits the list automatically.
Text property set through the Loaded-event script described next.Configuration String — Loaded-Event Script
When the value must be passed dynamically from the PLC AS (e.g., DB100.DBB20:STRING[12] carrying a measurement unit like kWh or °C), use a Configuration String property and feed its value to the screen object through a small JavaScript on the faceplate's Loaded event.
// Faceplate Loaded event handler
// 'item' refers to the current faceplate instance
// 'Faceplate' exposes the property interface values
(function () {
var fp = Faceplate;
// Read the property interface string
var unit = fp.Properties.Unit_ConfigurationString;
if (unit !== null && unit !== undefined) {
// Set the Text object and the Symbolic IO Field placeholder
Screen.Items("Text_Unit").Text = unit;
// For Symbolic IO Field you also need to push into its text list scope
// or pivot to a Text Box overlay (preferred for arbitrary runtime strings)
}
})();
Sequence to wire this up:
- Add a property
Unit_ConfigurationStringof type Configuration String. - Add a Text Box named
Text_Unitto the faceplate body. - On the faceplate's Events → Loaded, add the script above (script must live inside the faceplate, not the parent screen).
- On the parent screen, configure the faceplate instance's tag binding by mapping a
WStringHMI tag (typed to the underlying DB structure) to the propertyUnit_ConfigurationString.
Decision Matrix: Object Type vs. Property Type
| Display Object on Faceplate | Configuration String | Multilingual Text | WString Tag (raw) | Resource List | Library Text List |
|---|---|---|---|---|---|
| Text / Text Box (text) | Script only | Direct drop-down | Script only | — | — |
| Symbolic IO Field (text) | Not supported | Not supported | Not supported | Direct drop-down | Direct drop-down |
| Combo Box / List Box | Not supported | Not supported | Not supported | Direct drop-down | Direct drop-down |
| Button label | Script only | Direct drop-down | Script only | — | — |
Step-by-Step: Migrating a Comfort Faceplate Unit-Label to Unified
The following procedure assumes a Comfort-Panel faceplate currently receiving a measurement-unit string from DB100.DBB20:STRING[12] and being displayed on a Symbolic IO Field. The Unified equivalent must keep the binding structure but adapt the object.
Prerequisites
- TIA Portal V19 Update 3 installed and a Unified project opened.
- Unified Runtime installed on the target device or PC.
- The
DB100interface to the HMI is configured: aWStringtag of length 12, updated by PLC each scan. - The list of possible measurement units known and stable (recommended), otherwise runtime string generation requires script fallback.
Procedure
- Decide on the unit list. If units are fixed (e.g., °C, kWh, bar, m³/h), create a Text list in the shared library with IDs 0–N. If units are open-ended, fall back to the Text Box + Configuration String path.
- Open the faceplate in the Faceplate Editor. Right-click the library → Edit faceplate type.
- Add the property. Use either Resource list (for Symbolic IO Field text list) or Configuration String (for free-form units).
- Replace the Comfort Symbolic IO Field with the Unified equivalent. If the text list path was chosen, the Symbolic IO Field still works. If the free-form path was chosen, replace it with a Text Box.
- Dynamize. Either drop-down the resource list (Symbolic IO Field) or wire the script on Loaded (Text Box).
-
On the parent screen, drop a Faceplate Container and configure its property bag. Map
DB100 MeasurementUnit WStringto the new property. - Compile & download. Run Compile → Software (rebuild all), then Download to device with the unified runtime selected.
Verification
- Switch the HMI runtime to the faceplate screen.
- Write a known unit string to
DB100.DBB20from the PLC (watch table / trace). - Confirm the Text Box updates within one acquisition cycle (default 500 ms; set the tag acquisition to On change if the PLC string is stable to lower RT load).
- Confirm locale switching: in Project → Languages, change the runtime language and verify the multilingual-text path translates correctly. The Configuration String path does not translate — this is a known limitation, not a fault.
- Cycle 50+ instances on one screen and confirm no significant RT lag. If lag is observed, switch to the multilingual path or evaluate moving runtime strings into a pre-translated ID lookup in the PLC.
Troubleshooting Matrix
| Symptom | Likely Cause | Resolution |
|---|---|---|
| Property of type WString shows in interface editor but never in screen-object drop-down | WString is unsupported for direct text binding; only Configuration String and Multilingual Text are | Recreate the property as Multilingual Text or Configuration String |
| Text object shows placeholder <Property> instead of value | Property not wired at the faceplate instance | At the Faceplate Container instance, drag the multilingual text / resource list onto the property slot |
| Symbolic IO Field shows empty list | Resource list property not initialized at instance | Right-click the property on the instance → Update value; confirm the text-list IDs in the screen match the library text-list range |
| Loaded-event script does not run | Script referenced the wrong faceplate scope or wrong item name | Open the script console; verify Faceplate.Properties.Unit_ConfigurationString returns a non-empty value with HMIRuntime.Trace
|
| Multilingual text shows English only after language switch | The text list / multilingual entry lacks translations for the active language | Open the text-list editor and fill all configured languages; recompile and redownload |
| String shows truncated characters | Source WString tag is shorter than the configured maximum | Match Length on the HMI WString tag with the PLC STRING length; reserve unused bytes with CHAR 0 in the PLC |
| Faceplate Container displays "Invalid tag" on the unit field | HMI tag is missing or not connected to PLC DB | Open the HMI tag's properties → Connection and confirm the PLC connection is active; check the proxy DB is generated |
Version Compatibility Notes
The behavior described here is consistent across TIA Portal V17, V18, V19, and V20. The multilingual-text path existed in V17 (when faceplates were first introduced in Unified) and has remained compatible. The Configuration String property type exists from V17 onward. Recommended minimum version:
- V19 Update 3 for new projects on Unified Comfort Panels (MTP series).
- V20 ifyoupull an existing V19 project forward and want current online documentation as the reference baseline.
The same property-interface rules apply in WinCC Unified PC Runtime. Note that the older PC-based WinCC Runtime Advanced / Comfort Panel faceplate library you may have retained during migration is not forward-compatible — the entire faceplate must be rebuilt under the Unified paradigm.
Migration Best Practices: Comfort → Unified
- Favor multilingual-text properties over Configuration String whenever the string set is closed. They eliminate script execution cost and gain free localization.
- Reserve Configuration String for genuinely open-ended text streams that cannot be enumerated at engineering time.
- Move unit strings from PLC STRING to a configurable integer ID on the AS side. Map the ID to a multilingual entry at the HMI level. Reduces proxy generation and supports plant-wide standardization.
- Avoid scripts inside faceplates where possible. Each script invocation on Loaded adds ~5–10 ms on MTP700/1000 per faceplate instance; 200+ scripted instances can saturate the panel's JavaScript worker.
- Validate faceplate libraries in a stand-alone test project before library export, so that faceplates do not pull parent-screen dependencies.
- Document every property interface entry in the library's Description field — engineers consuming the library from a different TIA project will not see instance context.
Related Engineering Considerations
When designing the data flow from the PLC, observe these limits per Unified faceplate:
- Property count per faceplate: TIA Portal V19 supports up to 200 properties per faceplate interface. Plan the schema with future expansion in mind.
-
WString length: each WString is sized in characters plus a 2-byte length prefix. A
WString[128]tag represents 256 bytes plus prefix; a faceplate instance with 50 such tags adds 12.8 KB of memory to the screen. - Acquisition cycle: by default HMI tags refresh every 500 ms via the configured connection. For measurement-unit strings that change rarely, configure acquisition to On change via the HMI tag properties.
For documentation on the broader faceplate lifecycle, see Configuring faceplate tags in TIA Portal Unified documentation.
Can a WString tag from the PLC be displayed directly on a Text object inside a Unified faceplate?
No. A plain WString property on the Property Interface is not bindable to the Text property of a Text/Text Box object. Use Configuration String + Loaded-event script, or replace the assignment with a Multilingual Text property tied to a text-library entry.
Why does my Multilingual Text property not appear in the screen-object dynamization list?
Confirm the property was added under the Property Interface (not the Tag Interface) of the faceplate. Multilingual Text entries placed under the Tag Interface are not exposed to object dynamization; they travel as tags only. Re-add the property under Properties → Interface.
What is the maximum supported length of a Configuration String property?
Configuration String is a WString-backed type with the same runtime memory model. Practical limit per property is 64 KB total payload; the runtime panel enforces a screen-level cap of about 200 KB across all instances. For measurement-unit applications, keep strings ≤ 8 characters to match conventional ISO/IEC unit symbols.
Does the Symbolic IO Field in Unified support free-form text input or output?
No. The Unified Symbolic IO Field renders values from a text list. For arbitrary runtime strings, replace it with a Text Box and bind via a script or use a multilingual entry whose library ID is driven from the PLC.
Is the same restriction present in TIA Portal V20?
Yes. The Property Interface type constraints (Configuration String, Multilingual Text, Resource List, library text list) are unchanged in V20 per the current Siemens documentation. Migration of an existing V19 project to V20 keeps the same faceplate interface without re-engineering.