System Keys Area Pointer in WinCC Flexible 2008 Configuration

David Krause11 min read
HMI ProgrammingSiemensTutorial / How-to
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

Overview

The System Keys area pointer is a Siemens SIMATIC HMI data area that mirrors the state of fixed hardware keys (ACK, ESC, ENTER, HELP) on the panel face to the PLC. When the operator presses one of these keys, the corresponding bit in the configured word is set while the key is held; the bit clears when the key is released. The PLC can poll or interrupt on these bits to acknowledge alarms, abandon entries, commit forms, or summon context help without scripting logic in the HMI.

Historically the area pointer was set up in ProTool under the dialog Area Pointer > System Key Assig. starting at a configured MW (for example MW196). Projects migrated to WinCC flexible 2008 and onward to TIA Portal V20 lose this assignment automatically - the bit map must be re-wired either through the Template screen's SetBitWhileKeyPressed event or through a substitute external tag of matching length. This reference documents the bit mapping, the migration delta, the wiring procedure in both WinCC flexible 2008 and TIA Portal V20, and a verification procedure that confirms the wiring in the live PLC.

System Keys Area Pointer Concept

An area pointer is a reserved range of PLC memory that the HMI and PLC alternately read and write to coordinate behaviour (recipe transfer, user view, date/time, coordination, system keys, and so on). For each pointer you supply:

  • An acquisition mode - Cyclic, On Demand, or On Change.
  • A PLC tag / DB address of the correct length (number of words).
  • An update rate in ms - 100 ms is typical for HMI-AC-visible bits, 1000 ms for slow coordination.

The Siemens Industry Online Support portal defines the Coordination area pointer semantics (Startup bit, Life-bit, Operating Mode, Project ID), which share the same acquisition / addressing model as the System Keys pointer. The general architecture for area pointers in TIA Portal V20 is documented at the TIA Portal V20 area pointers reference.

For the System Keys pointer specifically, the PLC does not write - the HMI writes the bit while the key is pressed, and the PLC only reads. The pointer therefore needs write privilege from the HMI side but read privilege from the PLC side; the PLC side should be declared as consistent with the bus (consistent read for S7-300/400, optimized access for S7-1200/1500 with PUT/GET).

System Keys Bit Map Reference

Only four keys are wired through this pointer: ACK, ESC, ENTER, and HELP. Other function keys must be wired through the standard Function Keys area pointer or through screen-specific events - they are not part of this pointer.

Bit index (zero-based) Key Typical bit address (base = MW100)
0 ESC (verify against manual) MW100.0
1 ACK (confirmed in source project) MW100.1
2 ENTER (verify against manual) MW100.2
3 HELP (verify against manual) MW100.3

Source confirmation: in the migrated project the base was MW196 and the ACK key was observable at MW197.1, indicating the ProTool-era base word at MW196 was treated as a reserved/header word and the key bits began in MW197. When re-creating the assignment in WinCC flexible 2008 or TIA Portal, decide explicitly whether you want a one-word layout (bits start at the base) or a two-word layout (one header word, key bits in the second word). The two-word layout is the legacy ProTool behaviour and is the most common migration pitfall.

Field note: always confirm the bit indices for ESC, ENTER, and HELP against the panel-specific manual for the target runtime (WinCC flexible 2008 SP5 or TIA Portal V20). The Siemens documentation explicitly lists the supported key set but does not always publish the bit order; test with the live panel before commissioning.

Migration Considerations: ProTool → WinCC flexible 2008

The migration path is described in the SIMATIC HMI WinCC flexible 2008 - Migration manual, chapter 5.3 (Area Pointers). Three behaviour changes affect the System Keys pointer:

  1. Automatic conversion is partial. WinCC flexible 2008 does not import the System Keys area pointer from ProTool automatically. The configured address is preserved as a comment but no bit wiring is generated.
  2. Bit layout reset. WinCC flexible 2008 uses a one-word layout by default. If the original ProTool project used the two-word layout described above, the ACK bit appears at base+1.1 in ProTool but at base.1 in WinCC flexible. Either shift the base address by one word or move the ACK handler in the PLC to the new bit.
  3. Substitute-tag requirement. WinCC flexible 2008 may report Substitute: Configure an external tag with its length exactly the same as the number of system keys so the tag has one bit for every system key. With the system keys, this is only supported for the ACK, ESC, ENTER and HELP keys. This message indicates the conversion engine could not allocate a native System Keys pointer and is asking you to declare a generic external tag of matching length (4 bits = 1 byte / 1 word). The substitute tag is then wired manually through the Template screen events.

Pre-migration checklist

  • Record the original ProTool base address, the bit assignments actually used by the PLC, and the PLC code that consumes the ACK/ESC/ENTER/HELP bits.
  • Decide whether the PLC code will move to a one-word base (recommended) or whether the HMI base will be set to old_base + 2 bytes to preserve the two-word layout.
  • Identify whether the substitute-tag warning is acceptable. If the project uses any other System Keys functionality beyond ACK/ESC/ENTER/HELP, the substitute tag approach will silently fail for those keys.

WinCC flexible 2008 Configuration Steps

Prerequisites

  • WinCC flexible 2008 SP5 (or later SP that supports the target panel).
  • Target panel: SIMATIC OP 77B (panel 77B is the example target from the source project), TP 177, or compatible Basic Panel.
  • PLC connection configured with an S7 connection over MPI/Profibus/Ethernet.
  • A free word in the PLC (DB or M area) that both the HMI and PLC can read and write consistently.

Step-by-step

  1. Open the project in WinCC flexible 2008 and select Project > Device > Area Pointers.
  2. Locate the System Keys entry. If the conversion did not carry it over, add it manually and set:
    • PLC tag: the destination word, e.g. DB100.DBW0 or MW100.
    • Length: 1 word.
    • Acquisition mode: Cyclic continuous, 100 ms.
    • Update: On Change if the PLC must wake on every transition.
  3. Open the Template screen from the project tree (Project > Screens > Template).
  4. For each of ACK, ESC, ENTER, HELP, place the corresponding system key button on the Template. The button is available from the toolbox under System Keys.
  5. Select the button, open Properties > Events, and add the function SetBitWhileKeyPressed.
  6. Wire the function to the matching bit in the System Keys tag. Example mapping for base MW100:
    • ACK button → SetBitWhileKeyPressed(MW100, 1)
    • ESC button → SetBitWhileKeyPressed(MW100, 0)
    • ENTER button → SetBitWhileKeyPressed(MW100, 2)
    • HELP button → SetBitWhileKeyPressed(MW100, 3)
  7. Compile the project with Project > Compiler > All and download to the panel.

Verification

  1. Go online with the PLC (STEP 7 V5.5 or TIA Portal, depending on the CPU generation).
  2. Open a VAT or watch table on the System Keys word.
  3. Press and hold each system key on the panel; the corresponding bit transitions to TRUE while the key is held and returns to FALSE within one cycle after release.
  4. If a bit does not transition, return to step 5 of the configuration - the event function is most often missing or wired to the wrong bit.

TIA Portal V20 Configuration Steps

The configuration model in TIA Portal V20 is structurally similar but the navigation and the area-pointer definition differ. The general approach is documented at the TIA Portal V20 area pointers reference.

Prerequisites

  • TIA Portal V20 (or the V-version matching your panel firmware).
  • HMI device with firmware compatible with the V20 runtime.
  • S7-1200/S7-1500 CPU (PUT/GET access enabled if using a non-optimised DB on a remote CPU; local DB access needs no extra permission).
  • PLC tag or DB of type WORD or INT.

Step-by-step

  1. Open the HMI device in the project tree and double-click Connections.
  2. Select the active S7 connection to the PLC and open Area Pointers.
  3. Enable System Keys and assign a tag (PLC tag or DB word). Recommended acquisition mode is Cyclic continuous, 100 ms.
  4. Open the Template screen and place one system key button for each of ACK, ESC, ENTER, HELP.
  5. For each button open Properties > Events > Press / Release and add the SetBit / ResetBit pair - the V20 runtime does not always expose SetBitWhileKeyPressed as a single function; you may need to combine SetBit on Press with ResetBit on Release.
  6. Map the tag/bit pairs identical to the WinCC flexible table above.
  7. Compile and download both the HMI and PLC project.

Substitute Tag Configuration (Manual Wiring)

If the panel does not support the native System Keys pointer - or if WinCC flexible 2008 has issued the substitute-tag warning - wire the keys manually:

  1. Declare a WORD tag (for example SystemKeysMirror) at a free PLC address.
  2. On the Template screen, place the four system key buttons as described above.
  3. On each button, use SetBitWhileKeyPressed against the substitute tag.
  4. Make sure the PLC code references the substitute tag, not a different System Keys address. If the PLC expects MW196 + offset from the old ProTool layout, replicate the offset in the substitute tag.
Constraint: the substitute-tag path supports only ACK, ESC, ENTER, and HELP. Any attempt to wire other system keys (e.g. soft-keys F1…F10) through the substitute tag will silently fail - use the standard Function Keys area pointer for those.

Verification Procedure

After every change to the System Keys area pointer, run the following checks before returning the line to production:

  1. Static address check. In STEP 7 / TIA Portal, right-click the System Keys tag and confirm it is not reused by the PLC program (cross-reference). Address collisions produce intermittent ACK behaviour that is hard to diagnose.
  2. Cycle-time check. With the panel online, monitor the PLC scan time before and after enabling the System Keys pointer. A new cyclic pointer at 100 ms should add < 1 ms to the scan time on an S7-300 and a negligible amount on an S7-1500.
  3. Bit-by-bit test. Press each of ACK, ESC, ENTER, HELP for at least 2 seconds. Verify the corresponding bit in the watch table transitions to TRUE within one update cycle (100 ms) and returns to FALSE within one cycle of release.
  4. PLC code path test. Force the ACK bit and confirm the PLC executes the expected ACK routine. Force ESC and confirm the abort path runs. Force ENTER and confirm the commit path runs. Force HELP and confirm the help routine triggers (or is intentionally a no-op if help is disabled).
  5. Restart test. Power-cycle the panel while monitoring the System Keys word. The word must read 16#0000 within one update cycle after the panel restarts. A non-zero value after restart indicates the panel is writing the pointer before the PLC has initialised it.

Troubleshooting Matrix

Symptom Likely root cause Action
ACK bit does not change in the PLC SetBitWhileKeyPressed not configured on the ACK button in the Template Re-open the Template screen, select the ACK button, add the event
ACK bit is offset by one word vs. the PLC expectation ProTool two-word layout was preserved but WinCC flexible uses a one-word layout Either shift the PLC read address or set the HMI base to old_base + 2 bytes
Compile warning: Substitute: Configure an external tag... Native System Keys pointer not allocated by the conversion engine Declare a substitute WORD tag of matching length and wire each key manually
ACK works but ESC/ENTER/HELP do not Buttons not placed on the Template screen, or events not configured Place all four system key buttons on the Template and assign SetBitWhileKeyPressed on each
Bit toggles but PLC does not respond PLC code reads the wrong tag, or the tag is in an optimised DB without PUT/GET permission Cross-reference the PLC read address; if it is an S7-1200/1500 optimised DB and the connection is across CPUs, enable PUT/GET on the partner CPU
Bit toggles continuously without key presses Another tag is aliased to the same address and is being written by the PLC Cross-reference the System Keys word; remove the duplicate declaration
Bit toggles with significant delay (> 500 ms) Acquisition rate set too slow, or bus traffic saturating the connection Reduce the acquisition cycle to 100 ms; reduce the number of concurrent area pointers on the same connection

FAQ

What is the System Keys area pointer used for in WinCC flexible?

The System Keys area pointer maps the fixed ACK, ESC, ENTER, and HELP hardware keys on the HMI panel to bits in a PLC word. While a key is held, the corresponding bit is TRUE; on release it returns to FALSE. The PLC reads the word to acknowledge alarms, abandon entries, commit forms, or summon help without scripting logic on the HMI.

Why did the System Keys area pointer not survive a ProTool to WinCC flexible 2008 conversion?

WinCC flexible 2008 does not automatically import the System Keys pointer from ProTool. The configured base address is preserved as a comment but the bit wiring must be re-created manually using the Template screen's SetBitWhileKeyPressed event on the ACK, ESC, ENTER, and HELP buttons.

Which bit of the System Keys word corresponds to the ACK key?

In the migrated source project the ACK key was confirmed at bit 1 of the System Keys word (for example MW100.1 when the base is MW100). In the original ProTool project the base was MW196 and the ACK bit was at MW197.1, indicating a two-word layout. Bit indices for ESC, ENTER, and HELP must be verified against the panel-specific manual for the target runtime.

How do I configure the System Keys pointer in TIA Portal V20?

Open the HMI device connections, enable the System Keys area pointer, and assign a WORD or INT tag. On the Template screen, place system key buttons for ACK, ESC, ENTER, and HELP, and configure SetBit on Press plus ResetBit on Release for each. Compile and download both the HMI and PLC project.

What is the substitute-tag approach for System Keys?

If WinCC flexible cannot allocate a native System Keys pointer, declare an external WORD tag whose length matches the number of system keys (one bit per key). On the Template screen, place the four system key buttons and assign SetBitWhileKeyPressed against the substitute tag. Only ACK, ESC, ENTER, and HELP are supported through this method.

Back to blog