Integrating SINAMICS G120 via PROFIBUS Without FbDrive Libraries
Engineers commissioning SINAMICS G120 inverters on a SIMATIC PCS 7 V6.1 controller face a recurring question: can Telegram 20 or Telegram 352 be read and written directly through the I/O image produced by HW Config, or is a Siemens library (FbDrive, DriveES) mandatory? The answer is yes — both telegrams can be operated with raw word-level I/O access. This reference walks through the PROFIdrive mapping, the control-word sequencing required to start, stop, and fault-acknowledge the drive, and the practical steps to bring up two CU240 Control Units on a PCS 7 AS station without licensing a single drive library block.
System Overview and Problem Definition
The target architecture is a standard PCS 7 V6.1 automation station (AS) running on a SIMATIC S7-400 CPU (typically a CPU 417-4H or AS 410 in newer migrations), connected to two SINAMICS G120 inverters equipped with CU240B-2 DP or CU240E-2 DP Control Units. PROFIBUS DP, baud rate 1.5 Mbit/s, is the fieldbus of choice, and the goal is to extract speed setpoint, actual speed, torque, and current feedback without the FbDrive / DriveES SIMATIC libraries that the official PCS 7 APL example would normally use.
The difficulty is not in the protocol — Telegram 1, 20, and 352 are PROFIdrive-standard PPO mappings defined in the PROFIdrive profile. The difficulty is the perception that the drive library is "required." It is not. The library merely packages the standard PZD layout into a named function block (typically FB 166 in DriveES). Once you understand the underlying control word / status word (STW1 / ZSW1) bit assignments and the scaling of NSOLL_A / NIST_A, the raw I/O approach is actually smaller, easier to commission with a PROFIBus tester, and version-independent of any Siemens library hotfix.
Prerequisites
- SIMATIC PCS 7 V6.1 SPx installed on the engineering station with STEP 7 V5.4+ and HW Config available.
- Two SINAMICS G120 inverters with CU240B-2 DP or CU240E-2 DP Control Units. Firmware V4.5 or higher is recommended (V4.7 SP3 was the last released branch for the CU240B-2 line per the Siemens Industry Online Support release notes).
- STARTER V4.3+ or SINAMICS Startdrive for parameterization of the CU.
- PROFIBUS DP cable, PROFIBUS connectors with terminating resistors enabled at both ends of the segment.
- GSD file for the CU: SI018111.GSD for the CU240B-2 DP / CU240E-2 DP family (GSD revision 5 or higher). Downloaded from the Siemens support portal.
- Siemens example project, entry ID 58820849 — the free FB10 / FB11 source that can be copied into a PCS 7 CFC chart if you decide not to operate with raw I/O.
Telegram Selection: 1 vs 20 vs 352
The telegram number does two things: it sets the length of the cyclic PROFIBUS PZD payload, and it triggers the SINAMICS-side interconnection that decides which BICO source feeds each PZD word. The actual word layout in the PROFIBUS frame is what your STEP 7 program will read and write.
| Telegram | PZDs (out / in) | Output (PLC → drive) | Input (drive → PLC) | Typical use |
|---|---|---|---|---|
| 1 | 2 / 2 | STW1, NSOLL_A | ZSW1, NIST_A | Basic start/stop + speed |
| 20 | 6 / 6 | STW1, NSOLL_A, M_LIM, reserved, reserved, reserved | ZSW1, NIST_A, IAIST_GLATT, MIST_GLATT, PIST_GLATT, ZSW2 | Standard speed control with actual current, torque, power, and ZSW2 |
| 352 | 6 / 6 | STW1, NSOLL_A, M_LIM, STW2, reserved, reserved | ZSW1, NIST_A, IAIST_GLATT, MIST_GLATT, WARN_CODE, ZSW2 | Speed control with torque limit, warning code, and ZSW2 |
All three telegrams conform to the PROFIdrive application class 1 (AC1) model with PROFIdrive-typical signal scaling:
- NSOLL_A and NIST_A are normalized to 4000 hex = 100 % of p2000 (reference speed, default 1500 rpm).
- IAIST_GLATT (current) is normalized to 4000 hex = 100 % of p2002 (reference current, default driven by motor data).
- MIST_GLATT (torque) is normalized to 4000 hex = 100 % of p2003 (reference torque, default driven by motor rated torque).
Because Telegram 20 already provides MIST_GLATT and IAIST_GLATT, it is the typical choice for a PCS 7 faceplate that displays motor current and torque. Telegram 352 trades the power word (PIST) for a torque limit (M_LIM) and warning code (WARN_CODE), which is more useful if the drive is in a tension-control or winder application.
PROFIBUS GSD Installation in PCS 7 V6.1
- Copy SI018111.GSD and the matching bitmap file (SI0B8111.bmp or similar) into the STEP 7 GSD directory:
C:\Program Files\Siemens\Automation\S7\S7HWCNF\SDB\GSDor the equivalent PCS 7 path. - Launch HW Config and choose Options → Install GSD File. Browse to the file, install, and confirm that "SINAMICS G120 CU240B-2 DP" or "CU240E-2 DP" appears in the catalog tree under PROFIBUS DP → Drives → SIEMENS AG.
- Drag the G120 slave onto the PROFIBUS subnet. Assign a unique PROFIBUS address (typical: 4 and 5 to leave headroom for HMI and engineering tools).
- Double-click the slave icon, switch to the Configuration tab, and select the telegram. For Telegram 20, choose PPO type 6 / PZD 6/6 (Telegram 20); the slot in the slave's slot configuration will then display six PZD slots in each direction.
- Note the I and Q addresses assigned by HW Config — for example
IW 256..267andQW 256..267. These are the raw process values that the CFC program will read and write.
Repeat for the second drive. A two-drive PROFIBUS line typically looks like this:
Control Word and Status Word (PROFIdrive Profile)
STW1 and ZSW1 follow the PROFIdrive application class 1 state machine. The transition graph is non-trivial because bits 0–3 are "level-controlled" for some transitions and "edge-controlled" for others, and the OFF2 / OFF3 bits are "0 = active" fail-safe bits. The complete bit layout:
| Bit | STW1 (PLC → drive) | ZSW1 (drive → PLC) |
|---|---|---|
| 0 | ON / OFF1 (edge: 0→1 = ON, 1→0 = OFF1 ramp) | Ready to switch on |
| 1 | OFF2 (1 = coast stop enable, 0 = immediate coast) | Ready for operation |
| 2 | OFF3 (1 = enable, 0 = quick stop on ramp) | Operation enabled |
| 3 | Enable operation (inverter pulses enable) | Fault present (active) |
| 4 | Enable ramp-function generator (RFG) | OFF2 active |
| 5 | Unfreeze / start RFG (continue ramp) | OFF3 active |
| 6 | Enable setpoint (apply NSOLL_A to RFG) | Switching-on inhibited (internal interlock) |
| 7 | Fault acknowledge (0→1 edge = reset fault) | Alarm present (non-fatal) |
| 8 | Jog bit 0 (jog 1 via fixed setpoint 7) | Speed setpoint / actual deviation outside tolerance |
| 9 | Jog bit 1 (jog 2 via fixed setpoint 15) | Control requested (PLC must keep bit 10 of STW1 set) |
| 10 | Control by PLC (1 = PLC owns control) | f or n comparison value reached (within tolerance) |
| 11 | Reserved / set to 0 | I, M, or P limit reached |
| 12 | Reserved / set to 0 | Open holding brake / brake released |
| 13 | Reserved / set to 0 | Alarm: motor overtemperature |
| 14 | Reserved / set to 0 | Motor rotates forward (n_act ≥ 0) |
| 15 | Reserved / set to 0 | CDS bit (active command data set) |
The PROFIdrive state machine is what your CFC chart must reproduce. The canonical control-word sequence for a normal start is:
The 047E → 047F → 0C7F sequence is the same one used inside the FbDrive FB 166, but you can produce it with a simple word-arithmetic block in CFC. There is nothing magical about the library FB; it is just a state machine plus scaling.
Direct I/O Addressing in HW Config
Once the telegram is selected, HW Config gives each PZD a unique I and Q address. The mapping for Telegram 20 starting at input address 256 is:
| PZD word | Q address (PLC → drive) | Signal | IW address (drive → PLC) | Signal |
|---|---|---|---|---|
| PZD1 | QW 256 | STW1 — control word 1 | IW 256 | ZSW1 — status word 1 |
| PZD2 | QW 258 | NSOLL_A — speed setpoint | IW 258 | NIST_A — actual speed |
| PZD3 | QW 260 | M_LIM — torque limit | IW 260 | IAIST_GLATT — actual current |
| PZD4 | QW 262 | Reserved | IW 262 | MIST_GLATT — actual torque |
| PZD5 | QW 264 | Reserved | IW 264 | PIST_GLATT — actual power |
| PZD6 | QW 266 | Reserved | IW 266 | ZSW2 — status word 2 |
The PLC programmer reads IW 256 to obtain the drive's status word 1, masks bit 3 to detect a fault, and writes QW 256 with a literal hex value of 0x047F or 0x0C7F to enable the inverter. There is no library call in this code path; the CFC chart is just:
- An FB or FC written in SCL (or FBD) that owns the 6-word PZD for one drive. Place two instances of it — one per inverter — into the master CFC chart of the unit.
- An "enable" boolean tag (e.g.
CMD_ENABLE) and a "fault reset" rising edge tag (e.g.CMD_FAULT_ACK) at the chart boundary. - An SCL FB that:
- Holds
STW1 = 16#047Ewhile the drive is not requested to run. - Switches to
STW1 = 16#0C7Fon the rising edge ofCMD_START, but only if ZSW1 bit 6 ("switching-on inhibited") is 0 and bit 0 ("ready to switch on") is 1. - Pulses bit 7 of
STW1for one PROFIBUS cycle on the rising edge ofCMD_FAULT_ACK, with bit 3 already high so the drive accepts the reset. - Writes
NSOLL_Afrom a scaled REAL tag (RPM ÷ p2000 × 16384), defaulting to zero on stop. - Reads back ZSW1 / NIST_A / IAIST / MIST into process tags that the OS can render.
- Holds
An SCL template is included below for direct copy-into-the-CFC. The naming is intentionally minimal so that the chart can be re-used for both inverters.
// FB "G120_PZD20" — Telegram 20 raw I/O handler for SINAMICS G120
// Inputs are process tags; In/Out are HW Config I/O addresses
// No library dependency on FbDrive or DriveES
FUNCTION_BLOCK G120_PZD20
VAR_INPUT
iStart : BOOL; // Start command from OS
iStop : BOOL; // Stop command from OS
iFaultAck : BOOL; // Rising edge → fault acknowledge
iSpeedRpm : REAL; // Speed setpoint in engineering units (RPM)
iTorqueLimPct : REAL; // Torque limit in % of p2003
END_VAR
VAR_OUTPUT
oRunning : BOOL; // TRUE when ZSW1 bit 2 = 1 (operation enabled)
oFaulted : BOOL; // TRUE when ZSW1 bit 3 = 1
oActualRpm : REAL; // NIST_A scaled back to RPM
oActualAmps : REAL; // IAIST_GLATT scaled back to % of p2002
oActualTorqNm : REAL; // MIST_GLATT scaled back to % of p2003
oActualPower : REAL; // PIST_GLATT scaled back to % of r2004
END_VAR
VAR_IN_OUT
pioSTW1 : WORD; // QW 256, QW 272, etc.
pioNSOLL : WORD; // QW 258
pioMLIM : WORD; // QW 260
pioZSW1 : WORD; // IW 256
pioNIST : WORD; // IW 258
pioIAIST : WORD; // IW 260
pioMIST : WORD; // IW 262
pioPIST : WORD; // IW 264
pioZSW2 : WORD; // IW 266
END_VAR
VAR
sState : INT := 0; // 0=OFF1, 1=RUN, 2=FAULT
sFaultAck : BOOL;
sFaultAckP : BOOL; // edge memory
sRunCmd : BOOL;
END_VAR
BEGIN
// ---- Decode status ----
oFaulted := (pioZSW1 AND 16#0008) <> 0; // ZSW1.3
oRunning := (pioZSW1 AND 16#0004) <> 0; // ZSW1.2
oActualRpm := INT_TO_REAL(WORD_TO_INT(pioNIST)) / 16384.0 * 1500.0; // p2000 default
oActualAmps := INT_TO_REAL(WORD_TO_INT(pioIAIST)) / 16384.0 * 100.0; // % of p2002
oActualTorqNm := INT_TO_REAL(WORD_TO_INT(pioMIST)) / 16384.0 * 100.0; // % of p2003
oActualPower := INT_TO_REAL(WORD_TO_INT(pioPIST)) / 16384.0 * 100.0; // % of r2004
// ---- Edge-detect fault acknowledge ----
sFaultAck := iFaultAck AND NOT sFaultAckP;
sFaultAckP := iFaultAck;
// ---- Encode control word ----
sRunCmd := iStart AND NOT iStop;
IF oFaulted THEN
// Pulse STW1 bit 7 for one scan, with bit 0 = 0
pioSTW1 := 16#0C7E OR (sFaultAck * 16#0080);
ELSIF sRunCmd THEN
// Bits 0,1,2,3,6,10 set → 0C7F (held in S4)
pioSTW1 := 16#0C7F;
ELSE
// 047E = OFF1 ramp; OFF2/3 still held high
pioSTW1 := 16#047E;
END_IF;
// ---- Scale setpoint and torque limit ----
pioNSOLL := REAL_TO_WORD( LIMIT(0.0, iSpeedRpm / 1500.0, 1.0) * 16384.0 );
pioMLIM := REAL_TO_WORD( LIMIT(0.0, iTorqueLimPct / 100.0, 1.0) * 16384.0 );
END_FUNCTION_BLOCK
This block has no external library dependency; it compiles against the standard PCS 7 S7-SCL compiler shipped with V6.1. The two inverters become two FB instances with different InOut pointer addresses. The PCS 7 OS picture picks up the outputs through standard chart I/O — no DriveES, no FbDrive.
Free Function Blocks FB10 and FB11 Approach
The Siemens example project published under support entry ID 58820849 contains a pair of free FBs (FB10 and FB11) for the S7-300/400 platform with STEP 7 V5.x. FB10 handles a standard Telegram 1 mapping, and FB11 handles Telegram 532 (an extended mapping useful for the G120P). Although the project was written for STEP 7 and not for PCS 7, the FBs are pure SCL sources without any PCS 7-specific APL dependency, so they can be copied into a PCS 7 V6.1 S7 program as a stand-alone unit.
- Download the ZIP from the Siemens support entry. Extract FB10 and FB11 (SCL source files).
- Open the S7 program in PCS 7. Use Options → SCL Compiler to import and compile the SCL sources. They will appear in the program as new FB blocks numbered 10 and 11 (or any free number that does not collide with the existing master data library).
- Create an instance DB for each drive (e.g. DB10 for drive 1, DB20 for drive 2).
- Call the FB from a CFC chart with the InOut parameter wired to the same PZD addresses used in the raw I/O example. The FB's Boolean I/O (start, stop, fault, fault acknowledge, ready, running) can be wired straight to the OS faceplate inputs and outputs.
The advantage of the FB approach over raw I/O is that the FB already implements the 047E → 047F → 0C7F state machine and the NIST_A scaling with the correct p2000 reference. The disadvantage is that the FB ships with a fixed telegram (532) and a fixed PROFIdrive class; for Telegram 20 with CU240B-2 DP, the raw I/O method is shorter.
PCS7 V6.1 CFC Integration Steps
- Open the unit's master CFC chart (e.g.
UNIT_AGT1). - Insert a new chart for "Drive I/O" (e.g.
UNIT_AGT1_DRV). This isolates the drive logic from the process logic and makes the OS picture assignment cleaner. - Place the SCL FB
G120_PZD20twice — once for drive 1, once for drive 2. Wire the InOutpioSTW1,pioNSOLL, etc. to the symbolic names of the PZD process I/O. PCS 7 V6.1's CFC compiler will resolve these symbols to the absolute addressesQW 256..266andIW 256..266. - From the OS picture, route the operator's "Start" and "Stop" buttons to the chart inputs. Route
oRunning,oFaulted, andoActualRpmto the faceplate's status icons and numerical display. - For a touch-panel style of interlocking, the chart input
iStartshould be qualified with the unit-level permissive (e.g.PERMISSIVE_AGT1ANDEMERGENCY_OK). The chart itself should not embed any higher-level interlocks — that belongs in the process chart. - Compile the S7 program and the OS. The standard PCS 7 download sequence (AS → OS) is sufficient. There is no DriveES compilation step and no FbDrive instance DB generation step.
Commissioning and Verification
Bring-up order matters. Use this sequence, with the SINAMICS STARTER tool connected to the CU240's service interface (X127) over Ethernet for diagnostics and parameterization.
- Bus up. Confirm PROFIBUS handshake with both drives by reading the diagnostic buffer in HW Config. The slaves should report "DP-Slave OK" and the cyclic I/O should turn green in netPROFIBUS or in the S7 diagnostic view.
-
Drive OK with no control. Issue a manual
QW 256 = 16#047Efrom the S7 variable table. The drive should remain in state S2 (Ready to switch on) with ZSW1 = 0x0631 (typical: bit 0, 1, 6 = 1; alarm bits 7, 15 may also be present). -
Enable with no setpoint. Set
QW 256 = 16#0C7F. The drive should transition S2 → S3 → S4. ZSW1 should change to 0x0E37 (bits 0, 1, 2, 4, 6 = 1; bit 3 = 0). The motor will not move because NSOLL_A is 0. -
Run. Apply
QW 258 = 16#2000(50 % of 0x4000 = 50 % of p2000 = 750 rpm by default). Monitor IW 258 — NIST_A should ramp up at the rate set by p1120 (default 10 s for 1500 rpm). -
Stop. Set
QW 256 = 16#047E(drop bit 0). The drive should ramp down at p1121, transition S4 → S3 → S2, and the motor should stop. -
Fault inject and reset. Use STARTER to inject a fault (e.g. toggle a digital input wired to the CU's external fault input). ZSW1 bit 3 should go to 1. The drive should drop to S1 (Switch-on inhibit). In the CFC, set
iFaultAck := TRUE; the FB should pulse STW1 bit 7 and the fault should clear. - Bus loss. Pull the PROFIBUS connector. The drive should run to OFF1 (if p0852 = 1) or OFF2 (if configured to follow bus-fail). Verify that the OS faceplate shows the bus diagnostic.
Diagnostic Tools and LED Indicators
The CU240B-2 DP and CU240E-2 DP have a four-LED front panel: RDY (ready), BF (bus fault), SAFE (safety), and a drive-specific status LED. The PROFIBus-related states are:
| RDY | BF | Meaning | Action |
|---|---|---|---|
| Green, steady | Off | Cyclic I/O active | Normal operation |
| Green, 0.5 Hz | Off | No cyclic I/O, drive ready | PLC not yet sending data; check OB82 / OB86 |
| Green, 0.5 Hz | Red, 0.5 Hz | PROFIBUS master not found | Check connector, address, baud rate |
| Green, 2 Hz | Red, 2 Hz | PROFIBUS configuration mismatch | Telegram selected in HW Config differs from drive parameter p0922 |
| Yellow, 0.5 Hz | Red, steady | Bus fault, drive is in S0 or S1 | PLC stopped; check CPU run/stop |
For an in-depth look at the device-side parameter view, use the SINAMICS G120 in TIA Portal documentation as a cross-reference for parameter p0922 (IF1 PROFIdrive telegram selection) and p2030 (fieldbus interface protocol). On PCS 7 V6.1 with STEP 7 V5.x, the same parameters are set with STARTER over the X127 service port, not from inside TIA Portal.
Troubleshooting Matrix
| Symptom | Likely root cause | Verification | Correction |
|---|---|---|---|
| Drive does not leave S2 even with STW1 = 0x0C7F | Bit 10 (Control by PLC) not set, or p0852 ≠ 1 | Read ZSW1: bit 9 "Control requested" should be 1 | OR bit 10 into STW1 every cycle; in STARTER, set p0852 = 1 (inhibit OFF via fieldbus) |
| Drive runs, but NIST_A returns 0x0000 always | Different telegram selected in HW Config than in p0922 | STARTER → Configuration → Telegram; should match HW Config | Set p0922 = 20 (or 352) in the drive; reload HW Config |
| BF LED red, RDY green flashing 2 Hz | Configuration frame mismatch | Use PROFIBus diagnostic tool to dump slave diag | Re-check the PZD count in HW Config; must equal what STARTER shows |
| Drive trips with F07901 immediately on first start | Motor data incomplete (p0344, p0350…p0362) | Read fault buffer in STARTER | Run motor data identification (p1910) with the motor decoupled |
| BF stays red after CPU stop | No substitute value behavior configured | Check p2042 and p2045 | Set p2042 = 1 (last value) or 0 (zero setpoint) and re-start the CPU |
| Actual current scales incorrectly | Engineering unit is % of p2002, not amps | Check p2002 (reference current) | Recompute scaling as IAIST_GLATT / 0x4000 × p2002 |
| Torque limit takes no effect | Telegram 1 selected (M_LIM not present) | Inspect HW Config PZD3 output | Switch to Telegram 20 or 352, where PZD3 is M_LIM |
| Fault acknowledge has no effect | STW1 bit 7 toggled while STW1 bit 3 = 0 | Hold bit 3 high in SCL during the ack pulse | Issue 0x0C7F + 0x0080 for one PROFIBus cycle, then drop bit 7 |
| Motor ramps, but reverses direction unexpectedly | NIST_A sign convention depends on p1300 control mode | Check p1300 in STARTER | For p1300 = 21 (sensorless vector), forward command = positive NSOLL_A |
| PLC loses drive, OS faceplate freezes | OB86 (rack failure) not loaded | Check S7 diagnostic buffer for OB86 call | Load OB86 with a default block (SFC51 to log the bus failure) and wire to OS fault indicator |
Performance and Cycle Time Considerations
Two G120 slaves at 1.5 Mbit/s on a single PROFIBus segment do not stress the bus. The total cyclic payload for two Telegram 20 drives is 12 PZD words per direction, or 24 bytes of useful data. At 1.5 Mbit/s this is well under 1 ms of bus time, and the S7-400 OB1 cycle of a PCS 7 AS is typically 50–150 ms, so the drive update is invisible.
The relevant timing is the drive-side ramp generator. With p1120 = 10 s (default) and p2000 = 1500 rpm, a full 0 → 1500 rpm setpoint change takes ten seconds. The PROFIBus cycle of 1–4 ms is not the bottleneck; the setpoint refresh rate from the PLC is.
Comparison With Library-Based Approach
| Aspect | Direct I/O (this article) | FbDrive / DriveES library |
|---|---|---|
| Library license required | No | Yes, DriveES PCS 7 license |
| Code path length | ~1 FB instance per drive | FB 166 / FB 267 instance per drive plus DriveES wizard |
| Standard telegram support | Any (1, 2, 3, 4, 5, 6, 20, 352…) | Mostly Telegram 1, 4, 6, 102, 103, 105, 106, 116 |
| Traceability of the STW1 / ZSW1 bits | Visible in your SCL source | Hidden inside the library FB |
| Online fault diagnosis | Standard S7 variable table | Library-specific I/O names |
| PCS 7 APL integration | Requires manual faceplate generation | Pre-built APL faceplates available |
| Library hotfix / firmware compatibility | Not applicable | Dependent on DriveES version |
The library approach is justified when the OS faceplate must be a standard PCS 7 APL drive faceplate and the team is large enough that the abstraction pays for itself. For a small retrofit of two agitators or pumps, the direct I/O method produces a smaller, easier-to-debug program.
Summary of Key Numbers
| Item | Value |
|---|---|
| Control word literal (run, S4 held) | 16#0C7F (also written 0x0C7F) |
| Control word literal (off, S2 held) | 16#047E |
| Fault acknowledge (one-cycle pulse) | STW1 OR= 0x0080 with bit 3 high |
| Speed scaling (NSOLL_A / NIST_A) | 0x4000 = 100 % of p2000 (default 1500 rpm) |
| Current scaling (IAIST_GLATT) | 0x4000 = 100 % of p2002 (drive default) |
| Torque scaling (MIST_GLATT) | 0x4000 = 100 % of p2003 (drive default) |
| Power scaling (PIST_GLATT) | 0x4000 = 100 % of r2004 (derived from motor) |
| PROFIBus baud rate (recommended) | 1.5 Mbit/s, DP-V1 |
| CU240B-2 DP / CU240E-2 DP GSD | SI018111.GSD (revision 5+) |
| Recommended telegram | 20 (current, torque, power, ZSW2) |
Frequently Asked Questions
Can Telegram 20 and Telegram 352 be read and written without FbDrive or DriveES?
Yes. Telegrams 1, 20, and 352 are PROFIdrive-standard PZD layouts; the HW Config cyclic I/O image exposes them as ordinary input and output words (for example QW 256 / IW 256 for STW1 and ZSW1). A small SCL FB is sufficient to implement the 047E → 047F → 0C7F state machine and the NIST_A scaling.
What is the minimum control word value to start a SINAMICS G120 via PROFIBus?
0x0C7F (hex). Bits 0, 1, 2, 3, 6, and 10 must be set; bit 10 ("Control by PLC") tells the drive that the fieldbus is the active command source. For "ready to switch on" the safe intermediate value is 0x047E (bits 1, 2, 6 set, bit 0 cleared).
How do I acknowledge a drive fault from PCS 7?
Set STW1 bit 7 for one PROFIBus cycle while bit 3 ("Enable operation") is held high. The SCL template in this article pulses 0x0C7F OR 0x0080 on the rising edge of the operator's fault-acknowledge button. ZSW1 bit 3 falling from 1 to 0 confirms the reset.
Why does Telegram 20 show zero actual current even though the motor is loaded?
IAIST_GLATT is normalized to 0x4000 = 100 % of p2002 (reference current). If p2002 was left at the factory default and the actual motor is much smaller, the scaled value will be a large fraction. If p2002 was set too high, the scaled value will be small. Verify p2002 in STARTER and recompute the engineering-unit conversion in the CFC chart.
Can the same SCL FB be used for both a CU240B-2 DP and a CU240E-2 DP?
Yes, as long as both drives are configured with the same telegram (Telegram 20 is the common choice). The CU240E-2 supports more telegrams and offers safety I/O, but the standard Telegram 20 PZD layout is identical between the two Control Units. Only the InOut pointer addresses change per drive.
Do I need the DriveES SIMATIC library for a PCS 7 V6.1 APL drive faceplate?
Only if you want a pre-built APL faceplate with the standard PCS 7 drive icons and operator dialogs. If you are willing to draw a custom faceplate, the direct I/O method gives you the same ZSW1 bits, NIST_A, and MIST_GLATT values and eliminates the DriveES license dependency. The Siemens example project under support entry ID 58820849 provides a free FB10 / FB11 pair that fills the middle ground: pre-built, no DriveES, but tied to Telegram 1 / 532 layouts.