Problem: Exclamation Mark in the WinCC I/O Field
An exclamation mark (⚠) appears at the left edge of a WinCC Comfort, WinCC Advanced, or WinCC Professional I/O field even though the connected value still updates correctly in the S7 data block. The field is flagged invalid, but the process value continues to refresh. The marker is independent of the configured output format (binary, decimal, string, hexadecimal) and persists across recompilation of the HMI project.
The marker is generated by the WinCC runtime quality-code evaluation. It is not a syntax error in the HMI tag configuration, a panel defect, or a wiring fault. The runtime reads the OPC UA quality stamp of the underlying process tag and renders the warning glyph whenever the quality is anything other than Good (0x00C00000). The same logic applies to WinCC Unified I/O fields, although the configuration path differs.
Root Cause: Tag Quality Status
The exclamation mark is a quality indicator tied to the HMI tag connection. WinCC runtime retrieves the quality stamp of every polled tag, translates it into a visual cue on the I/O field, and updates the cue on each cycle. The display is controlled by the property "Visualize Tag Status" in TIA Portal V15 through V17 (pre-Update 8) and by "Show Connection Quality" in TIA Portal V17 Update 8 and later (V18, V19, V20). Both properties are located under the I/O field's Miscellaneous tab in the Properties inspector.
When the connection is healthy, the field shows the process value with no marker. When the connection is broken, the addressed DB or address range is missing from the PLC, the symbolic name has been renamed without re-binding the HMI tag, or the HMI tag points to a non-existent operand, the runtime writes a quality code other than Good to the tag and the I/O field displays the warning glyph.
OPC Quality Code Reference
| Quality Code (hex) | Status | I/O Field Behavior |
|---|---|---|
| 0x00000000 | Good - non-specific | Value shown, no marker |
| 0x00C00000 | Good - local override | Value shown, no marker |
| 0x40000000 | Uncertain - non-specific | Value shown, marker visible |
| 0x40C00000 | Uncertain - substitute value | Value shown, marker visible |
| 0x80000000 | Bad - non-specific | Marker visible, value stale |
| 0x80040000 | Bad - configuration error | Marker visible, value empty |
| 0x80050000 | Bad - communication error | Marker visible, value frozen |
| 0x801F0000 | Bad - device failure | Marker visible, value empty |
| 0x80320000 | Bad - access denied | Marker visible, value empty |
Read the quality code at runtime through the HMI Tag Management or by binding a temporary I/O field to the Quality output of the suspect tag. The code is 32 bits: bits 24–31 carry the status (Good / Uncertain / Bad), bits 16–23 carry the sub-status, and bits 0–15 carry the limit bits.
Diagnostic Workflow
- Open the HMI device in the TIA Portal project tree.
- Start the WinCC Runtime simulation (RT) or connect to the live HMI panel.
- Open HMI Tags and right-click the suspect tag to enable the quality column.
- Read the displayed quality code and timestamp.
- Cross-reference the code with the table above to identify the failure class.
- Open the connected PLC in Online & Diagnostics and read the diagnostic buffer for the matching event.
- Inspect the PLC's symbol table for unresolved or renamed HMI tag references.
Inline diagnostic flow (SVG)
Solution 1: Configure the Visualize Tag Status Property
When the underlying tag returns values that are functionally correct but the quality code is not Good, hide the warning glyph at the screen-object level. This is a presentation fix only and does not repair the underlying connection problem.
- In the HMI editor, select the affected I/O field.
- In the Properties inspector, open the Miscellaneous category.
- Set Visualize Tag Status = NO (TIA Portal V15 to V17 pre-Update 8) or Show Connection Quality = No (TIA Portal V17 Update 8 and later).
- Recompile the HMI project and download the runtime to the panel or to the RT simulation.
- Verify that the warning is no longer rendered while the value continues to update.
Solution 2: Re-Download All PLC Data Blocks
If the PLC diagnostic buffer reports an I/O access error (event 0x4570 "DB not loaded" or similar), the most common root cause is a data block (DB) referenced by the HMI tag that was created, modified, or removed on the TIA side but not reloaded into the S7-1500 / S7-1200 CPU. The CPU then returns Bad - Configuration Error (0x80040000) for any read against the missing or size-mismatched block.
- Go to the PLC device in the project tree.
- Open Program blocks and select every DB used by an HMI tag.
- Use Download to device → Software (all blocks) to push the complete block container.
- Confirm the prompt that asks whether to overwrite existing blocks.
- On S7-1500 CPUs, also run Download to device → Configuration for the hardware and the symbol table.
- Re-run the HMI runtime and confirm the I/O field no longer carries the warning glyph.
Always recompile the PLC software before the download so that the symbol table visible to the HMI matches the actual block layout. Mismatched block numbers (e.g. DB1 originally, now DB11 after auto-numbering) are a frequent cause of phantom warnings after refactoring.
Solution 3: Validate HMI Tag Address Mapping
An exclamation mark can also appear when the symbolic address of the HMI tag no longer matches the PLC program. This is common after renaming, restructuring, or refactoring a data block, and after importing tags from an external CSV.
- Open the HMI tag in the editor.
- Confirm the Connection field points to the correct PLC.
- Confirm the PLC tag / Address is bound to a symbolic operand that exists in the S7 program, for example
"Data_block_1".Motor.Speed. - Recompile the PLC software; unresolved symbols appear under PLC tags → Inconsistent.
- Re-link the HMI tag to the corrected symbolic name and re-download the HMI runtime.
DB1.DBD4) and the DB is later edited with optimized block access. Optimized blocks no longer guarantee offsets, so the HMI reads a wrong or stale memory location. Switch to symbolic addressing (see Solution 5) before the next download.Solution 4: Analyze the PLC Diagnostic Buffer
The S7 diagnostic buffer is the authoritative source for the reason a quality code transitioned from Good to Bad. Read the buffer via Online & Diagnostics → Diagnostics → Diagnostic Buffer in the PLC's context menu.
| Event ID (hex) | Text | Suggested Action |
|---|---|---|
| 0x3570 | PROFINET IO station failure | Check device name, IP, and cabling |
| 0x39C1 | Diagnostic interrupt from module | Open module diagnostics in device view |
| 0x4302 | Stop due to I/O error | Inspect distributed I/O and PROFINET diagnostics |
| 0x4542 | No valid license | Re-license the CPU and optional blocks |
| 0x4570 | DB not loaded | Re-download the missing data block |
| 0x35C0 | Communication fault, partner not reachable | Verify IP, subnet, and routing |
| 0x3312 | Substitute value active | Confirm intended fallback / clear via OB100 |
Solution 5: Use Symbolic Instead of Absolute Addressing
Absolute addressing (for example, DB1.DBD4) survives only as long as the DB structure does not change. Symbolic addressing (for example, "Motor_DB".Speed_RPM) keeps the HMI tag bound to the correct memory location even when offsets shift. Symbolic binding also lets the TIA compiler flag inconsistent references at compile time, which prevents most warning-glyph conditions from reaching runtime.
- Open the HMI tag and the linked PLC tag.
- Replace the absolute address with the symbolic name from the PLC's global tag table or the data block's static section.
- Set the data block attribute Optimized block access = Enabled for new S7-1500 DBs.
- Recompile and download both devices.
- Verify the I/O field reads the expected value and the quality code is
0x00C00000.
Solution 6: Use the QualityStatus() Function in Scripts
For panels that run user-defined scripts, query the tag's quality code directly and branch on it. The QualityStatus function returns the OPC UA quality as a 32-bit integer, allowing scripted responses (logging, alarm, screen change) without relying on the visual marker.
// VBScript sample - WinCC Comfort / Advanced
Dim q
q = SmartTags("Motor_DB").QualityStatus
If (q And &H80000000) <> 0 Then
' Bad quality - log to alarm buffer
HMIRuntime.Trace "Bad quality on Motor_DB: " & Hex(q) & vbCrLf
ElseIf (q And &H40000000) <> 0 Then
' Uncertain quality - warn operator
HMIRuntime.Trace "Uncertain quality on Motor_DB: " & Hex(q) & vbCrLf
Else
' Good quality - normal operation
End If
Verification
- Open the runtime view of the HMI screen and confirm the I/O field no longer renders the exclamation mark.
- Open HMI Tags at runtime and confirm each connected tag reports quality
Good(0x00C00000). - In the PLC, open Online & Diagnostics and confirm no I/O access errors are recorded after the value update.
- Force a value change from the PLC and confirm the I/O field updates without a transient quality warning.
- Cycle the HMI runtime once (stop / start) to confirm the marker does not return at cold start.
Version-Specific Property Notes
| TIA Portal Version | Property Label | Location | Default |
|---|---|---|---|
| V15, V15.1, V16 | Visualize Tag Status | Properties → Miscellaneous | Yes |
| V17 (pre-Update 8) | Visualize Tag Status | Properties → Miscellaneous | Yes |
| V17 Update 8 and later | Show Connection Quality | Properties → Miscellaneous | Yes |
| V18, V19, V20 | Show Connection Quality | Properties → Miscellaneous | Yes |
The behavior is identical across versions. The label change aligns with the broader Connection Quality framework introduced with TIA Portal V17, which surfaces OPC UA quality codes across all HMI controls, not just the I/O field. The framework also adds a quality-code tooltip when hovering over a control that has the option enabled. TIA Portal V18 onward extends the framework with a screen-level Connection Status indicator that summarizes the worst quality of all bound tags on the current screen.
Related Configuration: Connection Quality on Other Controls
The same Show Connection Quality property is available on bar graphs, sliders, symbolic I/O fields, trend controls, gauges, and the date/time picker. Configure it consistently across the screen so operators do not receive conflicting visual feedback. For screen-level quality summary, use the Connection Status control bound to the screen and enable its quality output.
For WinCC Unified, the I/O field is configured through the Configuring Screens (RT Unified) - IO Field documentation. Unified renders a similar quality indicator and exposes the quality through the tag's Quality property rather than through a screen-object toggle. The I/O field defaults to empty in Unified; the value is rendered based on the configured output format only when the tag's quality is Good.
Troubleshooting Matrix
| Symptom | Likely Cause | First Action |
|---|---|---|
| Marker on every I/O field, no value updates | PLC connection down | Verify IP, subnet, PROFINET name on the HMI connection |
| Marker on one I/O field, value updates | Quality code is Uncertain | Inspect tag's OPC quality; check simulated/stub values |
| Marker on multiple fields, values stale | CPU in STOP or one DB missing | Read PLC diagnostic buffer, re-download blocks |
| Marker appears after DB edit | Absolute address offset changed | Switch HMI tags to symbolic addresses |
| Marker appears only on one PLC, intermittent | Access list or security level | Check HMI access rights in PLC properties |
| Marker clears after HMI restart, returns in 5 min | Polling timeout on slow connection | Increase HMI update time or move to Ethernet |
FAQ
Why does the I/O field show an exclamation mark while the value still updates?
The exclamation mark is a quality-code warning, not a value error. The runtime reads the OPC UA quality stamp of the underlying tag; if the quality is anything other than Good (0x00C00000), the I/O field renders the warning glyph even when the value is still being written.
What is the difference between "Visualize Tag Status" and "Show Connection Quality"?
They are the same property. "Visualize Tag Status" was the label in TIA Portal V15 through V17 pre-Update 8. "Show Connection Quality" is the label introduced with TIA Portal V17 Update 8 and used in V18, V19, and V20 as part of the unified Connection Quality framework.
Does hiding the warning solve the underlying problem?
No. Setting the property to No only removes the visual indicator. If the cause is a missing DB, a renamed tag, or a broken connection, the HMI will still read stale data. Resolve the root cause first and re-enable the indicator as a maintenance aid.
Which TIA Portal versions are affected?
All TIA Portal versions from V15 through V20 expose this indicator on the I/O field. The behavior is identical; only the property label changes at V17 Update 8. WinCC Unified follows a different but functionally equivalent model through the tag's Quality property.
Can the warning appear on WinCC Unified panels?
Yes. WinCC Unified exposes an equivalent quality indicator on the I/O field through the tag's Quality property. The root causes (missing DBs, broken connections, unresolved symbolic addresses) are the same as in WinCC Comfort and Advanced.