1. Problem Definition
In WinCC V6.2 (including SP1, SP2, and the final SP3 update), the Alarm Viewer control frequently displays only a small subset of the active or archived message stack — commonly around 30 entries — even when the underlying Alarm Logging database contains thousands of records. Operators observe the message list filling, then silently dropping older rows or refusing to scroll back further than a single page, and message history beyond the current Runtime session appears to be lost.
Three distinct symptoms are typically conflated in the field:
- The Runtime message list only shows the most recent 30 (or default-configured) entries.
- The archive list appears empty or capped at ~1000 entries even though the archive configuration specifies a longer retention.
- The user cannot filter by time period or export to Microsoft Excel from within the Alarm Control context menu.
Each symptom has its own root cause and its own fix. The remainder of this reference walks through the Alarm Logging configuration, the Alarm Control property settings, paging behaviour, and the available export paths in WinCC V6.2 — with forward references to WinCC V7 and WinCC Unified where behaviour changed.
2. Root Cause Analysis
WinCC V6.2 separates alarm generation from alarm display across two subsystems:
- Alarm Logging Runtime — the service that ingests messages from AS connections, tags, and scripts and writes them to the configured archive segments.
- AlarmControl / WinCC Alarm Viewer — the HMI screen object that queries the Alarm Logging database and renders the result in a tabular control with three pre-defined views: Message list (active), Archive list (historical), and Hit list (statistics).
When the Alarm Viewer appears to "lose" messages, the cause is almost always one of the following:
| Root Cause | Mechanism | Default Behaviour |
|---|---|---|
| Archive flag not set on individual message classes | Alarm Logging writes to the in-memory ring buffer but not to disk | Messages disappear at Runtime restart |
| Alarm Control Rows per page set to default (30) | Control displays only the first page of the SQL/MDB result set | Older entries are hidden, not lost |
| Paging disabled and Maximum number of rows capped | Control hard-caps the rendered table size for performance | Same visual symptom; data still in archive |
| Archive configuration has zero segments or wrong time base | Alarm Logging cannot find a valid segment to read from | Archive list returns empty |
| Selection window in message blocks is too narrow | Time-period filter is constrained to current shift | Filter hides historical data |
3. Enabling Archiving Per Message Class
Before adjusting the Alarm Control, confirm that messages are actually being persisted. The default "will be archived" attribute is project-specific and is frequently left unchecked during initial commissioning.
- Open WinCC Explorer → Alarm Logging.
- In the message class tree (left pane), double-click the class — for example "Error" or "Warning" — or an individual message number.
- In the dialog that appears, switch to the Properties tab and tick "Will be archived".
- Repeat for every class and every individual message that must persist across Runtime restarts.
- Save the project and reload the Runtime.
4. Configuring the Alarm Logging Archive
Archiving is governed by the Archive Configuration editor inside Alarm Logging. Capacity, segment size, and segment path determine both the longest retention period and the maximum row count.
- Open Alarm Logging → Archive Configuration (toolbar or context menu).
- Inspect the segment parameters for the relevant time period (typically 1 Day for short-term, 1 Week for long-term):
- Segment size: physical MDB file size. The default 8 MB segment holds approximately 5,000–8,000 messages depending on message block width.
- Number of segments: how many rolling segments are kept. With the default 1-day / 8 MB setting, 31 segments gives 31 days of retention.
- Storage path: confirm the target drive has sufficient free space — a full disk freezes archiving silently.
- Estimate required disk using the formula:
Required disk (MB) = (messages/day × 7 × 4) / 1024— this assumes a 7-day rolling week with 4-byte message overhead typical for V6.2's compact MDB schema. For a 50,000-msg/day plant expect ~1.4 GB free per alarm group.
5. Increasing the Alarm Viewer Row Count
The 30-row default in the Alarm Viewer is a property of the AlarmControl screen object, not of Alarm Logging. To raise it:
- In Graphics Designer, click once on the AlarmControl to select it.
- Open the Properties dialog (right-click → Properties or double-click).
- Navigate to General in the left-hand property tree.
- Enable "Enable paging". With paging enabled, the control renders a fixed number of rows and provides page-up/page-down controls; this prevents the table from becoming unresponsive on large result sets.
- Set "Rows per page" to the desired value. Common production settings are 100, 250, 500, or 1000. Siemens' own support note (109775387) explicitly documents the procedure to display more than 1000 messages by enabling paging and adjusting this value.
- If paging is disabled, the property "Maximum number of rows" applies instead, with a hard ceiling determined by the control's internal buffer. Leaving paging off on result sets above a few thousand rows is not recommended — the Alarm Control becomes slow and the WinCC process can exceed its working set.
6. Maximum Values and Hard Limits
| WinCC Version | AlarmControl Max Active Rows | Archive Read Cap per Query | Backend |
|---|---|---|---|
| WinCC V6.0 | ~1000 (no paging, hard-coded) | 1,000,000 per segment | Microsoft Access (.mdb) |
| WinCC V6.2 (SP0–SP3) | 30 default → 1000 with paging | 2,000,000 per segment | Microsoft Access (.mdb) |
| WinCC V7.0 / V7.5 | 5,000 with paging | 500,000,000 (SQL Server) | Microsoft SQL Server |
| WinCC Unified V21 | 2,048 active alarms | Configurable (SQL) | SQL Server / PostgreSQL |
The 2,048 active alarm ceiling for the "Show active alarms" alarm view in WinCC Unified is documented in the official configuration manual (Alarm control (RT Unified)): if more than 2048 alarms become active, the additional ones are not displayed in the active list — they are not lost, they are simply excluded from that view.
7. Time-Period Search in the Alarm Viewer
WinCC V6.2 ships with a Selection dialog (toolbar button or context menu → Selection) that filters the active and archive lists by time, state, priority, class, and text.
- In Runtime, right-click the Alarm Viewer and choose Selection.
- Switch to the Time tab.
- Define a selection window:
- Last n hours / n days / n months — relative window, useful for shift handover.
- From / To — absolute timestamps. These are the only two fields that permit an export covering a defined historical period.
- Click OK. The control reloads with the filtered subset.
If the Time tab is greyed out, the user role lacks the "Select archive" authorization. Add the authorization under User Administrator → Authorizations and assign it to the operator role.
8. Exporting Alarms to Microsoft Excel
WinCC V6.2 has no built-in "Export to Excel" toolbar button — that feature was introduced in WinCC V7. For V6.2 projects, three workarounds are in production use today.
8.1 VB Script via the AlarmControl Toolbar
Add a button to the AlarmControl toolbar and bind a C / VB action. The script opens Excel via OLE automation and writes the current selection's row set:
' WinCC V6.2 — VB script (Actions / C editor)
Dim objExcel, objBook, objSheet, i, j
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objBook = objExcel.Workbooks.Add
Set objSheet = objBook.ActiveSheet
' Header row from the AlarmControl column titles
objSheet.Cells(1,1).Value = "MsgNo"
objSheet.Cells(1,2).Value = "Time"
objSheet.Cells(1,3).Value = "State"
objSheet.Cells(1,4).Value = "Text"
' Iterate the AlarmControl's currently rendered rows
Dim cntRows, cntCols
cntRows = ScreenItems("Control1").GetRowCount
cntCols = ScreenItems("Control1").GetColumnCount
For i = 1 To cntRows
For j = 1 To cntCols
objSheet.Cells(i+1, j).Value = _
ScreenItems("Control1").GetText(i, j)
Next
Next
objBook.SaveAs "C:\Temp\Alarms_" & Format(Now,"YYYYMMDD_HHMMSS") & ".xls"
Set objSheet = Nothing
Set objBook = Nothing
Set objExcel = Nothing
Control1 with the actual object name of the AlarmControl screen object (visible in Graphics Designer → Properties → Object Name). The script is invoked by an internal C action bound to the toolbar button; pure C syntax with HMIRuntime calls works identically.8.2 DataMonitor (Web Option, WinCC V6.2 SP2+)
When the project is licensed for the WinCC DataMonitor web option, the AlarmReports web part supports Excel export of historical alarm records using OLE-DB queries against the Alarm Logging backend. The published page can be opened from any operator station with read-only access, and the export includes the full message block, not only the columns rendered in the Alarm Viewer.
- Install and license DataMonitor Server on the WinCC server.
- Configure AlarmReports in the DataMonitor configuration tool, pointing it at the Alarm Logging database.
- Connect from the operator client via the DataMonitor web page and choose Export to Excel in the report toolbar.
8.3 Direct OLE-DB Query (Advanced / Engineering Use)
The V6.2 Alarm Logging archive is a standard Microsoft Access .mdb file located in the project path under \Archive\AlarmLogging and named ALG<date>.mdb. The schema is fixed across SPs:
| Table | Purpose | Key Columns |
|---|---|---|
MSysMsgArchive |
Archived message records | MsgNr, State, TimeStamp, TimeStampChange, Text1..Text10 |
MSysMsgView |
Live message buffer | Same as above; in-memory only |
MSysMsgConfig |
Message class / priority definitions | Class, Priority, ArchiveFlag |
Connect Excel directly to the .mdb through OLE-DB / ODBC, run a parameterised SELECT over the desired time window, and refresh on demand:
SELECT MsgNr, TimeStamp, State, Text1, Text2, Text3
FROM MSysMsgArchive
WHERE TimeStamp BETWEEN #2024-01-01 00:00:00# AND #2024-01-31 23:59:59#
ORDER BY TimeStamp DESC;
9. V6.2 vs V7 vs Unified — What Changed
Operators who upgrade to V7 or to WinCC Unified often assume the same export button is present. It is not in V6.2 and is present in V7+. The differences that matter for the field engineer:
| Capability | WinCC V6.2 | WinCC V7.5 | WinCC Unified V21 |
|---|---|---|---|
| Native "Export to Excel" button in Alarm Control | No — VB / DataMonitor | Yes (context menu) | Yes (toolbar) |
| Archive backend | MS Access .mdb | SQL Server | SQL Server / PostgreSQL |
| Paging required for >1000 rows | Yes | Optional (recommended) | Optional |
| Max active alarms in single view | ~1000 (control limit) | 5000 | 2048 |
| Time-period search dialog | Selection window | Selection + filter chips | Filter bar (dynamic) |
The 2048 active alarm cap in WinCC Unified is not a database cap — it is a render cap on the alarm view screen object. To see all currently active alarms, the Alarm control (RT Unified) documentation recommends splitting the view by message class or applying a status filter (e.g. Unacknowledged only).
10. Verification Procedure
After each configuration change, verify the result with this commissioning checklist:
- Archive flag check. Trigger a known test message, stop and restart WinCC Runtime, then open the Alarm Viewer and switch to the Archive list. The test message must appear with the correct timestamp.
- Row count check. In the AlarmControl Properties → General, confirm "Enable paging" is set and "Rows per page" matches the operator requirement. Re-open the Runtime screen and scroll page 2 — the row count at the top of the control should equal the configured value.
- Time-period filter check. From a session with archive access, set the selection window to the previous 24 hours. The Archive list should populate with all messages in that window, ordered by timestamp descending.
- Export check. Run the bound VB action or open the DataMonitor report. The output .xls/.xlsx must contain the header row plus all filtered rows, and the row count must match the AlarmControl display count for the same selection window.
- Disk check. On the WinCC server, confirm free space exceeds the configured archive segment size × number of segments. A full disk silently stops archiving without raising a popup.
11. Troubleshooting Matrix
| Symptom | Likely Cause | Fix |
|---|---|---|
| Only 30 rows visible, no scroll beyond | Paging disabled, default row count | Enable paging, set rows per page to 100–1000 |
| Archive list empty after Runtime restart | "Will be archived" flag not set | Tick the flag at class and message level, save, reload |
| Archive list caps at 1000 rows | Paging off, hard cap engaged | Enable paging per Siemens 109775387 |
| Selection dialog disabled | Missing user authorization | Grant "Select archive" in User Administrator |
| VB export script fails on screen object | Wrong object name | Match ScreenItems("...") to the AlarmControl object name |
| Excel export contains only 30 rows | Script ran before paging was applied | Set the AlarmControl selection window first, then export |
| DataMonitor page returns no rows | Archive segments closed/locked | Check disk space; reset the Alarm Logging service |
| More than 2048 active alarms not all shown (Unified) | Active-view render cap | Apply status or class filter, per TIA docs |
| OLE-DB query returns "file in use" | WinCC holds exclusive lock | Run during maintenance or via DataMonitor |
12. Field-Proven Best Practices
- Always enable paging on AlarmControl screens serving 500+ messages per shift. Siemens support note 109775387 documents this as the supported path for >1000 rows.
- Set the archive flag at the class level before commissioning — a per-message audit of 5,000 tags is impractical.
- Size segments to ~24 hours rather than weekly, so a corrupt segment loses at most a shift's data and recovery from the prior segment is straightforward.
- Add a dedicated "Export Selected" toolbar button on operator screens, bound to the VB script in §8.1. Operators stop asking for export tools they cannot find.
- Document the AlarmControl object name in the project's variable sheet. The VB script must reference the runtime object name, not the design-time picture name.
- For V6.2 → V7 migrations, plan a database re-import: V6.2 .mdb archives do not auto-convert to V7 SQL Server. Use the WinCC Archive Migrator or export to CSV first.
Why does the WinCC 6.2 Alarm Viewer only show 30 alarms?
The default row count for the AlarmControl screen object in WinCC V6.2 is 30, and paging is disabled by default. Enable "Enable paging" in the AlarmControl's Properties → General and raise "Rows per page" to 100, 250, 500, or 1000. This is the procedure documented in Siemens support note 109775387.
What is the maximum number of alarms I can display in WinCC 6.2?
With paging enabled, the practical limit is 1000 rows per page on a single AlarmControl. The underlying Alarm Logging archive is limited only by the configured segment size and number of segments — a 31-segment 8 MB configuration can retain roughly 150,000–250,000 messages. The active-view render cap in WinCC Unified V21 is 2048 alarms per the Alarm control (RT Unified) documentation.
How do I export WinCC V6.2 alarms to Excel?
WinCC V6.2 has no native export button. Use one of three methods: (1) a VB script bound to a custom toolbar button that iterates the AlarmControl row set and writes to Excel via OLE automation; (2) the DataMonitor web option's AlarmReports component, available with the V6.2 SP2+ DataMonitor license; (3) a direct OLE-DB / ODBC query from Excel against the MSysMsgArchive table in the .mdb archive file.
How do I search alarms by time period in WinCC 6.2?
Right-click the Alarm Viewer at Runtime and choose Selection. On the Time tab, enter a From and To timestamp, or use a relative window (last n hours / days). The operator role must have the "Select archive" authorization — add it under User Administrator → Authorizations if the dialog is greyed out.
Why are my archived alarms gone after a Runtime restart?
The "Will be archived" flag is not set on the message class or individual message. Open Alarm Logging, double-click the message class, tick "Will be archived" on the Properties tab, save the project, and reload Runtime. Verify by triggering a test message, restarting Runtime, and checking the Archive list view.