Configuring SINAMICS G120 OPC Setpoint as RPM via Profibus

David Krause11 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

Overview

The SINAMICS G120 frequency inverter with the CU240S-DP-F Control Unit communicates with higher-level PLCs and SCADA systems through standard telegrams on Profibus DP. Internally, every speed reference in the drive is a frequency expressed in Hz, never in mechanical RPM. The Profibus process data are normalized integers in the NORM data type, where 0x4000 (16384 decimal) corresponds to 100% of the reference frequency defined by parameter P2000. This convention is described in the SINAMICS CU240S Function Manual.

When a SCADA or HMI issues a setpoint in RPM through an OPC DA/UA server, the application must convert the engineering value to a normalized 16-bit or 32-bit integer using P2000 as the 100% reference. The drive then converts the integer back to Hz for the ramp generator and motor model. Because P2000 is internally clamped at 650.00 Hz on the CU240S, the reference frequency must be set to the maximum operating frequency rather than to a contrived value of 3600 Hz that would map 1 RPM directly to a single bit. The PLC must perform the scaling in every direction.

Prerequisites

  • SINAMICS G120 inverter with CU240S-DP-F Control Unit (parameter set documented in the CU240S function manual)
  • Starter (legacy) or Startdrive (TIA Portal) commissioning tool installed on the engineering workstation
  • SIMATIC NET OPC server or third-party OPC DA/UA gateway with Profibus DP connectivity
  • Standard telegram 354 configured on the drive, or equivalent PZD telegrams such as 1, 20, 350, 352
  • Motor nameplate values: rated voltage, rated current, rated frequency, rated RPM, cos phi, and connection (star/delta)
  • Maximum mechanical speed requirement defined by the process (example: 3600 RPM at a 60 Hz base)
  • PROFIdrive profile awareness on the OPC client side so NORM-to-engineering scaling is correct

Reference Frequency Scaling Fundamentals

All PZD words exchanged with a SINAMICS drive follow the NORM convention defined in the PROFIdrive profile. The reference variable is the value of P2000, which the drive treats as 100% of the speed setpoint and the speed actual value.

Data type Numeric range 100% decimal value Hex value at 100% Resolution at full scale
WORD (16-bit) -32768 to +32767 16384 0x4000 1 / 16384 = 0.0061%
DWORD (32-bit) -2^31 to +2^31-1 2147483648 0x80000000 1 / 2147483648 = 4.66e-8%

The speed setpoint path inside the drive is:

  1. P1070 selects the main setpoint source (default = analog input 755)
  2. P1071 scales the main setpoint (default = 1.0)
  3. r2050 receives the cyclic Profibus setpoint word; the CU240S auto-interconnects it to P1070 when a standard telegram is selected
  4. P2000 defines what 100% means in Hz
  5. The ramp generator (P1120 acceleration, P1121 deceleration) shapes the Hz value before it is delivered to the motor model

Bit 10 (decimal 1024, hex 0x0400) of control word 1 is the "control from PLC" bit and must be set before the drive accepts cyclic setpoints. Watch r0054 to confirm the drive is in remote control.

Important: P2000 is clamped at 650.00 Hz on the CU240S. Setting it to a fictitious 3600 Hz to "trick" the drive into RPM scaling is impossible. The PC application must always perform the RPM-to-NORM conversion before writing the OPC item.

Step-by-Step Parameter Configuration

  1. P310 = motor rated frequency (Hz). Example: 60.00 Hz for a 4-pole 50/60 Hz induction motor.
  2. P311 = motor rated RPM (mechanical RPM). Example: 3545 RPM for a 60 Hz motor with approximately 5% slip.
  3. P1082 = maximum frequency (Hz). Calculated as:
    P1082 = (Max_RPM / Rated_RPM) × P310
    For 3600 RPM maximum on a 3545 RPM / 60 Hz motor:
    P1082 = (3600 / 3545) × 60 = 60.930 Hz
  4. P2000 = P1082. The reference frequency equals the maximum frequency so that 100% on Profibus equals maximum RPM.
  5. Confirm P2050[0] interconnects the receive word for the speed setpoint (default for telegram 354).
  6. Confirm P2050[1] interconnects the send word for the speed actual value.
  7. Verify the bits of control word 1 in P3980 and P3981 so that bit 10 (PLC control) routes to r0054 bit 9 correctly.
  8. Save the parameter set to the CF card and back it up with STARTER or Startdrive.
Commissioning order matters. Configure the motor data (P304-P311) and complete quick commissioning (P10 = 1) before changing P1082 and P2000. Otherwise the drive can fault with F0001 (overcurrent) during the first ramp because the V/f characteristic is not yet aligned to the connected motor.

OPC Client Scaling Calculations

With P2000 = P1082 = Max_Hz, the PC converts RPM to a 16-bit NORM word as follows:

OPC_Setpoint_WORD = Commanded_RPM × (16384 / Max_RPM)

Round the result to the nearest integer before sending. The drive-side decoding is automatic:

Internal_Hz = (OPC_Setpoint_WORD / 16384) × P2000

For the reverse path (drive actual speed back to RPM in the HMI):

Actual_RPM = Received_WORD × (Max_RPM / 16384)

When using 32-bit double-word telegrams (telegram 350 or 352), replace 16384 with 2147483648 (2^31) in the same formulas.

Worked Example

Motor: 3545 RPM rated, 60 Hz rated, 3600 RPM maximum. P1082 = P2000 = 60.93 Hz.

Commanded RPM Calculated WORD (hex) Calculated WORD (dec) Drive internal Hz
0 0x0000 0 0.000
900 0x1000 4096 15.232
1800 0x2000 8192 30.465
2525 0x2CE3 11491 42.732
3545 0x3F08 16136 59.998
3600 0x4000 16384 60.930

The granularity at 3600 RPM is 3600 / 16384 = 0.220 RPM per LSB, approximately 0.006% of full scale. Compared to a 1 Hz granularity at a 60 Hz base (60 / 16384 = 0.00366 Hz/LSB), the RPM scaling delivers significantly more resolution when the application requires precision below 100 RPM.

Telegram 354 and P2050 Monitor Connectors

Telegram 354 is a 4-word (8-byte) PZD telegram suitable for a single setpoint and a single actual value. The SINAMICS G120 list manual assigns the receive and send words to specific connectors:

Word Direction Default connector Content
PZD1 receive PLC → drive r2050[0] Control word 1 (STW1)
PZD2 receive PLC → drive r2050[1] Speed setpoint (NSOLL)
PZD1 send Drive → PLC P2050[0] Status word 1 (ZSW1)
PZD2 send Drive → PLC P2050[1] Speed actual (NIST)

The drive does not present values in RPM on the bus. P2050[1] returns the NORM word whose 100% corresponds to P2000. To display RPM on the HMI, the OPC client must multiply the received value by Max_RPM / 16384. The CU240S function manual documents the connector-to-telegram assignment under function diagram 1020 (process data).

OPC Symbol Configuration

One of the most common commissioning faults is declaring OPC symbols as 8-bit bytes instead of 16-bit words. Each PZD occupies one 16-bit word, and the high byte of a wrong symbol will alias the adjacent word, scrambling setpoint and feedback. Always configure OPC items as:

  • VT_UI2 or VT_I2 for 16-bit PZD
  • VT_UI4 or VT_I4 for 32-bit PZD (when double-word scaling is enabled on telegram 350 or 352)
  • Match byte order to the Profibus DP master convention (little-endian on Siemens masters, big-endian on some third-party gateways)
  • Use a separate item for each PZD; do not pack two speed setpoints into a 32-bit item unless the drive is configured for that telegram

Alternative Path: Free Blocks and P1071 Scaling

If the OPC server writes directly to a parameter via the acyclic channel (DPV1, STARTER routing, or SIMATIC NET parameter services) instead of going through cyclic Profibus, the standard telegram interconnections are bypassed. In this case the SCADA-side conversion is unnecessary if a free interconnectable block is used to multiply the value by an additional scale factor.

SINAMICS G120 provides free interconnectable blocks under parameter range P2800-P2890. A typical configuration uses the free multiplier block:

  1. Connect P1070 (main setpoint source) to r2878 (multiplier output).
  2. Set P2871 = 1.0 (default input X).
  3. Set P2872 = scaling factor Y. For RPM-to-Hz on a 3545/60 motor: Y = 60 / 3545 = 0.01693.
  4. Write the RPM value into the free block input through P2877. The drive computes Hz = RPM × 0.01693 before the ramp function generator.

When the OPC server uses an acyclic parameter channel, writing P1070 directly is also possible. In this case set P1071 (main setpoint scaling) to the same conversion factor. The parameter list manual notes that P1071 is a multiplier applied after P1070 but before the ramp generator. For belt-driven loads where the gear ratio converts motor Hz to load RPM, set P1071 = gear ratio so the OPC user can write load RPM directly.

Caveat for P1071: The SINAMICS parameter manual lists P1071 but does not exhaustively document the order of operations relative to the ramp-function generator. Empirically, P1071 multiplies the value at the output of P1070 and is therefore compatible with both RPM-to-Hz and engineering-unit scaling. Verify on the running drive with the Starter trace function (function generator) before committing the configuration to production. Document the measured P1071 value in the project parameter sheet.

Verification and Commissioning

  1. Open Starter or Startdrive in online mode and connect to the CU240S-DP-F.
  2. In the Commissioning → Trace panel, enable the trace on r2050[1] (received setpoint) and P2050[1] (sent actual).
  3. From the OPC client, write 16384 to the speed setpoint item. The drive should ramp to P2000 = Max_Hz and reach Max_RPM on the motor shaft.
  4. Read the actual speed value back from the drive and confirm: Actual_RPM = P2050[1] × (Max_RPM / 16384).
  5. Switch control word bit 10 ON (status word bit should mirror on ZSW1) and confirm ZSW1 reports "Operation enabled" (bit 2 set, decimal 4).
  6. Decrement the setpoint in 100 RPM steps and confirm linearity within ±1 RPM across the full range.
  7. Trigger an OFF1, OFF2, and OFF3 sequence from the OPC client and verify the drive executes the ramp-down without fault.
  8. Repeat the procedure for each of the seven drives in the project to confirm consistent scaling across the fleet.

Troubleshooting Matrix

Symptom Likely cause Diagnostic step Remediation
Drive ignores OPC setpoint, ramps to 0 Hz Bit 10 of control word not set Inspect ZSW1 in Starter; check r0054 Force bit 10 of STW1 from OPC; verify PLC/drive handshake
Setpoint in RPM, drive runs at wrong RPM P2000 not equal to P1082 Read r2000 and r1082 in Starter Set P2000 = P1082 and recommission
Resolution too coarse below 100 RPM P2000 set too high above operating point Compute LSB = Max_RPM / 16384 Use 32-bit DWORD setpoints (telegram 350) or split range with P1071
OPC item returns swapped or garbled values Symbol declared as 8-bit byte Check OPC browser data type attribute Change item to VT_UI2 / VT_I2 16-bit word
F0001 overcurrent at first ramp Motor data not commissioned Check P304-P311 against nameplate Run quick commissioning (P10 = 1) before changing P1082
F08501 Profibus fault Telegram mismatch between master and slave Check r0922 in Starter Set the same telegram number on master and slave; reload GSD
Setpoint scales inverted (sign wrong) Negative NORM value misinterpreted Inspect bit 15 of OPC word Use two's-complement conversion; check P1037 sign reversal; declare OPC item VT_I2
F07900 motor stalled P1082 too low for required RPM Compute Max_Hz = Max_RPM × P310 / P311 Recalculate P1082 and P2000; ensure P2000 ≤ 650 Hz
Overshoot during ramp P1120 too small for inertia Monitor r0631 in trace Increase P1120 to match load inertia; verify OPC does not write faster than ramp

Field-Proven Caveats

  • When the same SCADA writes RPM to multiple drives, replicate the scaling formula in the OPC client macro so a single parameter change (Max_RPM) updates all instances without manual edits to each tag.
  • When the SCADA refreshes the symbol database after a firmware upgrade, verify the new CU240S firmware does not reset P2000. On recent firmware versions, P2000 is included in the parameter backup file and survives a factory reset only if the backup is restored manually.
  • For very high-inertia loads, decouple the ramp acceleration (P1120) from the reference frequency update. The OPC layer should never write the setpoint faster than the drive can ramp; otherwise the drive rejects the value or faults with F07900.
  • If the motor has a separately excited field, P2000 must reflect the field-weakening range, not the base speed. Set P2000 = P1082 even if that exceeds the motor rated frequency, but ensure the CU240S clamping at 650 Hz still covers the requirement.
  • Do not declare OPC speed tags as floating-point items. The PROFIdrive NORM is an integer; floating-point declarations trigger silent value truncation by the OPC server.
  • When migrating from PROFIBUS to PROFINET, the G120 with CU240S-DP-F must be replaced with a CU240S-PN-F; the same scaling formulas apply because PROFIdrive is transport-independent.

FAQ

Why does the G120 only accept Hz and not RPM on Profibus?

The SINAMICS G120 implements the PROFIdrive NORM data type, which scales any setpoint to a percentage of the reference variable defined by parameter P2000. On the CU240S-DP-F, P2000 is a frequency (Hz) and is clamped to 650.00 Hz. The drive does not provide a native RPM scaling option; the OPC client must convert RPM to NORM and back using the formulas in this article.

What value of P2000 should I use to send 3600 RPM to a 60 Hz motor?

Set P2000 to the maximum operating frequency, not the mechanical RPM. For a motor rated at 60 Hz and 3545 RPM, the maximum frequency at 3600 RPM is calculated as P1082 = (3600 / 3545) × 60 = 60.93 Hz, so set P2000 = 60.93 Hz. The PC then sends OPC_Setpoint = Commanded_RPM × (16384 / 3600).

Can I scale the actual speed back to RPM inside the drive?

Yes. Connect P2050[1] (the speed actual send word) to r2878 (free multiplier output), set P2872 to the RPM-per-Hz ratio, and the drive will transmit the scaled value directly. Alternatively, perform the conversion in the OPC client using Actual_RPM = Received_WORD × (Max_RPM / 16384).

How do I know if the drive is accepting my OPC setpoint?

Monitor ZSW1 bit 10 (decimal 1024) in the OPC browser. The bit must be set for the drive to acknowledge PLC control. In Starter, read r0054 to confirm the drive is in "Remote" or "Remote with torque limitation" mode and that bit 10 is echoed in the status word.

Why does my OPC setpoint have wrong polarity?

The NORM convention uses two's-complement integers, so a negative RPM becomes 0xC000 (49152) for -16384 in 16-bit. Most OPC DA servers display this as -16384 only if the item is declared VT_I2. A VT_UI2 declaration will display 49152 and the drive will interpret the value as a large positive setpoint. Reconfigure the OPC item as a signed 16-bit integer.

Back to blog