Siemens SINAMICS G120 (CU240B-2 / CU240E-2) Modbus register map
SINAMICS G120 inverter with CU240B-2 or CU240E-2 Control Unit (RS485, Modbus RTU): process data, I/O, converter data, diagnostics, faults and technology controller registers
- Official
- 58 registers
- Modbus RTU
- Revision 1 · 2026-11-10
Official: Written from the manufacturer's documentation, but not tested on a device yet. Check the map against the manufacturer's documentation before you write to a live device. Tested it? Report a test.
Communication
- Protocol
- Modbus RTU
- Unit ID
- 1
- Serial
- 19200 8E1 · 19200 baud, 8 data bits, even parity, 1 stop bit
- Byte / word order
- ABCD · bytes big-endian, words high first
- Addresses
- 0-based
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 58 holding registers
- Groups
- 9
- Revision
- 1 · 2026-11-10
- Added
- ()
- File
- maps/siemens/sinamics-g120.mbmap.json · 16 KB · history
- SHA-256
- 57cda9d1b4784bb4664b7479a5c9c036740909c5949757f20b49447afc56a669
- Manufacturer
- siemens.com
Sources and notes
- SINAMICS G120 Inverter with CU240B-2 and CU240E-2 Control Units, Operating Instructions · version A5E02299792B AB, FW 4.4, 2011-01 section 6.2.3, Table 6-30 Assigning the Modbus register to the parameters of the Control Unit (copy of the Siemens manual hosted by a university; the Siemens support site refused automated download)
Source: Siemens, "SINAMICS G120 Inverter with CU240B-2 and CU240E-2 Control Units Operating Instructions", 01/2011, FW 4.4, A5E02299792B AB, section 6.2.3 Communication over Modbus RTU, table 6-30; https://pogoni.etf.bg.ac.rs/PLC_PLUS/Control_Units_CU240B-2_and_CU240E-2_en-US.pdf
- Set p2030 = 2 (fieldbus protocol Modbus) with the macro P0015 = 21; the address comes from the DIP switches or p2021 (1 to 247, effective after a power cycle), the baud rate from p2020 (factory 19200 bit/s). The Control Unit is a Modbus RTU slave with even parity.
- Addresses are the manual's register numbers minus 40001 (40100 is address 99). Only function codes 3 (read) and 6 (write single register) are used; reading more than 125 registers or crossing the edge of a register block returns an exception.
- Valid holding registers run from 40001 to 40522. The manual says 40001-40065 are compatible with the Micromaster MM436 but does not list them, so only 40100 onward is mapped.
- The process data registers 40100, 40101, 40110 and 40111 are monitored by p2040 (factory 100 ms): the drive raises alarm F1910 (setpoint timeout) if they are not accessed within that time. The p2000 reference speed scales the setpoint and actual value words (0x4000 = 100 %).
- Written from the manual of the CU240B-2/CU240E-2 for firmware 4.4. The CU230P-2 and later firmware use the same Modbus RTU interface, but their manuals were not checked, so the map may differ from them.
- The manual lists no register with a fixed value, so the map has no reference values.
- Written from the manufacturer's manual; not tested on a device.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 99 | uint16 | RW | Process data 1: control word 1 (STW1). Start = 0x047F, OFF1 = 0x047E. | |||
| HR | 100 | uint16 | RW | Process data 2: main setpoint, 0x4000 (16384) = 100 % of the reference speed (p2000). | |||
| HR | 109 | uint16 | R | Process data 1: status word 1 (ZSW1). | |||
| HR | 110 | uint16 | R | Process data 2: main actual value, 0x4000 (16384) = 100 % of the reference speed (p2000). | |||
| HR | 199 | uint16 | RW | p0730, r0747.0. HIGH = 1, LOW = 0. | |||
| HR | 200 | uint16 | RW | p0731, r0747.1. HIGH = 1, LOW = 0. | |||
| HR | 201 | uint16 | RW | p0732, r0747.2. HIGH = 1, LOW = 0. | |||
| HR | 219 | int16 | R | % | ×0.01 | r0774.0. | |
| HR | 220 | int16 | R | % | ×0.01 | r0774.1. | |
| HR | 239 | uint16 | R | r0722.0. HIGH = 1, LOW = 0. | |||
| HR | 240 | uint16 | R | r0722.1. HIGH = 1, LOW = 0. | |||
| HR | 241 | uint16 | R | r0722.2. HIGH = 1, LOW = 0. | |||
| HR | 242 | uint16 | R | r0722.3. HIGH = 1, LOW = 0. | |||
| HR | 243 | uint16 | R | r0722.4. HIGH = 1, LOW = 0. | |||
| HR | 244 | uint16 | R | r0722.5. HIGH = 1, LOW = 0. | |||
| HR | 259 | int16 | R | % | ×0.01 | r0755[0]. | |
| HR | 260 | int16 | R | % | ×0.01 | r0755[1]. | |
| HR | 261 | int16 | R | % | ×0.01 | r0755[2]. | |
| HR | 262 | int16 | R | % | ×0.01 | r0755[3]. | |
| HR | 299 | uint16 | R | r0200 (power unit code number). | |||
| HR | 300 | uint16 | R | ×0.01 | r0018. The manual gives the scaling factor as 0.0001 but the range as 0.00 to 327.67; the factor 100 of the V20 table is used here. | ||
| HR | 319 | uint16 | R | kW | ×0.01 | r0206. | |
| HR | 320 | uint16 | RW | % | ×0.1 | p0640. | |
| HR | 321 | uint16 | RW | s | ×0.01 | p1120. | |
| HR | 322 | uint16 | RW | s | ×0.01 | p1121. | |
| HR | 323 | uint16 | RW | RPM | p2000. | ||
| HR | 339 | int16 | R | RPM | r0020. | ||
| HR | 340 | int16 | R | RPM | r0022. | ||
| HR | 341 | int16 | R | Hz | ×0.01 | r0024. | |
| HR | 342 | uint16 | R | V | r0025. | ||
| HR | 343 | uint16 | R | V | r0026. | ||
| HR | 344 | uint16 | R | A | ×0.01 | r0027. | |
| HR | 345 | int16 | R | Nm | ×0.01 | r0031. | |
| HR | 346 | uint16 | R | kW | ×0.01 | r0032. | |
| HR | 347 | uint16 | R | kWh | r0039. | ||
| HR | 348 | uint16 | R | r0807: HAND / AUTO. | |||
| HR | 399 | uint16 | R | r0947[0]. | |||
| HR | 400 | uint16 | R | r0947[1]. | |||
| HR | 401 | uint16 | R | r0947[2]. | |||
| HR | 402 | uint16 | R | r0947[3]. | |||
| HR | 403 | uint16 | R | r0947[4]. | |||
| HR | 404 | uint16 | R | r0947[5]. | |||
| HR | 405 | uint16 | R | r0947[6]. | |||
| HR | 406 | uint16 | R | r0947[7]. | |||
| HR | 407 | uint16 | R | r2110[0]. | |||
| HR | 498 | uint16 | R | ||||
| HR | 499 | uint16 | RW | p2200, r2349.0. | |||
| HR | 500 | int16 | RW | % | ×0.01 | p2240. | |
| HR | 509 | uint16 | RW | ×0.01 | p2265. | ||
| HR | 510 | uint16 | RW | % | ×0.01 | p2269. | |
| HR | 511 | uint16 | RW | ×0.001 | p2280. | ||
| HR | 512 | uint16 | RW | s | p2285. | ||
| HR | 513 | uint16 | RW | p2274. | |||
| HR | 514 | int16 | RW | % | ×0.01 | p2291. | |
| HR | 515 | int16 | RW | % | ×0.01 | p2292. | |
| HR | 519 | int16 | R | % | ×0.01 | r2250. | |
| HR | 520 | int16 | R | % | ×0.01 | r2266. | |
| HR | 521 | int16 | R | % | ×0.01 | r2294. |
No registers match
Try part of the name, an address (decimal or 0x hex) or clear the filters.
Help improve this map
- I tested it on a deviceReport whether it worked, even if you did not write the map.
- Suggest a correctionEdit the file on GitHub; it opens a pull request.
- Report a problemA wrong address, type, scale or byte order.
- Read the formatWhat each key of the file means (SPEC.md).