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.
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.
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:
- Extend p2040 during commissioning - set p2040 = 5000 ms, complete downloads, then restore to 100 ms once the project is signed off.
- 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.
- Disable the watchdog in test cells only - p2040 = 0 turns monitoring off. Do not run production with p2040 = 0.
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.
| 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 |
| 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:
- The G120C raises PROFINET diagnostic interrupts on its PN interface.
- The S7-1500 receives these interrupts and stores them in the device diagnostics buffer.
- The HMI alarm view is configured to render PLC alarms, and the SINAMICS GSDML plus Startdrive HSP installs the alarm text IDs.
- 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.
6. Drive-Side Configuration in TIA Portal / Startdrive
- Install the matching GSDML/Startdrive HSP for the G120C firmware revision.
- Insert the G120C PN as a PROFINET device on the S7-1500 IO controller.
- Assign a unique PROFINET device name (e.g.
DRV1_G120C) and a fixed IP. - 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.
- 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)
-
- 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
-
FW V4.4 to V4.6:
- Set
p2040to a commissioning value (e.g.p2040 = 1000ms) and copy RAM to ROM. - Save the project and download to the drive.
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
- Add the KTP900 Basic PN to the TIA project and assign it the same PROFINET subnet as the CPU.
- Configure the HMI connection to point at the S7-1500 (IP, rack/slot 0/1).
- 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).
- 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.
- 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.
- Insert an "Acknowledge" button on the alarm view toolbar or a custom button. Set its
SetBitWhilePressedevent to"DB_Drive1".HMI_AckReq := TRUE. The FB above converts the level into an edge on STW1 bit 7. - Add status indicators bound to
DB_Drive1.Drive_Fault,DB_Drive1.Drive_Alarm, andDB_Drive1.Drive_Runwith a colour animation (red, yellow, green). - Configure the alarm acknowledgement globally: Project, Runtime settings, Alarms, Acknowledgement = "By selection" or "By button".
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.
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.