Calculating SCADA Tag Count: Siemens WinCC Sizing Reference

David Krause12 min read
HMI / SCADASiemensTechnical Reference
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

1. Overview

Sizing an HMI/SCADA project begins with one critical number: the tag count. Every discrete input, every analog measurement, every alarm bit, and every command that crosses the PLC↔HMI boundary consumes a tag from a finite license pool. Under-sizing the tag budget forces a license upgrade mid-project or, worse, a costly re-engineering of the data model after commissioning. Over-sizing wastes capital on unused power-tag seats and inflates the scan-cycle load on the controller/HMI link.

This reference consolidates field-tested methods for estimating and reducing tag counts in Siemens WinCC, WinCC Flexible, and TIA Portal WinCC projects. The methodology generalizes to any OPC-enabled HMI/SCADA platform, but the license tier mapping shown here is Siemens-specific.

Engineering note: In WinCC, a "tag" is the external point that maps to a PLC address. Internal/computed tags (math results, script variables, constants) are not counted against the WinCC power-tag license in WinCC V7.x, but they still consume HMI runtime memory and CPU load.

2. Tag Fundamentals: What a Tag Actually Is

A tag is a named, typed memory location used by the SCADA/HMI runtime to read from or write to the controller. The PLC access width chosen in the data block determines how many HMI tags are consumed per N signals.

PLC Access Width Tags for 16 Inputs Typical Use
Bool (1 bit) 16 Individual status, commands, alarms
Byte (8 bits) 2 Grouped digital I/O blocks
Word (16 bits) 1 Packed digital status, function flags
DWord (32 bits) 0.5 (round up to 1) Combined status + control packs

The HMI script or faceplate then unpacks the bits in the display logic. Example: a motor starter with Start (I0.0), Stop (I0.1), Running (I0.2), and Fault (I0.3) consumes four Bool tags if exposed individually, or one Word tag (IW0) plus a faceplate script that masks the relevant bits via WAND_W.

Watch out: Many alarm subsystems require individual Bool tags for ACK/reset paths because the alarm line must be uniquely identifiable. Optimize only where the faceplate and alarm configuration support packed access.

Tag data types should match the engineering unit being displayed:

  • Bool / Int — discrete status, commands, mode bits
  • Real / Float — analog process values (level, pressure, temperature)
  • DInt / DWord — counters, totals, packed status
  • String — operator messages, batch IDs, equipment names

For archive and datalogging, Siemens WinCC restricts logged variables to 1, 2, or 4 byte primitives. String logs require an external handler or a custom archive block; they cannot be logged directly as a process tag in the standard tag logging system.

3. WinCC License Tiers and Tag Categories

Siemens does not charge per individual tag — it sells power-tag packages in stepped tiers. The exact tier granularity depends on the WinCC variant (WinCC V7.x, WinCC Professional, WinCC Unified), but the published runtime tag (RT-tag) tiers for legacy WinCC follow this pattern:

RT Tag License Tier Typical Use Indicative Plant Class
128 Single-machine, bench HMI Lab, skid
256 Small line, two PLCs Packaging line
1,024 Single process cell Skid, small unit
8,000 Plant area Substation bay cluster, batch reactor farm
64,000 (64K) Site license, large plant Mill, refinery unit
128,000 (128K) Enterprise license Multi-site, integrated operations

Two tag categories are licensed independently:

  • RT tags (Runtime tags) — live I/O points exchanged with the controller. These count against the primary power-tag license.
  • P tags (Process tags / Tag Logging tags) — variables persisted by the tag logging system for trending and reporting. P tags are licensed separately from RT tags.
Field note: A single physical signal often becomes one RT tag and one P tag if it is also archived. When sizing, multiply expected analog archives by 2 in the budget — once for the RT tag seat and once for the P-tag seat.

For WinCC V7.0 and later, internal (computed) tags are not counted against the RT-tag license. Internal tags include script variables, math results, and constants. Always confirm the exact rule in your installed build by checking SIMATIC HMI WinCC V7.x Release Notes / License Terms on the Siemens Industry Online Support portal.

4. Signal List Methodology for Tag Estimation

The most defensible tag estimate is derived from a signal list — a structured I/O database that documents every monitored point. The signal list is typically generated in Excel or an EPlan P&ID export, then imported into the PLC engineering tool and the SCADA tag database.

P&ID / ProcessDefinition Signal List(Excel/Access) PLC SymbolTable WinCC Tag DB(HMI tags) 1. Count physical I/O: DIs, DOs, AIs, AOs, counters, strings 2. Add derived tags: calculated values, setpoints, control words 3. Add archive tags (P tags) for trending; ~70% of analog signals typically logged

The signal-list counting procedure is:

  1. Enumerate every physical I/O point: discrete inputs, discrete outputs, analog inputs, analog outputs, counters, and string fields.
  2. Add derived tags: calculated values, setpoints, control words, mode flags, interlock states.
  3. Add archive tags (P tags) for trending. A common field ratio is 70% of analog signals logged plus all critical discrete alarms.
  4. Apply a growth contingency of 15–25% to absorb late additions during commissioning and site acceptance testing.

This method scales linearly with process scope and is the only sizing approach that survives a customer audit.

5. Per-Device Rule of Thumb

When the signal list is not yet mature, an order-of-magnitude estimate can be built from the device count with a rule of thumb of 10 tags per device as a starting point. Larger or more complex devices — VFDs, analyzers, robotic cells — require 20–40 tags each; simple sensors and pushbuttons require fewer.

Device Class Tags / Device (Low) Tags / Device (Typical) Tags / Device (High)
Pushbutton / indicator 2 3 4
Solenoid valve 3 4 6
Motor starter (DOL) 6 8 12
VFD (PowerFlex, SINAMICS) 20 30 45
Soft starter 12 18 25
Process transmitter (AI only) 3 4 6
Valve with positioner 6 10 14
Circuit breaker (substation) 25 35 50
Robot cell 80 150 300

The composite estimate is:

Tag_count ≈ Σ (n_devices × tags_per_device) × 1.20 (contingency)

Use the formula for early-stage budgeting, then replace it with the signal-list method once I/O assignment begins.

6. Bit-Packing and Tag Optimization

Bit-packing consolidates multiple Boolean signals into a single Word or DWord tag, with the HMI faceplate or script extracting the individual bits. This is the single most effective tag-reduction technique, cutting external tag count by 50–90% for digital I/O-heavy areas.

bit0 bit1 bit2 bit3 ... bit15 16 discrete signals pack Word Tag (16 bits)= 1 HMI tag Unpacking example (TIA Portal SCL): IF (StatusWord AND 16#0001) <> 0 THEN Running := TRUE; END_IF;IF (StatusWord AND 16#0008) <> 0 THEN Fault := TRUE; END_IF;// mask & result test extracts bit n from the packed word

Practical packing rules:

  • Group signals by scan class and update rate — do not mix fast interlocks (100 ms) with slow status (1 s) in the same word.
  • Reserve bits for ACK and reset paths if the alarm subsystem will not tolerate packed access.
  • Document the bit map in the signal list; downstream engineers must be able to read StatusWord.3 and know it means Fault.
Caveat: Packed status reduces tag count but increases script complexity. Budget additional engineering hours when adopting bit-packing, and add a word-mismatch alarm to detect dropped bit assignments.

7. WinCC Flexible Tag Converting Tool

Siemens provides a free Tag Converting / Importing utility that reads a STEP 7 symbol table or a WinCC Flexible tag export and produces a WinCC Flexible / TIA Portal HMI tag file. The tool also reports an estimated tag count from the import, which serves as a quick sizing cross-check.

  1. Export the STEP 7 symbol table (Options → Symbol Table → Export) as a .awl or .sdf file.
  2. Open the WinCC Flexible / TIA Portal project and select Project → HMI Tags → Import.
  3. Point to the exported file and accept the data-type mapping. The dialog reports the count of imported tags.
  4. Reconcile the imported count with the signal list; large deltas indicate unmapped symbols or duplicate names.

The exact menu paths vary between WinCC Flexible 2008, TIA Portal V13, and TIA Portal V18. The functional workflow and the import-count reporting are documented in the Siemens Industry Online Support portal under the application ID “Tag handling — Importing tags” (search the support site for the latest KB article number tied to your installed version). Refer also to the SIMATIC HMI catalog page on SIMATIC HMI for current software builds.

8. Substation and Process Skid Sizing

For substation and bay-controller applications using SIPROTEC devices, the per-bay signal count is well known and stable. A typical HV bay exposes roughly 30–60 status points, 10–20 measurements, and 5–15 commands to the SCADA layer. The total tag count scales linearly with bay count:

Tag_count ≈ signals_per_bay × n_bays + station_level_tags

Example: a 12-bay double-busbar substation using SIPROTEC 7SA86 distance relays:

Signal Group Per-Bay Count 12 Bays Station Level
Status (breaker, isolator, earth switch) 24 288 40
Measurements (V, I, P, Q, f, cosφ) 14 168 20
Commands (CB open/close, isolator) 10 120 25
Alarms / protection flags 32 384 60
Subtotal 80 960 145

Total external SCADA tags for this example: ~1,105 RT tags, before archive tags. Adding P tags for 70% of measurements and all alarms pushes the budget to ~1,400–1,600 power-tag equivalents. This fits inside the 8,000-tier WinCC license.

Field note: IEC 61850 GOOSE and MMS data models expose every logical node (LD/LN) as a separate data attribute. Engineering tools such as DIGSI 5 or the Siemens SICAM PAS can produce an SCD export that is then mapped 1:1 to SCADA tags. Always generate the SCD before sizing; do not estimate from the single-line diagram alone.

9. Step-by-Step Estimation Procedure

The following procedure produces a defensible tag budget suitable for license procurement and engineering-hour planning.

  1. Define the process scope. Identify every MCC bucket, VFD, instrument, and operator station in the P&ID or single-line diagram.
  2. Generate the signal list. Produce one row per I/O point: tag number, P&ID reference, PLC address, data type, scan class, alarm class, and archive flag.
  3. Categorize the signals. Split into digital-in, digital-out, analog-in, analog-out, counter, string, and derived.
  4. Apply bit-packing where possible. Reorganize the signal list so that digital signals in the same scan class share a common Word or DWord. Recount external tags after packing.
  5. Add derived and computed tags. Include faceplate-derived values, alarm summaries, and aggregations. These are typically 10–20% of the I/O count.
  6. Identify archive (P) tags. Mark every analog and every alarm-worthy discrete for logging. Apply a 70% analog-archive rule unless the data-management plan says otherwise.
  7. Apply a 20% contingency. Reserve headroom for late additions during factory acceptance testing (FAT) and site acceptance testing (SAT).
  8. Select the license tier. Round up to the next available RT-tag tier (128 / 256 / 1,024 / 8,000 / 64K / 128K).
  9. Document the estimate. Save the signal list, the per-category totals, and the tier-selection rationale as part of the project design baseline.

10. Verification and Capacity Planning

After the design is implemented, the WinCC project itself reports the actual tag count at compile time. Use the runtime diagnostic to validate the estimate:

  • WinCC Explorer → Tag Management shows the number of configured tags, broken down by connection.
  • WinCC Channel Diagnosis (applet) reports live tag statistics, error counts, and connection state.
  • TIA Portal → HMI Tags → Compile outputs a compile log with tag count and any license overflow warnings.
Check Tool Path Pass Criterion
Compile-time tag count WinCC Explorer → Tag Management ≤ license tier × 0.85 (15% headroom)
Connection error count Channel Diagnosis applet 0 transient errors in 24 h soak
Internal tag count WinCC Explorer → Internal Tags Documented; non-licensed in V7.x
Archive tag count Tag Logging → Archives ≤ P-tag license count
Runtime scan period Channel Diagnosis → Statistics Within scan class target ± 10%
Capacity planning rule of thumb: Never deploy a project at > 85% of the licensed tag capacity. The remaining 15% is reserved for late scope changes, alarm-tuning additions, and post-commissioning bug fixes. If the compile-time count approaches the cap, either optimize bit-packing further or upgrade the license before commissioning.

11. Common Estimation Pitfalls

  • Confusing RT and P tags. Both consume license seats. A project that imports 800 analog signals with 70% logged requires ~800 RT + ~560 P tag seats, not 800 total.
  • Forgetting faceplate internals. A Siemens Motor Faceplate may inject 8–12 derived tags per device that the signal list does not enumerate. Add 10–15 derived tags per motor faceplate to the budget.
  • Undercounting alarms. Each alarm event tag is counted as an RT tag. A 2,000-point I/O system can easily produce 4,000–5,000 alarm tags after priority and class expansion.
  • Ignoring multilingual strings. Each language version of a string tag is a separate tag in WinCC. A 200-string text library in 5 languages = 1,000 string tags.
  • Assuming the license is per-controller. In WinCC V7.x, the power-tag license is per HMI station, not per PLC. Two HMI stations sharing the same PLC each consume their own license.
  • Skipping the FAT signal-list review. Most late tag additions originate in the FAT. If the project enters FAT at > 90% of the license tier, the FAT itself will trigger a license upgrade.

12. Frequently Asked Questions

Is there a fixed limit on internal tags in WinCC 7.0?

No. In WinCC V7.0 and later releases, internal (computed) tags are not counted against the power-tag license. They still consume HMI runtime memory and CPU, so very large internal-tag sets (tens of thousands) should be reviewed for performance impact. Always confirm the rule in the release notes for your installed build.

How do I convert STEP 7 tags to WinCC Flexible tags?

Export the STEP 7 symbol table (Options → Symbol Table → Export) and import it into WinCC Flexible via Project → HMI Tags → Import. The importer reports the tag count after mapping, which serves as a sizing cross-check. The exact menu path varies by build (WinCC Flexible 2008 vs TIA Portal V13/V15/V18); the workflow is documented in Siemens KB articles under “Tag handling — Importing tags”.

What is the difference between RT tags and P tags?

RT (Runtime) tags are live I/O points exchanged with the PLC and count against the primary power-tag license. P (Process) tags are the variables persisted by the WinCC Tag Logging system for trending and reporting, and are licensed separately. An analog signal that is read live and also logged typically consumes one RT tag and one P tag.

How do I estimate tag count for a substation project?

Use the per-bay signal count from the IEC 61850 SCD export (typically 60–120 external signals per HV bay) and multiply by the number of bays, then add station-level tags. For a 12-bay double-busbar station, expect ~1,000–1,200 RT tags before archive tags — well within the 8,000-tier WinCC license.

Can I pack multiple bits into one HMI tag?

Yes. Bit-packing consolidates up to 16 Boolean signals into a single Word tag, or 32 Booleans into a DWord tag. The HMI script or faceplate then masks the relevant bits (for example StatusWord AND 16#0001 to test bit 0). Bit-packing reduces external tag count by 50–90% on digital-heavy areas, but alarm and ACK paths often still need dedicated Bool tags.

How much contingency should I add to a tag estimate?

Apply 20% contingency on top of the signal-list total to absorb late additions during FAT, SAT, and post-commissioning. After compilation, keep the running project at or below 85% of the licensed tier to leave headroom for bug fixes and scope changes.

Back to blog