WinCC Bit Selection for Text Lists: TIA Portal Configuration

David Krause16 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

WinCC Bit Selection for Text Lists: TIA Portal Configuration Reference

Bit selection in WinCC Professional is a runtime evaluation mode for text and graphic lists that maps every bit of a numeric HMI tag to an independent list entry. Unlike value-based selection, where a single integer selects one row of the list, bit selection treats the connected tag as a collection of independent flags. Each bit position can be configured with its own text or graphic, and the runtime selects the entry whose bit is set according to a fixed resolution rule. This reference explains the exact resolution rule, why it often surprises engineers, and how to pack multiple equipment states into a single tag without losing information.

Overview of Bit Selection in WinCC Professional

Bit selection is available in WinCC Professional (TIA Portal) for both text lists and graphic lists. The feature is enabled per HMI runtime under Runtime settings > Screens > Bit selection. The option that must be activated is Bit selection for text and graphic list. In some localized builds and in older TIA Portal revisions the same option is labeled Bit selection for appearance. When the option is disabled, the list is evaluated as value-based: the integer value of the tag selects the list index directly.

The feature applies to lists whose source tag has a bit-addressable data type. The supported tag types for bit selection in WinCC Professional are:

Tag type Bit range Number of distinct entries
Word / Int (16-bit) 0..15 16
DWord / DInt (32-bit) 0..31 32
Real (32-bit IEEE-754) 0..31 (after integer cast) 32

The reference implementation in this article is based on TIA Portal V15.1 with WinCC Professional V15.1 (Engineering and Runtime). The same resolution rule applies to V14, V16, V17, V18, and V19 — bit selection was introduced with WinCC Professional in TIA Portal and has not been changed in subsequent releases. For the latest revisions consult the Siemens Industry Online Support portal and the TIA Portal integrated help under the keyword Bit number text list.

Configuration Path and Prerequisites

Configure bit selection in the following order. Skipping any step produces a silent fallback to value-based selection in runtime.

  1. Define the HMI tag. Create a tag of type Word, Int, DWord, DInt, or Real. A Bool tag does not work because only one bit is addressable. Connect the tag to a PLC address through a standard HMI connection (S7-1200/S7-1500 area pointer or absolute address).
  2. Create a text list (or graphic list). In the project tree, open HMI tags > Text and graphic lists and add a new text list. Set the list mode to Bit selection (the dialog lists Bit number as the mode name in some TIA Portal builds).
  3. Populate the list with bit entries. For every bit you want to display, add a row and enter the bit number in the Bit column. Each row also has a Default column — enable the default only on the bit that should appear when no configured bit is active, or leave it on its own row to provide a fallback.
  4. Activate bit selection in runtime settings. Open the HMI device → Runtime settingsScreensBit selection and tick Bit selection for text and graphic list. Without this checkbox the runtime ignores the bit-selection mode of the list.
  5. Bind the list to a screen object. Drag the text list onto a symbolic IO field, button, or text view. The list becomes the Text list property of the object, and the HMI tag becomes the Process value property.
  6. Compile and load. Recompile the HMI and the PLC, then download both to the runtime. A change to the bit-selection runtime setting requires a full download of the runtime, not a delta download.
Critical configuration detail: If Bit selection for text and graphic list is not enabled in runtime settings, the list mode set in step 2 is silently ignored at runtime. The list then behaves as value-based, regardless of how it was configured. This is the single most common cause of a list "not working" in TIA Portal.

How Bit Selection Resolves Multiple Active Bits

When several bits of the source tag are set simultaneously, the runtime cannot display all corresponding texts at once. TIA Portal resolves the conflict by selecting the configured entry whose bit has the lowest bit number among the bits that are currently set. In other words, the runtime always picks the least-significant set bit (LSB-first) and looks up its row in the list.

This is documented in the TIA Portal help under the keyword Notes on bit number text list and is consistent with Siemens product behavior from V14 onward:

If several bits of the value are set, the text is displayed for the bit with the lowest bit number that is set. The bits are queried starting with bit 0.

The rule has three consequences that often surprise engineers:

  1. Bits that are set but not configured produce no output. The runtime scans the actual bits set in the tag, not the configured bit list. If the lowest set bit has no entry, nothing is shown — even if a higher-numbered set bit is configured.
  2. The configured order of rows is irrelevant. Reordering entries in the editor does not change the resolution. Resolution is driven by the absolute bit number, not by row index.
  3. Bit 0 dominates. Whenever bit 0 is set, it wins regardless of the other bits, because it is always the lowest set bit.

Why the Expected Text Does Not Appear

Walk through the configuration in the source example to see why the expected text is missing.

Configured bits in the text list: 3, 4, 6.

Bit states set in runtime: bit 2 = 1, bit 4 = 1, bit 5 = 1.

Applying the LSB rule:

Bit number Configured? Set in runtime? Outcome
0 No 0 Not relevant
1 No 0 Not relevant
2 No 1 Lowest set bit — but no row configured for bit 2
3 Yes (Text 1) 0 Not set — ignored
4 Yes (Text 2) 1 Configured and set, but loses to bit 2
5 No 1 Not relevant
6 Yes (Text 3) 0 Not set — ignored

The runtime scans from bit 0 upward. The first bit it finds in state 1 is bit 2. Bit 2 is not in the configured list, so the resolution algorithm finds no matching entry. The display shows nothing — not the configured text for bit 4, not the default, not an error. This is correct runtime behavior, not a bug.

The engineer's mental model assumed that the configured bits formed a closed set: check only the bits I configured, ignore the rest. TIA Portal does not work that way. The bit-selection feature examines the entire tag word and resolves to a single configured entry whose bit is the lowest-numbered bit that is actually set.

Practical Behavior Matrix

Use this matrix when planning a list. The list is configured for bits 3, 4, 6 (Text 1, Text 2, Text 3 respectively). The Display column shows what runtime shows for each combination of set bits.

Bit 3 Bit 4 Bit 5 Bit 6 Lower bits set? Runtime display
1 0 0 0 No Text 1 (bit 3 wins)
0 1 0 0 No Text 2
0 0 0 1 No Text 3
1 1 0 0 No Text 1 (LSB rule)
1 1 0 1 No Text 1
0 1 0 1 No Text 2
1 0 0 1 No Text 1
0 0 1 0 No No text (bit 5 not configured)
0 1 1 0 No Text 2 (bit 4 wins over bit 5)
1 0 1 0 No Text 1
0 0 0 0 No Default value or empty
0 0 0 1 Yes (bit 2 = 1) No text (bit 2 not configured)

The pattern to memorize: the configured bit is only ever selected when it is the lowest-numbered bit that is set in the source tag. A single stray low-order bit outside the configured set suppresses the entire display.

Workarounds for Packing Multiple States into One Tag

The original engineering goal is to save HMI tag bandwidth by transmitting the state of multiple pieces of equipment inside a single DWord. Bit selection does not support this directly because of the LSB resolution rule, but the goal can still be met with one of the patterns below.

Pattern A — Use a value-based list with reserved integer ranges

Replace bit selection with value-based selection. Reserve a contiguous range of integer values for each screen object. For example, dedicate values 0–7 to one object, values 8–15 to a second, and values 16–23 to a third. The PLC writes the values 0, 8, 16 to select off; 1, 9, 17 to select on; 2, 10, 18 to select fault; and so on. The HMI shows the appropriate text for each object without interference, because the list index is a single integer and there is no LSB conflict.

Object Value range States
Pump 1 0–7 0 = Off, 1 = On, 2 = Fault, 3 = Manual
Pump 2 8–15 8 = Off, 9 = On, 10 = Fault, 11 = Manual
Pump 3 16–23 16 = Off, 17 = On, 18 = Fault, 19 = Manual
Valve 1 24–31 24 = Closed, 25 = Open, 26 = Mid-position

This keeps the tag budget to one DWord per equipment group while restoring the one-object-per-integer mapping that bit selection cannot provide.

Pattern B — Mask the low bits before evaluation

Keep bit selection but use one tag per object and reserve the low bits of a shared DWord for the LSB-wins evaluation. In the PLC, write each equipment state into a non-overlapping bit range of a DWord (bits 0–3 = equipment 1, bits 4–7 = equipment 2), then have the HMI extract the relevant nibble into a separate tag using a script or a separate PLC word. The drawback is that the extraction script adds CPU load and complicates the data flow.

Pattern C — Use individual tags, accept the bandwidth cost

If the HMI connection is over PROFINET with sufficient update bandwidth, the simplest and most readable architecture is one Bool or Int tag per equipment state. For an S7-1500 panel this is rarely a problem; for a Comfort Panel with many tags, group the states into a PLC data block and use one area pointer to acquire the whole block.

Pattern D — Compute a per-object integer on the PLC side

On the PLC, maintain a small lookup that converts the packed status bits of a piece of equipment into a single integer (0, 1, 2, 3 for Off, On, Fault, Manual). Write that integer to an HMI tag and use a value-based text list on the screen. The PLC code is a few lines of ladder or SCL; the HMI stays simple.

// SCL example for S7-1500
IF "Pump1".Run AND NOT "Pump1".Fault THEN
    "HMI_tag_Pump1" := 1; // On
ELSIF "Pump1".Fault THEN
    "HMI_tag_Pump1" := 2; // Fault
ELSIF "Pump1".Manual THEN
    "HMI_tag_Pump1" := 3; // Manual
ELSE
    "HMI_tag_Pump1" := 0; // Off
END_IF;

Verification and Commissioning Steps

After configuring the text list, perform the following checks before handing the panel over to operations.

  1. Activate the runtime option. In the HMI device editor, confirm Runtime settings > Screens > Bit selection > Bit selection for text and graphic list is enabled. A missing check is the cause of the majority of "bit selection does not work" cases.
  2. Inspect the list mode. In the text list editor, switch the list mode combo box to Bit selection. The grid changes from a single value column to a value/Default pair per row.
  3. Build a test tag. Create a temporary HMI tag of type Word and a temporary IO field. Bind the IO field to the test tag and the test tag to the text list.
  4. Toggle bits in the simulator. In the HMI simulation (WinCC Runtime Professional simulator), use the tag simulator to set individual bits one at a time. Verify the configured text appears for each bit. Then set two bits and confirm the LSB rule selects the lower one. Then set a bit that is not configured and confirm nothing is displayed.
  5. Cross-check on the panel. If a real panel is available, repeat the toggle test using the on-panel tag simulator. Comfort Panel firmware V14 and later ship with the same simulator as the engineering software.
  6. Document the resolution rule. Add a comment to the PLC code and the HMI tag list explaining the LSB rule and the boundary conditions (bit 0 always wins, unset bits above the highest configured bit are tolerated, an unset bit below the lowest configured bit causes blank display).
Documentation pointer: The TIA Portal help for the text list configuration dialog contains the exact phrase "If several bits of the value are set, the text is displayed for the bit with the lowest bit number that is set." Search the integrated help for Bit number text list or Bit selection to retrieve this note in your installed revision. Cross-check the current text in the Siemens Industry Online Support knowledge base for your specific TIA Portal version.

Field-Proven Edge Cases

These are the situations that surface during commissioning, in order of frequency.

Bit 0 set unintentionally

Many PLC programs use a valid or data ready flag at bit 0 of a status word. If a text list is bound to that status word, bit 0 forces the list to show its bit-0 entry. Move the data-ready flag out of the tag that drives the list, or mask bit 0 with an HMI script before the value reaches the list.

Initial value 0

A freshly loaded tag holds the initial value 0. Bit 0 is therefore 0; if the list is configured for bits 0, 1, 2 only and the actual signal is in bit 5, the screen is blank until the PLC updates the tag. Configure a default row in the list to cover this case.

Real number source

When the source tag is Real, TIA Portal converts the value to a 32-bit integer before applying bit selection. Floating-point values that round to a non-integer (for example, 1.5 → 1) follow the LSB rule on the integer representation. Avoid Real tags for bit selection unless the upstream math guarantees integer values.

Negative integer source

With Int or DInt tags, a negative value sets the upper bits to 1 (two's complement). Bit 31 is set for any value below zero. Bit 31 is almost never the "lowest" bit, so the LSB rule still works, but the high bit can interfere with the default if a different screen object reads from the same tag.

Local tags versus PLC tags

Bit selection works with both local HMI tags and PLC tags. With PLC tags, ensure the acquisition cycle is short enough that the LSB-wins rule does not produce a visible flicker when several bits transition in the same cycle. A 100 ms acquisition cycle is usually sufficient for status displays; for fast transitions, raise the priority of the acquisition in the connection properties.

Mixing value and bit selection lists on the same screen

Both modes are available in the same project. The mode is a property of the individual list, not a global setting. The runtime setting under Bit selection enables bit-selection evaluation as a runtime-wide feature. Lists that are configured as value-based continue to use value-based resolution regardless of this setting.

Choosing Between Bit Selection and Value Selection

For most HMI screens, value-based selection is the safer default. It maps each integer to exactly one row, is easy to test, and matches the typical PLC state-machine pattern of writing discrete status codes. Use bit selection only when:

  • You genuinely have 16 or 32 independent boolean flags to display in a compact area, AND
  • The semantics of the screen are such that showing the lowest-numbered set bit is the correct behavior, AND
  • You can guarantee that the unused bits remain 0 in the source tag.

If any of these conditions is not met, the value-based pattern (Pattern A in the previous section) is the more robust choice.

Migrating Bit Lists to Other HMI Platforms

Bit selection in WinCC is a Siemens-specific feature. If the project is migrated to another HMI platform, replicate the value-based pattern rather than the bit pattern. The LSB resolution rule is unusual; few HMI platforms use it. Most platforms treat a multi-bit input as either an error condition, a priority list, or a separate multi-state indicator with configurable priority. Verify the target platform's behavior in its vendor documentation before re-engineering the display logic.

Summary of Key Constraints

  • Bit selection requires the runtime option Bit selection for text and graphic list to be enabled under HMI device → Runtime settings → Screens → Bit selection.
  • When multiple bits are set, the runtime shows the text for the lowest-numbered set bit that has a configured entry.
  • If the lowest set bit is not configured, the display is blank, even if higher configured bits are also set.
  • Bit 0 always dominates when set. Mask or relocate data-ready flags out of the source tag.
  • Source tag must be Word, Int, DWord, DInt, or Real (32-bit IEEE-754).
  • For packing multiple equipment states into one DWord, use Pattern A (value-based with reserved ranges) or Pattern D (PLC-side integer computation).
  • The behavior described in this article applies to TIA Portal V15.1 and is unchanged in V14, V16, V17, V18, and V19; verify against the integrated help of your installed revision.

FAQ

Why is my bit-selection text list blank even though I configured a bit?

The lowest-numbered bit that is set in the source tag is not the one you configured. Check the actual bit pattern in the runtime (HMI tag simulator, watch table, or online monitor) and confirm that the lowest-numbered set bit has a row in the text list. Also verify that Runtime settings > Screens > Bit selection > Bit selection for text and graphic list is enabled — without it the list falls back to value-based selection.

Can bit selection display more than one text at a time when several bits are set?

No. Bit selection always resolves to exactly one entry. With multiple bits set, the entry for the lowest-numbered set bit wins. To display multiple parallel states, use multiple IO fields bound to multiple tags, or use a value-based list with reserved integer ranges per object.

Which TIA Portal versions support bit selection for text and graphic lists?

Bit selection is available from TIA Portal V13 SP1 / WinCC Professional V13 SP1 onward and is present in V14, V15, V15.1, V16, V17, V18, and V19 with the same resolution rule. The behavior described in this article applies to V15.1 and is unchanged in later revisions; confirm with the integrated help of your installed revision via the keyword Bit number text list.

How do I pack 16 equipment states into one HMI tag and still display them correctly?

Do not use bit selection for this. Use Pattern A: dedicate a range of integer values to each piece of equipment (for example 0–3 for pump 1, 4–7 for pump 2) and use a value-based text list. The PLC writes the offset-plus-state integer for each piece of equipment to its own HMI tag, all of which can be packed in one data block and acquired in a single area pointer.

What happens to the text list when all bits in the source tag are 0?

Bit 0 is the lowest set bit, but it is not set, so the LSB rule does not find any matching entry. The list shows its default value (if a default row is configured) or remains blank. Configure a default row in the text list to guarantee a non-empty display in the all-zero state.

Back to blog