Problem Overview
Siemens WinCC alarm logging engineers frequently encounter a configuration fault where the acknowledgment (ACK) tag is driven to "1" in Runtime, but the WinCC Alarm Control does not register the acknowledgment. The alarm row remains in the active (unacknowledged) state, the configured background and font color overrides are not applied, and the status column shows no entry. The fault is reported across WinCC V6.2 HF5 and adjacent V7.x systems and, in the most common field scenario, is non-deterministic: a handful of messages acknowledge, the majority do not, and the engineer has no visible feedback that the ACK ever reached the alarm server.
This article provides a structured diagnostic and remediation procedure for the symptom set, drawn from the field-reported failure modes and the underlying WinCC alarm data flow. Where WinCC behavior is version-dependent, the relevant version is called out explicitly. The recommendations are deliberately constrained to documented WinCC features, with references to Siemens Industry Online Support for the official manual set, and the conceptual background to acknowledgment signaling for readers unfamiliar with the generic ACK/NAK model.
WinCC Alarm Subsystem Architecture
Before diagnosing the failure, it is essential to understand the three principal components that participate in the acknowledgment data flow:
- Message Classes — the class definition (Alarm, Warning, Fault, System, etc.) stored in the WinCC Configuration Studio under Alarm Logging. Each class carries acknowledgment policy attributes (single ACK, group ACK, ACK mandatory, status text policy).
- Single Messages and Tag Bindings — the individual message configuration referencing trigger tags and acknowledgment tags. This is where the ACK bit assignment is made.
- Alarm Control ActiveX / .NET Control — the Runtime HMI element placed in the Graphics Editor picture. It subscribes to the alarm server and visualizes state transitions including the ACK column.
The data path is: PLC or internal WinCC tag → WinCC internal tag → alarm server message evaluation → alarm server internal state → Alarm Control event refresh. A fault at any of these stages prevents the ACK from being registered. The classic symptom (PLC bit set, no Alarm Control change) almost always traces to a configuration error in the message class or the message-tag binding, not to a network or hardware fault.
Failure Mode Matrix
| Symptom | Likely Root Cause | Diagnostic Step |
|---|---|---|
| ACK bit set, status column blank, no color change on any row | Message class Requires Acknowledgment flag missing | Edit class, verify System → Requires Acknowledgment is enabled |
| Some messages ACK, others do not, pattern appears random | Message database overload, archive size exhausted, or duplicate message numbers | Open WinCC Explorer, check Alarm Logging archive logs and Windows Event Viewer for overflow events; sort messages by number to check duplicates |
| Status column shows old state, never refreshes | Alarm Control Update property set to "no" or column not bound | Graphics Designer → Alarm Control properties → Update and Columns |
| ACK works in simulation (WinCC TAG Simulator), fails in Runtime with live PLC | Tag type mismatch (signed vs unsigned, bit vs byte, wrong bit position) | Verify WinCC tag data type matches PLC data type and bit position |
| Color change works but status text missing in the row | Status column not added to the visible column set | Alarm Control properties → Columns → add Status column |
| One client sees ACK, another does not | Server-client configuration mismatch or per-client authorization override | Check WinCC User Administrator and the server's published package version |
| ACK works once, then fails on the same bit until Runtime restart | One-shot acknowledgment: bit not reset by PLC; alarm server already processed transition | Confirm PLC ACK logic resets the bit to "0" after a configurable delay |
Message Class Configuration
Acknowledgment behavior is governed at two levels: the message class (global policy for all messages in the class) and the individual message (ACK tag binding). Both must be correct or the acknowledgment will not be processed. The class-level settings are the most common source of the reported symptom.
Open the WinCC Configuration Studio (WinCC V7.x) or WinCC Explorer → Alarm Logging (WinCC V6.x), and navigate to Message Classes. Create or edit the relevant class and verify the following attributes in the dialog:
- System → Requires Acknowledgment: must be enabled. If disabled, no message in the class can be acknowledged, regardless of individual message settings.
- Acknowledgment Came In: must be enabled for messages that have a defined "Came In" (active) state. If disabled, the alarm server will not register an acknowledgment for the activation event.
- Messages Without Status "Went Out": enable if the message class does not have a defined "Went Out" (clear) state. Without this flag, the message can remain in the active state after the trigger clears, and subsequent ACK transitions may be ignored.
- By Means Of Single ACK: enable for single-bit acknowledgment semantics. Group ACK requires this to be disabled and a separate group acknowledgment tag configured at the class or message level.
Acknowledgment Tag Configuration (Bit vs Byte)
WinCC supports two ACK tag strategies. Selecting the wrong strategy — or configuring it incorrectly — is the second most common root cause.
Strategy A: Single Bit Tag (BOOL)
One dedicated WinCC tag of type Binary Tag (BOOL / 1 bit) is assigned to one message. The PLC sets this bit to "1" to acknowledge. The bit is then reset to "0" by the PLC (or by a WinCC script) so that a subsequent acknowledgment can re-trigger the rising edge.
Recommended WinCC tag configuration:
- Name:
ACK_MsgClass01_Msg001 - Data type:
Binary Tag - PLC connection: e.g.
S7ONLINEfor S7-300/400 orS7ONLINE_TIAfor S7-1200/1500 - Address example:
DB100.DBX0.0(data block 100, byte 0, bit 0) - Update: 500 ms (suitable for most HMI scans; reduce to 250 ms for faster response)
Strategy B: Byte/Word Bit Slice (Packed)
A single WinCC tag of type Unsigned 8-bit (BYTE) or Unsigned 16-bit (WORD) is shared among 8 or 16 messages respectively. The user selects which bit position (0–7 or 0–15) corresponds to which message. This is a memory-efficient approach commonly used with Siemens S7 PLCs that expose acknowledgment bits in a data block or a bit memory area (Merker / M).
Required configuration for Strategy B:
- The WinCC tag must be declared as Unsigned 8-bit Value (or Unsigned 16-bit Value for a word). It must not be declared as a signed integer or a string, as this corrupts the bit-level semantics at the tag representation level.
- In the individual message configuration, the Acknowledgment Tag dialog asks for the bit position within the tag. Select the correct bit (0 = LSB, 7 = MSB for a byte).
- When the PLC sets that specific bit to "1", WinCC will register an acknowledgment for the associated message. The remaining bits in the byte must not be disturbed by the PLC during the ACK evaluation, or WinCC may register false acknowledgments for the messages bound to those bit positions.
Address examples for Strategy B:
| Bit Position | S7-300/400 Address (DB) | S7-1200/1500 Address (DB) | Bit Mask |
|---|---|---|---|
| 0 (LSB) | DB100.DBX0.0 | %DB100.DBX0.0 | 0x01 |
| 1 | DB100.DBX0.1 | %DB100.DBX0.1 | 0x02 |
| 2 | DB100.DBX0.2 | %DB100.DBX0.2 | 0x04 |
| 3 | DB100.DBX0.3 | %DB100.DBX0.3 | 0x08 |
| 4 | DB100.DBX0.4 | %DB100.DBX0.4 | 0x10 |
| 5 | DB100.DBX0.5 | %DB100.DBX0.5 | 0x20 |
| 6 | DB100.DBX0.6 | %DB100.DBX0.6 | 0x40 |
| 7 (MSB) | DB100.DBX0.7 | %DB100.DBX0.7 | 0x80 |
Signed 8-bit instead of Unsigned 8-bit, bit-level semantics still work because the bit position is independent of the sign interpretation. However, confusion arises when monitoring the tag value in the tag management I/O field, and engineers may misdiagnose a working ACK as broken. Always use Unsigned for ACK bit packs.
Acknowledgment Edge Detection
WinCC evaluates acknowledgment on a 0→1 rising edge, not on a level. If the PLC sets the ACK bit to "1" and leaves it at "1" indefinitely, the alarm server will register exactly one acknowledgment. The next time the same message goes active, the alarm server will look for another rising edge — which will not occur if the bit is stuck high.
Recommended PLC ACK pattern:
- Operator or HMI logic requests ACK of message N by writing the message number to a control word.
- PLC code sets
ACK_Mask.BitN := TRUE; - PLC code holds the bit high for at least one WinCC scan cycle (e.g. 500 ms).
- PLC code resets
ACK_Mask.BitN := FALSE;after the hold time.
The reset step is the most frequently omitted detail in field reports. Without it, the bit stays high and any subsequent occurrence of the same message will not be acknowledged, producing the symptom "ACK worked once, then it stopped working."
Alarm Control Configuration in Graphics Editor
Open the WinCC Graphics Designer and place the WinCC Alarm Control on the desired picture. Configure the following properties under the Control Properties dialog:
- Source: set to the alarm server connection. The default is the local server. For a multi-client setup, the source may be a published server alias.
- Update: set to Yes to enable automatic event-driven refresh. If set to No, the control will not react to alarm server state changes until the next manual refresh.
- Columns: add the Status column to display the acknowledgment state per row. Without this column, an engineer has no visual feedback that the acknowledgment was registered. The Status column displays the value configured in the message class (typically 0/1 or text labels).
- Selection: configure the row selection behavior for keyboard ACK shortcuts (ACK key, horn button, F-key with assigned action). If the control is read-only by selection, the keyboard ACK will not work.
- Operator acknowledgment: enable if operator-side ACK (via the horn button or hotkey) is required, in addition to PLC-driven ACK. Disable if only PLC-driven ACK is permitted.
Database Overload Analysis
WinCC Alarm Logging maintains an in-memory message buffer and an archive (database) for historical messages. The system configuration defines:
- Number of messages defined in the project
- Size of the message buffer (configured per project, with a default that varies by WinCC version)
- Archive retention period and size limits
- Database connection (typically local MSDE / SQL Express in V6.x; SQL Server or SQLite variants in V7.x)
When the message database becomes overloaded, the alarm subsystem prioritizes incoming messages and may drop or delay acknowledgment processing. Field-reported symptoms of overload include:
- Acknowledgment works for some messages but not others, with no apparent pattern
- The alarm logs indicate overflow or "message buffer full" events
- Latency between PLC bit change and Alarm Control visual update exceeds 1–2 seconds
- After a high-churn event (e.g. a fault storm of 200+ messages in 10 seconds), the alarm control stops updating for several seconds
Diagnostic procedure for overload:
- Open WinCC Explorer on the server (V6.x) or the WinCC Configuration Studio (V7.x).
- Check the Alarm Logging diagnostic files in the project directory, typically
<Project>\root or<Project>\Library\. - Search the Windows Event Viewer (Application log) for entries from "WinCC AlarmManager", "CCAlgMgrServer", or related services indicating overflow, resource exhaustion, or archive write failure.
- Check the size of the alarm archive files. If the archive has reached its configured size limit, write operations will fail and the alarm server may suspend acknowledgment processing until the archive is rotated or pruned.
- For WinCC V6.2 HF5 specifically, the alarm subsystem was known to exhibit intermittent ACK dropouts under high message churn. Apply the latest V6.2 hotfix on top of the existing project; the release notes for V6.2 HF5 and subsequent service packs document message-handling hotfixes.
Step-by-Step Diagnostic Procedure
- Verify the PLC tag value at the WinCC level. In WinCC Tag Management, add a diagnostics I/O field on the same picture bound to the ACK tag. Trigger the PLC and confirm the bit transition is visible in the I/O field. If the bit is not visible in WinCC, the fault is in the tag connection, not in the alarm configuration.
- Verify the message class. Open Alarm Logging, edit the message class, and confirm Requires Acknowledgment, Acknowledgment Came In, and Messages Without Status Went Out are enabled. If By Means Of Single ACK is disabled, switch to group ACK semantics and configure a group ACK tag.
- Verify the individual message binding. Open the individual message configuration. Confirm the Acknowledgment Tag is set, and confirm the bit number (if using a byte/word tag) is correct. Verify that the tag address in the message dialog matches the WinCC tag definition in Tag Management.
- Verify the Alarm Control configuration. In the Graphics Designer, select the Alarm Control and confirm the Update property is set to Yes and the Status column is in the visible column set.
- Restart WinCC Runtime cleanly. Stop Runtime, then close WinCC Explorer. Re-open WinCC Explorer, then start Runtime. This forces a clean reload of the alarm server and the message database.
- Recompile and rebuild. In WinCC Explorer, right-click the server and select Rebuild or compile. This regenerates internal RT databases and re-validates message class definitions.
- Check for duplicate message numbers. If two messages accidentally share the same message number, the alarm server may overwrite the ACK state. Open Alarm Logging, sort by message number, and verify uniqueness across all classes.
- Test with a brand-new message. Create a new single message in a test class with a Strategy A (single-bit BOOL) ACK tag and verify ACK behavior. If a brand-new message works while existing ones do not, the issue is most likely message database corruption or class-level overload.
- Test in simulation. Disconnect the PLC, set the ACK tag via the WinCC TAG Simulator, and verify ACK behavior. If ACK works in simulation but not with the live PLC, the issue is tag acquisition, not the alarm configuration.
WinCC Version-Specific Notes
| WinCC Version | Behavioral Note | Documentation Reference |
|---|---|---|
| V6.0 | Original release; group ACK semantics differ from later versions; no Configuration Studio | Siemens WinCC V6.0 Manual (on Siemens Industry Online Support) |
| V6.2 SP2 | Improved message buffer handling; group ACK refinements | Siemens WinCC V6.2 SP2 Release Notes |
| V6.2 HF5 | Field-reported ACK bit dropout under high churn; reference the hotfix list for message-handling fixes | Siemens WinCC V6.2 HF5 Release Notes |
| V7.0 | Configuration Studio replaces WinCC Explorer alarm editor; new alarm server architecture | Siemens WinCC V7.0 Migration Guide |
| V7.3 / V7.4 | Unified PC-based alarm architecture; refined status text and column model | Siemens WinCC V7.4 System Manual |
| V7.5 | TIA Portal integration; alarm configuration partially migrated to TIA Portal for S7-1500 projects | Siemens WinCC product page |
Engineers on V6.2 HF5 should confirm they have applied all released hotfixes. A clean install of the latest V6.2 hotfix on top of the existing project frequently resolves intermittent ACK dropouts.
Server-Client and Redundancy Considerations
In a multi-client configuration, the alarm server runs on the WinCC Server and publishes alarm events to subscribed clients. Several configuration points can cause per-client ACK visibility issues:
- Package version mismatch. If the client's locally cached package does not match the server's published package, the client may show stale message definitions. Re-publish the server package and reload on the client.
- User authorization override. WinCC User Administrator can disable acknowledgment for specific users or user groups. Verify the logged-in user has the Operator Acknowledgment authorization.
- WinCC Client with optional server-side ACK. In some configurations, the ACK is processed server-side and the client only receives the resulting state change. If the server's WinCC instance is the one that owns the alarm, but the client's picture is bound to a different alarm source, ACK events will not propagate.
- Redundancy partner takeover. In a redundant WinCC Server pair, an ACK issued before the failover may not be visible on the partner until the standby has fully synchronized. Configure the redundant pair to synchronize alarm state on failover.
Inline Data Flow Diagram
Verification and Acceptance Test
After remediation, perform the following acceptance test sequence:
- Trigger the alarm from the PLC. Confirm the alarm appears in the Alarm Control with the "Came In" state.
- Set the ACK bit from the PLC. Confirm the Alarm Control status column updates to "1" within 2 seconds.
- Confirm the configured background and font color changes apply to the acknowledged row.
- Clear the alarm trigger from the PLC. Confirm the message transitions to "Went Out" and (if configured) "Acknowledged" states.
- Repeat the full sequence 10 times. Confirm zero dropouts across all repetitions.
- Cycle Runtime (stop / start) and confirm the alarm archive and acknowledged states are preserved per the configured persistence policy.
If any dropout occurs in step 5, re-check the database overload diagnostics and consider increasing the message buffer size, reducing the alarm generation rate, or applying the latest WinCC service pack.
Preventive Measures
- Use dedicated BOOL tags (Strategy A) for critical safety-related alarms rather than packed byte/word tags to reduce configuration risk and improve debug visibility.
- Document the bit-position-to-message mapping in a project-specific reference table. Store the table with the WinCC project so that future maintenance engineers can audit the binding.
- Avoid defining more message classes than necessary; consolidate similar alarm types under one class to reduce the class-policy surface area.
- Periodically export the alarm archive and clear old entries to keep the database size manageable. Configure archive rotation to avoid the database reaching its hard size limit.
- Apply all WinCC service packs and hotfixes. Many ACK-related bugs are resolved in subsequent releases; running a V6.2 HF5 installation without the subsequent hotfixes is a known source of intermittent dropouts.
- For PLC code, always reset the ACK bit to "0" after a configurable hold time (500 ms is a common default), and document the timing in the PLC code comments.
Frequently Asked Questions
Why does the ACK bit get set in the I/O field but the Alarm Control row does not change?
The most common cause is that the message class has Requires Acknowledgment disabled, or the individual message has no acknowledgment tag assigned. Verify both in Alarm Logging. A secondary cause is the Alarm Control Update property being set to "No".
Can I use a Siemens S7 DB bit as the acknowledgment tag directly in WinCC?
Yes. Configure the WinCC tag with the correct PLC connection, DB number, byte offset, and data type (BOOL for a single bit, BYTE/INT for packed bit positions). The WinCC tag must use the same data type and offset as the PLC tag, or the bit-slicing logic will read the wrong bits.
What is the difference between single ACK and group ACK?
Single ACK acknowledges one specific message via one specific bit. Group ACK acknowledges all messages of a class or group with a single tag transition. Enable By Means Of Single ACK in the message class for bit-level acknowledgment; disable it for group ACK and configure a group acknowledgment tag at the class or message level.
Why does ACK work for some messages but not others, with no apparent pattern?
This is the classic symptom of message database overload. The alarm server is dropping acknowledgment events under load. Increase the message buffer size, reduce alarm generation rate, or apply the latest WinCC hotfix. Verify in the Windows Event Viewer for AlarmManager or CCAlgMgrServer overflow entries.
Does WinCC 7.x behave the same as WinCC 6.2 HF5 for acknowledgment?
The fundamental ACK data flow is unchanged, but the configuration tools differ. WinCC 7.x uses the WinCC Configuration Studio instead of WinCC Explorer. TIA Portal integration also changes the message class editor for S7-1500 projects. Always validate the ACK behavior after a major version migration by running the full acceptance test sequence.
Does the acknowledgment bit need to be reset to 0 by the PLC?
Yes. WinCC evaluates acknowledgment on a 0→1 rising edge. If the bit stays at 1, the next occurrence of the same message will not be re-acknowledged. The PLC must reset the bit to 0 after a hold time of at least one WinCC scan cycle (typically 500 ms).