Overview
Faceplates in SIMATIC WinCC (TIA Portal) are reusable HMI screen objects built once and instantiated across multiple screens or process units. A faceplate is a self-contained visualization that exposes a fixed tag interface — the contract between the faceplate and the calling screen. To animate or evaluate faceplate internals (e.g., a button's Click event, a value display, or a visibility expression) you bind events to interface tags, not directly to PLC tags. PLC tags are then assigned to those interface tags per instance.
This indirection is the root of the most common faceplate question: why can I only see HMI tags in the events dialog, and not the PLC tags I want to control? The answer is the two-stage binding model:
- Inside the faceplate type, you create interface tags (also called properties or faceplate tags). These are declared in the editor under Interface > Properties_Faceplate (V13/V14) or Configuration > Interface (V15+ and RT Unified).
- At the faceplate instance on a screen, each interface tag is bound to an HMI tag or a PLC tag. The PLC tag flows into the faceplate only at this point.
Prerequisites
| Item | Requirement |
|---|---|
| TIA Portal | V13 SP1 or later (V14, V15.1, V16, V17, V18, V19, V20 supported). RT Unified faceplate editor from V16 onward. |
| HMI runtime | WinCC RT Professional, WinCC RT Advanced, Comfort Panel, or Unified Comfort Panel |
| PLC connection | HMI tag table must contain the PLC tags, or a direct PLC tag must be reachable from the HMI device's connection list |
| License | WinCC RT Professional requires a valid license; RT Advanced and Unified Comfort Panels are licensed with the panel |
| Programming knowledge | Familiarity with HMI tag tables, screen navigation, and the Properties pane in TIA Portal |
Faceplate Tag Architecture
Every faceplate type maintains three scopes of tags. Mixing them is the source of most binding errors.
| Scope | Where defined | Visible in faceplate body? | Bindable to PLC tags at instance? | Typical use |
|---|---|---|---|---|
| Interface tags (properties) | Interface > Properties_Faceplate | Yes | Yes | Inputs/outputs exchanged with the calling screen |
| Internal tags | Tags tab of the faceplate | Yes | No (faceplate-local only) | Auxiliary variables, scripts, animation logic |
| Local tags (screen) | HMI tag table of the screen/HMI device | N/A | N/A | Shared variables across screens |
Per the Siemens Faceplates Instruction Manual (V14, PDF), the Tags tab contains tags available only inside the faceplate and connected directly to contained objects. They cannot be bound to PLC tags from the outside. The Interface section is the only place where the faceplate exposes a binding surface to the calling screen.
Creating Interface Tags (Properties_Faceplate)
- In the project tree, right-click Faceplates under your HMI device and choose Add new faceplate. Name it (e.g.,
FP_Valve). - Open the faceplate type for editing (double-click).
- In the project tree under the faceplate, expand Interface > Properties_Faceplate. The default name varies by version:
Properties_Faceplatein V13/V14,Faceplate_Propertiesfrom V15.1, or the configurable interface in V16+ Unified. - Add a new property. Configure:
| Field | Example | Notes |
|---|---|---|
| Name | StartCommand |
Used inside the faceplate body and as the binding target outside |
| Data type | Bool |
Match the PLC tag's data type exactly |
| PLC tag connection | disabled at definition time | Binding happens at instance level |
| Default value | false |
Used if no PLC tag is bound |
Repeat for each property the faceplate needs: StartCommand, StopCommand, Running, Fault, TagPrefix, etc. The number of properties is limited by the runtime; V14 supports up to 500, V17+ Unified supports 1000+.
StartCommand, not Motor1_StartCommand) so the faceplate stays reusable.Wiring Interface Tags to Faceplate Objects and Events
Once properties are declared, they appear in the Properties pane of every object inside the faceplate, alongside HMI tags, internal tags, and constants.
- Open the faceplate body and draw four buttons. Name them
btnStart,btnStop,btnAck,btnReset. - Select
btnStart. In Properties > Events > Click, choose Set bit as the function list entry. - In the function list dialog, the tag picker shows three tabs: Constants, HMI tags, Faceplate tags. Expand Faceplate tags > Properties_Faceplate and select
StartCommand. - The function list now contains
SetBit "Properties_Faceplate".StartCommand(V13/V14 syntax). In V16+ Unified the syntax uses the configured interface name:SetBit "Faceplate_Properties".StartCommand. - Repeat for the other three buttons:
StopCommand,AckCommand,ResetCommand.
Save the faceplate. At this point the faceplate has no knowledge of any PLC. It simply toggles its own interface properties.
Binding PLC Tags at the Faceplate Instance
- Open the screen where the faceplate will be used (e.g.,
Screen_Overview). - Drag the faceplate from the library/task card onto the screen. The instance appears with a default name (e.g.,
FP_Valve_1). - Select the instance. In Properties > Interface > Properties_Faceplate, every declared property is listed with an empty value field.
- For
StartCommand, click the value field. The tag picker shows HMI tags. Browse to the PLC tag (e.g.,HMI_TagTable.Motor1_Start) or to a raw PLC tag if the connection is direct. - For an HMI tag that already points at
%DB5.DBX0.0(a S7-1500 BOOL data block bit), simply select that HMI tag — the runtime reads the bit from the PLC.
For V16+ Unified, the dialog is renamed Properties > Faceplate_Properties and the binding is configured under Configuration. See the Siemens TIA Portal V20 Faceplate Interface Documentation for the exact dialog tree.
Tag Type Mapping Between PLC and Faceplate
The data type of the property must be compatible with the data type of the bound PLC/HMI tag. Mismatches compile but raise warnings at runtime, or the value is silently truncated.
| PLC tag type (S7-1500) | Compatible faceplate property | Notes |
|---|---|---|
BOOL |
Bool |
One-to-one |
INT |
Int |
16-bit signed |
DINT |
DInt |
32-bit signed |
REAL |
Real |
IEEE 754 single precision |
STRING |
WString (V16+) or String
|
Use WString for international character sets |
WORD |
Word |
Bit access requires extra script logic |
DWORD |
DWord |
— |
TIME |
Time / LTime
|
Display in faceplate with output format |
Dynamic Tag Names (Multiplexing)
For pop-up faceplates that must work on any of 200 motors, use a tag prefix or multiplexing (V15+):
- Declare a property
TagPrefixof typeWString[32]. - Declare
StartCommandasBool. - In the Interface editor (V15.1+), set
StartCommandto Multiplex. Bind its source expression toTagPrefix + ".Start". - At the instance, set
TagPrefix = "DB_Motor[1]". The runtime resolves the tag at compile time or first display.
Version-Specific Notes
| TIA Portal version | Faceplate interface editor | Multiplexing | Container faceplates |
|---|---|---|---|
| V13 / V13 SP1 | Interface > Properties_Faceplate, properties list view only | Not supported | Not supported |
| V14 / V14 SP1 | Same as V13, with improved tag picker | Not supported | Not supported |
| V15.1 | Properties editable in a grid; tag picker categorizes faceplate tags | Introduced | Limited |
| V16 / V17 | Renamed Faceplate_Properties; full RT Unified editor | Full | Yes |
| V18 / V19 / V20 | Unified faceplate editor with scripting, styles, and SVG support | Full | Yes, with faceplate-in-faceplate |
If you are stuck on V13, you cannot use multiplexing. Instead, build one faceplate per instance, or use a script with the HMIRuntime.Tags object to resolve the tag at runtime.
Script-Based Binding (Advanced)
For dynamic PLC tag binding that is not known at compile time, use VB or C script inside the faceplate:
' VBScript example: read a tag whose name is built at runtime
Dim tagName, value
tagName = SmartTags("TagPrefix") & ".Running"
value = HMIRuntime.Tags(tagName).Read
SmartTags("Properties_Faceplate").Item("Running").Value = value
In RT Unified (V16+), the equivalent is JavaScript using the HMIRuntime object:
let prefix = Tags("TagPrefix").Read();
let value = Tags(prefix + ".Running").Read();
Tags("Faceplate_Properties").Item("Running").Write(value);
Verification Procedure
- Compile the HMI project (Compile > Software (rebuild all)). Address warnings about unresolved tags before continuing.
- Download to the HMI runtime (RT Professional, RT Advanced, or panel).
- Open the screen with the faceplate. Force the PLC tag from the PLC online view (TIA Monitor & Force). Confirm the faceplate property updates.
- Click the faceplate button. Confirm the corresponding PLC tag flips in the PLC online view. If it does not:
- Check the connection status in the HMI diagnostics screen.
- Verify the PLC tag is accessible (read/write, not write-protected by access level).
- Confirm the security setting in the user administration is not blocking the write.
- From the HMI, force the PLC tag to
TRUE. Confirm the indicator in the faceplate (e.g., running lamp) turns green. - Stop the runtime. Recompile. Confirm no warnings appear in the output window.
Troubleshooting Matrix
| Symptom | Likely cause | Fix |
|---|---|---|
| PLC tag not visible in event dialog | Event is being configured inside the faceplate type, where only interface tags and internal tags are exposed | Add the tag to Interface > Properties_Faceplate first, then bind the event to that interface tag |
| Faceplate instance shows no binding field | Property not declared as exposed, or faceplate not regenerated after edit | Right-click the faceplate in the library and Update instances |
| Button click does not change PLC tag | PLC tag's access level is read-only at the HMI, or wrong PLC connection selected | Verify the PLC tag's access rights and the HMI-to-PLC connection in Devices & Networks |
| Compilation warning: Tag not found | Multiplex prefix does not resolve, or HMI tag is missing | Add the HMI tag to the HMI tag table, or correct the prefix value |
| Wrong bit flips when button clicked | Multiple faceplate instances bind to the same PLC tag, or a tag-prefix is shared | Check each instance's interface binding individually |
| Faceplate property is grayed out | Property is set to Read-only or Constant in the interface editor | Edit the faceplate type and change the property's mode to Property |
| V13 project upgraded to V16: faceplate errors | Interface renamed; old name Properties_Faceplate replaced by configurable name |
Open the faceplate and re-save; update scripts that reference the old interface name |
| Runtime shows Tag value invalid | Data type mismatch (e.g., REAL bound to INT property) |
Change the property's data type or convert the value via script |
Performance and Best Practices
- Keep the number of properties per faceplate below 30. More than that inflates compile time and the runtime memory footprint.
- Prefer
BooloverIntfor individual bits — the runtime cycles BOOL tags faster. - Reuse faceplate instances: instead of creating 100 separate faceplates, build one and multiplex the tag prefix.
- Do not place scripts inside frequently triggered events (e.g., Value change on a 100 ms tag). Use On-demand triggers.
- Compile the HMI project to a separate folder before each download. This lets you roll back if a binding change breaks runtime behavior.
- Use the Cross-reference tool (Ctrl+Shift+F3) to verify every faceplate instance has all its properties bound. Unbound defaults are a common runtime surprise.
Frequently Asked Questions
Why can I only see HMI tags — and not my PLC tags — when I configure a button event inside a faceplate?
Inside the faceplate type, events bind only to interface tags, internal faceplate tags, and constants. PLC tags are bound at the faceplate instance on the calling screen, not inside the faceplate. Add the PLC variable as a property under Interface > Properties_Faceplate, wire the event to that property, then bind the property to a PLC tag at the instance.
Can I bind a faceplate button directly to a PLC tag without creating an interface property?
No. The faceplate body has no access to PLC tags. All bindings must pass through the faceplate interface. The only exception is using a script that resolves the PLC tag at runtime via HMIRuntime.Tags.
What is the difference between internal tags and interface tags in a faceplate?
Internal tags live in the faceplate's Tags tab and exist only inside that faceplate. They are invisible to the calling screen and cannot be bound to PLC tags from outside. Interface tags are declared under Properties_Faceplate and are the only way to exchange data with the calling screen or PLC.
Does TIA Portal V13 support multiplexing faceplate tags?
No. Multiplexing was introduced in V15.1. In V13/V14 you must create one faceplate per instance or use a VBScript that reads and writes the PLC tag by name at runtime.
How do I bind a faceplate to a S7-1500 data block bit?
Create an HMI tag whose PLC tag points to the DB bit (for example %DB5.DBX0.0), declare a Bool property in the faceplate interface, and select that HMI tag when configuring the property on the faceplate instance. The runtime reads and writes the bit on each cycle.