Problem Overview
WinCC Runtime, from Version 6 onward, includes a built-in System Monitoring subsystem that periodically samples Windows Performance Monitor (PerfMon) counters and raises internal alarms when critical resources fall outside their healthy range. One of the most frequently reported false-positive events on WinCC Runtime stations is the PERFMON: Free Megabytes on X: alarm, which fires when the free space on a designated drive drops below an internal threshold.
On installations where drive X: is reserved for Siemens license files, redundancy archives, audit trails, or any other low-volume data set, the alarm is operationally meaningless. A 2 GB license partition that is 90% full is normal steady-state — yet the internal threshold logic raises a red alarm in the WinCC Alarm Logging view, generating nuisance operator pages and obscuring the genuine system faults the alarm class was designed to surface.
PERFMON alarm on every shift begin to ignore the entire SYS_MON message class. This desensitization is the root cause of missed genuine resource-exhaustion events. Resolving the false positive is therefore a higher-priority corrective action than the alarm text itself suggests, and it should be tracked as a separate work-package rather than closed as a cosmetic issue.
WinCC System Monitoring Architecture
The System Monitoring feature was introduced with WinCC V6.0 as a runtime self-diagnostic layer. It is implemented as a WinCC-internal service that:
- Polls a fixed set of Windows PerfMon performance counters at a configurable sample interval (default 5 s).
- Compares each sample against a configured or hardcoded threshold.
- Generates a WinCC alarm via the internal message class
SYS_MONwhen the threshold is violated for N consecutive samples. - Clears the alarm automatically when the counter returns to a healthy range.
- Forwards both raise and clear events to the WinCC Alarm Logging database and to subscribed AlarmControl views on operator screens.
The default counter set monitored out-of-the-box is summarised below.
| PerfMon Object | Counter | Default Threshold | Editable in WinCC Explorer? |
|---|---|---|---|
LogicalDisk |
Free Megabytes |
Hardcoded — effective threshold scales to roughly 80% of drive total capacity | No |
Processor |
% Idle Time |
User-editable, default 20% | Yes |
Memory |
Available MBytes |
User-editable, default 50 MB on 32-bit / 200 MB on 64-bit | Yes |
System |
System Up Time |
Not used for alarms (informational) | — |
The free-disk counter is the only one in the default set that derives its effective threshold from the total capacity of the drive rather than from a user-editable absolute value. As confirmed in field experience, the alarm is raised when free disk space falls below approximately 80% of the drive's total capacity — appropriate for a 500 GB data drive, but nonsensical for a 2 GB license partition that is designed to be near-full by design.
The counter itself is exposed by the Windows kernel through the standard LogicalDisk performance object. Microsoft documents the data collector set workflow and the perfmon command-line interface in the Microsoft Learn Performance Monitor guide. The WinCC layer adds alarm-signaling on top of the raw counter; the counter is not modified.
Root Cause Analysis
The defect is a combination of three engineering choices, each defensible in isolation but compounding into the field-reported false positive:
-
Absolute MB is a poor metric for variable-size volumes. The PerfMon counter
LogicalDisk\Free Megabytesis an unsigned 64-bit integer that reports raw free bytes divided by 1,048,576. It carries no concept of drive size, percent utilization, or workload class. A 500 GB volume and a 2 GB volume report the same counter type but require completely different thresholds. - WinCC's hardcoded scaling maps to capacity, not to a configurable absolute. Siemens' internal logic scales the absolute threshold to a percentage of the drive's total size, but the mapping is not exposed in the configuration UI and cannot be edited by the integrator. There is no field in the System Monitor editor that accepts a percent-free value.
-
No exclusion mechanism exists for system or license drives. There is no flag in the WinCC System Monitor configuration to suppress monitoring of a particular drive letter. The integrator cannot tell WinCC to ignore
X:when the design intent is to leave the license partition near-full permanently.
The net result is a vendor-acknowledged gap: the WinCC documentation is silent on the percentage-based alternative, and no graphical editor knob exists to change the underlying behavior. Customer Support consistently recommends filing a problem report rather than providing a hotfix, because the change is an architectural enhancement rather than a defect repair.
Affected Versions and Environments
| WinCC Version | Affected | Notes |
|---|---|---|
| V6.0 / V6.2 | Yes (confirmed by field report) | System Monitoring feature first introduced; behavior is the reference case for the original report |
| V7.0 | Yes (architecture inherited) | Same PerfMon polling mechanism; same hardcoded MB threshold; same drive-letter selection logic |
| V7.2 / V7.3 | Yes | Added support for 64-bit Runtime; threshold scaling unchanged |
| V7.4 / V7.4 SP1 | Yes | Same behavior; System Monitor editor unchanged in this area |
| V7.5 / V7.5 SP1 | Yes | System monitoring layer retained; percentage option still not exposed in the standard configuration UI |
| TIA Portal WinCC Professional / Comfort | Different mechanism | TIA Portal WinCC uses a separate diagnostic framework based on the TIA HMI diagnostics; this procedure does not apply |
The behavior is consistent across Windows Server 2008 R2, 2012 R2, 2016, 2019, and 2022 — every Windows version on which WinCC V6/V7 Runtime is supported. The 32-bit versus 64-bit Runtime does not change the counter interpretation.
Diagnostic Procedure
Before applying any workaround, confirm that the alarm source is the built-in System Monitor and document the current counter state.
-
Open WinCC Alarm Logging (Runtime). Locate the
PERFMON: Free Megabytes on X:message. Note the message class (SYS_MON), the message number, the affected drive letter, and the timestamps of the most recent three occurrences. - Open WinCC Explorer → Tools → System Monitor. Confirm that the alarm is generated by the System Monitor subsystem and not by a custom user script or a third-party add-in.
-
Verify the counter in Windows PerfMon.
- Press Win + R, type
perfmon, and press Enter. Right-click the tool and select Run as administrator if User Account Control prompts. - In the Performance Monitor tree, navigate to Monitoring Tools → Performance Monitor.
- Click the green + (Add Counter) button in the toolbar.
- In the Add Counters dialog, select the
LogicalDiskperformance object and theFree Megabytescounter. - In the Instances of selected object list, pick
X:. If the drive is not listed, verify the drive is mounted and formatted as NTFS or ReFS. - Click Add, then OK.
- Press Win + R, type
-
Record the raw counter value and the total size of drive
X:(right-click the drive in Windows Explorer → Properties → General tab). -
Calculate the actual percentage free with the formula:
PercentFree = (FreeMegabytes × 1,048,576) / TotalBytes × 100
-
Cross-check with PowerShell for an authoritative read:
Get-Counter '\LogicalDisk(X:)\Free Megabytes' | Select-Object -ExpandProperty CounterSamples | Select-Object InstanceName, CookedValue Get-Volume -DriveLetter X | Select-Object Size, SizeRemaining
If the calculated percentage is greater than 20% (i.e. the drive is less than 80% full) and the WinCC alarm is still active, the alarm is a confirmed false positive driven by the hardcoded MB logic. Proceed to the workaround section.
Configuration — Editing the System Monitor in WinCC Explorer
The System Monitor editor in WinCC Explorer exposes thresholds for CPU and memory but does not expose the free-disk threshold. The change is therefore not directly possible through the standard configuration UI. The remaining options are the workarounds in the following sections.
What is Editable in the System Monitor Editor
- Sample interval (default 5 s, range 1–60 s)
- CPU
% Idle Timethreshold (default 20%) - Memory
Available MBytesthreshold (default 50 MB on 32-bit / 200 MB on 64-bit) - Alarm class for each threshold event
What is NOT Editable in the System Monitor Editor
- Free Megabytes threshold — no field exists in the editor
- Per-drive suppression — no field exists
- Threshold unit (MB vs. %) — no field exists
- Counter path override — no field exists
This gap is the reason a workaround rather than a configuration change is required.
Workaround 1 — Percentage-Based Monitoring via Custom VBScript
The cleanest engineering solution is to replace the built-in disk monitoring with a custom VBScript action that calculates a percentage and raises a WinCC alarm only when a user-defined percentage threshold is crossed. This sidesteps the hardcoded MB logic entirely while preserving the System Monitor for CPU and memory events.
Create a new scheduled task under Global VBScript in the WinCC Explorer project tree, schedule it to run every 60 seconds, and attach the following action.
' File: DiskMonitor_Percentage.vbs
' WinCC Scheduled Task: Global VBScript, 60 s cycle
' Purpose: Raise a WinCC alarm when free disk percentage on drive X
' falls below a configurable threshold.
' Tag prerequisites (create in WinCC Tag Management):
' DiskPctFree_X (analog, %)
' DiskMBFree_X (analog, MB)
' DiskAlarmWarn_X (binary, bit 0)
' DiskAlarmCrit_X (binary, bit 1)
' DiskMonitorSts_X (binary, status word)
Option Explicit
' ---------------- Configuration ----------------
Const DRIVE_LETTER = "X:"
Const WARN_PCT = 10 ' Warning threshold (% free)
Const ALARM_PCT = 5 ' Critical threshold (% free)
Const HYSTERESIS_PCT = 2 ' Recovery margin (% free above threshold)
Const SAMPLE_INTERVAL = 60 ' Schedule cycle in seconds
Const ENABLE_TRACING = True ' Emit trace lines for diagnostics
' ------------------------------------------------
Dim fso, drive, totalBytes, freeBytes, pctFree
On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
Set drive = fso.GetDrive(DRIVE_LETTER)
If Err.Number <> 0 Then
If ENABLE_TRACING Then
HMIRuntime.Trace "DiskMonitor: GetDrive error " & Err.Number & _
" on drive " & DRIVE_LETTER & " - " & Err.Description
End If
Err.Clear
Exit Sub
End If
If drive.IsReady Then
totalBytes = drive.TotalSize
freeBytes = drive.FreeSpace
If totalBytes > 0 Then
pctFree = (freeBytes / totalBytes) * 100
Else
pctFree = 0
End If
' --- Write trend tags ---
HMIRuntime.Tags("DiskPctFree_X").Write pctFree
HMIRuntime.Tags("DiskMBFree_X").Write freeBytes / 1048576
' --- Evaluate thresholds with hysteresis ---
If pctFree < ALARM_PCT Then
If HMIRuntime.Tags("DiskAlarmCrit_X").Read = 0 Then
If ENABLE_TRACING Then
HMIRuntime.Trace "DiskMonitor: CRITICAL free space on " & _
DRIVE_LETTER & " (" & _
FormatNumber(pctFree, 2) & "% free, " & _
FormatNumber(freeBytes/1048576, 1) & " MB)"
End If
End If
HMIRuntime.Tags("DiskAlarmCrit_X").Write 1
HMIRuntime.Tags("DiskAlarmWarn_X").Write 1
HMIRuntime.Tags("DiskMonitorSts_X").Write 2 ' 2 = critical
ElseIf pctFree < WARN_PCT Then
If HMIRuntime.Tags("DiskAlarmWarn_X").Read = 0 Then
If ENABLE_TRACING Then
HMIRuntime.Trace "DiskMonitor: WARNING free space on " & _
DRIVE_LETTER & " (" & _
FormatNumber(pctFree, 2) & "% free)"
End If
End If
HMIRuntime.Tags("DiskAlarmCrit_X").Write 0
HMIRuntime.Tags("DiskAlarmWarn_X").Write 1
HMIRuntime.Tags("DiskMonitorSts_X").Write 1 ' 1 = warning
ElseIf pctFree > (WARN_PCT + HYSTERESIS_PCT) Then
If HMIRuntime.Tags("DiskAlarmWarn_X").Read = 1 Or _
HMIRuntime.Tags("DiskAlarmCrit_X").Read = 1 Then
If ENABLE_TRACING Then
HMIRuntime.Trace "DiskMonitor: CLEAR free space on " & _
DRIVE_LETTER & " (" & _
FormatNumber(pctFree, 2) & "% free)"
End If
End If
HMIRuntime.Tags("DiskAlarmCrit_X").Write 0
HMIRuntime.Tags("DiskAlarmWarn_X").Write 0
HMIRuntime.Tags("DiskMonitorSts_X").Write 0 ' 0 = healthy
End If
Else
If ENABLE_TRACING Then
HMIRuntime.Trace "DiskMonitor: Drive " & DRIVE_LETTER & " not ready"
End If
HMIRuntime.Tags("DiskMonitorSts_X").Write 3 ' 3 = drive not ready
End If
Set drive = Nothing
Set fso = Nothing
On Error Goto 0
The five internal tags DiskPctFree_X, DiskMBFree_X, DiskAlarmWarn_X, DiskAlarmCrit_X, and DiskMonitorSts_X must be created in WinCC Tag Management. The binary tags are then bound to user-defined alarm messages in WinCC Alarm Logging (see the next section).
PERFMON: Free Megabytes on X: alarm can be hidden from operator pages (see Workaround 2), or the operator team can be trained to treat the built-in message as informational and act only on the custom DiskAlarmCrit_X message. The hysteresis of HYSTERESIS_PCT prevents alarm flapping when the percentage oscillates around the threshold boundary.
Workaround 1b — WinCC Tag Management Setup
Before the script can run, the tags must exist in the WinCC tag database. The setup procedure is:
- In WinCC Explorer, right-click Tag Management and choose Open.
- Right-click in the tag list and choose Add New Tag.
- Create the five tags from the script header with the following properties:
Tag Name Data Type Length Initial Value Purpose DiskPctFree_X32-bit floating point — 100.0 Live free percentage for trends DiskMBFree_X32-bit floating point — 0.0 Live free megabytes for trends DiskAlarmWarn_XBinary 1 word 0 Bit 0 = warning state DiskAlarmCrit_XBinary 1 word 0 Bit 0 = critical state DiskMonitorSts_XUnsigned 16-bit 1 word 0 Status word: 0=ok, 1=warn, 2=crit, 3=not ready - Right-click the tag group and choose Properties to assign update cycle (recommended 60 s, matching the script schedule) and to enable archive logging for the trend tags.
Workaround 1c — WinCC Alarm Logging Configuration
The two binary tags need to be linked to operator-visible alarm messages.
- In WinCC Explorer, open Alarm Logging.
- Create a new message class
LIC_HEALTH(license-partition health) to keep the new alarms separate from the built-inSYS_MONclass. - Add a new message with message number 100001, text "Disk: License partition X below warning threshold ({PctFree}% free)", and a trigger tag of
DiskAlarmWarn_X, bit 0, rising-edge trigger. - Add a new message with message number 100002, text "Disk: License partition X CRITICAL — archive or expand ({PctFree}% free)", and a trigger tag of
DiskAlarmCrit_X, bit 0, rising-edge trigger. - Configure the message colors, priorities, and acknowledgment requirements per site procedure.
- Open the AlarmControl on the operator screen and confirm both new messages appear in the LIC_HEALTH filter band.
Workaround 2 — Disabling the Built-In Free-Disk Alarm
If the custom percentage-based monitoring from Workaround 1 is accepted as the authoritative source, the nuisance built-in alarm can be suppressed. WinCC V6/V7 does not provide a UI to disable individual System Monitor counters, but the alarm can be hidden from the message configuration in two ways.
Method A — Alarm Logging message record
- In WinCC Explorer, open Alarm Logging.
- Locate the message class
SYS_MONand the message textPERFMON: Free Megabytes on X:. - Set the Status property of the message to "Not displayed" — or remove the message from the active message configuration entirely.
- Save the configuration and restart WinCC Runtime for the change to take effect.
Method B — AlarmControl filter
- On the operator screen, open the configuration dialog of the
WinCC AlarmControlcontrol. - Add a message filter that excludes the text fragment
PERFMON: Free Megabytesfrom the visible message list. - Confirm the filter does not unintentionally suppress other System Monitor messages (CPU, memory).
Workaround 3 — Increasing the Partition Capacity
The most defensible long-term solution is to size the partition correctly. A license-only partition of 2 GB will inevitably trip the percentage-based internal threshold over time. Use one of the following options:
-
Move the license files to a larger volume and re-symlink the original location, then reformat
X:as part of a larger partition. License files are typicallyC:\Program Files\Common Files\Siemens\AutomationorC:\ProgramData\Siemens\Automation; verify the path on the specific installation before moving. - Extend the volume in Windows Disk Management. Windows Server 2008 R2 and later support online extension for NTFS volumes, so a maintenance window may not be required.
- Re-partition the disk at the next maintenance window with a more realistic size — 20 GB minimum is recommended for license-only partitions, and 50 GB for archive partitions — and re-image the runtime station from the standard gold image.
This approach does not require any WinCC-side change and eliminates the false positive permanently. It is the recommended engineering solution for green-field installations and for stations that are still in the commissioning phase.
Workaround 4 — OS-Level Data Collector Set with Event Log Forwarding
For installations where the WinCC Runtime is not the only consumer of disk-space alarms, an OS-level PerfMon alert can be configured and forwarded into WinCC via the Windows Event Log. Microsoft's official Performance Monitor documentation describes the data collector set workflow and the alert task mechanism.
- Open
perfmonfrom the Start menu (right-click → Run as administrator). - Navigate to Data Collector Sets → User Defined.
- Create a new data collector set with the
LogicalDisk\Free Megabytescounter on instanceX:. - Add an Alert Task with a manual threshold expressed as a fixed megabyte value. The alert writes to the Application event log with a configured event ID and message string.
- On the WinCC station, configure an Event Log Monitor (WinCC V7+) that watches for that specific event ID and translates it into a WinCC alarm in a dedicated message class.
This approach gives full control over the threshold value and the timing of the alarm, but it does not directly map the threshold to a percentage within the PerfMon data collector — the percentage must be implemented either in the alert's response script (e.g. a VBScript that calculates the percent from the counter sample) or in the Event Log Monitor's interpretation logic. Refer to the Microsoft Learn Performance Monitor guide for the data collector set configuration workflow, and to the Dell support Performance Monitor best-practice note for a worked example of the alert task structure in a long-running service context.
Multiple-Drive Configuration
For stations that monitor more than one drive (e.g. C: for the OS, D: for the project database, X: for licenses), the custom VBScript from Workaround 1 can be parameterised with a small driver function and a tag array.
Sub MonitorDrive(letter, warnPct, alarmPct, hystPct)
Dim fso, drv, pctFree
Set fso = CreateObject("Scripting.FileSystemObject")
Set drv = fso.GetDrive(letter)
If drv.IsReady Then
pctFree = (drv.FreeSpace / drv.TotalSize) * 100
HMIRuntime.Tags("DiskPctFree_" & letter).Write pctFree
' ... same threshold logic as Workaround 1 ...
End If
Set drv = Nothing
Set fso = Nothing
End Sub
Call MonitorDrive("C:", 10, 5, 2)
Call MonitorDrive("D:", 15, 10, 3)
Call MonitorDrive("X:", 10, 5, 2)
Each drive gets its own tag group (DiskPctFree_C, DiskPctFree_D, DiskPctFree_X) and its own message class filter on the AlarmControl. The CPU cost scales linearly with the number of drives; for typical installations with three to five drives the overhead remains below 0.1% steady-state.
Verification
After applying any workaround, verify the change with the following checks. Each check has a specific pass criterion that must be met before the work-package can be closed.
-
Alarm Logging review (Runtime, 24-hour window). Confirm that the
PERFMON: Free Megabytes on X:message either no longer appears (Workaround 2) or appears only when the actual free percentage is below the configured threshold (Workaround 1). Open WinCC Alarm Logging, set the filter toSYS_MON, and inspect the 24-hour statistics. -
Tag trend validation. In WinCC Tag Logging Runtime, plot the
DiskPctFree_Xtag and confirm the values match the result of(free bytes / total bytes) × 100calculated from Windows Explorer. A deviation greater than 0.1% indicates a calculation error in the script or a stale-counter issue. -
Forced threshold test. Create a small test file on a test volume (do not perform this on the production
X:license drive) that drives the free percentage belowWARN_PCT, for example by filling a 10 GB test volume to 95% full. Confirm the custom alarm raises within one sample interval (60 s). Delete the test file and confirm the alarm clears within the hysteresis window. -
CPU impact check. Open Windows Task Manager → Performance → CPU and confirm the new scheduled VBScript adds no measurable steady-state CPU load. Expected: below 0.1% on a modern multi-core server. If the CPU load is higher, increase the
SAMPLE_INTERVALfrom 60 s to 120 s. - Restart test. Restart the WinCC Runtime and confirm the custom script reschedules automatically and the percentage tags resume updating within 60 s of startup. If the script does not reschedule, check the WinCC Scheduler status dialog for an error code.
-
Operator acceptance. Walk the operator team through the new alarm and confirm they can distinguish the custom
LIC_HEALTHalarm from the built-inSYS_MONalarm. Capture the operator sign-off in the commissioning record.
Best Practices
- Prefer percentage thresholds for variable-size volumes. Absolute MB thresholds are only meaningful when the drive size is known, stable, and large. License and archive partitions change size over the life of the system; percentage is the only sustainable metric.
-
Document the alarm class mapping. If both the built-in
SYS_MONalarm and a customLIC_HEALTHalarm are present, the operator procedure must call out which one is the authoritative action trigger. A short note in the HMI operating manual is sufficient. - Coordinate with Siemens Customer Support. Field experience shows the issue is escalated to a problem report rather than fixed in a hotfix. Filing the report at support.industry.siemens.com with a complete alarm log, the partition size, and the total WinCC version helps the product team prioritize a fix in a future service pack.
- Use Microsoft PerfMon for the underlying counter verification. The free megabytes counter is exposed by the Windows kernel; verify it with the official Microsoft tool rather than relying on WinCC's interpretation. See the Microsoft Learn Performance Monitor guide for the data collector set workflow and counter-interpretation rules.
-
Reserve a dedicated alarm message class for license-partition health. Do not reuse the
SYS_MONclass for custom disk alarms. Use a new class (e.g.LIC_HEALTH) so that filtering on the WinCC AlarmControl can isolate license-partition events from CPU and memory events without losing visibility on the genuine resource alarms. - Trend the percentage tag in WinCC Tag Logging. A historical record of free percentage over the past 30 days makes it easy to forecast when the partition will cross the warning threshold and schedule a maintenance window. Trend at the same 60 s cycle as the script for a clean correlation.
-
Test the alarm on a non-production volume first. The forced-threshold test in the verification section should always be performed on a spare volume or a test rig, never on the production
X:license drive. Writing test files to a license partition can trigger licensing issues that are far more disruptive than the original alarm.
Troubleshooting Matrix
| Symptom | Likely Cause | Corrective Action |
|---|---|---|
PERFMON: Free Megabytes on X: alarm on a 2–5 GB license partition |
Hardcoded percentage-of-capacity logic in WinCC System Monitor | Apply Workaround 1 (custom percentage script) and Workaround 2 (hide the built-in alarm) |
Custom script raises no alarm even when X: is 99% full |
Script scheduled task not running, or Scripting.FileSystemObject access denied |
Check the WinCC Scheduler logs; confirm the WinCC Runtime service account has read access to drive X:; verify the tag names in the script match the tags in Tag Management |
| Custom script raises the same alarm repeatedly without clearing | Hysteresis window too small; thresholds oscillating around the boundary | Increase HYSTERESIS_PCT from 2 to 5; confirm the trend shows a stable boundary, not jitter |
| CPU alarms and memory alarms also not appearing in Alarm Logging | Workaround 2 Method A inadvertently hid the entire SYS_MON class |
Restore visibility in the Alarm Logging message configuration and switch to Method B (AlarmControl filter) instead |
| Alarm still fires after the custom script is installed and the built-in alarm is hidden | Built-in alarm not actually hidden; the Alarm Logging message status was not changed | Edit the message record in Alarm Logging editor and set status to "Not displayed"; verify with a fresh Runtime restart |
Trend values for DiskPctFree_X are exactly 0 or 100 for hours |
The GetDrive call is failing silently, or the drive is not ready at sample time |
Check the DiskMonitorSts_X status word; if it shows 3, the drive was not ready; check the Windows Event Log for disk errors |
| Script generates a VBScript runtime error in the trace log | Tag does not exist in Tag Management, or tag name typo in the script | Open Tag Management and confirm each of the five tags exists; compare case-sensitively to the tag names in the script |
| Alarm appears on the operator screen but not in the Alarm Logging database | Filter on the AlarmControl is hiding the message | Open the AlarmControl configuration and remove the text filter; re-test |
FAQ
Why does WinCC raise a low-free-megabytes alarm on a small license partition?
WinCC V6 and later include a System Monitoring subsystem that polls the Windows PerfMon counter LogicalDisk\Free Megabytes and scales the internal threshold to approximately 80% of the drive's total capacity. On a 2 GB license partition, this fires as soon as 1.6 GB is consumed — a normal operational state for license and archive data.
Can the built-in percentage threshold be edited in WinCC Explorer?
No. The System Monitor editor in WinCC Explorer exposes thresholds for CPU % idle time and Available MBytes, but the free-disk threshold is hardcoded and cannot be edited from the configuration UI. The cleanest workaround is a custom VBScript scheduled task that calculates the actual free percentage and raises a separate WinCC alarm in a dedicated message class such as LIC_HEALTH.
Which WinCC versions are affected by the false-positive alarm?
WinCC V6.0, V6.2, V7.0, V7.2, V7.3, V7.4, and the V7.5 line are all affected — the PerfMon-based System Monitoring layer is consistent across these versions on both 32-bit and 64-bit Runtime. TIA Portal WinCC Professional uses a different diagnostic framework and is not affected by this specific issue.
How do I verify the counter value outside WinCC?
Open Windows PerfMon (Start → Run → perfmon, or right-click → Run as administrator), add the LogicalDisk\Free Megabytes counter for instance X:, and read the value directly. The same counter can be queried from PowerShell with Get-Counter '\LogicalDisk(X:)\Free Megabytes'. Refer to the Microsoft Learn Performance Monitor guide for additional verification workflows, and to the Dell Performance Monitor best-practice note for a worked example of long-running-service counter configuration.
Is there a Siemens hotfix that exposes a percentage threshold for the free-disk counter?
No published hotfix is available. The official Siemens position is to file a problem report via the Siemens Industry Online Support portal; the integrator community has consistently implemented a custom VBScript or resized the partition as a workaround. The combination of Workaround 1 (custom percentage script) and Workaround 2 (hide the built-in alarm) is the field-proven mitigation for V6/V7 installations.