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.
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:
- 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.
-
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.1in ProTool but atbase.1in WinCC flexible. Either shift the base address by one word or move the ACK handler in the PLC to the new bit. - 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 + 2bytes 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
- Open the project in WinCC flexible 2008 and select Project > Device > Area Pointers.
- 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.DBW0orMW100. - Length: 1 word.
- Acquisition mode: Cyclic continuous, 100 ms.
- Update: On Change if the PLC must wake on every transition.
-
PLC tag: the destination word, e.g.
- Open the Template screen from the project tree (Project > Screens > Template).
- 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.
- Select the button, open Properties > Events, and add the function SetBitWhileKeyPressed.
- 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)
- ACK button →
- Compile the project with Project > Compiler > All and download to the panel.
Verification
- Go online with the PLC (STEP 7 V5.5 or TIA Portal, depending on the CPU generation).
- Open a VAT or watch table on the System Keys word.
- Press and hold each system key on the panel; the corresponding bit transitions to
TRUEwhile the key is held and returns toFALSEwithin one cycle after release. - 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
- Open the HMI device in the project tree and double-click Connections.
- Select the active S7 connection to the PLC and open Area Pointers.
- Enable System Keys and assign a tag (PLC tag or DB word). Recommended acquisition mode is Cyclic continuous, 100 ms.
- Open the Template screen and place one system key button for each of ACK, ESC, ENTER, HELP.
- For each button open Properties > Events > Press / Release and add the SetBit / ResetBit pair - the V20 runtime does not always expose
SetBitWhileKeyPressedas a single function; you may need to combineSetBiton Press withResetBiton Release. - Map the tag/bit pairs identical to the WinCC flexible table above.
- 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:
- Declare a WORD tag (for example
SystemKeysMirror) at a free PLC address. - On the Template screen, place the four system key buttons as described above.
- On each button, use
SetBitWhileKeyPressedagainst the substitute tag. - 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.
Verification Procedure
After every change to the System Keys area pointer, run the following checks before returning the line to production:
- 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.
- 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.
-
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
TRUEwithin one update cycle (100 ms) and returns toFALSEwithin one cycle of release. - 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).
-
Restart test. Power-cycle the panel while monitoring the System Keys word. The word must read
16#0000within 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.