Configuring G120C Alarm Display and Acknowledge on KTP900 Basic

David Krause17 min read
HMI / SCADASiemensTutorial / 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

Configuring G120C Alarm Display and Acknowledge on KTP900 Basic

This reference explains how to surface SINAMICS G120C faults on a SIMATIC KTP900 Basic panel and acknowledge them from the same HMI, using an S7-1500 (CPU 1510SP-1 PN) as the PROFINET IO controller. It also addresses the F08501 setpoint timeout that typically appears immediately after a full TIA Portal download, and gives a deterministic acknowledgement sequence. The configuration is built around the patterns described in Siemens Support entry 97550333 for direct-drive access, adapted here to a Basic Panel that must route every command through the PLC.

1. System Overview and Topology

The reference stack is intentionally thin: one drive, one CPU, one HMI. The CPU is the only PROFINET IO controller in the system, and the KTP900 Basic is its single HMI target. Two PROFINET relationships exist:

  • CPU to G120C (controller to device, cyclic PZD): carries STW1, ZSW1, NSOLL, NIST with Standard Telegram 1.
  • CPU to KTP900 Basic (HMI driver): carries alarm notifications, tags, and the acknowledge command back to the CPU.
S7-1500 CPU 1510SP-1 PN PROFINET IO controller 6ES7 510-1SJ01-0AB0 SINAMICS G120C PN variant Standard Telegram 1 6SL3210-1KE series KTP900 Basic PN WinCC Basic V13 SP1 Single S7 driver 6AV2 123-2JB03-0AX0 PN IO - cyclic PZD (STW1, ZSW1) HMI driver S7-1500 only Diagnostic interrupts

Two consequences follow. First, the Basic Panel can never see the G120C directly; the S7-1500 is mandatory. Second, the drive's diagnostic interrupts ride on the CPU-to-G120C PROFINET relationship, so once the CPU is wired correctly the HMI Alarm View will render drive faults without further scripting - script support is not available on Basic Panels anyway.

2. Prerequisites

Item Version / part Notes
CPU S7-1500 CPU 1510SP-1 PN (e.g. 6ES7510-1SJ01-0AB0) Firmware V2.0+ recommended for TIA V13 SP1 UPD8+ projects
Drive SINAMICS G120C PN (family 6SL3210-1KE1x-xxxx or 6SL3210-1KE2x-xxxx) FW V4.4 SP3 to V4.7.x; match GSDML revision to drive firmware
HMI SIMATIC KTP900 Basic PN (6AV2 123-2JB03-0AX0) WinCC Basic V13 SP1 or later
Engineering TIA Portal V13 SP1 + HSP or Startdrive HSP installs G120C GSDML and HMI faceplates
Topology Single PROFINET subnet CPU is IO controller; G120C is IO device; HMI is sole HMI client
Knowledge PROFINET basics, Telegram 1, STW1/ZSW1, S7-1500 ladder or SCL -

Verify the GSDML in TIA Portal matches the drive firmware: G120C FW V4.4.x ships with GSDML-V2.31-Siemens-Sinamics_G120C_Vxx.xml; later V4.7+ uses GSDML-V2.34. Mixing the two causes slot-mismatch errors at startup because the module/ submodule identifications differ.

3. Why Fault F08501 Appears After a Full Download

A full download in TIA Portal places the target CPU in STOP, erases retentive areas if selected, and reinitialises the PROFINET stack. From the drive's perspective, the cyclic PZD stream simply stops. SINAMICS runs a watchdog on the setpoint telegram, parameterised by p2040 (fieldbus monitoring time). When p2040 ms elapse without a fresh setpoint, the drive raises F08501 (setpoint timeout) and latches it until acknowledged.

CPU state RUN STOP - full download RUN - restart Cyclic PZD Cyclic frames Suspended Cyclic frames Drive state OK F08501 latched F08501 until acknowledged t=0 t = start of download t + p2040 = F08501 t = restart (CPU RUN)

The factory default of p2040 is 100 ms on most G120C firmware builds; a full TIA download typically takes 5 to 25 seconds, so F08501 is guaranteed unless you raise p2040 or freeze the watchdog. Three production-safe remedies:

  1. Extend p2040 during commissioning - set p2040 = 5000 ms, complete downloads, then restore to 100 ms once the project is signed off.
  2. Add an unconditional acknowledge - after the CPU returns to RUN, the HMI button or a first-scan flag in OB100 pulses STW1 bit 7 once, which clears F08501.
  3. Disable the watchdog in test cells only - p2040 = 0 turns monitoring off. Do not run production with p2040 = 0.
Note: p2040 = 0 hides every real PROFINET failure for the lifetime of the value. Use it only on benches where the drive is not the safety-of-function element.

4. Telegram Layout and Bit Map

Standard Telegram 1 (PZD 2/2) is the smallest useful Telegram for visualisation. Two receive words and two send words give you control, status, setpoint, and actual value with minimal cycle time. For the KTP900 Basic, Telegram 1 is also the most memory-efficient: each PZD word occupies a single BOOL or INT tag the HMI can subscribe to.

STW1 - drive control word (CPU to drive)
Bit Meaning Use on the HMI
0 ON / OFF1 Hand/Auto start command
1 OFF2 (coast to stop) Emergency stop
2 OFF3 (quick stop) Safety-rated stop
3 Enable operation Run enable
4 Enable ramp-function generator -
5 Unfreeze ramp-function generator -
6 Enable setpoint -
7 Acknowledge fault (rising edge) HMI acknowledge button maps here
8 Jog 1 -
9 Jog 2 -
10 Control by PLC Always 1 in PROFINET mode
ZSW1 - drive status word (drive to CPU)
Bit Meaning HMI interpretation
0 Ready to switch on Show "Ready" indicator
1 Ready to operate Show "Standby"
2 Operation enabled Show "Running"
3 Fault present Show red banner; trip alarm view
4 OFF2 active -
5 OFF3 active -
6 Switch-on inhibit -
7 Alarm present Show yellow banner
8 Speed setpoint-actual deviation -
9 Control by PLC Diagnostic
10 Frequency reached "At speed" lamp
11 Torque limit reached -
12 Open holding brake -
13 Alarm motor overtemperature -
14 Motor rotates forward Direction indicator
15 CDS active -

For a richer alarm text the HMI needs the actual fault number. With Telegram 1 alone, ZSW1 is a state word without a fault code. Two options:

  • Add PZD words with r0947 / r2131 by switching to Telegram 3 (PZD 5/9) or using free configuration (Telegram 20) and mapping r0947 to a free PZD slot. The CPU tag is INT and the HMI alarm text can index a text list on the value.
  • Read r0947 acyclically via SINA_PARA (TIA Portal V13 SP1) or DPV1 services. The cycle time is 1 to 3 s on most G120C builds; acceptable for an HMI alarm view but too slow for a fast trip indicator.

If you stay on Telegram 1, the HMI sees the fault bit (ZSW1.3) but only "Fault present" without the numeric code. This is enough for a binary banner; for a numeric code, use Telegram 3 or a free PZD mapping.

5. Architecture: Why a Basic Panel Cannot Speak Directly to the G120C

SIMATIC Basic Panels (KTP400, KTP700, KTP900, KTP1200) host a single S7 driver in WinCC Basic. Comfort Panels can be configured with multiple drivers and can act as a PROFINET IO controller; Basic Panels cannot. Therefore the G120C cannot appear as a peer in the HMI's connection list, and direct tag links from the panel to the drive are not projectable.

The HMI still gets full fault visibility because:

  1. The G120C raises PROFINET diagnostic interrupts on its PN interface.
  2. The S7-1500 receives these interrupts and stores them in the device diagnostics buffer.
  3. The HMI alarm view is configured to render PLC alarms, and the SINAMICS GSDML plus Startdrive HSP installs the alarm text IDs.
  4. The HMI acknowledgement button writes to a PLC tag, which the PLC edge-detects and routes to STW1 bit 7, satisfying the drive's "Acknowledge fault" requirement.

The Siemens Support entry 97550333 walks through the direct-drive access pattern for Comfort Panels. With a Basic Panel the same pattern applies minus the direct connection: the S7-1500 is the gateway for every command and every tag.

Note: Scripts are not supported on Basic Panels. Anything that needs conditional logic (edge detection, lock-out, trailing-edge filters) must live in the PLC, not on the HMI.

6. Drive-Side Configuration in TIA Portal / Startdrive

  1. Install the matching GSDML/Startdrive HSP for the G120C firmware revision.
  2. Insert the G120C PN as a PROFINET device on the S7-1500 IO controller.
  3. Assign a unique PROFINET device name (e.g. DRV1_G120C) and a fixed IP.
  4. In the device properties, Module parameters, set the slot to Standard Telegram 1 (PZD 2/2). If you need a numeric fault code, switch to Telegram 3 (PZD 5/9) and map r0947 into PZD3.
  5. Open the G120C in Startdrive (online) and verify the BICO defaults:
    • p2050[0] = STW1 (control word 1, default)
    • p2050[1] = NSOLL (main setpoint, default)
    • p2051[0] = ZSW1 (status word 1, default)
    • p2051[1] = NIST (main actual value, default)
  6. Configure the fault acknowledgement source. The safe source for "Acknowledge fault" is the PROFINET STW1 bit 7. The BICO source depends on firmware:
    • FW V4.4 to V4.6: p2103[0] = r2090.7 (PZD1 receive bit 7)
    • FW V4.7+: the same source applies; double-check in the parameter context of your specific build
  7. Set p2040 to a commissioning value (e.g. p2040 = 1000 ms) and copy RAM to ROM.
  8. Save the project and download to the drive.
Note: r2090.7 is the BICO connector for "bit 7 of PZD1 received from PROFINET". On older SINAMICS firmware the equivalent is 722.0 plus bit-selector; refer to the SINAMICS List Manual for the exact connector on your firmware revision.

7. PLC-Side Programming

Build a single function block per drive. The block owns the IO address, the acknowledge edge logic, and the HMI tag mapping. The example below uses one G120C at logical address 256 (PZD 2/2): word 256 = STW1 (output), word 258 = NSOLL (output), word 256 = ZSW1 (input), word 258 = NIST (input).

Data block layout for the HMI:

DATA_BLOCK "DB_Drive1"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
NON_RETAIN
  STRUCT
    STW1         : WORD;     // Control word 1 (HMI visualisation)
    ZSW1         : WORD;     // Status word 1 (HMI visualisation)
    NSetpoint    : INT;      // Main setpoint (rpm or %)
    NActual      : INT;      // Main actual value
    FaultCode    : INT;      // From r0947 if mapped to PZD3, else -1
    HMI_AckReq   : BOOL;     // HMI to PLC: acknowledge request
    HMI_OnCmd    : BOOL;     // HMI to PLC: ON/OFF1
    HMI_Off2     : BOOL;     // HMI to PLC: coast to stop
    HMI_Off3     : BOOL;     // HMI to PLC: quick stop
    Drive_Ready  : BOOL;     // ZSW1.0
    Drive_Standby: BOOL;     // ZSW1.1
    Drive_Run    : BOOL;     // ZSW1.2
    Drive_Fault  : BOOL;     // ZSW1.3
    Drive_Alarm  : BOOL;     // ZSW1.7
    Drive_AtSpd  : BOOL;     // ZSW1.10
    AckPulse     : BOOL;     // Edge pulse to STW1.7
  END_STRUCT;
END_DATA_BLOCK

Acknowledge FB in SCL:

FUNCTION_BLOCK "FB_DriveAcknowledge"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 1.0
VAR_INPUT
  i_HMI_AckRequest : BOOL;
END_VAR
VAR_OUTPUT
  q_AckPulse       : BOOL;
END_VAR
VAR
  s_PrevInput      : BOOL := FALSE;
END_VAR
BEGIN
  q_AckPulse := i_HMI_AckRequest AND NOT s_PrevInput;
  s_PrevInput := i_HMI_AckRequest;
END_FUNCTION_BLOCK

Main OB1 segment that wires the FB into the cyclic PZD area:

// Edge generation
"Pulse_Ack1"(i_HMI_AckRequest := "DB_Drive1".HMI_AckReq);

// Compose STW1 from individual bits
"DB_Drive1".STW1.%X0  := "DB_Drive1".HMI_OnCmd;        // ON/OFF1
"DB_Drive1".STW1.%X1  := NOT "DB_Drive1".HMI_Off2;     // OFF2 (active low)
"DB_Drive1".STW1.%X2  := NOT "DB_Drive1".HMI_Off3;     // OFF3 (active low)
"DB_Drive1".STW1.%X3  := TRUE;                          // Enable operation
"DB_Drive1".STW1.%X7  := "Pulse_Ack1".q_AckPulse;       // Acknowledge (edge)
"DB_Drive1".STW1.%X10 := TRUE;                          // Control by PLC

// Write composed control word to PROFINET output area
%QW256 := "DB_Drive1".STW1;
%QW258 := "DB_Drive1".NSetpoint;

// Copy status words and decode
"DB_Drive1".ZSW1     := %IW256;
"DB_Drive1".NActual  := %IW258;
"DB_Drive1".Drive_Ready   := "DB_Drive1".ZSW1.%X0;
"DB_Drive1".Drive_Standby := "DB_Drive1".ZSW1.%X1;
"DB_Drive1".Drive_Run     := "DB_Drive1".ZSW1.%X2;
"DB_Drive1".Drive_Fault   := "DB_Drive1".ZSW1.%X3;
"DB_Drive1".Drive_Alarm   := "DB_Drive1".ZSW1.%X7;
"DB_Drive1".Drive_AtSpd   := "DB_Drive1".ZSW1.%X10;

If you need the fault code in the DB, extend the Telegram to include r0947 in PZD3 receive, and add:

"DB_Drive1".FaultCode := %IW260;   // 3rd receive word from PZD3 mapping

For acyclic access, the SINA_PARA block (downloadable from Siemens Support for TIA V13 SP1) provides Read/Write primitives. With it the call becomes SINA_PARA(REQ := TRUE, ID := 256, PARAM := 947, ...) and returns the live fault number every few hundred milliseconds.

8. HMI Configuration

  1. Add the KTP900 Basic PN to the TIA project and assign it the same PROFINET subnet as the CPU.
  2. Configure the HMI connection to point at the S7-1500 (IP, rack/slot 0/1).
  3. In HMI tags, import the DB_Drive1 tags as PLC tags. WinCC Basic V13 SP1 polls them on the standard HMI cycle (default 1 s).
  4. Insert an Alarm view element on the desired screen. Configure:
    • Alarm classes: "Errors" and "Warnings" visible; acknowledge model = "With acknowledgement".
    • Event log: optional; off by default on Basic to save memory.
  5. Wire the HMI alarm text source:
    • Option A: use the SINAMICS GSDML diagnostics by enabling "HMI alarm reporting" in the CPU's PROFINET IO system. The G120C's diagnostic interrupts appear as PLC alarms with their native fault IDs and texts.
    • Option B: use a text list that indexes a friendly message on DB_Drive1.FaultCode.
  6. Insert an "Acknowledge" button on the alarm view toolbar or a custom button. Set its SetBitWhilePressed event to "DB_Drive1".HMI_AckReq := TRUE. The FB above converts the level into an edge on STW1 bit 7.
  7. Add status indicators bound to DB_Drive1.Drive_Fault, DB_Drive1.Drive_Alarm, and DB_Drive1.Drive_Run with a colour animation (red, yellow, green).
  8. Configure the alarm acknowledgement globally: Project, Runtime settings, Alarms, Acknowledgement = "By selection" or "By button".
Note: WinCC Basic V13 SP1 supports only one alarm acknowledgement model per panel. With Comfort Panels you can have multiple models; with Basic, pick the model that matches your operator workflow.

9. Acknowledgement Sequence and Edge Logic

The drive requires a rising edge on STW1 bit 7 to clear a latched fault. A held level does nothing; a too-short pulse (one PROFINET cycle, ~1 ms) is also ignored on some firmware. The accepted approach is a single-cycle pulse that the drive reads on at least one subsequent PZD cycle.

State machine - drive fault acknowledgement Idle No fault Fault latched ZSW1.3 = 1 Ack requested HMI button pressed STW1.7 edge Pulse 1 cycle Cause persists Fault returns Fault detected HMI button PLC edge Cause still present Re-enter latched Fault cleared to Idle

Why a level is wrong: if the HMI button holds HMI_AckReq = TRUE for the full duration of the operator's finger, the FB outputs q_AckPulse = TRUE only on the first PLC cycle. Subsequent cycles output FALSE because the previous-input memory is set. This is correct edge behaviour and exactly what the drive requires.

Why a sub-millisecond pulse is wrong: PROFINET cycles 1 ms. Some G120C firmware ignores an edge that does not survive at least one full PZD cycle. The above FB holds the edge for one OB1 cycle (~10 to 50 ms depending on CPU load), which is well above the minimum.

10. Commissioning and Verification

Run through this checklist in order. Each step is verifiable with a single online action; do not skip ahead.

# Step Pass criterion Tool
1 Online, drive accessible Startdrive shows G120C online green Startdrive
2 Verify PZD mapping p2050/p2051 list shows Telegram 1 (PZD 2/2) Startdrive expert list
3 Verify p2103[0] Source = r2090.7 (or firmware-equivalent) Startdrive expert list
4 Verify p2040 Value 500 ms or more during commissioning Startdrive expert list
5 CPU to drive cyclic Force ON (STW1 = 0x047F), drive runs TIA Watch table
6 Trigger test fault e.g. force STW1.7 low and stop setpoint; drive raises F08501 Startdrive trace
7 HMI shows alarm Alarm view shows "Drive fault" with red banner KTP900 runtime
8 HMI Ack button Press Ack; alarm clears within 1 s; ZSW1.3 = 0 KTP900 runtime + Watch
9 Full download Drive raises F08501, then auto-clears on first OB100 cycle TIA download
10 Restore production p2040 Set p2040 = 100; download to drive; RAM to ROM Startdrive

Step 6 needs care: triggering a real drive fault can stop the machine. A bench test with the motor uncoupled is strongly recommended for the first run.

11. Troubleshooting Matrix

Symptom Likely cause Remedy
F08501 on every TIA download p2040 too short; CPU STOP halts PROFINET Increase p2040 to 1000 ms or more; pulse STW1.7 on OB100
HMI shows red banner but no fault text Telegram 1 only; no r0947 in PZD Switch to Telegram 3 or map r0947 to free PZD
HMI Ack button has no effect Hold-level signal; no edge to drive Use FB_DriveAcknowledge; verify STW1.7 cycles high then low
Ack button clears HMI but not drive HMI ack is for the HMI alarm only Map HMI button to DB_Drive1.HMI_AckReq (not the alarm ack event)
Multiple drives, only one shows alarms PLC alarm routing not enabled on other G120C slots Enable "HMI alarm reporting" on every drive in the device properties
Drive runs but ZSW1.10 (at speed) never sets Setpoint = 0; ramp not active Provide non-zero NSOLL; enable ramp (STW1.4)
KTP900 connection error after TIA download HMI image version mismatch Recompile HMI; ensure panel image is V13 SP1 UPD8+
F08501 returns seconds after ack Underlying setpoint source fault persists Check PROFINET cable, switch, CPU PN port; verify SINEC diagnostics
Drive refuses to start after F08501 STW1.10 (Control by PLC) cleared Set STW1.10 = 1 in the STW composition; re-download
Alarm view shows text but no state word Tags imported from wrong DB Re-import DB_Drive1 in HMI tag table; recompile

12. Parameter Quick Reference

Parameter Meaning Recommended value
p2040 Fieldbus monitoring time (ms) 5000 (commissioning), 100 (production)
p2050[0] Source of PZD1 receive word STW1 (default)
p2050[1] Source of PZD2 receive word NSOLL (default)
p2051[0] Source of PZD1 send word ZSW1 (default)
p2051[1] Source of PZD2 send word NIST (default)
p2103[0] Source of first fault acknowledgement r2090.7 (STW1 bit 7)
p2104[0] Source of second fault acknowledgement 0 (unused)
p2105 Acknowledgement mode Default (edge on first source)
r0947[0] Current fault number Read-only; expose to HMI
r2131[0] Current alarm number Read-only; expose to HMI
r2090.7 PROFINET STW1 bit 7 (live) Diagnostic only

Always verify the parameter numbers against the specific SINAMICS firmware List Manual shipped with the drive; the BICO connector index 2090.7 has minor variations between firmware builds.

13. Adapting to Multiple Drives and to Different KTP Variants

For projects with several G120C drives on the same S7-1500, replicate the PLC FB and DB per drive and allocate a distinct PZD IO range for each PROFINET device. The KTP900 Basic still uses a single S7-1500 driver and the HMI configuration is unchanged; you simply import the additional DB tags and add a new alarm text list per drive. Confirm the CPU's PROFINET connection budget before adding devices - an S7-1500 with an integrated PN interface supports up to 128 PROFINET devices in current firmware, well beyond typical panel-driven cells.

The same pattern applies to the smaller KTP700 Basic and the larger KTP1200 Basic. All Basic Panels share the single-driver constraint, so the PLC-mediated pattern transfers without code changes. The only difference is the available screen real estate: smaller panels benefit from a single combined alarm view; larger panels can host per-drive diagnostic pages with the faceplates that the SINAMICS HSP installs.

14. Frequently Asked Questions

What is the smallest TIA Portal / G120C / HMI combination that supports the configuration?

TIA Portal V13 SP1 with the matching G120C HSP, an S7-1500 CPU 1510SP-1 PN (FW V2.0+), a G120C PN on firmware V4.4 SP3 or later, and a KTP900 Basic PN running a V13 SP1 image. Older combinations either lack PROFINET diagnostics on the drive or lack the alarm view features in WinCC Basic.

Can I use a Comfort Panel and skip the S7-1500 entirely?

Yes, but only if the Comfort Panel runs as a PROFINET IO controller and you only need direct drive commands. The reference in Siemens Support entry 97550333 walks through the direct pattern. For mixed PLC plus drive topologies the PLC-mediated pattern is still cleaner.

Why does the HMI show a fault immediately after a full download, even with p2040 raised?

The full download still takes longer than p2040. Increase p2040 to 5000 ms during engineering and add an OB100 edge on STW1.7 so the drive is acknowledged the moment the CPU returns to RUN.

How do I get the numeric fault code (e.g. F07802) on the HMI?

Either switch the G120C to Standard Telegram 3 (PZD 5/9) and map r0947 to a free receive PZD, or use the SINA_PARA block to read r0947 acyclically every 200 to 500 ms. The second method works with Telegram 1 but is slower.

Does this work with multiple G120C drives on the same S7-1500?

Yes. Repeat the PLC FB and DB per drive, allocate a distinct PZD IO range per drive, and add each as a separate PROFINET device under the CPU. The Basic Panel still uses a single S7-1500 driver, so the HMI configuration is unchanged.

Why does the HMI acknowledge button not clear the drive fault on the first press?

The HMI button often maps only the alarm view's acknowledge event, which clears the HMI-side state but never reaches the drive. Map the button to DB_Drive1.HMI_AckReq and let the PLC edge-detect that level into a one-cycle pulse on STW1.7.

Back to blog