Problem Statement
A SINAMICS V20 inverter wired for hybrid control behaves erratically when started through a digital input. The operator command source is the physical terminal strip (DI1 for ON/OFF1), while the speed reference is delivered over the RS485 link as Modbus RTU. The supervisory PLC writes the frequency setpoint to holding register 40003 and reads it back correctly from register 40101 (status word HSW echo), confirming that the serial bus is healthy and the value is reaching the drive's Modbus buffer.
When the start command is applied through DI1, the motor accelerates but spins at a frequency that does not match the value just written to 40003. The frequency shown on the built-in Basic Operator Panel (BOP) is the previous, stale setpoint, not the new commanded value. Parameter r0020 (current frequency setpoint) confirms the same. Diagnostic register r0967 reports 0x044E with the inverter idle and 0x044F when DI1 closes and ON/OFF1 = 1 — meaning the drive is in state "Operation enabled" but is sourcing the reference from the wrong place.
This is not an addressing fault, a baud-rate mismatch, or a parity issue. The bus is exchanging data cleanly. The fault is a configuration conflict between the command source selection and the setpoint source selection, combined with an incomplete understanding of how the drive resolves the active reference when control is split between terminals and fieldbus.
Affected Products and Firmware
The symptom has been observed and reproduced on the following SINAMICS V20 variants (per the Siemens Industry Online Support catalog):
- 6SL3210-5BE21-0CV0 (0.55 kW, 230 V 1AC)
- 6SL3210-5BE27-5CV0 (7.5 kW, 230 V 3AC)
- 6SL3210-5BE31-1CV0 (11 kW, 400 V 3AC)
- 6SL3210-5BE34-5CV0 (45 kW, 400 V 3AC)
Firmware revisions from V01.10 through V01.40 exhibit the identical behavior because the issue is logical (parameter configuration) rather than firmware-related. No firmware update resolves it. The fix requires parameter corrections and, in many cases, an update to the Modbus control word sequence written by the master.
Root Cause Analysis
Two distinct root causes can produce the symptoms described. Both must be ruled out during commissioning because either one alone is sufficient to lock the drive on a stale setpoint.
Cause 1: Command Source and Setpoint Source Mismatch
Parameter P0700 selects the command source, and P1000 selects the frequency setpoint source. With the default Siemens quick-commissioning macro CN011, the drive is configured for terminal control of both direction and speed. The reported installations show:
-
P0700 = 5→ command source = MODBUS -
P1000 = 5→ setpoint source = MODBUS
When both parameters point to Modbus, the drive expects the ON/OFF1, OFF2, OFF3, enable pulse, and direction commands on the Modbus control word (register 40100) — not on the physical terminals. If the master has not been programmed to send the control word, or if it sends only the setpoint word, the inverter reacts unpredictably. Many PLC programs write the setpoint register as a polled write but treat the control word as a one-shot, which leaves bit 0 (ON/OFF1) and bit 3 (enable operation) in their last commanded state.
In the user's case, DI1 is physically closing, which the drive's I/O interpreter routes to the terminal command path. Because P0700 = 5, that terminal is no longer the active command source. What actually happens is that a previous Modbus control word left in the drive's non-volatile shadow register enables the drive (bits 0, 1, 2 = 1, bit 3 = 1), and the new DI1 closure is ignored entirely. The frequency runs at whatever was last commanded and is not refreshed because the master has stopped writing setpoint updates after the first successful read-back.
Cause 2: RS485 Protocol Selection Not Set to MODBUS
The SINAMICS V20 shares its RS485 port between USS and Modbus RTU. Parameter P2023 selects the protocol. If P2023 is left at the default value (1 = USS), the drive will appear to communicate because it accepts Modbus framing but parses the payload as USS, which causes partial register writes. Specifically, register 40003 may decode as a different parameter (USS only interprets a subset of register addresses), and the value displayed in r0020 reflects whatever the drive last stored internally.
P2023 must equal 2 for MODBUS. After this parameter is changed, a power cycle of the inverter is mandatory — the protocol switch is only evaluated during boot.
Cause 3: Stale Setpoint Retention in Setpoint Pipeline
Even when the bus is fully functional and the protocol is correct, the V20 holds the last valid setpoint in its ramp generator input. If the master writes a new value but the control word does not assert bit 6 (setpoint enable) properly, the new value is accepted into the register (visible at 40101 because 40101 echoes the last received Modbus write, not the active setpoint) but is not transferred to the ramp generator. The drive then runs at the previous active frequency.
This explains the diagnostic fingerprint: r0020 ≠ value at 40101 ≠ actual motor frequency shown on BOP.
Diagnostic Procedure
Use this ordered checklist to isolate the fault. Each step eliminates one possible cause. The V20 BOP is required; remote diagnostics via STARTER or the SINAMICS Webserver module (if fitted) can also be used.
-
Read r0967 (control word 1 actual) with the drive stopped. It should read
0x0400(ready to switch on). When DI1 closes and you expect the drive to run, r0967 should advance to0x044For0x047Fdepending on the bit pattern. If r0967 remains0x0400, the drive is not seeing the start command — confirm P0700. - Read r0020 (frequency setpoint). This is the setpoint value the drive is currently using, post any MOP additions, post any fixed setpoint selections. If r0020 differs from the value you wrote to 40003, the setpoint pipeline is blocked.
- Read r0021 (output frequency). If r0021 differs from r0020, the drive is in ramp or current limit.
- Read P0700 and P1000. Confirm whether command and setpoint are sourced from Modbus, terminals, or a mix.
- Read P2023. Must equal 2 for Modbus. Power cycle if changed.
- Read P2021. Must match the slave address (1 to 247) the master is using. Default is 1.
-
Read P1074. This is a binector input (BI) that disables additional setpoints. Note: P1074 is not the main setpoint selector. The status display of
2018.1means the BI is connected to bit 1 of r2018 (the active control word). It is normal for this to show a connection — it does not indicate the main setpoint. - Inspect the Modbus master trace. Capture the function codes and register addresses. The master must write Function Code 06 (Write Single Register) or Function Code 16 (Write Multiple Registers) to register 40003 with the desired setpoint, and Function Code 06 to register 40100 with the proper control word pattern.
Solution A — Mixed Control (Terminal Start + Modbus Setpoint)
When the application requires the operator start signal to remain on a physical input but the process controller (PLC) to deliver the speed reference, use the following parameter configuration. This is the most common architecture on retrofit V20 installations.
- Set
P0700 = 2→ command source = Terminals (DI1 = ON/OFF1, default mapping). - Set
P1000 = 5→ setpoint source = Modbus (RS485). - Set
P2023 = 2→ RS485 protocol = MODBUS. - Set
P2021 = 1(or slave address required by the master). - Power cycle the drive.
- Connect DI1 to a 24 V source for run, return for stop. The drive will run only when DI1 is high.
- From the Modbus master, write the desired frequency (Hz × 100, e.g., 50.00 Hz = 5000 decimal) to holding register 40003.
- Confirm
r0020updates within 100 ms of each valid Modbus write. If r0020 lags, the master's inter-frame delay (3.5 character times) is insufficient; increase to 50 ms.
Under this scheme, the drive will start on DI1 and run at the most recently written Modbus setpoint. If the master stops updating 40003 and writes zero, the drive decelerates to zero. If the master writes a new value while DI1 is closed, the drive ramps to the new value on the configured ramp time (P1120 / P1121).
Solution B — Full Modbus Control (Recommended for New Installations)
For new installations, eliminate the terminal start entirely and route both command and setpoint through Modbus. This guarantees deterministic behavior and avoids the partial-command trap that causes the stale-frequency symptom.
- Set
P0700 = 5→ command source = MODBUS. - Set
P1000 = 5→ setpoint source = MODBUS. - Set
P2023 = 2→ RS485 protocol = MODBUS. - Set
P2021 = 1. - Set
P0852 = 0(control word selection, internal default). - Power cycle.
- From the master, implement the control word state machine described in the next section. Always send control word 40100 and setpoint 40003 in the same poll cycle.
Modbus Register Map
The SINAMICS V20 exposes a fixed Modbus map per the device's List Manual. Only the registers relevant to the setpoint/control issue are reproduced here.
| Register | Access | Name | Scaling | Notes |
|---|---|---|---|---|
| 40003 | R/W | HSW (Main setpoint) | Hz × 100 (signed 16-bit) | Frequency setpoint. Example: 50.00 Hz = 0x1388 (5000 dec) |
| 40004 | R/W | HSW2 (Additional setpoint) | Hz × 100 (signed 16-bit) | Used with P1000 dual-source selection |
| 40100 | R/W | STW (Control word 1) | Bit field | 16-bit control word — see state machine |
| 40101 | R | ZSW (Status word 1) | Bit field | 16-bit status echo of drive state |
| 40102 | R | HIW (Actual frequency) | Hz × 100 (signed 16-bit) | Actual motor frequency |
| 40103 | R | Actual current | A × 10 (unsigned) | Motor current |
All multi-byte values are big-endian (high byte first). Holding registers use the standard Modicon 4xxxx address space; the leading "4" is implicit in the protocol but must be included in the PDU per Modbus Application Protocol V1.1b3.
Control Word State Machine
The V20 follows the PROFIdrive profile state machine for control word 1. Skipping states or holding bits low produces the stale-frequency symptom. The master must drive the following sequence.
| Bit | Name | Function |
|---|---|---|
| 0 | ON/OFF1 | 1 = pulse enable via ramp; 0 = ramp to stop |
| 1 | OFF2 | 1 = no coast stop; 0 = coast to stop (immediate) |
| 2 | OFF3 | 1 = no quick stop; 0 = quick stop with P1135 ramp |
| 3 | Enable operation | 1 = enable inverter; 0 = disable pulses |
| 4 | Ramp generator enable | 1 = ramp active; 0 = freeze ramp output |
| 5 | Ramp generator start | 1 = accept setpoint; 0 = ramp output to zero |
| 6 | Setpoint enable | 1 = apply setpoint; 0 = setpoint to zero |
| 7 | Fault acknowledge | 0→1 edge resets faults |
| 10 | Control by PLC | 1 = master active; 0 = local control |
State transitions per Siemens Industry Online Support:
- Not ready to switch on (0x0000): drive powers up.
- Switch on disabled (0x0400): power-on self-test complete.
- Ready to switch on (0x0400 + bits 0,1,2): send STW = 0x040E to enter this state.
- Switched on (0x0401): send STW = 0x040F.
- Operation enabled (0x044F): send STW = 0x047F to enter running state.
Direct transition from Switch on disabled to Operation enabled by writing 0x047F immediately will not work — the drive rejects the jump and remains in Switch on disabled, which is why r0967 never advances and the motor appears unresponsive. The master must step through each state with at least one polling cycle (typically 50–200 ms) between writes.
Parameter Reference
The following V20 parameters are relevant to Modbus-controlled operation. Refer to the SINAMICS V20 List Manual for the complete parameter list and default values.
| Parameter | Description | Values of interest | Effect |
|---|---|---|---|
| P0700 | Command source selection | 1 = BOP, 2 = Terminal, 5 = MODBUS | Source of start/stop/direction commands |
| P1000 | Setpoint source selection | 1 = MOP, 2 = Analog, 3 = Fixed freq, 5 = MODBUS | Source of frequency reference |
| P1074 | BI: disable additional setpoint | Binector input (BO/CO r2018.x) | Suppresses HSW2 contribution |
| P1120 | Ramp-up time | 0 – 650.00 s | Acceleration from 0 to P1082 |
| P1121 | Ramp-down time | 0 – 650.00 s | Deceleration from P1082 to 0 |
| P1135 | OFF3 ramp-down time | 0 – 650.00 s | Quick-stop ramp |
| P2021 | Modbus address | 1 – 247 | Slave address |
| P2022 | Modbus baud rate | 6 = 9600, 7 = 19200, 8 = 38400, 9 = 57600, 10 = 115200 | Bus speed |
| P2023 | RS485 protocol selection | 1 = USS, 2 = MODBUS | Frame parser |
| P2024 | Modbus parity / stop bits | 0 = even/1, 1 = odd/1, 2 = none/2 | Bus framing |
| r0020 | Current frequency setpoint | Hz (float displayed; raw in BOP) | Active setpoint post-pipeline |
| r0021 | Output frequency | Hz | Actual motor speed feedback |
| r0967 | Control word 1 actual | Hex bit field | Live view of STW |
Verification Procedure
After applying either Solution A or Solution B, run the following verification sequence. Each step produces an observable indication that the fix is correct.
- Power-cycle the drive to commit any changed P-parameters.
- From the master, write control word 0x040E (Ready to switch on) to register 40100.
- Wait one poll cycle (≥ 100 ms). Read r0967 — it should display
040E. - Write control word 0x040F (Switched on). Wait one cycle. r0967 =
040F. - Write control word 0x047F (Operation enabled). Wait one cycle. r0967 =
047F. - Write setpoint 5000 (50.00 Hz) to register 40003. Wait one cycle. r0020 = 50.00.
- Read register 40102 — actual frequency should rise from 0 toward 50 Hz over the P1120 ramp time.
- Write setpoint 3000 (30.00 Hz) to register 40003. r0020 should update immediately, motor should ramp down to 30 Hz.
- Write control word 0x047E (clear bit 0, ON/OFF1 = 0). Motor ramps to 0 on P1121.
- Confirm drive status via BOP shows 0 Hz and status word 40101 returns to
0x0440(switched on, not enabled).
Common Pitfalls
- Forgetting the P2023 power cycle. The protocol change only takes effect at boot. Many technicians change P2023, run a test, and conclude Modbus is broken when in fact the drive is still parsing as USS.
- Confusing P1074 with the main setpoint. P1074 is a binector that disables the additional setpoint (HSW2). It is not the main setpoint selector. A common diagnostic misstep is to "fix" P1074 and create a new fault.
- Writing only the setpoint, never the control word. With P0700 = 5, the drive will not run on a setpoint alone. The control word must be written continuously (every 100–500 ms) with bit 10 = 1 (control by PLC) to assert the watchdog.
- Mixing data types. The setpoint register 40003 expects a signed 16-bit integer scaled in Hz × 100. Writing 50 instead of 5000 results in 0.50 Hz operation, which can look like "no response."
- Assuming P0852 controls Modbus. P0852 is a control-word bit-selection index. It does not enable Modbus. Modbus is enabled by P0700 and P1000 only.
- Reading 40101 as the active frequency. 40101 is the status word ZSW, not the actual frequency. The actual frequency is at 40102 (HIW).
Extended Diagnostics — Modbus Bus Health
For installations where the bus itself is suspected, the V20 exposes several diagnostic counters. Access via the BOP under r— menu group:
-
r2050– Number of valid Modbus frames received -
r2051– Number of CRC errors -
r2052– Number of framing errors -
r2053– Number of overrun errors
If r2050 increments by one per master poll and r2051/r2052/r2053 remain at zero, the physical layer is clean. A non-zero r2051 indicates bus termination or shielding problems; verify the 120 Ω terminator is enabled at both ends (P2024 does not control termination on V20 — it is a physical jumper on the RS485 terminal block).
Safety Considerations
FAQ
Why does my SINAMICS V20 ignore the new frequency written to Modbus register 40003?
Three causes are most common: (1) P0700 is set to 5 (Modbus command source) but the master only writes the setpoint, not the control word — bit 6 of the control word (setpoint enable) is never asserted. (2) P2023 is still 1 (USS) instead of 2 (MODBUS), so the drive parses frames incorrectly. (3) The Modbus master uses the wrong function code or wrong register address; confirm with Function Code 06 (Write Single Register) to address 40003.
How do I scale the frequency value written to holding register 40003?
Register 40003 is a signed 16-bit integer in 0.01 Hz units. For 50.00 Hz, write 5000 decimal (0x1388). For 12.50 Hz, write 1250. The drive clamps the value to ± P1082 (maximum frequency, default 50 Hz) and ± 2 × P1082 in some firmware versions.
After changing P2023 to 2, do I need to restart the V20?
Yes. The RS485 protocol selection in P2023 is only evaluated at inverter boot. A parameter write alone does not switch the parser. Power cycle the drive (disconnect mains for at least 30 seconds, or use the DC bus discharge time from the BOP) before testing the new protocol.
What is the difference between registers 40101 and 40102?
40101 is the status word (ZSW) — a 16-bit field indicating drive state (ready, running, fault, etc.). 40102 is the actual output frequency (HIW) in 0.01 Hz units. Use 40102 for closed-loop speed feedback; use 40101 only to read the drive's state machine position.
Can I start the V20 with a physical digital input and still get the speed reference from Modbus?
Yes. Set P0700 = 2 (terminal command source) and P1000 = 5 (Modbus setpoint source). Wire DI1 to a 24 V source for ON/OFF1. Write the frequency to register 40003 from the PLC. The drive will start on DI1 closure and run at the most recently written Modbus setpoint.