Resolving WinCC TIA Portal Faceplate UDT Parameter Warnings

David Krause10 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

Problem Overview

When compiling an HMI project in Siemens TIA Portal V15.1 with WinCC Comfort/Advanced/Professional, custom faceplates that expose PLC UDT (User-Defined Type) properties produce repeated compile-time warnings of the form:

"The parameter of a function is not available for trigger <UDT name>, event 'Change value'. The referenced object does not exist."

The warning is emitted per faceplate instance in every screen where the faceplate is used. It references the first UDT-typed property of the faceplate, even though:

  • No Change value event is wired to any field of the UDT property in the faceplate interface.
  • The runtime behavior of the faceplate, including the release-event script that copies field values between two UDT properties, works exactly as designed.

The warnings are therefore cosmetic from a functional standpoint, but they clutter the compile output, obscure real errors, and may indicate latent configuration problems that surface only after a TIA Portal upgrade.

Scope of this article: The phenomenon has been confirmed against TIA Portal V15.1 with WinCC Comfort, WinCC Advanced, and WinCC Professional. The same warning text is reported by users on V15.0 and V16.0; partial patches are documented in the Siemens Knowledge Base (see Entry ID 109750758).

Affected Versions and Products

Component Versions Known to Emit the Warning
TIA Portal V15.0, V15.1, V16.0 (HMI side)
WinCC Comfort/Advanced ≥ V15.0 up to V16 Update 2
WinCC Professional ≥ V15.0 up to V16 Update 2
STEP 7 PLC UDTs S7-1200 / S7-1500 UDTs (7 fields in the reported case)
Faceplate type Custom faceplates with UDT-typed interface properties

Behavior has been verified by Siemens support as a compiler-side false positive; the runtime subscription model does not actually use the missing Change value trigger.

Root Cause Analysis

The warning is generated by the static cross-reference analyzer of the HMI compiler, not by the runtime interpreter. When a faceplate exposes a property whose datatype is a PLC UDT, the compiler attempts to walk every UDT element and every event that could be subscribed. For each combination it tries to resolve an HMI tag pointing to a memory location backed by that UDT element.

The chain that fails in the reported case is:

Warning Resolution Chain (TIA Portal V15.1 HMI compiler) PLC UDT 7 fields, mixed types Faceplate Property UDT-typed interface Implicit "Change value" trigger added by static analyzer Tag not resolvable → warning emitted Result: warning emitted even though the event is never wired by the user. Runtime path: unaffected (uses release-event VB script).

Three conditions must be satisfied simultaneously for the warning to fire:

  1. The faceplate interface contains a property whose datatype is a PLC UDT (as opposed to a WinCC structure or a primitive type).
  2. That UDT is declared in the PLC and made known to the HMI through the HMI tag table or the faceplate tag binding.
  3. The static analyzer flags every UDT element as a potential subscription point, regardless of whether a script or animation has been wired to it.

The reference "The referenced object does not exist" means that, at the moment of compilation, the compiler could not pair the implicit Change value trigger with a concrete HMI tag (either because the HMI tag is missing, has a different name, or because the faceplate is instantiated without binding the property to a tag in some screens).

Diagnostic Procedure

Before applying a fix, confirm that the warning originates from the static analyzer rather than from a genuine configuration error.

  1. Capture the warning list. In the Inspector window under Info > Compile, export the full warning list to CSV. Filter on the literal substring parameter of a function is not available.
  2. Identify the offending faceplate type. Each warning contains the trigger UDT name. Cross-reference that name with the faceplate types in the project library.
  3. Inspect the faceplate interface. Open the faceplate editor and select Properties > Interface. Note every property whose datatype is a PLC UDT.
  4. Verify HMI tag bindings. For every instance of the faceplate, confirm that the UDT-typed property is bound to a tag (or left at the default empty value). Unbound properties will always trigger the warning.
  5. Check PLC compilation order. Compile the PLC program first, then the HMI. The HMI compiler resolves UDT layouts from the most recent PLC compile output; a stale UDT will produce phantom warnings.
  6. Search the Siemens Knowledge Base. Use the warning text as the search string. Siemens publishes per-version patches (see Entry ID 109769309 for "Change value" warnings, and Entry ID 109750758 for the general faceplate warning).
Engineering tip: If the same UDT is referenced by more than one faceplate, treat each faceplate independently. A fix on one faceplate does not propagate to the others because the static analyzer generates a warning per faceplate-type-instance pair.

Solution Path 1 — Bind Every UDT Property to a Tag

The most common reason the analyzer cannot resolve the trigger is that at least one faceplate instance is dropped onto a screen without its UDT-typed property being wired to a tag.

  1. Open each screen that contains an instance of the offending faceplate.
  2. Select the faceplate instance and open the Properties > Interface tab in the Inspector window.
  3. For every UDT-typed property, assign an HMI tag of the matching UDT datatype, or, if the property should remain empty at runtime, assign a constant value or a dummy tag.
  4. Recompile the HMI project. The warnings should drop by exactly the count of previously unwired instances.

Solution Path 2 — Explicit Trigger Subscription

If the warning persists despite all bindings being correct, the static analyzer is failing to recognize that the UDT element is intentionally unused. Add an explicit, no-op subscription to silence the analyzer.

  1. Open the faceplate in the faceplate editor.
  2. Select the UDT-typed property, expand it, and select the offending element.
  3. Add a Change value event with an empty script body (a single comment line is sufficient).
  4. Recompile. The analyzer now finds a valid subscription target and stops emitting the warning.
' Empty stub to satisfy the HMI static analyzer.
' Runtime cost: none (no body executes meaningful work).
Sub OnChange_Stub(ByVal item)
    ' intentionally empty
End Sub

Solution Path 3 — Refactor the Faceplate Interface

When the faceplate is used in many screens and binding each instance manually is impractical, refactor the interface so that the UDT is no longer exposed as a property.

  1. Replace the UDT-typed property with primitive-typed properties (Bool, Int, Real, String, WString). One property per UDT field.
  2. Update every faceplate instance: the migration can be performed in bulk through the Find & Replace function in the screen editor.
  3. Move the data-coupling logic from the faceplate script to the surrounding PLC logic; the faceplate no longer needs to copy field values between two UDT-shaped properties.
  4. Recompile both PLC and HMI projects.

This refactor eliminates the warning category altogether, but it increases the number of properties per faceplate and therefore the per-instance configuration effort.

Solution Path 4 — Apply a TIA Portal Update

Siemens has released targeted fixes in later updates:

TIA Portal Version Status Notes
V15.0 Warning present No patch
V15.1 Warning present Original report
V16 Update 2 Reduced frequency Trigger resolution improved; warning still possible for unbound UDTs
V17 Suppressed for bound UDTs Unbound instances still warned
V18 / V19 Suppressed Static analyzer no longer emits this warning for properly bound UDTs

For new projects, upgrading to TIA Portal V18 or later is the cleanest remedy. For existing production projects that cannot be upgraded mid-lifecycle, combine Solutions 1 and 2.

Solution Path 5 — Clean Rebuild

If warnings appear after a partial library import or after switching the HMI device between WinCC Comfort/Advanced/Professional, perform a clean rebuild:

  1. Close TIA Portal.
  2. Delete the project's .srf cache files and the IM folder inside the HMI station's runtime folder.
  3. Reopen the project, compile PLC blocks first, then HMI.
  4. Verify that the PLC's Program blocks > System blocks > Program resources contain a fresh UDTs folder whose date stamp matches the PLC compile.

Verification

After applying any of the solutions above, verify both the compile output and the runtime behavior.

  1. Compile output. Re-run Compile > Software (rebuild all). The filtered warning list should be empty for the target faceplate.
  2. Cross-reference integrity. In the project tree, right-click the HMI station and choose Cross-references > Display. Every faceplate instance must be listed and must reference its bound tags.
  3. Runtime test. Start RT on the engineering station or download to the HMI panel. Trigger the push-button release event and confirm that the UDT field values are copied as designed.
  4. Tag simulation. Use the HMI tag simulator to force a value change on the source UDT element; the destination element must not update unless the release event is fired (because the script, not a change-value subscription, performs the copy).
  5. ESLog / WinCC Diagnose Viewer. Enable diagnostic logging on the HMI runtime and confirm that no HmiEsTag or HmiEsFaceplate errors appear during startup.

Workarounds When a Fix Cannot Be Applied

Some customers are constrained to TIA Portal V15.1 due to long-term revalidation cycles or hardware availability. In those cases the warnings cannot be eliminated, only managed:

  • Use a project-level Compile script to filter the warning list and raise an error only on warnings other than parameter of a function is not available.
  • Document the warning in the project Functional Specification as a known false positive with reference to the Siemens entry IDs, so QA reviewers do not treat it as a defect.
  • Add the warning text to the HMI build acceptance criteria as an exclusion (similar to how compiler warnings are excluded in MISRA-C and similar standards).

Preventive Configuration Checklist

Use the following checklist when authoring faceplates that expose PLC UDTs to avoid this class of warning on first compile:

  • Compile the PLC project before adding any UDT-typed faceplate property.
  • Bind every UDT-typed property in every instance, even if the value is unused.
  • Avoid deep UDT nesting (UDT inside UDT). The static analyzer loses precision beyond depth 2.
  • Keep UDT field count ≤ 15; above that, the analyzer may abort element enumeration silently and emit a generic warning.
  • Use consistent naming between the PLC UDT and the HMI tag; the analyzer performs string matching before type matching.
  • After a TIA Portal update, recompile PLC blocks before recompiling HMI.
  • Avoid mixing HMI tags and direct PLC address references in the same faceplate interface.

Field-Proven Caveats

  • The warning text is identical between a genuine missing-tag error and the static-analyzer false positive. Always cross-reference the warning against the faceplate instance list before assuming it is benign.
  • On multi-language HMI projects, the warning may appear only in the project's reference language. Switching the editor language temporarily can change the warning count.
  • The Siemens documentation sometimes refers to the same warning under "Function parameter is not available"; both phrasings map to the same root cause.
  • Renaming a UDT in the PLC without recompiling the PLC produces stale references and a flood of identical warnings across many faceplates.

Related Siemens Knowledge Base Entries

FAQ

Why does WinCC TIA Portal V15.1 emit "parameter of a function is not available" for a faceplate UDT that I never wired?

The HMI compiler's static cross-reference analyzer adds an implicit "Change value" trigger for every UDT element and tries to resolve it against an HMI tag. When the faceplate instance does not bind that UDT property to a tag, the resolution fails and the warning is emitted even though no runtime subscription exists. Bind the UDT-typed property in every faceplate instance, or add an explicit empty "Change value" script on the offending UDT element.

Is the warning a real error that affects runtime?

No. The warning is a compile-time false positive produced by the static analyzer. Runtime behavior, including release-event VB scripts that copy UDT field values between faceplate properties, continues to work as designed. The warning only indicates that the analyzer could not statically resolve an implicit trigger subscription.

Can I suppress the warning without modifying every faceplate instance?

Yes. Either upgrade to TIA Portal V17 or later where the analyzer no longer flags bound UDTs, refactor the faceplate interface to use primitive-typed properties instead of a UDT, or add an explicit empty "Change value" event on the offending UDT element inside the faceplate type itself. Each of these suppresses the warning category project-wide.

Does the same warning occur on WinCC Comfort and WinCC Professional?

Yes. The static analyzer is shared across WinCC Comfort, WinCC Advanced, and WinCC Professional in TIA Portal V15.1. The warning text and root cause are identical; only the HMI runtime differs.

Which TIA Portal version fully removes this warning?

TIA Portal V17 reduces the warning frequency for bound UDTs, and TIA Portal V18 / V19 suppress the warning entirely for properly bound UDT-typed faceplate properties. Unbound UDT properties still emit a related warning in any version. For constrained production environments on V15.1, combining an explicit empty subscription with full instance binding is the most reliable workaround.

Back to blog