SINAMICS G120 CU240E: Configuring P840 for Momentary Pushbutton Motor Start
Overview
The Siemens SINAMICS G120 modular frequency converter, when equipped with a CU240E-2 Control Unit, expects a continuous high level on its OFF1 command source (parameter p0840) for the duration of a run. This contradicts the way most field operators expect a "Start" pushbutton to behave: tap once, motor runs; tap Stop, motor stops. This article explains why a one-shot pulse will not work on a stock CU240E-2, and the standard latching approach using BICO parameters p3330 / p3331 / p3332 together with macro p0015 = 19 (three-wire control).
The reference installation pairs a SINAMICS G120 with a SIMATIC S7-300 PLC for supervisory control, while a local "cockpit" pushbutton station (Start NO + Stop NC) is wired directly to the CU240E-2 digital inputs. Motor speed is sourced from the drive's internal fixed setpoint table (p1001...p1007) so the PLC is only required for interlocking and fault reset, not for speed reference.
Prerequisites
- SINAMICS G120 with CU240E-2 Control Unit, firmware 4.4 SP3 or later (F-variant required if STO is needed).
- Commissioning tool: STARTER (classic), SINAMICS Startdrive in TIA Portal, or an IOP-2 Intelligent Operator Panel.
- Two momentary pushbuttons: Start (NO, spring-return) and Stop (NC, spring-return).
- SIMATIC S7-300 CPU (e.g. CPU 315-2 PN/DP) with at least one digital output module (SM 322) and one digital input module (SM 321) for status feedback.
- 24 V DC control supply, three-phase line feeder, motor with nameplate data available.
- Wiring: PROFIBUS DP or PROFINET cable between the S7-300 CPU and the CU240E-2 PN/DP variant for cyclic data exchange.
Reference documentation: Siemens Industry Online Support — search "SINAMICS G120 CU240E-2" for the Operating Instructions, List Manual and Function Manual. The macro descriptions and BICO details below are taken from the SINAMICS G120 List Manual, available through the same support portal.
How OFF1, OFF2 and OFF3 Gate the Power Stage
The SINAMICS G120 gating logic uses three independent enable signals. Each one has a different source parameter and a different stop behavior:
| Signal | Source parameter | Status | Active level | Behavior |
|---|---|---|---|---|
| OFF1 | p0840 |
r0840 |
High (rising edge starts) | Ramp-down along p1121; a 0→1 transition is required to start |
| OFF2 | p0844 |
r0846 |
Low (inverted) | Immediate pulse inhibit, motor coasts |
| OFF3 | p0845 |
r0848 |
Low (inverted) | Fast stop along p1135 ramp, then pulse inhibit |
All three enables must be true (OFF1 = 1, OFF2 = 1, OFF3 = 1) for the inverter state machine to reach "Operation enabled" (status word bit ZSW1.2 = 1). The drive state diagram is defined in the SINAMICS G120 Function Manual chapter "Drive states".
OFF1 is often called the "drive enable" in field documents, but that is misleading: OFF1 alone is not a complete enable. A common commissioning mistake is to wire OFF1 to a momentary contact and watch the motor run for the duration of the button press, then ramp down when the button is released. This is correct drive behavior; it is the wiring and logic that must be fixed, not the parameter.
Why a Pulse Alone Fails on P0840
On a stock CU240E-2 with the default macro p0015 = 12 (terminals, two-wire), the BICO chain is:
-
p0840[0]defaults tor722.0(DI0) on the macro. -
r722.0mirrors the level on the DI0 terminal at the control scan rate (typically 4 ms on a CU240E-2). - OFF1 is set while DI0 is high. When DI0 goes low, OFF1 falls and the drive ramps down along
p1121.
There is no internal memory in the OFF1 path: a 100 ms pulse on DI0 will run the motor for 100 ms, then ramp to zero. Two practical remedies are available:
- Three-wire control macro (p0015 = 19): the drive internally latches the start command and ignores the input level once the start edge is captured. This is the cleanest solution for a local cockpit with Start/Stop pushbuttons.
-
PLC-side latching: the S7-300 captures the Start edge into a retentive flag (SR flip-flop, FB RS), and outputs the latched bit to a digital output wired back into a CU240E-2 DI assigned to
p0840. Use this if you need conditional start logic (permissives, mode selection) before enabling the drive.
For a pure local station, the three-wire macro is preferred because the safety path lives entirely inside the drive, so a CPU Stop on the S7-300 cannot strand the motor in a partially-enabled state.
Macro P0015 = 19 — Three-Wire Control
Macro 19 reconfigures the digital inputs on the CU240E-2 as follows after a factory reset or after a manual write of p0015 = 19 + p0971 = 1:
| Terminal | Signal | Type | Function |
|---|---|---|---|
| DI0 (X131.1) | r722.0 | NC contact, active low | Stop pushbutton (OFF1 cleared on release) |
| DI1 (X131.2) | r722.1 | NO contact, rising edge | Start pushbutton (latches run) |
| DI2 (X131.3) | r722.2 | NO contact, level | Direction reversal (CW/CCW) |
| DI3 (X131.4) | r722.3 | — | Free for application (e.g. fault reset) |
| DI4 (X131.5) | r722.4 | — | Free for application (e.g. fixed setpoint bit 0) |
| DI5 (X131.6) | r722.5 | — | Free for application (e.g. fixed setpoint bit 1) |
Macro 19 also rewires the command source: p0840[0] is automatically assigned to the output of the internal three-wire logic block, which is exposed on connector r3333.0. The three inputs to that block are configured by:
-
p3330— three-wire command 1 (start pulse, rising-edge evaluated) -
p3331— three-wire command 2 (run CW enable, level) -
p3332— three-wire command 3 (run CCW enable, level)
Internally, the three-wire block behaves as: latch the start edge if command 2 XOR command 3 is true, clear the latch when command 1 is false (Stop). This is the standard start-stop latching used in relay logic, with an edge detector on the start to prevent a stuck Start pushbutton from re-triggering after a Stop release.
Step-by-Step: BICO Configuration with P3330 / P3331 / P3332
The following procedure implements the latched pulse-start using the three-wire logic block. The default wiring after macro 19 already gives a working Start/Stop on DI0/DI1, so the steps below only differ from the default when you need to remap the source (for example, route the start command from a PLC bit instead of a physical DI).
- Perform a factory reset to clear any previous BICO routing: set
p0010 = 30,p0970 = 1, wait for completion. - Run basic commissioning: motor nameplate, line voltage, application class (p0501), motor identification (p1900 = 2 or 1).
- Set
p0010 = 0to leave commissioning mode. - Write macro 19:
p0015 = 19. The drive will overwrite the default BICO wiring forp0840,p0844,p0845,p1113and the DI function assignments. - Activate the macro:
p0971 = 1(save RAM to ROM, ~5 s on a CU240E-2). - If the default DI mapping is acceptable, no further work is required. If the cockpit wiring uses DI0 for the start, the working configuration reported in the field is:
p0015 = 19 // three-wire control macro p3330 = r722.0 // command 1 source = DI0 (start pulse) p3331 = 1 // command 2 source = fixed high (run CW) p3332 = 0 // command 3 source = fixed low (run CCW) - If you need the start from a PLC bit received over PROFINET, reassign:
p3330 = 2090.0 // start from PZD bit r2090.0 (mapped from STW1.0 area) p3331 = 1 // run CW locked on p3332 = 0 // run CCW locked off - Confirm
p0840[0] = r3333.0(it should already point there after macro 19). The latched output of the three-wire block feeds OFF1. - Configure the fixed setpoint for the required speed:
p1001 = 35.00 // fixed setpoint 1 = 35 Hz (motor 1) p1002 = 50.00 // fixed setpoint 2 p1015 = 1 // motor potentiomter disabled p1070[0] = r1024 // main setpoint = fixed setpoint selector output r1024 source: p1020[0] = 0 // fixed setpoint 1 active by default - Save with
p0971 = 1.
Parameter Map of the Working Configuration
| Parameter | Value | Description |
|---|---|---|
p0015 |
19 | Macro: three-wire control, pulse start/stop |
p0840[0] |
r3333.0 |
OFF1 source = latched output of three-wire block |
p0844[0] |
r722.0 (default after macro) |
OFF2 source, normally tied to a hardwired enable |
p0845[0] |
1 (default after macro) | OFF3 not used in macro 19; held high |
p1113[0] |
r722.2 | Setpoint inversion (direction reversal) source = DI2 |
p3330 |
r722.0 |
3-wire command 1: start pulse from DI0 |
p3331 |
1 | 3-wire command 2: run CW, fixed high |
p3332 |
0 | 3-wire command 3: run CCW, fixed low |
p1001...p1007
|
application Hz | Fixed setpoints 1..7 |
p1020[0]...p1023[0] |
binary code | Fixed setpoint selector bits, default 0 selects p1001 |
p1070[0] |
r1024 |
Main setpoint source |
p1120 |
10 s | Ramp-up time (application-dependent) |
p1121 |
10 s | Ramp-down time (OFF1 stop) |
p1135 |
5 s | OFF3 ramp time |
p2103 |
r722.3 |
Fault acknowledge source (DI3 rising edge) |
p0971 |
1 | Save parameters from RAM to ROM |
Local Cockpit Wiring (Text Wiring Diagram)
Three-Wire Logic Block — Internal Truth Table
The block behind r3333.0 behaves as a Set/Reset flip-flop with a start edge detector. The table below summarizes the next-state value of r3333.0 for typical input combinations after a previous cycle of Q_prev:
| Start (p3330, edge) | Run CW (p3331) | Run CCW (p3332) | Q_prev | Q_next (r3333.0) |
|---|---|---|---|---|
| 0→1 (rising edge) | 1 | 0 | 0 | 1 (latch run) |
| 0→1 (rising edge) | 0 | 1 | 0 | 1 (latch reverse run) |
| 0→1 (rising edge) | 1 | 1 | 0 | 0 (invalid, both directions) |
| No edge | 1 | 0 | 1 | 1 (stay running) |
| No edge | 0 | 0 | 1 | 0 (Stop, coast) |
| No edge | 1 | 0 | 0 | 0 (stay stopped) |
Note that the start input is edge-sensitive on the leading edge, so a stuck Start pushbutton cannot re-trigger the drive after a Stop release. This is the same protection that the standard relay-based motor starter provides with a holding contact.
Integration with the S7-300 PLC
The S7-300 is the supervisory controller: it handles higher-level interlocks, sends a remote Start/Stop to the drive, reads back the status word, and provides the operator panel HMI. The local cockpit pushbuttons are wired directly to the CU240E-2 DIs so the drive can start and stop with the PLC offline (a common requirement for commissioning and service).
Recommended signal split between PLC and drive:
- Drive local (hardwired): Start NO, Stop NC, Direction reversal, Fault acknowledge. These go straight to the CU240E-2 DIs and participate in the three-wire block.
- PLC remote: Drive enable (STW1.3), Speed reference (NSOLL in telegram 1), Coast stop bit (STW1.1), Fast stop bit (STW1.2), Fault acknowledge (STW1.7).
- Drive to PLC (read): ZSW1 status, ZSW2 status, actual speed (NIST), fault word (r2131 or fault buffer).
PROFIdrive Telegram 1 Word Assignments
| Word | Direction | Name | Bit 0 | Bit 1 | Bit 2 | Bit 3 | Bit 7 |
|---|---|---|---|---|---|---|---|
| STW1 | PLC → Drive | Control word 1 | ON/OFF1 | OFF2 (low active) | OFF3 (low active) | Enable operation | Fault ack |
| NSOLL | PLC → Drive | Speed setpoint | scaled speed, 0x4000 = motor rated (p2000) | ||||
| ZSW1 | Drive → PLC | Status word 1 | Ready to switch on | Ready to operate | Operation enabled | Fault present | Alarm active |
| NIST | Drive → PLC | Actual speed | scaled actual speed | ||||
With macro 19, the local Start/Stop on DI0/DI1 controls the drive directly through the three-wire block. The PLC should not toggle STW1.0 for normal start/stop if a local operator is using the cockpit — that would be a race condition between two sources. Instead, use STW1.3 (Enable operation) as a global enable that gates the drive from the PLC, and let the local Start pushbutton do the latching.
Sample S7-300 STL Logic for Drive Enable Latch
// DB "DriveDB"
A "Start_PB" // Start pushbutton (NC contact in PLC slot, DI0 of SM321)
AN "Stop_PB" // Stop pushbutton (NC)
AN "Drive_Fault" // Fault feedback from drive
S "Drive_Enable" // Latch run
O "Stop_PB"
O "Drive_Fault"
ON "Mode_Remote" // Mode switch in remote
R "Drive_Enable"
// Build STW1
L 0
T "STW1" // Clear
A "Drive_Enable"
S "STW1.0" // ON/OFF1
AN "Coast_Stop" // From HMI or safety relay
R "STW1.1" // OFF2 low
AN "Fast_Stop"
R "STW1.2" // OFF3 low
A "Permissive_OK" // All process permissives true
S "STW1.3" // Enable operation
A "Fault_Ack_PB" // From HMI
S "STW1.7" // Fault acknowledge rising edge
Verification Procedure
- Power up the drive, confirm the RDY LED on the CU240E-2 is solid green and the SF/BF LEDs are off. A flashing RDY at 2 Hz means commissioning is not complete.
- Issue a single Start pulse on DI0 (tap and release the Start pushbutton). Verify
r3333.0 = 1in the BICO trace and thatr0840.0follows. - Confirm the motor accelerates along
p1120to the fixed setpoint (e.g. 35 Hz) and that the Operation bit ZSW1.2 is set. - Issue a Stop by releasing the Stop pushbutton (NC opens). The drive must ramp down along
p1121and the ZSW1.2 bit must clear. - Test the stuck-Start behavior: hold the Start pushbutton, press Stop, release both. The drive must remain stopped until a new Start edge is detected.
- Trip a fault (e.g. by disconnecting the encoder cable if used, or by setting
p1900 = 1briefly). Confirm the drive trips, OFF1 is cleared, and a fresh Start pulse is required after the fault is acknowledged. - Toggle the PLC-side
STW1.3(Enable operation) while the drive is running via the local start. The drive must follow the enable: clear → ramp stop; set → require a new start edge from DI0.
Status Word, Faults and Alarms
Key Status Bits
| Bit | Name | Description |
|---|---|---|
r52.0 |
Drive ready | All internal preconditions met |
r52.1 |
Drive running | Power stage active, modulation on |
r52.2 |
Run active | Setpoint reached and stable |
r52.3 |
Fault present | At least one unacknowledged fault |
r52.4 |
Coast stop active | OFF2 active low |
r52.5 |
Fast stop active | OFF3 active low |
r52.6 |
Switch-on inhibit | Must be cleared by ON→OFF→ON sequence |
| ZSW1.2 | Operation enabled | Drive is in run state 4 |
| ZSW1.3 | Fault present | Active fault, OFF1 cleared |
| ZSW1.6 | Switch-on inhibit | OFF1 cycle required to clear |
Common Faults When Wiring Pulse Start
| Fault code | Name | Typical cause | Remedy |
|---|---|---|---|
| F30001 | Overcurrent | Short circuit, motor stalled, ramp too short | Check motor wiring, increase p1120, run motor ID (p1900=2) |
| F30002 | DC-link overvoltage | Regenerative load, no brake resistor | Increase p1121, add brake chopper (set p0212), fit brake resistor |
| F30003 | DC-link undervoltage | Line dip, wrong p0210 setting | Check line voltage, set p0210 to actual supply, check DC bus wiring |
| F30004 | Inverter overtemperature | Fan blocked, ambient too high, overload | Clean fan, derate drive, check load profile |
| F30005 | Power unit I²T overload | Continuous current above rating | Check motor current, derate or use larger drive |
| F30011 | Line phase failure | One phase missing | Check line fuses, contactor, terminal torque |
| F30015 | Motor cable phase failure | Loose motor terminal | Check U2/V2/W2 torque, cable integrity |
| F07801 | Motor overload | Tripped p0605/p0606
|
Set nameplate current, verify p0305, check load |
| F07901 | Motor stalled | Shaft locked, ramp too aggressive | Lengthen p1120/p1121, check coupling |
| F08501 | PROFIdrive comm loss | PROFIBUS/PROFINET timeout | Set p2040/p0925, check telegram, cable, connector |
| F08701 | Encoder signal lost | Encoder cable break | Check D-Sub wiring, set p0400 to correct encoder |
| A05001 | Setpoint source not configured |
p1070 left at zero |
Wire p1070 to a valid source, e.g. r1024
|
| A07901 | Motor overtemperature warning | PTC threshold reached | Check ventilation, set p0601 to 2 for PTC |
| A08502 | PROFIdrive comm warning | Cyclic timeout threshold 1 | Increase watchdog time, check bus load |
Combining PLC and Local Start
If the application requires a Start from both the local cockpit and the HMI, OR the two sources before routing them to the three-wire block. The simplest implementation uses a BICO connector:
p2099.0 = r722.0 // OR r2090.0 (PLC bit from PZD)
p3330 = r2099.0 // 3-wire command 1 = combined source
Note that r2090 is a PZD-receive connector that mirrors the STW bits received from the PLC. After a Start edge from either the local DI or the PLC, the three-wire block latches run. The Stop path is more subtle: in macro 19, the local NC Stop pushbutton on DI1 is the OFF2 source by default, so opening the local Stop will not clear the latch through the three-wire block — the OFF2 takes priority and removes the power stage directly. This is a safe default: a hardwired Stop always wins over a remote command.
Commissioning Procedure (STARTER / Startdrive)
- Connect the S7-300 to the CU240E-2 over PROFINET. Verify the CPU detects the drive in the device list and that a PROFIdrive telegram is configured (typically standard telegram 1, PZD 2/2).
- Open the drive in STARTER or TIA Portal (Startdrive). Run an online connection.
- Restore factory settings:
p0010 = 30,p0970 = 1. Wait for the drive to confirm completion. - Run the basic commissioning wizard. Enter motor nameplate (p0300-p0311), line voltage (p0210), application class (p0501 = 1 for standard V/f), and command source. Set the command source to "Terminals" because the macro will be loaded next.
- Run motor identification at standstill or rotating (p1900 = 1 or 2) when the motor is decoupled and safe to spin.
- Set
p0015 = 19,p0971 = 1. Verify the BICO wiring in the expert list (p0840 = r3333.0, p3330 = r722.0, p3331 = 1, p3332 = 0). - Set the fixed setpoints
p1001...p1007for the application speeds, and configurep1070 = r1024with the selector source of your choice. - Save to ROM and test the cockpit: Start → run, Stop → ramp down, Direction → reverse. Test the stuck-Start scenario.
- Run the S7-300 logic and verify that the drive follows PLC commands and that local pushbuttons work even with the CPU in Stop.
Edge Cases and Field-Proven Caveats
-
Macro 19 overrides the command source. If you had previously wired
p0840manually to a different source, macro 19 will overwrite it without warning. Recheck the BICO routing after writingp0015 = 19. - OFF2 polarity is inverted. A common mistake is to wire an NO Stop pushbutton to OFF2 expecting a high level to stop. OFF2 is active low: the input must be high for normal operation, and a low level coasts the drive. NC contacts are mandatory for hardwired Stop on OFF2.
-
Switch-on inhibit after a fault. When a fault is acknowledged but the previous state was "fault with switch-on inhibit", the drive requires a 1→0→1 transition on OFF1 to clear the inhibit. The three-wire latch in
r3333.0will be cleared by the fault, so the operator must press Start again. -
Fixed setpoint selection at 0 Hz. If
p1020[0]...p1023[0]are all 0, the drive usesp1001. If you need a digital input to select between two speeds (e.g. 35 Hz and 50 Hz), setp1020[0]to a DI such asr722.4and leave the other selector bits at 0. A high on DI4 → p1001, low → p1002. -
PLC send clock mismatch. If the S7-300 sends a new PROFIdrive cycle faster than the CU240E-2 accepts (default 4 ms), set
p2040to the cycle time. Wrong values can cause intermittent F08501. -
Three-wire block on a stuck Start. The block evaluates the rising edge of
p3330only. A stuck Start pushbutton that opens and closes will generate a new start edge. The protection is only against a continuously-closed Start pushbutton across a Stop release, not against a flapping contact. Use a debounce input filter on the DI (p0724) if the cockpit is in a vibration-prone area. -
Local/remote arbitration. A common field requirement is to disable the local pushbutton when the drive is in remote. One approach: route the local Start to a PLC DI, let the PLC decide whether to forward it as a Start command to the drive, and write the result to a BICO connector that feeds
p3330. This keeps all decision logic in the PLC and uses the drive purely as a power stage.
Two-Wire vs Three-Wire Control — When to Use Which
| Use case | Recommended macro | Behavior |
|---|---|---|
| Maintained selector switch (HOA) |
p0015 = 12 (terminals, 2-wire) |
DI high → run, DI low → stop. No pulse needed but no latching either. |
| Momentary Start/Stop pushbuttons |
p0015 = 19 (3-wire) |
Start pulse latches run, Stop pulse clears. Standard relay-style logic. |
| PLC with explicit OFF1 control |
p0015 = 6 (PROFIdrive NAMUR) |
All commands via STW1 over PROFIdrive. Local DIs used only for hardware enable. |
| Fieldbus only (no DI wiring) |
p0015 = 7 (PROFIdrive non-NAMUR) |
STW1 only, no local control. |
| Modbus RTU control | p0015 = 15 |
Commands via Modbus register 40100 control word. |
Safety and Functional Stop Notes
The three-wire macro and the p3330/p3331/p3332 block implement operational control only. They do not provide any category-rated safe stop function. For functional safety the CU240E-2 F variant (or higher) exposes STO (Safe Torque Off) on dedicated F-DI terminals that are evaluated independently of the BICO logic:
- STO inputs on a CU240E-2 F: F-DI0 (X131.16), F-DI1 (X131.17) — both must be high for the power stage to enable. Opening either one removes the gate signals within a few milliseconds.
- Safety commissioning: p9601, p9602 for STO activation; p9650 for F-DI debounce time; p10000 for safety password.
- Wiring: a single-channel emergency stop can be wired to F-DI0; a two-channel E-stop must wire both F-DI0 and F-DI1, with the F-DI1 used for the discrepancy check.
Frequently Asked Questions
Can a momentary pushbutton directly start a SINAMICS G120 CU240E-2 without any latching?
No. Parameter p0840 (OFF1) is level-sensitive: the drive runs only while the source is high. A momentary pulse will run the motor for the duration of the press, then ramp down. Use macro p0015 = 19 (three-wire) to get internal latching, or latch the run command in the PLC and output it to a DI wired to p0840.
What does p0015 = 19 do on a CU240E-2?
Macro 19 selects three-wire control. It reassigns DI0 to Stop (NC, level), DI1 to Start (NO, rising edge), DI2 to direction reversal, and routes p0840 to the latched output of the internal three-wire logic block on r3333.0. The block is configured by p3330 (start pulse), p3331 (run CW) and p3332 (run CCW).
How do I start the drive from both the local pushbutton and the PLC?
OR the two sources into a BICO connector (for example, set p2099.0 = r722.0 and use r2099.0 OR a PLC bit received on r2090.0), then assign the combined connector to p3330. The three-wire block latches whichever source generates the start edge. Local Stop (NC on DI1, OFF2) is always priority.
Why does the motor stop immediately when I release the Start pushbutton?
Because OFF1 (p0840) is wired to a level-sensitive digital input. Either load macro p0015 = 19 to switch to three-wire control with internal latching, or latch the run command on the PLC side and output the latched bit to a digital input assigned to p0840.
What is the difference between OFF1, OFF2 and OFF3?
OFF1 (p0840) is a controlled ramp-down along p1121 when the signal goes low. OFF2 (p0844) is active-low: a low level immediately removes the gate signals and the motor coasts. OFF3 (p0845) is also active-low: a low level triggers a fast stop along p1135, then removes the gate signals. All three must be in their enable state (OFF1=high, OFF2=high, OFF3=high) for the drive to enter "Operation enabled".
How do I use a fixed setpoint instead of an analog reference?
Configure the fixed setpoints in p1001...p1007 (Hz or RPM), route p1070[0] to r1024 (fixed setpoint selector output), and set p1020[0]...p1023[0] to select which one is active (binary code 0..15). The default of 0 on all selector bits selects p1001.
Does macro 19 also wire OFF2 to DI1 by default?
On a CU240E-2, macro 19 sets the default OFF2 source to a fixed high (p0844 = 1), so the local Stop NC pushbutton does not feed OFF2 in this macro. To use the local Stop to coast the drive, manually rewire p0844[0] = r722.1 (DI1) or use macro 7/12 with a three-wire add-on. Always verify the BICO chain after writing a macro.