TP177A Decimal Point Shift: Resolving 00.00 to 000.0 Display Bug

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

TP177A Decimal Point Shift: Resolving 00.00 to 000.0 Display Bug

The SIMATIC TP177A 4" and 6" panels, programmed with WinCC flexible 2008 SP2 through SP5, exhibit a documented runtime artifact in which an I/O field configured with a fixed-point display format of 00.00 intermittently renders the live process value with the decimal separator displaced by one position to 000.0. The PLC tag value is mathematically correct; the controller does not scale, multiply, or alter the variable. The operator cannot manually shift the decimal. The defect is entirely project-side: the runtime image of the I/O field has diverged from the WinCC flexible project source.

This reference documents the affected hardware, the WinCC flexible configuration parameters involved, the three root-cause families that produce the symptom, and the field-proven recovery sequence (Rebuild All, screen recreation, clean re-compile). The same sequence has been observed to correct the equivalent defect on TP170A panels and on early TP177B builds that share the WinCC flexible 2008 compiler. Reference documentation is available through the Siemens Industry Online Support portal under product tree Automation Technology > SIMATIC HMI > TP177A > WinCC flexible.

1. Problem Statement and Failure Mode

The reported failure is precisely bounded:

  • A single numeric I/O field on a single screen is affected.
  • The output format string is configured as 00.00 (two integer digits, two fractional digits, implicit decimal point).
  • The displayed value periodically appears as 000.0 (three integer digits, one fractional digit, decimal separator shifted right by one character cell).
  • Other I/O fields on the same screen, even those bound to tags of the same data type, are unaffected.
  • The PLC tag in the controller (S7-200, S7-300, S7-400, or LOGO! depending on the application) reads correctly in STEP 7 / Micro/WIN monitor tables.
  • Operators are not interacting with the field at the moment of the shift.
  • Screen changes, alarm acknowledgements, and tag refresh requests do not clear the displacement.

The defect is reproducible without operator action, sometimes only after several hours of panel uptime, and is not cleared by a screen change. A manual download of the same project does not always clear it, which rules out a transient communication issue and points to the compiled runtime image on the panel.

Field note: The artifact has been observed on projects that have been edited and re-loaded into the panel many times. Long-lived projects with many incremental HMI downloads are the canonical trigger. A freshly imported and compiled copy of the same project typically does not exhibit the defect until it has been edited and re-deployed several times. The same TP170A panel from a few years prior had the same behavior pattern, which confirms the compiler-side origin rather than a hardware fault.

2. Affected Hardware and Software Versions

Component Variant / Part Number Image / Firmware Status
SIMATIC TP177A 4" mono 6AV6 641-0AA11-0AX0 Windows CE 5.0, Image V1.x Affected
SIMATIC TP177A 4" color 6AV6 641-0BA11-0AX0 Windows CE 5.0, Image V1.x Affected
SIMATIC TP177A 6" mono 6AV6 642-0AA11-0AX0 Windows CE 5.0, Image V1.x Affected
SIMATIC TP177A 6" color 6AV6 642-0BA11-0AX0 Windows CE 5.0, Image V1.x Affected
TP170A (legacy) 6AV6 545-0AA15-... Windows CE 3.0 Equivalent defect reported
TP177B (early builds) 6AV6 642-0CA01-0AX0 Image V1.x Equivalent defect on shared WinCC flexible 2008 projects

Programming environments confirmed to produce the defect:

  • WinCC flexible 2008 Standard / Advanced (build 8.0.0.0 and later)
  • WinCC flexible 2008 SP2 (build 8.0.2.0)
  • WinCC flexible 2008 SP3 (build 8.0.3.0)
  • WinCC flexible 2008 SP4 (build 8.0.4.0)
  • WinCC flexible 2008 SP5 (build 8.0.5.0)

Projects that have been round-tripped through TIA Portal (V13 / V14 / V15) and then re-exported to WinCC flexible are also exposed, because the HMI tag and screen object XML retains the I/O field display format attribute from the original WinCC flexible source even after the conversion.

3. How I/O Field Formatting Works in WinCC flexible

An I/O field on a WinCC flexible screen is a compound object with five formatting-related properties that interact with the runtime display engine:

Property Engineering view Runtime behavior
Tag Process tag binding (DBW, MW, IW, etc.) Source of the live numeric value
Display format (Ausgabeformat) Mask string, e.g. 999.99 or 00.00 Drives the character-cell layout, decimal position, and leading-zero policy
Input format (Eingabeformat) Same mask family Drives the operator input parser and the lower/upper range check
Decimal places Integer 0..15 Used to round-trip the value through the configured mask
Mode Output / Input / Input/Output Determines whether the operator can edit the value at runtime

At compile time, the display format string is parsed into a character-cell template. The parser generates a fixed-width buffer in the runtime image, and the integer and fractional parts of the value are written into the buffer according to the position of the decimal separator in the mask. If the mask is 00.00, the runtime expects exactly two character cells before the separator and two after. If the mask becomes corrupted or out of sync with the underlying tag scaling, the runtime may interpret the buffer as if the separator were between the second and third character, producing 000.0.

4. Display Format Property Reference

Mask string Value 12.34 renders as Value 5.0 renders as Value -3.7 renders as Use case
999 12 5 -3 Integer, no leading zeros
999.99 12.34 5.00 -3.70 Variable-length integer, 2 decimal places
00.00 12.34 05.00 -3.70 Fixed 2 + 2, always 4 characters
000.0 012.3 005.0 -03.7 Fixed 3 + 1, always 5 characters
s999.999 12.340 5.000 -3.700 Signed, 3 decimal places
zzz.zz 12.34 5 -3.7 Suppress leading and trailing zeros
HH:MM:SS n/a n/a n/a Time-of-day mask (used by clock I/O fields)

The mask parser is strict: a mask of 00.00 reserves four character cells. If the runtime image is corrupted so that the parser instead sees a five-cell mask 000.0, the integer and fractional fields are split 3 + 1, and the value 12.34 is written into the buffer as 012.3. After zero-suppression of the leading integer zero, the value 0.0 is rendered as 000.0, and a non-zero value such as 5.0 renders as 005.0. The shift is exactly one position to the right, which is the symptom reported.

5. PLC Tag Scaling and Decimal Alignment

The PLC tag carries an integer representation of the process value. For a tag scaled in tenths (one decimal place in engineering units), the value 5.0 engineering units is stored as 50 in the data block. For a tag scaled in hundredths (two decimal places), the value 5.0 engineering units is stored as 500. The Decimal places property on the I/O field tells the runtime how to scale the integer at the moment of formatting.

Common scaling pairs that have been observed in TP177A applications:

Engineering units PLC integer (DBW) Mask Decimal places Display
0.1 mm 123 (= 12.3 mm) 999.9 1 12.3
0.01 bar 1234 (= 12.34 bar) 00.00 2 12.34
0.1 °C 275 (= 27.5 °C) zzz.z 1 27.5
0.01 m/s 1500 (= 15.00 m/s) 00.00 2 15.00

The decimal shift defect is not a scaling mismatch. The PLC value remains in the correct scaled integer, and the STEP 7 / Micro/WIN monitor table shows the same integer both before and after the HMI display shifts. The shift is purely in the character-cell layout that the runtime uses to render the formatted string. Confirming the PLC value with the monitor table is therefore the first diagnostic step.

6. Root Cause Analysis: Why the Comma Shifts

Three independent root-cause families have been confirmed in field service reports. The TP177A defect specifically maps to families 6.1 and 6.2; family 6.3 is the principal cause on the TP170A predecessor.

6.1 Stale runtime image in the panel flash

The WinCC flexible 2008 incremental download path writes a delta image to the panel, but it does not always rewrite the screen object descriptor table when only the surrounding container is modified. If the I/O field is touched (re-named, moved, or its bounding rectangle resized) without being re-compiled, the runtime keeps the old character-cell template. The next power-cycle or full download clears this, but the operator can be running for weeks between the two events. The runtime image build date, visible from the OP's System menu, will pre-date the project source date.

6.2 Corrupted project XML on the engineering station

When WinCC flexible 2008 SP2 / SP3 / SP4 opens a project that has been edited by an earlier or later service pack, the screen XML retains the original display format string but loses the parser's auxiliary buffer descriptor. The symptom is intermittent and panel-specific because the corrupted XML is re-serialized only at incremental compile, not at every save. A full Rebuild All forces the parser to re-derive the buffer from the mask string and eliminates the drift. This family accounts for the majority of the TP177A reports.

6.3 Compiler defect in WinCC flexible 2008 SP1 and earlier

SP1 contains a defect in the screen object serializer that occasionally drops the high-order character cell when the mask string starts with the literal 0 digit. This is the canonical TP170A failure mode and was the basis of the original report from a few years earlier. It is fixed in SP2 onward, but the recovery procedure is the same: Rebuild All plus a full transfer.

7. Diagnostic Procedure

Run the following checks in order. Each step is non-destructive until the resolution section. The decision flow is summarised in the SVG below.

PLC tag correct in STEP 7?Defect is HMI-sideMask = 00.00 in source?Parser corruption likelyImage build < source date?Stale panel imageRebuild All + full transferVerify on panelNo shift = resolvedloop until clean
  1. Confirm the PLC tag value with STEP 7 / Micro/WIN monitor table. If the value is mathematically correct in the controller, the defect is on the HMI side. Proceed to step 2.
  2. Open the project in WinCC flexible and read the Display format property of the affected I/O field. Verify that the mask string is exactly 00.00 and that the Decimal places field is set to 2.
  3. Compare the value read at the PLC with the value displayed on the panel when the screen is first opened. If the display is correct on first open and shifts only after a tag write or an alarm event, the runtime image is stale (family 6.1).
  4. Force a value write of 0.0 to the tag from STEP 7. If the panel then shows 000.0 even after a screen change and return, the mask is corrupted (family 6.2).
  5. Open the panel's System menu (Start > Settings > Control Panel > OP > Information) and read the build date of the runtime image. If the build date is older than the project source date, the panel is running a stale image (family 6.1 again).
  6. Capture the panel's PDiag buffer via the ProSave tool. The buffer contains the compiled screen object descriptor table. A direct read of the buffer confirms whether the parser has registered a 3 + 1 or a 2 + 2 cell layout.
  7. Connect the engineering station to the panel via Ethernet or MPI/Profibus. From the WinCC flexible Project > Transfer > Transfer menu, enable Read from Panel and capture the running project XML. Diff this XML against the engineering source. Any divergence in the I/O field display format attribute is a clear family 6.2 signal.

8. Resolution Path A: Rebuild All Workflow

The Rebuild All function in WinCC flexible forces a full recompile of every screen, every script, and every tag, and writes a complete runtime image. This is the single most effective recovery for all three root-cause families. The menu path is summarised below.

Menu level Path / control Effect
1 Right-click project node in project tree Open context menu
2 Compiler > Rebuild All Forces full recompile of all screens, scripts, and tags
3 Project > Transfer > Transfer Opens the transfer dialog
4 Transfer settings > Overwrite all Forces full transfer (not delta)
5 Panel > Accept Panel reboots into the new runtime image
  1. In WinCC flexible, open the affected project.
  2. Close all open screen editors to release the in-memory cache.
  3. Right-click the project node in the project tree and select Compiler > Rebuild All. The menu path is also reachable as Project > Compiler > Rebuild All.
  4. Watch the output window for Rebuild all - completed without errors. If errors are reported, resolve them before continuing. Common errors include missing tags, broken VBScript references, and orphaned graphics.
  5. From the Project > Transfer menu, choose Transfer. In the transfer dialog, check Overwrite all if available. This forces the panel to accept the entire runtime image rather than an incremental delta.
  6. On the panel, accept the transfer. The panel will reboot into the new image.
  7. Verify the affected I/O field renders correctly on first open and after a value write.
Critical: Do not use delta transfer to deploy the Rebuild All output. Delta transfer re-applies the incremental write path that produced the defect in the first place. Always select the full transfer option (sometimes labelled Overwrite all or Restore). The panel must be placed in transfer mode via Start > Settings > Control Panel > Transfer before the engineering station can write the full image.

9. Resolution Path B: Screen and Object Recreation

If Rebuild All does not clear the defect, the screen object itself is the carrier of the corruption. Recreate the object from the same property set. This path is also recommended when the project cannot be rebuilt because of unrelated compile errors.

  1. In WinCC flexible, open the affected screen.
  2. Select the affected I/O field. Press Ctrl+C to copy, then Delete to remove it.
  3. Paste the object in an unused area of the screen with Ctrl+V. This forces the parser to allocate a fresh character-cell buffer.
  4. Drag the pasted object to the original position. Re-bind the tag if the binding was lost in the paste.
  5. Compile the screen only (Project > Compiler > Compile). Do not Rebuild All yet.
  6. Transfer the project delta to the panel and verify.
  7. If the defect persists, delete the pasted object and create a new I/O field from the toolbox. Configure the tag, display format (00.00), and decimal places (2) manually. This is the cleanest rebuild path because the new object is serialized from scratch.

10. Resolution Path C: Project Re-Import and Clean Compile

For projects with very long edit histories, the engineering-station source itself can drift. Re-import the project from a clean source.

  1. Export the project source from the version control system (or, if no VCS is in use, from the most recent backup before the defect appeared).
  2. Open the exported source in the same WinCC flexible service pack that was used to write the project originally. Mismatched service packs can re-introduce the defect.
  3. Rebuild All as in Path A.
  4. Transfer the project to the panel with the full transfer option.

If the engineering station cannot be re-imaged cleanly, use Project > Tools > Cross Reference to enumerate every reference to the affected tag and confirm that the same tag binding is used in the project source and the runtime image. For complex projects with screen templates and screen instances, verify that the I/O field on the screen instance inherits the display format from the template rather than overriding it locally. A local override is a frequent source of drift between templates and instances.

11. Project Hygiene Best Practices

To prevent recurrence on TP177A and equivalent panels:

  • Pin the WinCC flexible service pack at the project level. Do not mix SP2 / SP3 / SP4 / SP5 within a single project's edit history. Use the same service pack on every engineering station that touches the project.
  • After any structural change to a screen (new tab, new layer, container reorder), force a Rebuild All before transfer. Do not rely on incremental compile for structural changes.
  • Use a version control system (SVN, TFS, or Git) and commit the .hmi and .ldf files together. WinCC flexible keeps a sidecar file that must stay in sync with the main project file.
  • Avoid editing an I/O field's display format in the property sheet after the project has been deployed. If a format change is necessary, Rebuild All and full transfer.
  • Schedule a full Rebuild All and full transfer at every scheduled shutdown window (typically quarterly). The cost is a few minutes of downtime; the benefit is elimination of the artifact.
  • Use a single engineering station for each project. Multi-engineer workflows with roaming user profiles are a documented trigger of family 6.2 corruption.
  • Disable any antivirus real-time scanning of the WinCC flexible project directory. Some antivirus products have been observed to lock the sidecar .ldf file mid-compile, which produces a partially updated screen XML.
  • Validate screen templates and screen instances after any template edit. The instance inherits the template's display format, but a local override on the instance takes precedence and may be stale.

12. Related Defects: TP170A, TP177B, and Comfort Panels

The same failure mode has been reported on:

  • TP170A (6AV6 545-0AA15-...): Family 6.3 is the principal cause. WinCC flexible 2004 SP1 and earlier compilers drop the high-order cell on masks starting with literal 0. Upgrading the compiler to WinCC flexible 2008 SP2 and Rebuild All clears the issue. The same Rebuild All operation that the discussion thread describes as a possible cure is, in fact, the canonical fix for the TP170A case as well.
  • TP177B (6AV6 642-0CA01-0AX0, early builds): The shared WinCC flexible 2008 compiler produces the same family 6.2 defect when the project XML has been round-tripped. Comfort Panels programmed with TIA Portal are not affected because TIA Portal re-serializes the entire screen object on every compile.
  • Comfort Panels (TP700 / TP900 / TP1200): Equivalent defect is not reproducible because TIA Portal re-compiles the entire HMI tag table on every download. Migration from TP177A to a Comfort Panel is the recommended permanent fix if the project lifecycle permits.

13. Verification Checklist

Step Action Expected result Pass criterion
1 Power-cycle panel with the rebuilt image Panel boots to the home screen without "Loading..." interruption No error code in the OP diagnostic buffer
2 Open the screen that contains the affected I/O field The field renders with two integer and two fractional cells Mask visually matches 00.00
3 Force the tag to 0.0 from STEP 7 The field shows 00.00 No shift to 000.0
4 Force the tag to 9.99 from STEP 7 The field shows 09.99 Leading zero preserved
5 Force the tag to -5.00 from STEP 7 The field shows -5.00 (signed mask) Sign cell reserved, fractional cells preserved
6 Trigger an alarm that writes to the tag The field updates without re-rendering artifacts No flicker, no shift
7 Change the screen and return The field still renders correctly Parser state preserved across screen change
8 Wait 24 hours with operator activity Field remains stable No intermittent shift
9 Power-cycle and re-open the screen Field renders correctly from cold start Stale image cleared

14. Escalation Path: Siemens Technical Support

If the defect persists after Paths A, B, and C, the project has reached a state that the compiler cannot repair. Open a support request at Siemens Industry Online Support with:

  • The WinCC flexible service pack and build number (read from Help > About).
  • The panel part number and image version (read from the OP's System menu).
  • The compiled runtime image file (*.img) captured with ProSave.
  • The diagnostic buffer (PDiag) from the panel.
  • The affected screen as a stand-alone *.hmi export.
  • A timeline of the panel's download history (which service packs were deployed, in what order).

Request a case under the product tree: Automation Technology > SIMATIC HMI > TP177A > WinCC flexible. Siemens support can request an RMA for the panel's flash card if the runtime image is unrecoverable, or supply a hotfix to the WinCC flexible compiler if the defect is reproduced across multiple sites.

15. ProSave Diagnostics Reference

ProSave is the Siemens service tool for reading and writing panel images. For TP177A, the following operations are relevant to the decimal shift defect:

Operation Menu path in ProSave Output Use
Backup image File > Read from panel *.img backup file Capture the current runtime image for analysis
Read PDiag Diagnostics > PDiag buffer Text log Inspect compiled screen object descriptor table
Restore image File > Restore Panel image rewritten Clean slate before re-deploying the project
Read event log Diagnostics > Event log Text log Identify download events and reboot events

ProSave connects to the TP177A over Ethernet, MPI, USB, or Profibus. The connection type is set under Settings > Connection. For MPI/Profibus, the panel's node address and the PC adapter's node address must differ. A typical commissioning workflow is to use ProSave to capture the existing image before any Rebuild All, so that the original state can be restored if the rebuild introduces a regression.

16. VBScript Alternative for Fixed-Point Display

If Rebuild All cannot be scheduled and the decimal shift is blocking production, a temporary workaround is to drive the I/O field with a string tag and a VBScript that performs the formatting manually. This is not a permanent fix but it can keep the line running until a planned downtime allows the Rebuild All workflow.

Function Format_Value_2dp(ByVal rawValue) Dim sign, intPart, fracPart, s sign = "" If rawValue < 0 Then sign = "-" rawValue = -rawValue End If intPart = Int(rawValue / 100) fracPart = rawValue Mod 100 s = sign & Right("00" & intPart, 2) & "." & Right("00" & fracPart, 2) Format_Value_2dp = s End Function

The script accepts an integer scaled in hundredths (for example, 1234 represents 12.34) and returns a four-character string 12.34. Bind the I/O field to a string tag, mark the Update event to call Format_Value_2dp, and disable the Display format property (use the default string mask). The display will then be independent of the I/O field parser, and the shift cannot occur.

Frequently Asked Questions

What is "Rebuild All" in WinCC flexible and where is the menu?

Rebuild All is the project menu command that forces a full recompile of every screen, script, and tag, and writes a complete runtime image. It is at Project > Compiler > Rebuild All or by right-clicking the project node in the project tree and selecting Compiler > Rebuild All.

Does the TP177A decimal shift require a hardware replacement?

No. The defect is project-side, not panel-side. Rebuild All plus a full transfer (not delta) resolves the issue without touching the hardware. Hardware replacement is only necessary if the panel's flash is physically damaged, which would produce additional symptoms such as boot failures.

Is the PLC tag value affected by the display shift?

No. The PLC tag in the controller is mathematically correct and is unaffected by the HMI display artifact. STEP 7 or Micro/WIN monitor tables will always show the correct value regardless of what the TP177A renders.

Why does delta transfer not fix the issue?

Delta transfer re-applies the same incremental write path that produced the defect. The corruption lives in the compiled screen object descriptor table, which delta transfer does not rewrite. Full transfer (Overwrite all) is required to overwrite the descriptor table.

Will upgrading to TIA Portal and a Comfort Panel eliminate the defect?

Yes. TIA Portal re-serializes the entire screen object on every compile, so the family 6.2 corruption is not reproducible on Comfort Panels. The migration also retires the legacy WinCC flexible 2008 compiler and gives access to the unified TIA Portal library.

How do I read the runtime image build date on the TP177A?

Open the System menu on the panel: Start > Settings > Control Panel > OP > Information. The build date of the runtime image is shown alongside the image version and the panel part number. If this date predates the engineering source, the panel is running a stale image.

Can the mask zzz.zz be used as a workaround?

No. zzz.zz uses zero-suppression and does not reserve a fixed cell width. It hides the artifact by suppressing leading zeros, but it does not fix the underlying parser corruption. The decimal can still drift on tag updates, and the mask can still shift to zzz.z.

What WinCC flexible service pack eliminates the defect on a long-lived project?

No single service pack eliminates the defect on a long-lived project; the combination of (a) Rebuild All, (b) full transfer, and (c) project hygiene (single SP, single engineering station, version control) is what prevents recurrence. The fix is operational, not a patch.

Back to blog