SINAMICS G120 Local/Remote: Modbus RTU and CDS Configuration

David Krause12 min read
SiemensTutorial / How-toVFD / Drives
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

SINAMICS G120 CU240E-2 Local/Remote Control via Modbus RTU and CDS

Field-proven configuration guide for switching a Siemens SINAMICS G120 with CU240E-2 between Modbus RTU remote control (CDS0) and terminal/analog local control (CDS1) using a single digital input. Covers BICO wiring, parameter mapping, CDS independent editing, and S7-1200 integration. The procedure applies to CU240E-2 firmware V4.5 and later; the latest validation reference is the CU240E-2 operating instructions available in the Siemens Industry Online Support portal.

Overview and Architecture

The SINAMICS G120 modular drive system is built from a Power Module (PM240-2 or PM250) and a Control Unit. The CU240E-2 variant provides onboard RS485 for Modbus RTU, six digital inputs, two analog inputs, and supports four Command Data Sets (CDS). Local/Remote control is implemented by giving each Command Data Set a distinct command source and setpoint source, then selecting the active CDS through a digital input and BICO technology.

Data Set Mode Command Source (p0700) Setpoint Source (p1000) Selection Input
CDS0 Remote 6 (Modbus RTU) 6 (Modbus RTU) DI inactive
CDS1 Local 2 (Terminal) 2 (Analog Input 1) DI active

The architecture below isolates the two control paths so that the S7-1200 master sees deterministic behaviour in Modbus mode while the operator can still jog the motor from a panel potentiometer when the line is open.

Prerequisites

  1. SINAMICS G120 with CU240E-2 Control Unit (firmware V4.7 SP3 or later recommended; V4.5 minimum for full CDS support).
  2. S7-1200 PLC with a CM1241 RS485 communication module, or any Modbus RTU master.
  3. STARTER V5.1 SP1 or TIA Portal V15.1 (or later) with the SINAMICS Startdrive add-in installed.
  4. Commissioning cable USB-to-RJ45 (Siemens part number 6SL3255-0AA00-2CA0) or Ethernet connection for PROFINET variants.
  5. Motor nameplate data: voltage, current, power factor, nominal speed.
  6. Drive address reserved on the RS485 bus, set in p2021 (default 1).
Note: Confirm the Control Unit variant before starting. The CU240E-2 (RS485) is required for Modbus RTU; the CU240E-2 PN and CU240E-2 DP variants use PROFINET and PROFIBUS respectively. Using the wrong firmware is the single largest source of F1910 fieldbus faults at commissioning.

Command Data Set (CDS) Fundamentals

A Command Data Set is a parallel set of control-related parameters. The G120 supports up to four CDS. The currently active CDS is displayed in r0050 (bits 0 and 1). The selected CDS (the next CDS that will become active after a state change) is reported in r0836. Two digital inputs select the active CDS:

  • p0810 — CDS bit 0 (low-weight bit)
  • p0820 — CDS bit 1 (high-weight bit)

CDS selection encoding:

p0820 (Bit 1) p0810 (Bit 0) Active CDS
0 0 CDS0
0 1 CDS1
1 0 CDS2
1 1 CDS3

Each CDS carries its own copy of command-related parameters including:

  • p0700 — command source selection
  • p1000 — speed setpoint source
  • p0840 — ON/OFF1 source
  • p0852 — pulse enable source
  • p1113 — setpoint inversion
  • p1500 — torque setpoint source
  • p1120 / p1121 — ramp-up / ramp-down time

Any change to these parameters affects only the data set indicated by the bracketed index. For example, p0700[0] is the command source for CDS0; p0700[1] is the command source for CDS1.

BICO Interconnection for CDS Switchover

BICO (Binector Connector) technology lets you wire digital and analog signals between internal function blocks. To select CDS via DI3, the default factory wiring on the CU240E-2 is:

  • p0810 = 722.3 (DI3 drives CDS bit 0)
  • p0820 = 0 (CDS bit 1 not used)

For CDS1 selection through DI4 (r0722.4), reassign p0810 in the expert list:

  • p0810 = 722.4 (DI4 drives CDS bit 0)
  • p0820 = 0 (unchanged)
Note: DI3 is the factory default for CDS selection on CU240E-2. If DI3 is needed for another function (fault acknowledge, fixed setpoint selection, etc.), assign DI4 by editing p0810 = 722.4 in STARTER or Startdrive. Reading r0722.4 online confirms the physical input state.

Configuring CDS0 — Modbus RTU Remote Mode

With CDS0 active, the drive accepts commands and setpoints from the Modbus master. The following parameter set defines Modbus as the command and setpoint source within CDS0.

Step 1: Enter CDS0 editing

In Startdrive, navigate to Control Unit → Command data sets → CDS0 and set:

Parameter Value Description
p0700[0] 6 Command source = Modbus RTU
p1000[0] 6 Speed setpoint source = Modbus RTU
p0840[0] 2090.0 ON/OFF1 from Modbus control word bit 0
p0852[0] 2090.3 Pulse enable from Modbus bit 3
p1113[0] 0 No setpoint inversion
p1500[0] 0 No torque setpoint

Step 2: Modbus RTU communication parameters

Parameter Default Recommended Description
p2030 0 2 Fieldbus protocol = Modbus RTU
p2020 6 6 or 7 RS485 baud rate (6 = 19200, 7 = 38400, 8 = 57600)
p2021 1 1–247 Modbus slave address
p2022 2000 2000–5000 Modbus timeout in ms (0 = monitoring off)
p2023 2 2 Fault response (1 = warning, 2 = fault with OFF1)

Step 3: Process data mapping

Default PZD mapping for SINAMICS G120 Modbus on the CU240E-2:

  • Receive PZD1 (control word 1) — holding register 40100 (function code 06/16)
  • Receive PZD2 (speed setpoint) — holding register 40101
  • Send PZD1 (status word 1) — holding register 40110 (function code 03/04)
  • Send PZD2 (actual speed) — holding register 40111

Confirm by inspecting p2050[0] = 52 (status word) and p2051[0] = 21 (r0021 filtered speed) online. To change the source of PZD2 actual value, edit p2051[0] to the desired connector (for example, r0022 for unfiltered speed).

Reference the SINAMICS G120 List Manual in Siemens Industry Online Support for the complete PZD assignment and BICO tables.

Configuring CDS1 — Terminal/Analog Local Mode

Switch the editor in Startdrive to CDS1 and configure local control through the on-board terminal strip and the potentiometer wired to analog input 1.

Step 1: Set command and setpoint sources

Parameter Value Description
p0700[1] 2 Command source = terminal strip (digital inputs)
p1000[1] 2 Setpoint source = analog input 1
p0840[1] 722.0 ON/OFF1 from DI0
p0852[1] 722.1 Pulse enable from DI1
p1113[1] 0 No inversion

Step 2: Analog input scaling

Wire a 10 kΩ potentiometer across +10 V (terminal 4), AI- (terminal 3, GND), and AI0+ (terminal 5). Set:

Parameter Value Description
p0756[0] 0 AI0 type = unipolar 0–10 V
p0757[0] 0 x1 = 0 V → 0%
p0758[0] 0 y1 = 0% (corresponds to 0% speed)
p0759[0] 10 x2 = 10 V → 100%
p0760[0] 100 y2 = 100% (corresponds to p1082 max speed)
p0761[0] 0 No deadband

Step 3: Verify the local reference path

The default main setpoint in CDS1 routes the scaled AI0 (r0755[0]) into p1070[1] (CI: main setpoint). The drive then applies the p1082 max speed ceiling automatically. Confirm by observing r0021 in the Startdrive trace while sweeping the potentiometer from 0 to 10 V.

DI Selection and Hardware Wiring

CU240E-2 Terminal Function in CDS0 (Modbus) Function in CDS1 (Terminal)
DI0 (Pin 5) — ON/OFF1 (p0840[1])
DI1 (Pin 6) — Pulse enable (p0852[1])
DI3 (Pin 8) Free or fault ack (p2103) Fault ack (p2103)
DI4 (Pin 16) CDS select (p0810 = 722.4) CDS select (p0810 = 722.4)
AI0+ (Pin 5) — Potentiometer wiper
Warning: Use 24 VDC sourcing (PNP) for all digital inputs on the CU240E-2. Sinking mode (NPN) is not supported on the standard CU240E-2 variant. Confirm the input wiring type with parameter p0728 before applying field power. Reverse polarity on the 24 V supply can damage the input optocouplers.

Modbus RTU Communication with S7-1200

Insert a CM1241 RS485 module in the S7-1200 rack. Configure the port for Modbus RTU master at the same baud rate and parity as the drive (default: 19200, 8E1). Use the MB_MASTER instruction in the user program.

// S7-1200 MB_MASTER call
MB_MASTER_DB(
    REQ     := bSendRequest,
    MB_ADDR := 1,                // Matches p2021
    MODE    := 1,                // 0 = read, 1 = write
    DATA_ADDR := 40100,          // Holding register start
    DATA_LEN  := 2,              // Control word + setpoint
    DATA_PTR  := "ControlBuffer",
    DONE     => bDone,
    ERROR    => bError,
    STATUS   => wStatus
);

Write the control word and speed setpoint as a 2-word array through the S7-1200 data pointer. Read the status word and actual speed into another buffer. Acknowledge any communication fault (F1910) by either p2021 cycle or by setting p0970 = 1 to trigger a parameter reset of fieldbus interface parameters.

For a step-by-step TIA Portal walkthrough of integrating the SINAMICS G120, see the TIA Portal documentation at docs.tia.siemens.cloud.

Why CDS0 and CDS1 Appear Coupled in the Editor

A common field problem: changing a parameter in CDS0 appears to overwrite the same index in CDS1. The cause is usually one of three things:

  1. The Startdrive parameter editor is not switched to the active CDS. The bracketed index (e.g., p0700[0] vs p0700[1]) must match the highlighted CDS in the editor's data set selector.
  2. The user edited a Drive Data Set (DDS) parameter, not a CDS parameter. Parameters that carry only a DDS index (e.g., p1610 motor temperature model) are shared across all CDS.
  3. Copy RAM to ROM (p0977 = 1) was executed from a single session that did not differentiate the data set block. CDS0 and CDS1 must be persisted to ROM in separate writes.

To set parameters independently, follow this procedure:

  1. In STARTER or Startdrive, click the CDS selector in the parameter editor and confirm the active data set is highlighted in bold.
  2. Disable automatic parameter copy in the expert list by clearing the Link with CDS0 checkbox for each affected parameter.
  3. Verify the parameter index: p0700[0] = CDS0, p0700[1] = CDS1. Always confirm the bracketed index when editing.
  4. After writing all parameters for CDS0, execute Copy RAM to ROM (p0977 = 1). Wait for the write to complete. Switch to CDS1, write, then copy again. This forces each CDS to its own ROM block.
Field note: The BOP-2 (Basic Operator Panel) does not support simultaneous editing of CDS0 and CDS1. If a parameter has not been assigned a value in CDS1, the drive uses CDS0 as fallback. Always write at least one parameter to CDS1 (typically p0700[1] = 2) to create an independent data set, then verify with r0050.0 / r0050.1.

Verification Procedure

  1. Power up the drive. Connect Startdrive online. Confirm r0050 = 0 (CDS0 active) with DI4 open and r0722.4 = 0.
  2. Send a run command from the S7-1200 MB_MASTER buffer (control word 0x047F, setpoint 0x4000 for 50% speed). Observe r0021.0 = 1 (drive running) and r0021.1 = 1 (setpoint reached).
  3. Stop the drive (control word 0x047E). Open the RS485 line or send a stop command. Verify r0021.0 = 0.
  4. Close DI4 (apply 24 V to terminal 16). Confirm r0050 = 1 (CDS1 active) and r0836.0 = 1.
  5. Press DI0 (ON) and DI1 (Enable). Turn the potentiometer. Verify the motor accelerates to the commanded speed within p1120 ramp time.
  6. Open DI4 to return to Modbus mode. Re-initiate the run command from the PLC. The drive should resume remote operation without fault.

Troubleshooting Matrix

Symptom Probable Cause Remedy
r0050 does not change when DI4 toggles p0810 not connected to 722.4 Set p0810 = 722.4 in expert list
CDS0 and CDS1 share same parameters after write Editor not switched between CDS Toggle CDS selector; verify index [0] vs [1]
Drive faults F1910 after Modbus timeout p2022 too aggressive or RS485 noise Increase p2022; check shield grounding and bus termination
Motor runs in CDS0 but not CDS1 p0840[1] or p0852[1] not wired Assign DI0 / DI1 to ON/OFF1 and Enable in CDS1
Potentiometer has no effect AI0 type or scaling mismatch Confirm p0756[0] = 0; check p0757 to p0760 scaling
Motor runs in wrong direction Setpoint sign wrong or phase swap Invert via p1113 or p1820; verify motor wiring
Modbus read returns 0xFFFF Address conflict on RS485 bus Set unique p2021 on each slave; check 120 Ω termination
F07801/F07802 after CDS switch Motor overload or I²t trip Cycle DI1 for local ack; check p640 = current limit
DI4 input is not detected Input type set to NPN (sinking) Set p0728 = 0 for PNP sourcing

Diagnostics with Startdrive Trace

Open Startdrive → Commissioning → Trace. Record the following signals at 2 ms interval for 10 s while toggling DI4:

  • r0050 — active CDS
  • r0836 — selected CDS
  • r0021 — drive status word
  • r0755 — scaled AI0
  • r0022 — filtered actual speed (rpm)
  • r0722 — digital input state

The trace will visually confirm that command source, setpoint source, and digital inputs transition in lockstep with the CDS select input. Save the trace as a reference for every subsequent drive swap to reduce commissioning time.

Safety and Commissioning Notes

Warning: Always engage the safety functions (STO via terminals 31/32 on the PM or via PROFIsafe) before performing manual local operation. The Local/Remote switchover does not bypass STO. Refer to the SINAMICS G120 Safety Integrated manual for parameter setup of safe stop functions.
  • After CDS parameter changes, perform a Copy RAM to ROM (p0977 = 1) to persist each CDS independently. Power cycling without this step will revert to factory values for the modified CDS.
  • If the drive enters F07801 or F07802 (motor overload), the local reference must be re-acknowledged by cycling DI1 in CDS1 or by sending control word bit 7 in CDS0.
  • For multi-pump or coordinated drive applications, switch all drives to the same CDS simultaneously to avoid reference conflicts and ramp-time mismatch.
  • Verify the RS485 bus is terminated at both ends with 120 Ω resistors. The CU240E-2 does not include built-in termination; install it externally if the drive sits at the end of the line.
  • For PROFINET variants, use a different command source value (p0700 = 6 stays valid for PROFINET IO in Startdrive; verify in the project tree).

FAQ

How do I switch between Modbus RTU and terminal control on a SINAMICS G120?

Configure two Command Data Sets — CDS0 for Modbus (p0700[0] = 6, p1000[0] = 6) and CDS1 for terminal (p0700[1] = 2, p1000[1] = 2). Assign p0810 = 722.4 to use DI4 as the CDS toggle. Verify with r0050.

Why do CDS0 and CDS1 appear to share the same parameters after editing?

The Startdrive parameter editor must be switched to the active CDS using the CDS selector. Always confirm the bracketed index (p0700[0] vs p0700[1]) before writing. Use p0977 = 1 to copy each CDS to ROM independently.

What Modbus registers control a SINAMICS G120?

Holding register 40100 is the control word and 40101 is the speed setpoint (both written). Register 40110 is the status word and 40111 is the actual speed (both read). The slave address is set in p2021 (default 1).

Can I use DI3 instead of DI4 for CDS selection?

Yes. The factory default wires p0810 = 722.3 (DI3). If DI3 is already used for fault acknowledge, reassign p0810 to 722.4 (DI4) and leave p0820 = 0. The change is made in the expert parameter list.

Does CDS switchover affect motor ramp times?

Yes. Ramp time p1120 (up) and p1121 (down) are CDS-indexed. Configure p1120[0] and p1120[1] separately to have different ramp profiles per operating mode — for example, 5 s for Modbus coordination and 2 s for local jogging.

What happens if the Modbus line drops while CDS0 is active?

The drive will trip with F1910 after p2022 milliseconds, execute the response selected in p2023 (default: OFF1 with fault), and coast to stop. Reconnect the line, send control word 0x047E, then a new run command to recover.

Back to blog