WinCC Flex Multiplex Tags and Alarm Acknowledgment on MP277

David Krause14 min read
SiemensTroubleshootingWinCC
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

WinCC Flexible 2005 (and the parallel 2008 SP1/SP2/SP3/SP4 line that followed) is the HMI configuration suite that targets the SIMATIC MP 277 multitouch panel family as well as the smaller TP 177, OP 177 and Mobile Panel 177 devices. Two of the most common integration questions on these projects are:

  1. Whether multiplex tags (the WinCC Flex form of indirect addressing) can be bound to objects other than the Symbolic I/O field, such as command buttons or bar displays.
  2. How to wire the Acknowledgement PLC property of a Discrete Alarm so that a single HMI tag can acknowledge many alarms without producing a "property value invalid" message in the editor.

This reference consolidates the verified behaviour, the editor constraints, the Power Tag licensing pitfalls, and the migration impact of the Siemens Product Phase-Out announcement for WinCC flexible dated 01.10.2022 into a single engineering document.

End-of-life notice. WinCC flexible (all editions 2005/2008 and the Runtime Advanced included in older TIA Portal versions up to V15.1) was formally declared a discontinued product on 01 October 2022. New projects should be built in TIA Portal – WinCC Comfort/Advanced/Professional. The information below remains valid for the installed base and is included for migration context.

2. Multiplex Tag Syntax in WinCC Flexible

A multiplex tag in WinCC Flexible is Siemens' implementation of runtime indirect addressing. The online help describes it as: "In multiplexes, a type of indirect addressing, the tag used is first determined at runtime. A list of tags is defined for the multiplex tags. The relevant tag is selected from the list of tags in runtime. The selection of the tag depends on the value of the index tag."

Despite the wording, the WinCC Flexible implementation differs from the original ProTool behaviour. In ProTool the index selected a tag from a predefined list. In WinCC Flex the index is used to compute the PLC memory address itself at runtime. The most common and fully supported syntax is the variable DB number, fixed offset form:

Address of IndirectTag = DB [IndexTag] DBW 20

Where:

  • IndexTag – Integer (INT) tag that holds the DB number to be read or written.
  • 20 – Fixed byte offset (here, word 20 = byte 20/21) inside whichever DB the index currently points to.

The same construction works for the bit form: DB [IndexTag] DBX 4.0, for byte form DBB, and for double-word form DBD. The index tag may legally hold a negative number; the value is passed through to the S7 communication layer as-is, so a negative index will cause an access error in runtime and must be clamped by the PLC program.

2.1 Power Tag consumption

Each multiplex tag counts as 1 Power Tag for licensing purposes, regardless of the size of the index range it can resolve to. This is different from ProTool, where each selectable target in the list incremented the tag count. The distinction matters when the editor reports tag count warnings during compilation.

3. Binding Multiplex Tags to Buttons, Bar Displays and Other Objects

The editor's symbolic I/O field has dedicated wiring for multiplex tags – it presents a property page that lists the candidate tags and a separate index tag field. For all other object types (Command Button, Bar, Gauge, Numeric I/O field, Date/Time field, Graphic I/O field) the multiplex tag appears in the tag picker as a single entry identical to a normal tag, and is wired through the normal Property > Process Value / Tag dialog.

Common reason a multiplex tag is ghosted out in the tag picker for a button:

Symptom Likely root cause Fix
Button property "Tag" is greyed; multiplex tag cannot be selected. Object is configured as a Toggle button with implicit PLC tag; the HMI is set to "Write tag by way of PLC job". Switch the button mode to "Set bit" / "Reset bit" or move the write to a script, then wire the multiplex tag to the script variable.
Bar display process value is greyed. Bar's "Min/Max Value" or "Bar color limits" reference a different tag type (e.g. an internal string tag). Confirm the multiplex tag's data type matches the bar's expected type (INT or REAL). Re-create the tag if the source type was changed.
Multiplex tag appears in picker but selection does not persist after compile. The Index tag is not defined in the project, or has the wrong update cycle. Create the index tag with a non-zero acquisition cycle and re-select the multiplex tag.
Field practice. When a multiplex tag must drive an object that does not expose a multiplex-aware property page (e.g. animated graphic, trend control), bind an internal tag of the same data type to the object and use a scheduled Tag multiplexer task in the scheduler to copy the multiplex value into the internal tag every 250 ms. Do not bind the multiplex tag directly to a trend – the trend's underlying data buffer cannot follow an index that changes faster than the acquisition cycle.

4. PLC Acknowledgment for Discrete Alarms

A discrete alarm in WinCC Flex has three optional PLC-side properties:

  • Trigger tag – the bit that raises the alarm.
  • Acknowledgement tag – the bit the HMI sets in the PLC when the operator acknowledges the alarm.
  • State / status tags – bit groupings that report "came", "went", "acknowledged" to the PLC.

For the Acknowledgement PLC property to be accepted in the editor, it must be an array element of the same array tag used for the trigger. The HMI polls the alarm bits and the ack bits in the same cycle, so it forces the engineer to group them into one contiguous block to minimise poll overhead.

4.1 Required bit layout

Alarm Trigger tag Trigger bit Acknowledgement tag Acknowledgement bit
Alarm 1 Alarm_array 1 Alarm_array 101
Alarm 2 Alarm_array 2 Alarm_array 102
Alarm n Alarm_array n Alarm_array n + 100

Common engineering convention is to place the ack bits 100 words (1600 bits) above the trigger bits inside the same array tag. The MP 277 polls the entire 16-bit word containing the ack bit, so it will set the correct bit without disturbing the other trigger bits that share the word.

4.2 Resolving "Property value invalid"

The "property value invalid" message in the Acknowledgement PLC field is almost always caused by one of the following:

  1. The ack tag is a different array tag (or a scalar BOOL tag) than the trigger tag. Change it to the same array tag name and select a different array index.
  2. The ack bit number is outside the array size. If the trigger array is 50 bits, the highest valid ack bit is bit 150 (trigger 50 + 100 word offset mapped to bit 50 + 1600). Extend the array or move the ack bits lower.
  3. The tag type is BOOL, not an array of BOOL. In the tag editor, create the alarm tag as a contiguous array element, e.g. Alarm_array[0..255], then assign the single bit inside the discrete alarm configuration.
  4. The data block on the S7 side does not exist or has not been downloaded. Build the S7 project first, then rebuild the HMI tags from the PLC connection.

5. Power Tag Licensing and the "One Screen Per Machine" Trap

WinCC Flex 2008 Power Tags are the licensed concurrent-acquisition tags. On the MP 277 the base licence ships with 256 Power Tags, expandable in 256/512/2048 increments. Multiplex tags help consolidate screen logic, but if used naively they still consume Power Tags at the same rate as a fully expanded screen:

"If you've got 20 odd, electrically identical machines you want to visualise, it makes sense just to create one screen rather than 20. However, if they've each got 20 IO points, then with Multiplex addressing, you've used up 400 Power Tags (as you would have with 20 different screens). Instead, create 20 dummy variables which you address in the Screen and map the I/O in the PLC according to the address of the machine to be viewed. That way you've saved 380 Power Tags and the load on the CPU is pretty well negligible."

5.1 Recommended pattern

  1. Create 20 internal HMI tags of the same type (e.g. IO_intern_01..20).
  2. Place the 20 internal tags on the screen exactly as if they were real I/O.
  3. In the S7 PLC, copy the data block of the currently selected machine into the internal DB that the HMI polls. Use the index tag (machine number) to drive the SFC / FB that does the copy.
  4. The HMI never sees the machine index; it always polls the same internal DB. Power Tag count remains equal to the screen's tag count (20), not 20 × N.

6. Script Behaviour with Multiplex Tags

WinCC Flex scripts can read and write multiplex tags, but with one documented limitation: the value at the memory location will only be read at the next update cycle of the addressed tag. The implication is:

  • Do not change the index and then read the resolved value of the multiplex tag within the same script – the value returned will be stale (one cycle behind).
  • If a script must react synchronously, write the data to the target DB directly using an absolute tag, not the multiplex tag.
  • Scheduled scripts (poll-cycle based) are the recommended execution point for index changes that will be picked up by the next cycle.

7. Step-by-Step: Configuring a Multiplex Tag on a Command Button (MP 277)

Prerequisites

  • WinCC Flexible 2008 SP4 (or 2005 for the original MP 277 firmware < V12.0.0.0) installed.
  • STEP 7 V5.5 project with the S7-300/400 station containing a DB whose number is held in a PLC INT tag (e.g. MW 100).
  • MP 277 device version selected in the WinCC Flex project tree.

Procedure

  1. Open the Tags editor, right-click → New Tag. Name it IndexTag, type INT, connection = the S7 connection to the PLC, address = MW 100. Acquisition cycle = 1 s.
  2. Create the target tags. For three conveyors:
    Conveyor_1.Section.Start : BOOL, DB31.DBX 0.0
    Conveyor_2.Section.Start : BOOL, DB32.DBX 0.0
    Conveyor_3.Section.Start : BOOL, DB33.DBX 0.0
  3. Create a new internal tag ConveyorStart with type BOOL. In its properties enable Multiplexing. Set the index tag to IndexTag. Map the three conveyor tags into the multiplexing list. Because WinCC Flex uses indirect addressing, only one Power Tag is consumed regardless of list length.
  4. Place a Command Button on the screen. In its Events > Press action use the function SetBit with the tag ConveyorStart.
  5. If the button tag picker greys out ConveyorStart, switch the button to Switch mode with function InvertBit; the multiplex tag will then be selectable as the process value.
  6. Compile the project. If the compile log reports a multiplex limit warning, see Section 10.
  7. Download to the MP 277 via Ethernet (RFC1006 / OP/TP route). Verify in the cross-reference (Tools → Cross-Reference) that ConveyorStart is referenced by exactly one button.

8. Step-by-Step: Configuring PLC Acknowledgment for Discrete Alarms

Prerequisites

  • Discrete Alarm class created in the HMI project (default classes 1–4 are sufficient).
  • A BOOL array tag in the PLC that is long enough to hold both trigger and ack bits (recommended 256 bits minimum).

Procedure

  1. In the STEP 7 project, create a DB (e.g. DB 100) with a BOOL array Alarm_array[0..255]. Bits 0–99 are trigger bits; bits 100–199 are ack bits.
  2. In the HMI tag editor create the HMI tag Alarm_array of type Array of BOOL, length 256, address = DB100.DBX 0.0 with the array option enabled.
  3. Open Discrete Alarms → New. In Trigger tag select Alarm_array; in Trigger bit enter 1.
  4. In the Acknowledgement PLC property select the same tag Alarm_array and enter 101 in Ack bit. The "property value invalid" message will clear.
  5. Add a second alarm. Trigger tag = Alarm_array, trigger bit = 2. Ack tag = Alarm_array, ack bit = 102.
  6. Compile. The discrete alarms editor will accept both rows because the ack bit now lies inside the same array.
  7. Download to the MP 277 and trigger Alarm 1 from the PLC. Acknowledge the alarm in runtime; verify that bit 101 of DB100 is set by the HMI, then cleared by the PLC acknowledgement logic.

9. Verification

Check Pass criterion Tool
Cross-reference shows multiplex tag used by expected objects Exactly the same number of references as designer objects Tools → Cross-Reference
Alarm ack bits follow HMI acknowledges Bit n+100 in the trigger array toggles for < 2 s after operator ack STEP 7 VAT / PLCSIM monitor table
Power Tag count Within the licence limit (256 base + expansions) Project → Properties → Tags
Multiplex address resolves PLCSIM DB content matches the HMI tag display when the index is changed at runtime RT viewer on the MP 277 + PLCSIM
Script read-after-write on multiplex tag Value is one acquisition cycle old (expected) Watch window in RT

10. Troubleshooting Matrix

Symptom Root cause Resolution
"Property value invalid" on Acknowledgement PLC field Ack tag is a different array than trigger tag, or ack bit lies outside the array length Reuse the trigger tag and set ack bit = trigger bit + 100 (word offset). Extend the array if required.
Button cannot select a multiplex tag in the tag picker Button configured in "Toggle" mode with implicit PLC job Switch to "Set bit" / "Reset bit" mode, or wire the multiplex tag to an internal copy used by the button.
Multiplex tag returns a stale value inside the same script Documented behaviour: update cycle has not elapsed Use a scheduled script, or read the absolute DB tag directly.
Compile fails with "Power Tag limit exceeded" Multiplex tag list contains > 1 tag per list (WinCC Flex counts each mapping) Re-evaluate the screen design; for many identical machines use the internal-tag + PLC copy pattern (Section 5).
MP 277 transfer aborts on download Incompatible firmware/runtime version, or transfer settings mismatch Match the WinCC Flex build to the MP 277 image. See the Siemens SiePortal WinCC Flex 2008 transfer problem thread for TP 177A ↔ S7-300/315-2DP compatibility notes.
Runtime shows wrong machine after index change PLC has not updated the internal DB before the next HMI poll Insert a 200 ms delay between setting the index and reading the multiplex value, or use the absolute tag directly.

11. Migration to TIA Portal / WinCC Comfort

Because WinCC flexible was phased out on 01.10.2022 per Siemens Support entry 109810654, new projects must use WinCC Comfort / Advanced / Professional in TIA Portal. The two concepts covered here map cleanly:

WinCC Flexible (2005/2008) TIA Portal – WinCC Comfort/Advanced Notes
Multiplex tag DB[IndexTag]DBW20 PLC tag with "Multiplexing" property, identical syntax Syntax preserved; no re-engineering required.
Acknowledgement PLC bit = trigger bit + 100 Same convention; "Acknowledgement tag" property Bit layout convention unchanged.
Power Tag (256 base) Power Tag (256 base on Comfort, 4096 on Advanced) Tag limits increased; review licences.
MP 277 Comfort Panels (TP 700 / TP 900 / TP 1200) or MTP 700/1000/1200 Unified Hardware replacement path.

Use the TIA Portal migration tool ("Migrate project") on a copy of the WinCC Flex project. The tool preserves multiplex tags and the alarm bit layout, but verify the array sizes because the migration tool occasionally truncates very long arrays to 256 elements.

12. Frequently Asked Questions

Can a multiplex tag be used on a Button or Bar display in WinCC Flexible?

Yes, as long as the object is not in "Toggle" mode with an implicit PLC job. Use SetBit / ResetBit for a button, and ensure the Bar display's data type (INT/REAL) matches the multiplex tag's data type. If the tag is greyed out, wire the multiplex tag to a script variable and bind that variable to the object instead.

Why does the Acknowledgement PLC field show "property value invalid"?

The ack tag must be an element of the same array tag as the trigger tag, with a bit number at least 100 higher than the trigger bit. Different arrays, scalar BOOL tags, or out-of-range indices all produce the same error. Create a single array (e.g. Alarm_array[0..255]) and use bit n for the trigger and bit n+100 for the ack.

How many Power Tags does one multiplex tag consume?

Exactly one Power Tag in WinCC Flexible, regardless of the number of targets the index can resolve to. This is different from ProTool, which counts every selectable target. Even so, for screens that must display many identical machines, the recommended pattern is internal HMI tags + PLC-side DB copy, because it dramatically reduces the acquisition load on the S7 CPU.

Can a script read and write the same multiplex tag in the same call?

No. The value at the resolved address is only refreshed at the next acquisition cycle. If a script changes the index and then immediately reads the multiplex value, the result is one cycle old. Use a scheduled script (250 ms – 1 s) for index changes, or read the absolute DB tag when synchronous access is required.

Is WinCC Flexible still supported for new projects after 2022?

No. Siemens declared WinCC flexible a discontinued product on 01.10.2022 (Support entry 109810654). New projects must use TIA Portal – WinCC Comfort, Advanced, or Professional, which preserve the multiplex tag syntax and the alarm ack bit convention described above.

Back to blog