Problem Description
On a WinCC Unified PC Runtime running under TIA Portal V18 Update 2, the column titled Alarm class symbol inside the Alarm control screen object remains permanently empty when displayed at runtime. The column is added to the alarm control configuration, the alarm line is correctly generated for a built-in alarm class (for example, the default class Alarm with ID 53), and no filter rules are excluding the field - yet the cell contains no characters, no glyph, and no icon.
The expectation set by legacy WinCC Comfort/Advanced screenshots and the V18 marketing material shows the column populated with a color-coded graphical indicator. Operators reading the runtime therefore see a missing element in every row of the alarm log, which is interpreted as a configuration fault and forces unnecessary engineering investigation.
Root Cause Analysis
The Alarm class symbol column in WinCC Unified is not a graphical icon slot. It is a single-character or short-string textual abbreviation for the alarm class name. This is documented in the official alarm control reference as the ClassSymbol column property, sourced from the runtime tag AlarmResult.AlarmClassSymbol.
Three root-cause branches explain an empty cell:
-
Property left at default - The
ClassSymbolproperty of the alarm class is blank in the TIA Portal engineering view. The runtime therefore writes an empty string into the column. - Wrong mental model - The engineer assigned a graphics resource (PNG/SVG) hoping the field would render it. The alarm control column does not consume image resources; it consumes the string property only.
- Column-width collapse - A non-zero abbreviation is configured but the column width in pixels is so small that the character is clipped. Default font scaling at high DPI can push the rendered width below 1 character.
WinCC Unified Alarm Class Model
Every alarm created in WinCC Unified Runtime must be assigned to an alarm class. The alarm class governs two distinct behaviors, as defined in the official TIA Portal V20 documentation for alarm classes in RT Unified:
- Visual appearance - the color used for the alarm line, the border, and the acknowledgment indicator.
- Acknowledgment model - whether the alarm is self-clearing, requires a single acknowledgment, or requires acknowledgment for both incoming and outgoing state transitions.
Built-in classes shipped with TIA Portal V18 include:
| Built-in alarm class | Class ID | Default color | Acknowledgment model |
|---|---|---|---|
| Alarm | 53 | Red (priority 0) | Single acknowledgment |
| Warning | 52 | Yellow (priority 1) | Single acknowledgment |
| Information | 51 | Blue (priority 2) | No acknowledgment required |
| Tolerance | 54 | Green (priority 3) | No acknowledgment required |
| System - error | 50 | Red (priority 0) | Single acknowledgment |
| System - warning | 49 | Yellow (priority 1) | Single acknowledgment |
| System - information | 48 | Blue (priority 2) | No acknowledgment required |
For each of these classes the ClassSymbol text property is delivered empty by default. The class is therefore visually identified by the line color and the priority column, not by the symbol column.
Alarm Control Column Reference
The WinCC Unified Alarm control exposes the following relevant columns in V18 / V20. Each row maps the runtime tag to the column property name exposed in the configuration dialog:
| # | Column | Property name | Runtime tag | Content type |
|---|---|---|---|---|
| 1 | Number | Number | AlarmResult.AlarmNumber | Integer |
| 2 | Time raised | TimeRaised | AlarmResult.TimeRaised | DateTime |
| 3 | Time cleared | TimeCleared | AlarmResult.TimeCleared | DateTime |
| 4 | Time acknowledged | TimeAcknowledged | AlarmResult.TimeAcknowledged | DateTime |
| 5 | State | State | AlarmResult.State | Bitmask |
| 6 | Priority | Priority | AlarmResult.Priority | Integer (0-16) |
| 7 | Alarm class | AlarmClass | AlarmResult.AlarmClass | Localized text |
| 8 | Alarm class symbol | ClassSymbol | AlarmResult.AlarmClassSymbol | String (abbreviation) |
| 9 | Alarm text | AlarmText | AlarmResult.AlarmText | Localized text |
| 10 | Alarm group | AlarmGroup | AlarmResult.AlarmGroup | Localized text |
| 11 | Source | Source | AlarmResult.Source | String |
| 12 | Acknowledgment | Acknowledgment | AlarmResult.Acknowledgment | String |
| 13 | Status text | StateText | AlarmResult.StateText | String |
| 14 | User name | UserName | AlarmResult.UserName | String |
| 15 | Computer | Computer | AlarmResult.Computer | String |
| 16 | Alarm statistics - column | AlarmStatistics | AlarmResult.AlarmStatistics | Integer |
Reference: Alarm control (RT Unified) - WinCC Unified official reference.
Configuring the Alarm Class Abbreviation
To make the symbol column display any character at all, the abbreviation must be set on the alarm class itself, not on the alarm control.
Step-by-step
- Open the TIA Portal V18 project that hosts the Unified PC Runtime.
- In the project tree, expand Runtime settings > Alarms > Alarm classes.
- Select the alarm class (for example, the built-in class Alarm with ID 53, or a custom class).
- In the inspector pane, locate the Name field. Immediately below it, find the Symbol text input.
- Enter one to three characters. Convention: use a single uppercase Latin letter or a localized two-character ISO 639-1 abbreviation. Examples:
Afor Alarm,Wfor Warning,Ifor Information,Sfor System. - Compile the HMI and re-download the runtime configuration. The
ClassSymbolcolumn is evaluated during configuration load, not during alarm raise time.
Multi-language installations
On multi-language Unified projects the ClassSymbol is a single field that does not depend on the runtime language. It is therefore not subject to the standard text-list fallback chain. Use characters that read in any locale - Latin uppercase letter, single digit, or a short standardized symbol such as ! or ? only when the operator workforce is homogenous.
Workarounds for Graphical Alarm-Class Indicators
Engineers who need the legacy graphic symbol behavior (a colored icon in a dedicated column) can reach the same end result through three documented approaches. None of them re-uses the ClassSymbol column for images.
Approach 1 - Use the priority column with a custom color theme
The Priority column in WinCC Unified already provides a numeric identifier (0 = highest, 16 = lowest). The line color is set on the alarm class. Combine these two visual cues and disable the Alarm class symbol column entirely. The redundancy is sufficient in 24/7 operator environments because the priority and the color already communicate the same information.
Approach 2 - Embed an icon as a Unicode glyph
The ClassSymbol text field is rendered with the configured runtime font. Set the field to a Unicode glyph from a supported font such as Segoe MDL2 Assets, Segoe Fluent Icons, or Material Symbols. Example:
Alarm class: "Alarm" (ID 53)
ClassSymbol: "\uE730" // Segoe MDL2 Assets: Warning sign
ClassSymbol: "\uE7BA" // Segoe MDL2 Assets: Error badge
ClassSymbol: "\uE946" // Segoe MDL2 Assets: Info sign
This produces a colored icon-like glyph in the cell. The glyph color is driven by the alarm class theme, not by the symbol field. Confirm the font is installed on every Unified PC Runtime node; otherwise the glyph falls back to a missing-glyph box.
Approach 3 - Replace the alarm control with a custom widget
Build a custom WinCC Unified widget that subscribes to the alarm result set and renders an image column. Use the documented scripting interfaces and the screen object API. This is the only approach that displays real raster or SVG graphics inside a dedicated symbol column.
Scripting Access to Alarm Class Information
WinCC Unified V18 supports JavaScript access to alarm data through the HMIRuntime object. The ClassSymbol property is exposed in the result rows. The following snippet queries the live alarm count and inspects a sample row, demonstrating the read-only API surface:
// V18 - WinCC Unified PC RT - read alarm statistics
// Reference: SIOS article 109955144
(async () => {
const alarm = await HMIRuntime.Alarm.GetActiveAlarms({
languageId: 0x0409 // en-US; 0x0407 = de-DE, 0x040C = fr-FR
});
const totalActive = alarm.length;
const grouped = {};
alarm.forEach(row => {
const sym = row.AlarmClassSymbol || "";
grouped[sym] = (grouped[sym] || 0) + 1;
});
console.log("Active alarms: " + totalActive);
for (const k in grouped) {
console.log("ClassSymbol='" + k + "' count=" + grouped[k]);
}
})();
Reference: Display number of alarms in WinCC Unified via script (SIOS 109955144).
Key API behaviors:
-
GetActiveAlarms()returns the current snapshot of all raised, un-cleared alarms. Cleared alarms are available throughGetLoggedAlarms(). - Each row is an
AlarmResultobject. TheAlarmClassSymbolfield is read-only at runtime and is populated from the class definition compiled into the project. - If the class definition has no symbol,
AlarmClassSymbolis the empty string"". The runtime never substitutes a default character.
Verification Procedure
After completing the configuration steps, validate the alarm class symbol column on the live runtime:
- Start the WinCC Unified PC Runtime and load the project that contains the modified alarm class.
- Open the screen that contains the Alarm control with the Alarm class symbol column enabled.
- Trigger an alarm belonging to the configured class (force the tag that is wired to the alarm condition, or use the Acknowledge & Reset test panel in the TIA Portal alarm editor).
- Confirm that the cell is populated with the configured character. If a Unicode glyph is used, confirm the glyph renders as a colored icon and not as a missing-glyph box.
- Open the runtime log at
C:\ProgramData\Siemens\Automation\WinCCUnified\Logfilesand verify no entry containsClassSymbol parse errororAlarmResult missing property. - Switch the runtime language (Project > Runtime settings > Languages & Fonts) and confirm the column content is unchanged, as expected for a non-localized field.
Known Limitations and Field-Proven Caveats
-
No graphic resource binding. V18 Update 2 does not expose a property dialog that allows assigning an image file (PNG, SVG, BMP) to
ClassSymbol. Field reports of "I attached an image" are almost always referring to the project graphics folder, not to the alarm class definition. - Single-line text only. Multi-line or wrapped text is clipped to one line; line-break characters are stripped by the runtime.
- Length cap. Strings above 8 characters are truncated to 8 characters in the column render path. Use 1-3 characters for best display.
- No per-state variation. The class symbol does not change with alarm state (raised, cleared, acknowledged). For state-specific visuals, use the State column with a styled cell renderer or the priority color theme.
-
Empty on built-in classes. The seven built-in alarm classes ship with an empty
ClassSymbol. The class is identified only by the line color and the priority number. The V18 documentation reflects this in the alarm class reference page (see Alarm classes (RT Unified)). - Marketing imagery. Product screenshots in pre-V18 marketing collateral that show colored icon columns in the alarm control are composites or pre-release renders. As of V18 Update 2, this rendering is not achievable through standard configuration.
Troubleshooting Matrix
| Symptom | Probable cause | Remediation |
|---|---|---|
| Empty cell on every row | ClassSymbol property not set on the alarm class | Edit the class, enter an abbreviation, recompile, re-download |
| Cell contains "?" or rectangle | Unicode glyph selected but font not installed on Runtime PC | Install the icon font, or replace the glyph with a Latin character |
| Cell shows expected character only in designer, not in RT | RT cache not refreshed; project not re-downloaded | Right-click HMI device > Compile > Software (rebuild all); then Download to device |
| Cell shows a character on some rows, not on others | Mixed classes in the visible filter; some classes still have empty ClassSymbol | Set ClassSymbol on every class referenced by any visible alarm |
| Cell shows too narrow to read a single character | Column width shrunk below glyph advance width | Drag the column header to at least 24 px; in pixel-perfect layouts set fixed width >= 32 px |
| Cell color does not match line color | Expected: glyph inherits the class theme color. If not, the alarm control is in dark mode with a missing asset | Verify Project > Runtime settings > Appearance > Dark mode is consistent with the icon font color profile |
| Cell shows different text in different runtime languages | Misinterpreted: ClassSymbol is not language-dependent. If different text appears, an external text list is wired instead | Inspect the alarm class property sheet; remove the indirect text-list reference if intentional symbol is required |
Firmware and Version Notes
| Component | Tested version | Notes |
|---|---|---|
| TIA Portal | V18 Update 2 | Original issue environment; ClassSymbol behavior confirmed |
| WinCC Unified PC RT | V18 Update 2 (PC based) | Build matches TIA Portal V18 Update 2 HMI device version |
| WinCC Unified documentation set | V20 cloud reference | V20 still documents ClassSymbol as a string property; no graphic support added |
| SIMATIC S7-1500 PLC | Firmware 2.9.x and later | Required for the alarm subscription API used by Unified PC RT |
Engineers planning to upgrade should validate that the ClassSymbol behavior remains unchanged across their target TIA Portal version. Review the release notes for the HMI option package before promoting a Unified project from V18 to a later major release.
Why is the Alarm class symbol column empty in my WinCC Unified V18 alarm control?
The column displays the ClassSymbol string property of the alarm class, not a graphic. Built-in classes ship with an empty string, so the cell renders blank. Enter a 1-3 character abbreviation on the alarm class itself in TIA Portal, recompile, and re-download the runtime configuration.
Can I assign a PNG or SVG icon to the Alarm class symbol column?
No. The property is a text field, and the alarm control does not expose an image resource binding for this column. Use a Unicode glyph from a supported icon font instead, or build a custom widget if a raster/SVG image is mandatory.
Which runtime tag supplies the Alarm class symbol column?
The cell is populated from AlarmResult.AlarmClassSymbol on the active alarm result set. The script API exposes the same field on each row returned by HMIRuntime.Alarm.GetActiveAlarms().
Does the ClassSymbol change with the alarm language?
No. ClassSymbol is a single non-localized string. It does not participate in the runtime text-list fallback chain. Use characters that read consistently across the languages installed on the runtime.
How can I read the ClassSymbol from a JavaScript in Unified V18?
Call HMIRuntime.Alarm.GetActiveAlarms({ languageId: 0x0409 }) and read the AlarmClassSymbol field on each returned row. A full reference example is published in SIOS article 109955144 and demonstrated in the scripting section above.