Resolving WinCC I/O Field Star Display for Negative Scaled Values

David Krause14 min read
HMI / SCADASiemensTroubleshooting
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 WinCC I/O Field Star Display for Negative Scaled Values

When a Siemens SIMATIC HMI panel renders an I/O field populated by a Dynamic Dialog expression that multiplies a signed 16-bit tag by an integer factor, the field can output three asterisks (***) rather than the expected negative result. The asterisks are the runtime's hard overflow indicator and almost always mean the runtime cannot reconcile the computed value with the field's configured display format or data-type conversion. The most common cause is leaving the Dynamic Dialog's Data Type property on Analog when the formula yields a negative integer.

Field shortcut: Open the I/O field's Events → Property → Dynamic Dialog, locate Data Type on the right-hand column, and change it from Analog to Direct. Re-compile and download; the negative product should now render.

1. Problem Description

A SIMATIC HMI project uses an I/O field on a Comfort Panel, KTP, or WinCC Runtime Advanced screen to display the result of SignedTag * int_factor. The base tag is a 16-bit signed integer (range −32768 to +32767) sourced from a PLC, and the integer factor is a second internal tag, for example 40. The expected display value is −3200 (i.e., −80 × 40).

Observed behavior:

  • When the source SignedTag is positive, the I/O field updates correctly and shows the scaled product.
  • When SignedTag becomes negative, the I/O field replaces the numeric value with *** (three stars, the standard overflow indicator).
  • The configured limits of the I/O field are set wide (e.g., −10,000,000 to +10,000,000) and the display format is set to a signed pattern such as s999999, so the limits themselves are not the trigger.

This symptom is consistent across SIMATIC WinCC Engineering V18 - Comfort/Advanced and legacy WinCC Flexible 2008 SP5 projects running on TP/OP/MP/KT panels, and on PC-based WinCC Runtime Advanced.

2. Symptoms Checklist

Symptom Likely Cause First Check
Field shows *** when scaled product is negative Dynamic Dialog Data Type = Analog Switch to Direct
Field shows *** for any value, positive or negative Format string width too small for value Widen format (e.g., s9999999)
Field shows *** only at extreme values Limits too tight for scaled range Widen low/high limits
Field shows ########## Format has explicit decimal places not present in value Use 999.9 instead of 999.99
Field shows nothing at all Tag connection lost or wrong area pointer Verify tag in HMI tag management
Field shows last value frozen Acquisition mode not cyclic Set acquisition to Cyclic in operation

3. Affected Environments

  • Engineering tools: SIMATIC WinCC flexible 2008 SP5, TIA Portal V13 through V19, WinCC Comfort/Advanced/Professional.
  • Runtime panels: SIMATIC Comfort Panels (TP700/900/1200/1500, KP400/700/900/1200/1500), KTP400/KTP700/KTP900/KTP1200 Basic, Mobile Panels 2nd generation, and PC Runtime Advanced.
  • Project configuration: I/O field with Output or Input/Output mode, value driven by a Dynamic Dialog expression, signed integer source tag.

Reference the official engineering manuals at SIMATIC HMI WinCC Engineering V18 documentation and the legacy WinCC flexible 2008 manual for the exact field-property dialogs in your version.

4. Root Cause Analysis

WinCC's Dynamic Dialog is a small expression engine that produces the value shown in the connected property. The dialog has two relevant settings for numeric output:

  1. Expression / Formula - the calculation. Example: 'SignedTag' * 40
  2. Data Type - how the runtime interprets the formula's result before it is handed to the consuming property (here, the I/O field's Value property).

The Data Type selector offers four options in WinCC flexible / TIA Portal WinCC:

Data Type Runtime Behavior Typical Use
Analog Treats the result as a scaled analog input; the I/O field's low/high limits are mapped to a 0–100% raw range, and the result is converted to the field's value range using linear scaling. Raw analog input that needs to be re-scaled to engineering units.
Direct Passes the computed result to the consumer as-is, in the natural data type of the expression. Calculations, tag-to-tag multiplications, signed integers.
Boolean Coerces result to 0/1 based on zero / non-zero rule. Visibility toggles, color animations.
String Converts result to text. Status text, captions.

When Data Type = Analog is selected, the runtime applies a linear scaling that assumes the source value fits inside the configured I/O field's low limit → high limit envelope and that the field can map it back into the analog value range. For a multiplication like SignedTag * 40 where SignedTag is −80, the expression engine still computes −3200, but the Analog path then attempts to interpret it through the field's low/high limits, which causes an internal range check. In many firmware builds (especially Comfort Panels and WinCC flexible 2008) the Analog path returns an undefined / out-of-range token when the result is negative, and the I/O field's display formatter substitutes ***.

Switching the Data Type to Direct bypasses the analog re-scaling. The signed integer result is handed to the I/O field's value property, and the field's display formatter (s999999) renders it normally with a leading minus sign.

Why positive values work: When SignedTag is positive, the analog scaling path happens to produce a result that is in-range for the configured limits, so no overflow token is generated. This is what makes the bug intermittent and confusing during commissioning.

5. Step-by-Step Resolution

5.1 Open the I/O Field's Dynamic Dialog

  1. In the engineering tool (WinCC flexible or TIA Portal), open the screen containing the affected I/O field.
  2. Right-click the I/O field → Properties.
  3. Open the Events tab and select the Value property (under Output for output-only fields, or under Process value for input/output fields).
  4. If a Dynamic column shows a small lightbulb icon, click it to open the Dynamic Dialog editor. Otherwise click the small arrow on the right of the value field and select Dynamic Dialog.

5.2 Inspect the Expression

Confirm the formula reads the signed source tag and the integer factor exactly as:

'SignedTag' * 'FactorTag'

or, for a hard-coded factor,

'SignedTag' * 40

Tags must be enclosed in single quotes. A missing quote causes a parse error at compile time, not the star symptom.

5.3 Change the Data Type

  1. On the right-hand side of the Dynamic Dialog editor, locate the Data Type list.
  2. If it currently reads Analog, change it to Direct.
  3. Click Apply and then OK to close the dialog.

5.4 Verify the Format Pattern

Open the I/O field's Properties → General (or Representation in TIA Portal) and confirm the format string supports the expected range:

Value Acceptable Format Notes
−80 s9999 or wider Sign is automatic with s prefix.
−3200 s9999 or wider 5-digit format required if product can reach 5 digits.
−32000 s99999 or wider 5-digit signed max display = 99999 (positive) / −99999 (negative). 5 '9' positions show only −9999 to 99999 when prefixed with 's' in some firmware builds; verify by testing.
−100000 s999999 Six 9's required.

Pattern conventions in WinCC flexible / TIA Portal:

  • 9 — digit position, hidden if zero unless preceded by 0.
  • 0 — digit position, always shown even if zero.
  • s — sign position; renders − for negative, blank for positive.
  • f — leading character flag; some firmware variants interpret f as a sign placeholder.
  • . — decimal separator (locale-dependent display).

5.5 Compile and Download

  1. Save the project.
  2. Compile the affected HMI station (TIA Portal: HMI_1 → Compile → Software (rebuild all); WinCC flexible: Project → Compiler → All).
  3. Download to the panel (full or delta, depending on whether a re-compile was triggered).
  4. Restart runtime if the panel does not pick up the change after a delta download.

6. Verification

After download, force the source tag to several test values and observe the I/O field:

Test SignedTag Value Factor Expected Display Pass Criterion
Negative small −1 40 −40 Field shows −40, no stars
Negative large −80 40 −3200 Field shows −3200, no stars
Negative extreme −32768 1 −32768 Field shows −32768, no stars
Positive small +1 40 40 Field shows 40 (no leading + sign)
Zero 0 40 0 Field shows 0, no stars
Boundary +32767 1 +32767 Field shows 32767 (signed pattern suppresses +)

To confirm the fix at design time, use the Tag management window in the engineering tool. Hold the mouse pointer over the tag in the project tree to read its current design-time value, then simulate the expression in the dynamic dialog preview (TIA Portal V17+: Test → Simulate table with the tag simulation table).

7. Format Pattern Quick Reference

Pattern Renders Width (digits) Signed?
9999 1234, −1234 (sign may render as a leading character or be dropped depending on firmware) 4 Mixed
s9999 1234, −1234 4 Yes
99999 12345 5 No
s99999 12345, −12345 5 Yes
09999 00123, −00123 5 No (always leading zero)
999.9 123.4 3 + 1 decimal No
s999.9 −12.3 3 + 1 decimal Yes
###### ######## if value overflows 6 (hash variant) Hash overflow
f9999 Firmware-specific: some panels treat f as fixed-point or sign 4 Firmware-dependent

The number of 9 positions after s is the maximum number of magnitude digits the field can render with a sign. If the magnitude exceeds this count, the field shows ***. Always size the pattern at least one digit wider than the largest expected absolute value.

8. Dynamic Dialog Data Type - Decision Guide

Use Case Recommended Data Type Reason
Direct tag display (no expression) n/a — use tag link, not Dynamic Dialog Direct tag link is more efficient and avoids overflow path entirely.
Tag multiplied or divided by constant Direct Result is a true numeric value; no need for analog rescaling.
Tag multiplied or divided by another tag Direct Same as above; result is a true numeric value.
Raw analog input → engineering units Analog with explicit scale Used when the source is a raw integer from an analog module and the field's low/high limits define the engineering range.
Boolean logic → visibility / color Boolean Coerces to 0/1 for animations.
Numeric → text label String Use when the consumer is a string property like a status bar.

9. Signed Integer Ranges

Data Type Min Max Bytes Common Source
Int (16-bit signed) −32768 +32767 2 S7-1200/1500 INT, S7-300/400 INT
DInt (32-bit signed) −2147483648 +2147483647 4 S7 DINT
Word (16-bit unsigned) 0 65535 2 S7 WORD
DWord (32-bit unsigned) 0 4294967295 4 S7 DWORD
Real (32-bit float) ±1.18e−38 ±3.4e+38 4 S7 REAL

If the multiplication can produce a magnitude that exceeds 16 bits, change the I/O field's connected tag to a 32-bit type (DInt) on both the PLC side and the HMI tag side, and widen the display format accordingly. See the SIMATIC S7-1200 S7-1200 Programmable Controller System Manual for tag-type rules.

10. Edge Cases and Related Issues

10.1 Division by a Dynamic Tag

The same Direct-vs-Analog decision applies to division. If 'SignedTag' / 'FactorTag' shows stars only when the result is negative, switch Data Type to Direct.

10.2 Mixed Sign in the I/O Field's Low/High Limits

When the I/O field's low limit is set to 0 and the expression yields a negative value, the field's value range check may also produce stars, independent of the Dynamic Dialog's Data Type. Always set low limit to a value that covers the minimum expected result. WinCC Runtime will clamp the input to the configured limits when the field is in input/output mode, but a tighter display range than the expression can produce will still trigger stars.

10.3 Using Scripts Instead of Dynamic Dialog

For more complex scaling, replace the Dynamic Dialog with a C or VB script in the Value event:

// VBScript example: scale a signed tag by an integer factor
Dim src, fac, dst
Set src = SmartTags("SignedTag")
Set fac = SmartTags("FactorTag")
Set dst = SmartTags("ResultTag")
dst.Value = src.Value * fac.Value

This bypasses the Dynamic Dialog's analog scaling entirely and writes to a third tag that the I/O field displays directly. Recommended when the expression involves branches, conditionals, or non-linear scaling.

10.4 Using the Expression in a Tag Instead of a Property

You can also define the scaled product as a tag-side calculation by using a Tag with linear scaling or a Multiplexing tag in TIA Portal V17+. This keeps the I/O field bound to a normal tag and removes the Dynamic Dialog from the critical path.

10.5 Comfort Panel vs. Basic Panel Differences

Basic Panels (KTP400 Basic, KTP700 Basic, KTP900 Basic, KTP1200 Basic) have a reduced runtime and may not support the full Dynamic Dialog feature set. On Basic Panels, the typical pattern is to compute the scaled value in the PLC and expose it as a separate tag. See SIMATIC HMI Basic Panels Operating Instructions.

10.6 TIA Portal V19 - Updated Dynamic Dialog Behavior

In TIA Portal V18 and later, the Dynamic Dialog was renamed to Formula in some property dialogs and the Data Type list is exposed as Result type with the same options. The fix is identical: select the equivalent of Direct (sometimes labeled Integer or Long). See the TIA Portal V19 release notes for property-dialog changes.

11. Commissioning Checklist

  1. Confirm the source tag's data type is Int or DInt in the PLC and on the HMI tag side.
  2. Confirm the HMI tag's Acquisition mode is Cyclic in operation with a sensible update cycle (250 ms typical for process values).
  3. In the I/O field, set the Dynamic Dialog's Data Type to Direct.
  4. Set the display format to a signed pattern (s prefix) with at least one more digit than the largest expected magnitude.
  5. Set the I/O field's low limit to the minimum expected value, and high limit to the maximum, including the sign.
  6. Compile the project; resolve any warnings about tag or property mismatches.
  7. Download to the panel, restart runtime.
  8. Force the source tag to positive, zero, and negative values and verify the displayed value matches the expected product.
  9. Disconnect the PLC connection to confirm the field shows its configured fallback value (or stars, if no fallback is configured).

12. Preventive Practices

  • Default to Direct. For any expression that performs arithmetic on tags, set the Dynamic Dialog's Data Type to Direct by default. The Analog path is a niche feature for re-scaling raw analog input values to engineering units.
  • Match the format to the worst case. When scaling by a factor, compute the worst-case absolute value of the product and pick a format pattern at least one digit wider.
  • Set low/high limits to the actual expected range. Avoid using 0 to 100 limits on a field that can display negative values; use the symmetric range of the worst case.
  • Test the negative case explicitly. During commissioning, force the source tag to a clearly negative value (e.g., −100) and verify the I/O field renders a negative number, not stars. Many teams only test the zero and positive cases during FAT, which lets this bug reach SAT.
  • Use a script for complex expressions. If the expression grows past a single multiplication or division, replace the Dynamic Dialog with a C or VB script that writes to a dedicated tag.

13. FAQ

Why does my WinCC I/O field show three stars (***) instead of a negative number?

The asterisks are the runtime's overflow indicator. The most common cause when the value is the result of a multiplication is that the Dynamic Dialog's Data Type property is set to Analog instead of Direct. Switch the Data Type to Direct in the Dynamic Dialog editor. Other possible causes are a format string that is too narrow (e.g., s9999 for a five-digit value) or I/O field low/high limits that exclude the computed value.

Where do I change the Dynamic Dialog Data Type in TIA Portal?

Right-click the I/O field → Properties → Events → Value (under Output or Process value). Click the small lightbulb / arrow on the right of the value cell and select Dynamic Dialog (or Formula in V18+). On the right-hand side of the editor, the Data Type list shows Analog, Direct, Boolean, String. Change it to Direct for arithmetic expressions.

Does the signed format string s9999 support negative values up to −9999?

Yes. The s prefix reserves a position for the sign and the four 9 positions cover magnitudes 0–9999. So s9999 covers the range −9999 to +9999. If the magnitude can reach 5 digits, widen to s99999. If the value can exceed 5 digits, widen further or change the tag type to DInt.

Can I use a script to scale a signed tag and bypass the Dynamic Dialog entirely?

Yes. In WinCC flexible or TIA Portal WinCC, attach a C or VBScript to the I/O field's Value event. Read the source tag and the factor tag, multiply them, and write the result to a third tag that the I/O field displays directly. This avoids the Dynamic Dialog's Analog scaling path and the resulting overflow tokens. See the snippet in section 10.3 of this article.

Does this issue also affect WinCC Professional / SCADA?

WinCC Professional (the SCADA variant) does not use the Dynamic Dialog editor for I/O field values. Instead, the field is bound to a tag, and tag-side calculations or C / VBS scripts handle arithmetic. The star symptom in WinCC Professional usually means a wrong data type in the tag configuration or a format string that cannot represent the value. Apply the same diagnosis path: verify the tag's data type, widen the format string, and check the I/O field's configured limits.

Back to blog